Commit e24c7782 authored by 刘文胜's avatar 刘文胜

会员同步

parent f8f8375e
......@@ -26,6 +26,9 @@ public class KolonMember implements Serializable {
@Column(name = "cs_no", nullable = false)
public Long csNo;
@Column(name = "card_no", nullable = true)
public String cardNo;
@Column(name = "phone", nullable = true)
public String phone;
......@@ -57,7 +60,7 @@ public class KolonMember implements Serializable {
* 1.First time buyer 2.Active 3. Defecting 4.Inactive
*/
@Column(name = "lifecycle", nullable = true)
public Integer lifecycle;
public String lifecycle;
/**
* 1.现存顾客 2.潜在顾客
......@@ -65,9 +68,6 @@ public class KolonMember implements Serializable {
@Column(name = "customer_type", nullable = true)
public Integer customerType;
@Column(name = "last_purchase_date", nullable = true)
public Date lastPurchaseDate;
/**
* pi_member ID
*/
......
package com.hdp.pi.domain.kolon;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "pi_kolon_member_preassign_sn")
public class KolonMemberPreassignSn implements Serializable {
private static final long serialVersionUID = -8345843310258363286L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Long id;
@Column(name = "cs_no", nullable = false)
public String csNo;
@Column(name = "card_no", nullable = false)
public String cardNo;
@Column(name = "use_status", nullable = true)
public Integer useStatus;
@Column(name = "create_time", nullable = true)
public Date createTime;
@Column(name = "update_time", nullable = true)
public Date updateTime;
}
package com.hdp.pi.dto.kolon;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Date;
import com.hdp.pi.utils.kolon.CONSTANTS;
public class KolonMemberDTO implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
public Long csNo;
public String cardNo;
public String phone;
public String lastName;
......@@ -26,31 +24,29 @@ public class KolonMemberDTO implements Serializable {
public Integer bonus;
public Integer lifecycle;
public String lifecycle;
public Integer customerType;
public Date lastPurchaseDate;
public String wechatLastName;
public String wechatFirstName;
public KolonMemberDTO(){
}
public KolonMemberDTO(String[] s) {
super();
this.csNo = Long.valueOf(s[0]);
this.lastName = s[1];
this.firstName = s[2];
this.phone = s[3];
this.email = s[4];
this.status = Integer.valueOf(s[5]);
this.bonus = Integer.valueOf(s[6]);
this.lifecycle = Integer.valueOf(s[7]);
this.customerType = Integer.valueOf(s[8]);
LocalDate dateToConvert = LocalDate.parse(s[9]);
Date convertToDate =
Date.from(dateToConvert.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
this.lastPurchaseDate = convertToDate;
this.csNo = Long.valueOf(s[1]);
this.status = CONSTANTS.STATUS.get(s[2]);
this.bonus = Integer.valueOf(s[3]);
this.cardNo = s[4];
this.lifecycle = s[5];
this.customerType = CONSTANTS.CUSTERMERTYPE.get(s[6]);
this.lastName = s[7];
this.firstName = s[8];
this.email = s[9];
this.phone = s[10];
this.wechatLastName= this.lastName;
this.wechatFirstName= this.firstName;
}
......
/**
*
*/
package com.hdp.pi.repository.kolon;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import com.hdp.pi.domain.kolon.KolonMemberPreassignSn;
@Repository
public interface KolonMemberPreassignSnRepository extends JpaRepository<KolonMemberPreassignSn, Long>, JpaSpecificationExecutor<KolonMemberPreassignSn> {
@Modifying
@Query("update KolonMemberPreassignSn SET useStatus=2,updateTime = SYSDATE() where csNo=:csNo")
public void setStatusWithKolonReplace(@Param("csNo") Long csNo);
}
......@@ -21,6 +21,8 @@ public interface KolonMemberRepository extends JpaRepository<KolonMember, Long>,
KolonMember findFirstByCsNo(Long csNo);
KolonMember findFirstByPhone(String phone);
List<KolonMember> findByUpdateTimeGreaterThan(Date updateTime);
/**
......
......@@ -8,6 +8,7 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
......@@ -16,6 +17,7 @@ import au.com.bytecode.opencsv.CSVWriter;
import com.hdp.pi.domain.kolon.KolonMember;
import com.hdp.pi.dto.kolon.KolonMemberDTO;
import com.hdp.pi.repository.kolon.KolonMemberPreassignSnRepository;
import com.hdp.pi.repository.kolon.KolonMemberRepository;
import com.hdp.pi.utils.kolon.FtpUtil;
import com.hdp.pi.utils.kolon.Util;
......@@ -32,6 +34,9 @@ public class KolonMemberServiceImpl implements KolonMemberService {
@Autowired
private KolonMemberRepository kolonMemberRepository;
@Autowired
private KolonMemberPreassignSnRepository kolonMemberPreassignSnRepository;
@Override
public KolonMember findOneByCsNo(Long csNo) {
return kolonMemberRepository.findFirstByCsNo(csNo);
......@@ -56,10 +61,17 @@ public class KolonMemberServiceImpl implements KolonMemberService {
}
@Override
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public void matchData(String[] s) {
Long csNo = Long.valueOf(s[0]);
KolonMember kolonMember = this.findOneByCsNo(csNo);
KolonMemberDTO kolonMemberDTO = new KolonMemberDTO(s);
Long csNo = kolonMemberDTO.csNo;
KolonMember kolonMember = null;
if(StringUtils.isNotEmpty(kolonMemberDTO.phone)){
kolonMember = kolonMemberRepository.findFirstByPhone(kolonMemberDTO.phone);
}
if(kolonMember == null){
kolonMember = this.findOneByCsNo(csNo);
}
if (kolonMember == null) { // 插入数据
kolonMember = new KolonMember();
kolonMember.csNo = csNo;
......@@ -71,7 +83,6 @@ public class KolonMemberServiceImpl implements KolonMemberService {
kolonMember.bonus = kolonMemberDTO.bonus;
kolonMember.lifecycle = kolonMemberDTO.lifecycle;
kolonMember.customerType = kolonMemberDTO.customerType;
kolonMember.lastPurchaseDate = kolonMemberDTO.lastPurchaseDate;
kolonMember.dataSource = 2;
Date date = new Date();
kolonMember.joinTime = date;
......@@ -79,6 +90,18 @@ public class KolonMemberServiceImpl implements KolonMemberService {
this.save(kolonMember);
} else { // 更新
boolean flag = false;
Long oldCsNo = null;//是否更新了csno
if(!kolonMemberDTO.csNo.equals(kolonMember.csNo)){//kolon和派加都注册了,以kolon为准
oldCsNo = kolonMember.csNo;
kolonMember.csNo = kolonMemberDTO.csNo;
flag = true;
}
if(!kolonMemberDTO.cardNo.equals(kolonMember.cardNo)){//kolon和派加都注册了,以kolon为准
kolonMember.cardNo = kolonMemberDTO.cardNo;
flag = true;
}
if (!Util.isNotNull(kolonMember.email)
|| !kolonMember.email.endsWith(kolonMemberDTO.email)) {
kolonMember.email = kolonMemberDTO.email;
......@@ -99,6 +122,9 @@ public class KolonMemberServiceImpl implements KolonMemberService {
if (flag) {
kolonMember.updateTime = new Date();
this.save(kolonMember);
if(oldCsNo!=null){//csno被kolon覆盖
kolonMemberPreassignSnRepository.setStatusWithKolonReplace(oldCsNo);
}
}
}
}
......
/**
* @Title: CONSTANTS.java
* @Package com.hdp.pi.utils.kolon
* @Description: TODO
* @author new12304508_163_com
* @date 2016年6月6日 下午12:00:05
* @version V1.0
*/
package com.hdp.pi.utils.kolon;
import java.util.HashMap;
import java.util.Map;
public class CONSTANTS {
public static final Map<String, Integer> STATUS = new HashMap<String, Integer>();
public static final Map<String, Integer> CUSTERMERTYPE = new HashMap<String, Integer>();
static{
STATUS.put(null, 5);
STATUS.put("", 5);
STATUS.put("green", 5);
STATUS.put("silver", 4);
STATUS.put("gold", 3);
STATUS.put("platinum", 2);
STATUS.put("diamond", 1);
CUSTERMERTYPE.put(null, 1);
CUSTERMERTYPE.put("", 1);
CUSTERMERTYPE.put("customer", 1);
CUSTERMERTYPE.put("lead", 2);
}
private CONSTANTS(){}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment