From 58aba0f91be48dfec61ccf60b33d3e3bb31464e0 Mon Sep 17 00:00:00 2001 From: wangning <164851225@qq.com> Date: Thu, 18 Jan 2018 18:06:35 +0800 Subject: [PATCH] update --- .../impls/CustomerImpressionServiceImpl.java | 110 ++++++++++-------- 1 file changed, 64 insertions(+), 46 deletions(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/apps/core/impls/CustomerImpressionServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/apps/core/impls/CustomerImpressionServiceImpl.java index b56bef18c..9767623a3 100644 --- a/src/main/java/au/com/royalpay/payment/manage/apps/core/impls/CustomerImpressionServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/apps/core/impls/CustomerImpressionServiceImpl.java @@ -32,6 +32,8 @@ import au.com.royalpay.payment.manage.mappers.system.CustomerMapper; import au.com.royalpay.payment.manage.mappers.system.CustomerRelationAlipayMapper; import au.com.royalpay.payment.tools.exceptions.BadRequestException; import au.com.royalpay.payment.tools.exceptions.NotFoundException; +import au.com.royalpay.payment.tools.lock.Locker; +import au.com.royalpay.payment.tools.lock.LockerRedisImpl; import au.com.royalpay.payment.tools.utils.PageListUtils; /** @@ -50,7 +52,11 @@ public class CustomerImpressionServiceImpl implements CustomerImpressionService @Resource private CustomerMapper customerMapper; @Resource + private Locker locker; + @Resource private StringRedisTemplate stringRedisTemplate; + + private static String CUSTOMER_IMPRESSION_PREFIX = "Customer_impression_insert"; Logger logger = LoggerFactory.getLogger(CustomerImpressionServiceImpl.class); @Override @@ -100,6 +106,11 @@ public class CustomerImpressionServiceImpl implements CustomerImpressionService @Override public void generate(int client_id) { + Date now = new Date(); + DateTime dt = new DateTime(2018, 1, 20, 0, 0); + if (now.compareTo(dt.toDate()) > 0) { + return; + } JSONObject params = new JSONObject(); params.put("client_id", client_id); params.put("include_success_status", 3); @@ -108,49 +119,49 @@ public class CustomerImpressionServiceImpl implements CustomerImpressionService params.put("confirm_time", lastRecord.get(0).getDate("update_time")); } List orders = orderMapper.listAnalysisClientCustomer(params); - Date now = new Date(); for (JSONObject order : orders) { if (StringUtils.isEmpty(order.getString("channel"))) { continue; } - JSONObject userInfo = customerMapper.findCustomerByOpenId(order.getString("customer_id")); + String customer_id = order.getString("customer_id"); + JSONObject userInfo = customerMapper.findCustomerByOpenId(customer_id); if (userInfo == null) { - userInfo = customerRelationAlipayMapper.findCustomerByUserId(order.getString("customer_id")); + userInfo = customerRelationAlipayMapper.findCustomerByUserId(customer_id); } - JSONObject clientCustomerInfo = clientCustomersMapper.getClientCustomerWithNull(client_id, order.getString("customer_id")); + JSONObject clientCustomerInfo = clientCustomersMapper.getClientCustomerWithNull(client_id, customer_id); if (clientCustomerInfo == null) { - JSONObject client_customer = new JSONObject(); - client_customer.put("client_id", order.getIntValue("client_id")); - client_customer.put("customer_id", order.getString("customer_id")); - client_customer.put("channel", order.getString("channel")); - client_customer.put("tag", "不活跃用户"); - if (userInfo != null) { - client_customer.put("headimg", userInfo.getString("headimg")); - client_customer.put("nick_name", userInfo.getString("nickname")); + locker.lock(CUSTOMER_IMPRESSION_PREFIX+customer_id, 30_000, 30_000); + try { + JSONObject client_customer = new JSONObject(); + client_customer.put("client_id", order.getIntValue("client_id")); + client_customer.put("customer_id", order.getString("customer_id")); + client_customer.put("channel", order.getString("channel")); + client_customer.put("tag", "不活跃用户"); + if (userInfo != null) { + client_customer.put("headimg", userInfo.getString("headimg")); + client_customer.put("nick_name", userInfo.getString("nickname")); + } + client_customer.put("payment_times", order.getIntValue("payment_times")); + client_customer.put("total_amount", order.getBigDecimal("total_amount")); + client_customer.put("update_time", now); + client_customer.put("last_payment_time", order.getDate("confirm_time")); + clientCustomersMapper.insert(client_customer); + } finally { + locker.unlock(customer_id); } - client_customer.put("payment_times", order.getIntValue("payment_times")); - client_customer.put("total_amount", order.getBigDecimal("total_amount")); - client_customer.put("update_time", now); - client_customer.put("last_payment_time", order.getDate("confirm_time")); - clientCustomersMapper.insert(client_customer); } else { clientCustomerInfo.put("payment_times", clientCustomerInfo.getIntValue("payment_times") + order.getIntValue("payment_times")); - BigDecimal total_amount = clientCustomerInfo.getBigDecimal("total_amount"); - if (total_amount != null) { - clientCustomerInfo.put("total_amount", clientCustomerInfo.getBigDecimal("total_amount").add(order.getBigDecimal("total_amount"))); - } else { - clientCustomerInfo.put("total_amount", order.getBigDecimal("total_amount")); - } + clientCustomerInfo.put("payment_times", order.getIntValue("payment_times")); + clientCustomerInfo.put("client_id", order.getIntValue("client_id")); + clientCustomerInfo.put("customer_id", order.getString("customer_id")); + clientCustomerInfo.put("total_amount", order.getBigDecimal("total_amount")); if (userInfo != null) { clientCustomerInfo.put("headimg", userInfo.getString("headimg")); clientCustomerInfo.put("nick_name", userInfo.getString("nickname")); } - clientCustomerInfo.put("channel", order.getString("channel")); - clientCustomerInfo.put("tag", "不活跃用户"); - clientCustomerInfo.put("update_time", now); clientCustomerInfo.put("last_payment_time", order.getDate("confirm_time")); - clientCustomersMapper.update(clientCustomerInfo); + clientCustomersMapper.updateAfterPaymentFinish(clientCustomerInfo); } } } @@ -160,7 +171,7 @@ public class CustomerImpressionServiceImpl implements CustomerImpressionService public void generateTag(int client_id) { JSONObject params = new JSONObject(); DateTime dt = new DateTime(); - dt = dt.minusMonths(5); + dt = dt.minusMonths(1); params.put("confirm_time", dt.toDate()); params.put("client_id", client_id); List orders = orderMapper.listAnalysisClientCustomer(params); @@ -186,8 +197,8 @@ public class CustomerImpressionServiceImpl implements CustomerImpressionService @Override public void generateInfo() { Date now = new Date(); - DateTime dt = new DateTime(2018,1,19,3,0); - if(dt.toDate().compareTo(now)>0){ + DateTime dt = new DateTime(2018, 1, 19, 3, 0); + if (dt.toDate().compareTo(now) > 0) { return; } BoundListOperations ops = stringRedisTemplate.boundListOps("customer_impression"); @@ -200,27 +211,35 @@ public class CustomerImpressionServiceImpl implements CustomerImpressionService if (StringUtils.isEmpty(order.getString("channel"))) { continue; } - JSONObject userInfo = customerMapper.findCustomerByOpenId(order.getString("customer_id")); + String customer_id = order.getString("customer_id"); + JSONObject userInfo = customerMapper.findCustomerByOpenId(customer_id); if (userInfo == null) { - userInfo = customerRelationAlipayMapper.findCustomerByUserId(order.getString("customer_id")); + userInfo = customerRelationAlipayMapper.findCustomerByUserId(customer_id); } - JSONObject clientCustomerInfo = clientCustomersMapper.getClientCustomerWithNull(order.getIntValue("client_id"), order.getString("customer_id")); + JSONObject clientCustomerInfo = clientCustomersMapper.getClientCustomerWithNull(order.getIntValue("client_id"), customer_id); if (clientCustomerInfo == null) { - JSONObject client_customer = new JSONObject(); - client_customer.put("client_id", order.getIntValue("client_id")); - client_customer.put("customer_id", order.getString("customer_id")); - client_customer.put("channel", order.getString("channel")); - client_customer.put("tag", "不活跃用户"); - if (userInfo != null) { - client_customer.put("headimg", userInfo.getString("headimg")); - client_customer.put("nick_name", userInfo.getString("nickname")); + locker.lock(CUSTOMER_IMPRESSION_PREFIX+customer_id, 30_000, 30_000); + try { + JSONObject client_customer = new JSONObject(); + client_customer.put("client_id", order.getIntValue("client_id")); + client_customer.put("customer_id", order.getString("customer_id")); + client_customer.put("channel", order.getString("channel")); + client_customer.put("tag", "不活跃用户"); + if (userInfo != null) { + client_customer.put("headimg", userInfo.getString("headimg")); + client_customer.put("nick_name", userInfo.getString("nickname")); + } + client_customer.put("payment_times", 1); + client_customer.put("total_amount", order.getBigDecimal("total_amount")); + client_customer.put("last_payment_time", order.getDate("confirm_time")); + clientCustomersMapper.insert(client_customer); + } finally { + locker.unlock(customer_id); } - client_customer.put("payment_times", 1); - client_customer.put("total_amount", order.getBigDecimal("total_amount")); - client_customer.put("last_payment_time", order.getDate("confirm_time")); - clientCustomersMapper.insert(client_customer); } else { clientCustomerInfo.put("payment_times", 1); + clientCustomerInfo.put("client_id", order.getIntValue("client_id")); + clientCustomerInfo.put("customer_id", order.getString("customer_id")); clientCustomerInfo.put("total_amount", order.getBigDecimal("total_amount")); if (userInfo != null) { clientCustomerInfo.put("headimg", userInfo.getString("headimg")); @@ -244,5 +263,4 @@ public class CustomerImpressionServiceImpl implements CustomerImpressionService clientCustomerInfo.put("name_remak", name_remark); clientCustomersMapper.update(clientCustomerInfo); } - } \ No newline at end of file