积分账户和积分流水表
diff --git a/src/main/java/com/supwisdom/dlpay/api/dao/PointsAccountDao.java b/src/main/java/com/supwisdom/dlpay/api/dao/PointsAccountDao.java
new file mode 100644
index 0000000..aba2853
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/api/dao/PointsAccountDao.java
@@ -0,0 +1,10 @@
+package com.supwisdom.dlpay.api.dao;
+
+import com.supwisdom.dlpay.api.domain.TPointsAccount;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface PointsAccountDao extends JpaRepository<TPointsAccount, String> {
+  TPointsAccount findByUserid(String userid);
+}
diff --git a/src/main/java/com/supwisdom/dlpay/api/dao/PointsTransdtlDao.java b/src/main/java/com/supwisdom/dlpay/api/dao/PointsTransdtlDao.java
new file mode 100644
index 0000000..cf3c404
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/api/dao/PointsTransdtlDao.java
@@ -0,0 +1,9 @@
+package com.supwisdom.dlpay.api.dao;
+
+import com.supwisdom.dlpay.api.domain.TPointsTransdtl;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface PointsTransdtlDao extends JpaRepository<TPointsTransdtl, String> {
+}
diff --git a/src/main/java/com/supwisdom/dlpay/api/domain/TPointsAccount.java b/src/main/java/com/supwisdom/dlpay/api/domain/TPointsAccount.java
new file mode 100644
index 0000000..1fda8a1
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/api/domain/TPointsAccount.java
@@ -0,0 +1,133 @@
+package com.supwisdom.dlpay.api.domain;
+
+import com.supwisdom.dlpay.framework.util.MD5;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+/**
+ * 积分账户表
+ */
+@Entity
+@Table(name = "TB_POINTS_ACCOUNT")
+public class TPointsAccount {
+  @Id
+  @Column(name = "USERID", nullable = false, length = 32)
+  private String userid;
+
+  @Column(name = "POINTS", nullable = false, precision = 15)
+  private Long points; //积分
+
+  @Column(name = "ACCUMPOINTS", precision = 15)
+  private Long accumPoints; //历史累计获取的积分
+
+  @Column(name = "SUMPAYPOINTS", precision = 15)
+  private Long sumpayPoints; //历史累计消费的积分
+
+  @Column(name = "TAC", precision = 15)
+  private String tac;
+
+  @Column(name = "LASTSAVED", precision = 15)
+  private String lastsaved;
+
+  public TPointsAccount() {
+  }
+
+  public TPointsAccount(String userid, Long points, Long accumPoints, Long sumpayPoints, String tac, String lastsaved) {
+    this.userid = userid;
+    this.points = points;
+    this.accumPoints = accumPoints;
+    this.sumpayPoints = sumpayPoints;
+    this.tac = tac;
+    this.lastsaved = lastsaved;
+  }
+
+  public String getUserid() {
+    return userid;
+  }
+
+  public void setUserid(String userid) {
+    this.userid = userid;
+  }
+
+  public Long getPoints() {
+    return points;
+  }
+
+  public void setPoints(Long points) {
+    this.points = points;
+  }
+
+  public Long getAccumPoints() {
+    return accumPoints;
+  }
+
+  public void setAccumPoints(Long accumPoints) {
+    this.accumPoints = accumPoints;
+  }
+
+  public Long getSumpayPoints() {
+    return sumpayPoints;
+  }
+
+  public void setSumpayPoints(Long sumpayPoints) {
+    this.sumpayPoints = sumpayPoints;
+  }
+
+  public String getTac() {
+    return tac;
+  }
+
+  public void setTac(String tac) {
+    this.tac = tac;
+  }
+
+  public String getLastsaved() {
+    return lastsaved;
+  }
+
+  public void setLastsaved(String lastsaved) {
+    this.lastsaved = lastsaved;
+  }
+
+  public String generateTac() {
+    String data = this.userid + this.points;
+    return MD5.generatePassword(data, this.userid);
+  }
+
+  public boolean tacCheck() {
+    String tac_c = generateTac();
+    if (tac_c.equalsIgnoreCase(this.tac) || this.tac == null) {
+      return true;
+    }
+    return false;
+  }
+
+  public void addPoints(int points) {
+    this.points = this.points + points;
+    if (points > 0) {
+      this.accumPoints = ((this.accumPoints == null ? 0 : this.accumPoints) + Math.abs(points)); //获得积分累加
+    } else {
+      this.sumpayPoints = ((this.sumpayPoints == null ? 0 : this.sumpayPoints) + Math.abs(points)); //消费积分累加
+    }
+    this.tac = this.generateTac();
+  }
+
+  public void addPoints(int points, boolean revflag) {
+    if (revflag) {
+      //冲正返回积分
+      this.points = this.points + points;
+      if (points > 0) {
+        this.sumpayPoints = ((this.sumpayPoints == null ? 0 : this.sumpayPoints) - Math.abs(points)); //消费积分累计冲正
+      } else {
+        this.accumPoints = ((this.accumPoints == null ? 0 : this.accumPoints) - Math.abs(points)); //获得积分累计冲正
+      }
+      this.tac = this.generateTac();
+    } else {
+      this.addPoints(points);
+    }
+  }
+
+
+}
diff --git a/src/main/java/com/supwisdom/dlpay/api/domain/TPointsTransdtl.java b/src/main/java/com/supwisdom/dlpay/api/domain/TPointsTransdtl.java
new file mode 100644
index 0000000..f56a53a
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/api/domain/TPointsTransdtl.java
@@ -0,0 +1,138 @@
+package com.supwisdom.dlpay.api.domain;
+
+import javax.persistence.*;
+
+/**
+ * 积分流水表
+ */
+@Entity
+@Table(name = "TB_POINTS_TRANSDTL",
+    indexes = {@Index(name = "points_transdtl_idx", columnList = "billno")})
+public class TPointsTransdtl {
+  @Id
+  @Column(name="REFNO", nullable = false, length = 32)
+  private String refno;
+
+  @Column(name="USERID", nullable = false, length = 32)
+  private String userid;
+
+  @Column(name="ACCDATE", length = 8)
+  private String accdate;
+
+  @Column(name="POINTS", nullable = false, length = 15)
+  private Long points;
+
+  @Column(name="BEFPOINTS", length = 15)
+  private Long befpoints;
+
+  @Column(name="BEFPOINTS", length = 15)
+  private Long aftpoints;
+
+  @Column(name="STATUS", length = 15)
+  private String status;
+
+  @Column(name="BILLNO", length = 32)
+  private String billno; //关联的消费流水号
+
+  @Column(name="TRANSDATE", length = 8)
+  private String transdate;
+
+  @Column(name="TRANSTIME", length = 9)
+  private String transtime;
+
+  public TPointsTransdtl() {
+  }
+
+  public TPointsTransdtl(String refno, String userid, String accdate, Long points, Long befpoints, Long aftpoints, String status, String billno, String transdate, String transtime) {
+    this.refno = refno;
+    this.userid = userid;
+    this.accdate = accdate;
+    this.points = points;
+    this.befpoints = befpoints;
+    this.aftpoints = aftpoints;
+    this.status = status;
+    this.billno = billno;
+    this.transdate = transdate;
+    this.transtime = transtime;
+  }
+
+  public String getRefno() {
+    return refno;
+  }
+
+  public void setRefno(String refno) {
+    this.refno = refno;
+  }
+
+  public String getUserid() {
+    return userid;
+  }
+
+  public void setUserid(String userid) {
+    this.userid = userid;
+  }
+
+  public String getAccdate() {
+    return accdate;
+  }
+
+  public void setAccdate(String accdate) {
+    this.accdate = accdate;
+  }
+
+  public Long getPoints() {
+    return points;
+  }
+
+  public void setPoints(Long points) {
+    this.points = points;
+  }
+
+  public Long getBefpoints() {
+    return befpoints;
+  }
+
+  public void setBefpoints(Long befpoints) {
+    this.befpoints = befpoints;
+  }
+
+  public Long getAftpoints() {
+    return aftpoints;
+  }
+
+  public void setAftpoints(Long aftpoints) {
+    this.aftpoints = aftpoints;
+  }
+
+  public String getStatus() {
+    return status;
+  }
+
+  public void setStatus(String status) {
+    this.status = status;
+  }
+
+  public String getBillno() {
+    return billno;
+  }
+
+  public void setBillno(String billno) {
+    this.billno = billno;
+  }
+
+  public String getTransdate() {
+    return transdate;
+  }
+
+  public void setTransdate(String transdate) {
+    this.transdate = transdate;
+  }
+
+  public String getTranstime() {
+    return transtime;
+  }
+
+  public void setTranstime(String transtime) {
+    this.transtime = transtime;
+  }
+}
diff --git a/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt b/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt
index 69f081e..092d541 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt
@@ -68,6 +68,7 @@
             useService.findByUseridOrThirdUniqueIdenty(request.userid, request.uid, request.syscode).let {
                 if (null != it) {
                     val account = useService.findAccountByUserid(it.userid, null)
+                    val pointacc = useService.findPointsAccountByUserid(it.userid)
                     ResponseEntity.ok(ResponseBodyBuilder.create()
                             .data("userid", it.userid)
                             .data("name", it.name)
@@ -80,8 +81,14 @@
                                 } else {
                                     it.availbal
                                 }
-                            })
-                            .data("points", 0) //积分
+                            }) //账户余额
+                            .data("points", pointacc.let {
+                                if (null == it) {
+                                    0
+                                } else {
+                                    it.points
+                                }
+                            }) //积分
                             .success())
                 }
 
diff --git a/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/user_service_impl.kt b/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/user_service_impl.kt
index 77c687f..e5f3353 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/user_service_impl.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/user_service_impl.kt
@@ -4,9 +4,11 @@
 import com.supwisdom.dlpay.api.dao.AccountDao
 import com.supwisdom.dlpay.api.dao.PersonDao
 import com.supwisdom.dlpay.api.dao.PersonIdentityDao
+import com.supwisdom.dlpay.api.dao.PointsAccountDao
 import com.supwisdom.dlpay.api.domain.TAccount
 import com.supwisdom.dlpay.api.domain.TPerson
 import com.supwisdom.dlpay.api.domain.TPersonIdentity
+import com.supwisdom.dlpay.api.domain.TPointsAccount
 import com.supwisdom.dlpay.framework.service.SystemUtilService
 import com.supwisdom.dlpay.api.service.UserService
 import com.supwisdom.dlpay.exception.TransactionProcessException
@@ -27,6 +29,8 @@
     @Autowired
     private lateinit var personIdentityDao: PersonIdentityDao
     @Autowired
+    private lateinit var pointsAccountDao: PointsAccountDao
+    @Autowired
     private lateinit var systemUtilService: SystemUtilService
 
     override fun registerUser(param: OpenUserParam): TPerson {
@@ -107,4 +111,8 @@
         }
     }
 
+    override fun findPointsAccountByUserid(userid: String): TPointsAccount? {
+        return pointsAccountDao.findByUserid(userid)
+    }
+
 }
\ No newline at end of file
diff --git a/src/main/kotlin/com/supwisdom/dlpay/api/service/user_service.kt b/src/main/kotlin/com/supwisdom/dlpay/api/service/user_service.kt
index f01258d..0fe40a5 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/api/service/user_service.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/api/service/user_service.kt
@@ -3,6 +3,7 @@
 import com.supwisdom.dlpay.api.bean.OpenUserParam
 import com.supwisdom.dlpay.api.domain.TAccount
 import com.supwisdom.dlpay.api.domain.TPerson
+import com.supwisdom.dlpay.api.domain.TPointsAccount
 import org.springframework.transaction.annotation.Propagation
 import org.springframework.transaction.annotation.Transactional
 
@@ -26,4 +27,7 @@
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class), readOnly = true)
     fun findAccountByUserid(userid: String, subjno:String?): TAccount?
 
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class), readOnly = true)
+    fun findPointsAccountByUserid(userid: String): TPointsAccount?
+
 }
\ No newline at end of file