Browse Source

增加对买家确认收货、付款申请功能消息提醒

yujia 7 years ago
parent
commit
cf5bf481c7

+ 7 - 0
src/main/java/com/uas/platform/b2c/common/psmessage/OrderCompleteInfo.java

@@ -0,0 +1,7 @@
+package com.uas.platform.b2c.common.psmessage;
+
+/**
+ * Created by yujia on 2018/7/12.
+ */
+public interface OrderCompleteInfo {
+}

+ 13 - 0
src/main/java/com/uas/platform/b2c/common/psmessage/dao/OrderCompleteInfoDao.java

@@ -0,0 +1,13 @@
+package com.uas.platform.b2c.common.psmessage.dao;
+
+import com.uas.platform.b2c.common.psmessage.model.OrderCompleteInfo;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+/**
+ * Created by yujia on 2018/7/12.
+ */
+@Repository
+public interface OrderCompleteInfoDao extends JpaRepository<OrderCompleteInfo, Long>, JpaSpecificationExecutor<OrderCompleteInfo> {
+}

+ 49 - 0
src/main/java/com/uas/platform/b2c/common/psmessage/model/OrderCompleteInfo.java

@@ -0,0 +1,49 @@
+package com.uas.platform.b2c.common.psmessage.model;
+
+import javax.persistence.*;
+import java.io.Serializable;
+
+/**
+ * Created by yujia on 2018/7/12.
+ */
+@Entity
+@Table(name = "ordercompleteinfo")
+public class OrderCompleteInfo implements Serializable {
+
+
+    private static final long serialVersionUID = 3488774334604983126L;
+
+    @Id
+    @Column(name = "id")
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(name = "order_id")
+    private String orderId;
+
+    public Long getId() {
+        return id;
+    }
+
+    public OrderCompleteInfo setId(Long id) {
+        this.id = id;
+        return this;
+    }
+
+    public String getOrderId() {
+        return orderId;
+    }
+
+    public OrderCompleteInfo setOrderId(String orderId) {
+        this.orderId = orderId;
+        return this;
+    }
+
+    @Override
+    public String toString() {
+        return "OrderCompleteInfo{" +
+                "id=" + id +
+                ", orderId='" + orderId + '\'' +
+                '}';
+    }
+}

+ 5 - 6
src/main/java/com/uas/platform/b2c/common/psmessage/service/impl/MessageServiceImpl.java

@@ -66,7 +66,6 @@ public class MessageServiceImpl implements MessageService {
             public void run() {
                 try {
                     String result = HttpUtil.doPost(sysConf.getMessageServiceUrl() + "messages", FastjsonUtils.toJson(models));
-                    System.out.println(result);
                 } catch (Exception e) {
                     e.printStackTrace();
                 }
@@ -154,12 +153,12 @@ public class MessageServiceImpl implements MessageService {
     /**
      * 根据所给字段生成消息
      *
-     * @param content
-     * @param type
-     * @param receiverUu
+     * @param content 发送内容
+     * @param type   消息的类型,用户自己定义
+     * @param receiverUu 接收人
      * @param receiverEnuu
-     * @param consumerType
-     * @param consumerApp
+     * @param consumerType 消费类型(所有应用共享:"PUBLIC",单个应用独享:"SINGLE",多个应用共享:"MULTI")
+     * @param consumerApp MALL等
      * @return
      */
     @Override

+ 96 - 0
src/main/java/com/uas/platform/b2c/common/psmessage/task/MessageTask.java

@@ -0,0 +1,96 @@
+package com.uas.platform.b2c.common.psmessage.task;
+
+import com.uas.platform.b2c.common.account.model.Enterprise;
+import com.uas.platform.b2c.common.account.service.EnterpriseService;
+import com.uas.platform.b2c.common.message.model.MessageModel;
+import com.uas.platform.b2c.common.message.type.ConsumerApp;
+import com.uas.platform.b2c.common.message.type.ConsumerType;
+import com.uas.platform.b2c.common.message.type.SMSType;
+import com.uas.platform.b2c.common.psmessage.dao.OrderCompleteInfoDao;
+import com.uas.platform.b2c.common.psmessage.model.OrderCompleteInfo;
+import com.uas.platform.b2c.common.psmessage.service.MessageService;
+import com.uas.platform.b2c.core.config.SysConf;
+import com.uas.platform.b2c.core.constant.SplitChar;
+import com.uas.platform.b2c.trade.order.StringConstant.StringFormat;
+import com.uas.platform.b2c.trade.order.model.MessageNotifyPersonalManagement;
+import com.uas.platform.b2c.trade.order.service.MessageNotifyPersonalManagementService;
+import com.uas.platform.b2c.trade.order.type.MessageType;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * description
+ *
+ * @author yuj 2018-07-12 9:08
+ */
+@Component("MessageTask")
+public class MessageTask {
+
+    private final MessageService messageService;
+
+    private final OrderCompleteInfoDao completeInfoDao;
+
+    private final MessageNotifyPersonalManagementService messageNotifyPersonalManagementService;
+
+    private final SysConf sysConf;
+
+    private final EnterpriseService enterpriseService;
+
+    @Autowired
+    public MessageTask(MessageService messageService, OrderCompleteInfoDao completeInfoDao, MessageNotifyPersonalManagementService messageNotifyPersonalManagementService, SysConf sysConf, EnterpriseService enterpriseService) {
+        this.messageService = messageService;
+        this.completeInfoDao = completeInfoDao;
+        this.messageNotifyPersonalManagementService = messageNotifyPersonalManagementService;
+        this.sysConf = sysConf;
+        this.enterpriseService = enterpriseService;
+    }
+
+    /**
+     * 根据订单信息获取
+     */
+    public void sendMessage() {
+        System.err.println("ok");
+        List<OrderCompleteInfo> completeInfos = completeInfoDao.findAll();
+        List<MessageNotifyPersonalManagement> managements = messageNotifyPersonalManagementService.findNotifyPersonalEnuuAndType(sysConf.getEnUU(), MessageType.APPLY_PAID.getType());
+        List<MessageModel> sendMessageList = new ArrayList<>();
+        Enterprise enterpriseInfo = enterpriseService.getEnterpriseInfo(sysConf.getEnUU());
+        Long adminUu = null;
+        if (enterpriseInfo != null) {
+            adminUu = enterpriseInfo.getEnAdminuu();
+        }
+        if (CollectionUtils.isNotEmpty(managements)) {
+            MessageNotifyPersonalManagement messageNotifyPersonalManagement = managements.get(0);
+            if (CollectionUtils.isNotEmpty(completeInfos)) {
+                for (OrderCompleteInfo completeInfo : completeInfos) {
+                    String orderId = completeInfo.getOrderId();
+                    if (!StringUtils.isEmpty(orderId)) {
+                        String notifyPersonalUseruu = messageNotifyPersonalManagement.getNotifyPersonalUseruu();
+                        if (!StringUtils.isEmpty(notifyPersonalUseruu)) {
+                            String[] userUus = notifyPersonalUseruu.split(SplitChar.HYPHEN);
+                            for (String userUu : userUus) {
+                                try {
+                                    Long useruu = Long.valueOf(userUu);
+                                    MessageModel model = messageService.initMessage(String.format(StringFormat.APPLYPAID, orderId), MessageType.APPLY_PAID.getType(), useruu, sysConf.getEnUU(), ConsumerType.SINGLE, ConsumerApp.MALL, SMSType.DONT_SEND, adminUu, sysConf.getEnUU());
+                                    sendMessageList.add(model);
+                                } catch (NumberFormatException e) {
+                                    e.printStackTrace();
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        if (CollectionUtils.isNotEmpty(sendMessageList)) {
+            messageService.sendMessage(sendMessageList);
+        }
+        if (CollectionUtils.isNotEmpty(completeInfos)) {
+            completeInfoDao.delete(completeInfos);
+        }
+    }
+}

+ 6 - 0
src/main/java/com/uas/platform/b2c/fa/settlement/service/SettlementService.java

@@ -82,4 +82,10 @@ public interface SettlementService {
      * @return the bank transfer
      */
     BankTransfer findBankTransfer(String requestId);
+
+    /**
+     * 生成站内信消息
+     * @param paymentId
+     */
+    void sendFinancialSettlementMessage(String paymentId);
 }

+ 60 - 13
src/main/java/com/uas/platform/b2c/fa/settlement/service/impl/SettlementServiceImpl.java

@@ -2,6 +2,11 @@ package com.uas.platform.b2c.fa.settlement.service.impl;
 
 import com.uas.platform.b2c.common.account.dao.EnterpriseDao;
 import com.uas.platform.b2c.common.account.model.Enterprise;
+import com.uas.platform.b2c.common.message.model.MessageModel;
+import com.uas.platform.b2c.common.message.type.ConsumerApp;
+import com.uas.platform.b2c.common.message.type.ConsumerType;
+import com.uas.platform.b2c.common.message.type.SMSType;
+import com.uas.platform.b2c.common.psmessage.service.MessageService;
 import com.uas.platform.b2c.core.config.SysConf;
 import com.uas.platform.b2c.core.constant.SplitChar;
 import com.uas.platform.b2c.core.support.SystemSession;
@@ -19,10 +24,14 @@ import com.uas.platform.b2c.fa.settlement.model.RequestPayment;
 import com.uas.platform.b2c.fa.settlement.service.SettlementService;
 import com.uas.platform.b2c.fa.settlement.util.SettlementUtil;
 import com.uas.platform.b2c.prod.product.common.service.CreateNumberService;
+import com.uas.platform.b2c.trade.order.StringConstant.StringFormat;
 import com.uas.platform.b2c.trade.order.dao.PurchaseDao;
 import com.uas.platform.b2c.trade.order.dao.PurchaseDetailDao;
+import com.uas.platform.b2c.trade.order.model.MessageNotifyPersonalManagement;
 import com.uas.platform.b2c.trade.order.model.Purchase;
 import com.uas.platform.b2c.trade.order.model.PurchaseDetail;
+import com.uas.platform.b2c.trade.order.service.MessageNotifyPersonalManagementService;
+import com.uas.platform.b2c.trade.order.type.MessageType;
 import com.uas.platform.b2c.trade.support.CodeType;
 import com.uas.platform.b2c.trade.support.ResultMap;
 import com.uas.platform.b2c.trade.util.Preconditions;
@@ -75,23 +84,28 @@ public class SettlementServiceImpl implements SettlementService {
 
     private final SysConf sysConf;
 
+	private final MessageService messageService;
+
+	private final MessageNotifyPersonalManagementService messageNotifyPersonalManagementService;
+
     /**
      * Instantiates a new Settlement service.
-     *
-     * @param enterpriseDao             the enterprise dao
+	 * @param enterpriseDao             the enterprise dao
      * @param purchaseDao               the purchase dao
-     * @param purchaseDetailDao         the purchase detail dao
-     * @param requestPaymentDao         the request payment dao
-     * @param createNumberService       the create number service
-     * @param transferService           the transfer service
-     * @param bankTransAssociateService the bank trans associate service
-     * @param transAssociateDao         the trans associate dao
-     * @param bankTransferDao           the bank transfer dao
-     * @param sysConf                   the sys conf
-     */
+	 * @param purchaseDetailDao         the purchase detail dao
+	 * @param requestPaymentDao         the request payment dao
+	 * @param createNumberService       the create number service
+	 * @param transferService           the transfer service
+	 * @param bankTransAssociateService the bank trans associate service
+	 * @param transAssociateDao         the trans associate dao
+	 * @param bankTransferDao           the bank transfer dao
+	 * @param sysConf                   the sys conf
+	 * @param messageService
+	 * @param messageNotifyPersonalManagementService
+	 */
     @Autowired
 	public SettlementServiceImpl(EnterpriseDao enterpriseDao, PurchaseDao purchaseDao, PurchaseDetailDao purchaseDetailDao,
-                                 RequestPaymentDao requestPaymentDao, CreateNumberService createNumberService, BankTransferService transferService, BankTransAssociateService bankTransAssociateService, BankTransAssociateDao transAssociateDao, BankTransferDao bankTransferDao, SysConf sysConf) {
+								 RequestPaymentDao requestPaymentDao, CreateNumberService createNumberService, BankTransferService transferService, BankTransAssociateService bankTransAssociateService, BankTransAssociateDao transAssociateDao, BankTransferDao bankTransferDao, SysConf sysConf, MessageService messageService, MessageNotifyPersonalManagementService messageNotifyPersonalManagementService) {
 		this.enterpriseDao = enterpriseDao;
 		this.purchaseDao = purchaseDao;
 		this.purchaseDetailDao = purchaseDetailDao;
@@ -102,7 +116,9 @@ public class SettlementServiceImpl implements SettlementService {
 		this.transAssociateDao = transAssociateDao;
 		this.bankTransferDao = bankTransferDao;
         this.sysConf = sysConf;
-    }
+		this.messageService = messageService;
+		this.messageNotifyPersonalManagementService = messageNotifyPersonalManagementService;
+	}
 
 	/**
 	 * 根据关键字分页查询待结算采购单企业信息
@@ -323,9 +339,40 @@ public class SettlementServiceImpl implements SettlementService {
 		payment.setSettleTime(calendar.getTime());
 
 		requestPaymentDao.save(payment);
+		sendFinancialSettlementMessage(payment.getRequestId());
 		return payment.getRequestId();
 	}
 
+	/**
+	 * 生成站内信消息
+	 *
+	 * @param paymentId
+	 */
+	@Override
+	public void sendFinancialSettlementMessage(String paymentId) {
+		List<MessageNotifyPersonalManagement> notifyPersonalEnuuAndType = messageNotifyPersonalManagementService.findNotifyPersonalEnuuAndType(sysConf.getEnUU(), MessageType.FINANCIAL_SETTLEMENT.getType());
+		if (org.apache.commons.collections.CollectionUtils.isNotEmpty(notifyPersonalEnuuAndType)) {
+			List<MessageModel> sendMessageModel = new ArrayList<>();
+			MessageNotifyPersonalManagement management = notifyPersonalEnuuAndType.get(0);
+			String notifyPersonalUseruu = management.getNotifyPersonalUseruu();
+			if (!StringUtils.isEmpty(notifyPersonalUseruu)) {
+				String[] useruus = notifyPersonalUseruu.split(SplitChar.HYPHEN);
+				for (String useruu : useruus) {
+					try {
+						Long uu = Long.valueOf(useruu);
+						MessageModel model = messageService.initMessage(String.format(StringFormat.FINANCIAL_SETTLEMENT, paymentId), MessageType.FINANCIAL_SETTLEMENT.getType(), uu, sysConf.getEnUU(), ConsumerType.SINGLE, ConsumerApp.MALL, SMSType.DONT_SEND);
+						sendMessageModel.add(model);
+					} catch (NumberFormatException e) {
+						e.printStackTrace();
+					}
+				}
+			}
+			if (org.apache.commons.collections.CollectionUtils.isNotEmpty(sendMessageModel)) {
+				messageService.sendMessage(sendMessageModel);
+			}
+		}
+	}
+
 	/**
 	 * 计算付款单佣金
 	 *

+ 1 - 1
src/main/java/com/uas/platform/b2c/trade/order/StringConstant/StringFormat.java

@@ -14,5 +14,5 @@ public class StringFormat {
 
     public static final String APPLYPAID = "订单 %s 买家已确认收货,请尽快申请付款";
 
-    public static final String FINANCIAL_SETTLEMENT = "订单 %s 买家已确认收货,请尽快申请付款";
+    public static final String FINANCIAL_SETTLEMENT = "订单 %s 已交易成功,请尽快和卖家申请付款";
 }

+ 6 - 0
src/main/java/com/uas/platform/b2c/trade/order/service/MessageNotifyPersonalManagementService.java

@@ -17,4 +17,10 @@ public interface MessageNotifyPersonalManagementService {
      * @return List<MessageNotifyPersonalManagement>
      */
     List<MessageNotifyPersonalManagement> findNotifyPersonalEnuuAndType(Long enuu, String type);
+
+    /**
+     * 删除信息
+     * @param list
+     */
+    void deleteMessageNotifyPersonalManagementByList(List<MessageNotifyPersonalManagement> list);
 }

+ 13 - 0
src/main/java/com/uas/platform/b2c/trade/order/service/impl/MessageNotifyPersonalManagementServiceImpl.java

@@ -3,6 +3,7 @@ package com.uas.platform.b2c.trade.order.service.impl;
 import com.uas.platform.b2c.trade.order.dao.MessageNotifyPersonalManagementDao;
 import com.uas.platform.b2c.trade.order.model.MessageNotifyPersonalManagement;
 import com.uas.platform.b2c.trade.order.service.MessageNotifyPersonalManagementService;
+import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
@@ -40,4 +41,16 @@ public class MessageNotifyPersonalManagementServiceImpl implements MessageNotify
             return messageNotifyPersonalManagementDao.findNotifyPersonalEnuuAndType(enuu, type);
         }
     }
+
+    /**
+     * 删除信息
+     *
+     * @param list
+     */
+    @Override
+    public void deleteMessageNotifyPersonalManagementByList(List<MessageNotifyPersonalManagement> list) {
+        if (CollectionUtils.isNotEmpty(list)) {
+            messageNotifyPersonalManagementDao.delete(list);
+        }
+    }
 }

+ 5 - 0
src/main/resources/spring/task.xml

@@ -28,4 +28,9 @@
         <task:scheduled ref="CommonTask" method="updateCount" cron="0 0 1 * * ?"/>
     </task:scheduled-tasks>
     <context:annotation-config />
+
+    <!--超时自动确认收货-->
+    <task:scheduled-tasks>
+        <task:scheduled ref="MessageTask" method="sendMessage" cron="0 0/1 * * * ?"/>
+    </task:scheduled-tasks>
 </beans>