用户接口
diff --git a/src/main/java/com/supwisdom/dlpay/framework/dao/ShopDao.java b/src/main/java/com/supwisdom/dlpay/framework/dao/ShopDao.java
new file mode 100644
index 0000000..2eb003e
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/framework/dao/ShopDao.java
@@ -0,0 +1,11 @@
+package com.supwisdom.dlpay.framework.dao;
+
+import com.supwisdom.dlpay.framework.domain.TShop;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+/**
+ * Created by shuwei on 2019/4/15.
+ */
+public interface ShopDao extends JpaRepository<TShop, Integer> {
+    TShop getByThirdUniqueIdenty(String thirdUniqueIdenty);
+}
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TShop.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TShop.java
index 978f8be..9263fa1 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TShop.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TShop.java
@@ -1,14 +1,15 @@
 package com.supwisdom.dlpay.framework.domain;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
+
+import javax.persistence.*;
 
 @Entity
 @Table(name = "TB_SHOP")
 public class TShop {
+
   @Id
+  @SequenceGenerator(name = "shopid", sequenceName = "SEQ_SHOP", allocationSize = 1)
+  @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "shopid")
   @Column(name="SHOPID", nullable = false, precision = 9)
   private Integer shopid;
 
@@ -57,6 +58,20 @@
   @Column(name="CLOSEDATE", length = 8)
   private String closedate;
 
+  /**
+   * 第三方唯一ID
+   * */
+  @Column(name="THIRD_UNIQUE_IDENTY", length = 40)
+  private String thirdUniqueIdenty;
+
+  public String getThirdUniqueIdenty() {
+    return thirdUniqueIdenty;
+  }
+
+  public void setThirdUniqueIdenty(String thirdUniqueIdenty) {
+    this.thirdUniqueIdenty = thirdUniqueIdenty;
+  }
+
   public Integer getShopid() {
     return shopid;
   }
diff --git a/src/main/kotlin/com/supwisdom/dlpay/consume/controller/consume_service.kt b/src/main/kotlin/com/supwisdom/dlpay/consume/controller/consume_service.kt
index e16ab7b..1c36a13 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/consume/controller/consume_service.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/consume/controller/consume_service.kt
@@ -121,11 +121,16 @@
         return if (code.retcode == "0") {
             val suc = PersonTransBuilder.newBuilder(accountUtilServcie)
                     .done(dtl.refno, TradeDict.DTL_STATUS_SUCCESS, personBalancePayService)
-            ResponseEntity.ok(suc)
+            ResponseEntity.ok(ResponseBodyBuilder.create()
+                    .success()
+                    .data("refno", suc.refno)
+                    .build())
         } else {
-            val fail = PersonTransBuilder.newBuilder(accountUtilServcie)
+            PersonTransBuilder.newBuilder(accountUtilServcie)
                     .done(dtl.refno, TradeDict.DTL_STATUS_FAIL, personBalancePayService)
-            ResponseEntity.ok(fail)
+            ResponseEntity.ok(ResponseBodyBuilder.create()
+                    .result(1, code.retmsg)
+                    .build())
         }
     }
 }
\ No newline at end of file
diff --git a/src/main/kotlin/com/supwisdom/dlpay/shop/bean/shop_param.kt b/src/main/kotlin/com/supwisdom/dlpay/shop/bean/shop_param.kt
new file mode 100644
index 0000000..4b8388a
--- /dev/null
+++ b/src/main/kotlin/com/supwisdom/dlpay/shop/bean/shop_param.kt
@@ -0,0 +1,21 @@
+package com.supwisdom.dlpay.shop.bean
+
+/**
+ * 请求参数
+ */
+class ShopParam {
+    var shopid: Int? = 0
+    var addr: String? = ""
+    var shopname: String = ""
+    var mobile: String = ""
+    var contactman: String = ""
+    var uniqueId: String? = ""
+}
+
+class UserParam {
+    var uniqueId: String? = ""
+    var userid: String? = ""
+    var name: String = ""
+    var addr: String? = ""
+    var mobile: String? = ""
+}
\ No newline at end of file
diff --git a/src/main/kotlin/com/supwisdom/dlpay/shop/controller/shop_controller.kt b/src/main/kotlin/com/supwisdom/dlpay/shop/controller/shop_controller.kt
index c92f7f5..9647b47 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/shop/controller/shop_controller.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/shop/controller/shop_controller.kt
@@ -1,16 +1,71 @@
 package com.supwisdom.dlpay.shop.controller
 
-import org.springframework.web.bind.annotation.RequestMapping
-import org.springframework.web.bind.annotation.RestController
+import com.supwisdom.dlpay.framework.ResponseBodyBuilder
+import com.supwisdom.dlpay.framework.domain.TShop
+import com.supwisdom.dlpay.framework.service.SystemUtilService
+import com.supwisdom.dlpay.framework.util.TradeDict
+import com.supwisdom.dlpay.shop.bean.ShopParam
+import com.supwisdom.dlpay.shop.service.ShopService
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.http.ResponseEntity
+import org.springframework.web.bind.annotation.*
 
 /**
- * Created by shuwei on 2019/4/15.
+ * 接口签名值等
  */
 @RestController
 @RequestMapping("/shop")
-class ShopController{
-    @RequestMapping("/open")
-    fun openAccount(){
+class ShopController {
+    @Autowired
+    private lateinit var shopService: ShopService
 
+    @PostMapping("/open")
+    fun openAccount(@RequestBody request: ShopParam): ResponseEntity<Any> {
+        if (request.uniqueId != null && request.uniqueId != "") {
+            var shop = shopService.findByThirdUniqueId(request.uniqueId!!)
+            if (shop != null) {
+                return ResponseEntity.ok(ResponseBodyBuilder.create()
+                        .result(1, "[uniqueId]该值已存在")
+                        .build())
+            }
+        }
+        val shop = TShop()
+        shop.addr = request.addr
+        shop.contactman = request.contactman
+        shop.mobile = request.mobile
+        shop.shopname = request.shopname
+        shop.status = TradeDict.STATUS_NORMAL
+        shop.thirdUniqueIdenty = request.uniqueId
+        shopService.save(shop)
+        return ResponseEntity.ok(ResponseBodyBuilder.create()
+                .success()
+                .data("shopid", shop.shopid)
+                .build())
     }
+
+    @GetMapping("/get")
+    fun queryShop(@RequestBody request: ShopParam): ResponseEntity<Any> {
+        if (request.uniqueId != null && request.uniqueId != "") {
+            var shop = shopService.findByThirdUniqueId(request.uniqueId!!)
+            if (shop != null) {
+                return ResponseEntity.ok(ResponseBodyBuilder.create()
+                        .success()
+                        .data("shop", shop)
+                        .build())
+            }
+        } else if (request.shopid != null && request.shopid != 0) {
+            var shop = shopService.findByShopId(request.shopid!!)
+            if (shop != null) {
+                return ResponseEntity.ok(ResponseBodyBuilder.create()
+                        .success()
+                        .data("shop", shop)
+                        .build())
+            }
+        }
+        return ResponseEntity.ok(ResponseBodyBuilder.create()
+                .result(1, "数据不存在")
+                .build())
+    }
+
+
 }
\ No newline at end of file
diff --git a/src/main/kotlin/com/supwisdom/dlpay/shop/service/impl/shop_service_impl.kt b/src/main/kotlin/com/supwisdom/dlpay/shop/service/impl/shop_service_impl.kt
new file mode 100644
index 0000000..c7d70db
--- /dev/null
+++ b/src/main/kotlin/com/supwisdom/dlpay/shop/service/impl/shop_service_impl.kt
@@ -0,0 +1,49 @@
+package com.supwisdom.dlpay.shop.service.impl
+
+import com.supwisdom.dlpay.framework.dao.ShopDao
+import com.supwisdom.dlpay.framework.dao.ShopaccDao
+import com.supwisdom.dlpay.framework.domain.TShop
+import com.supwisdom.dlpay.framework.domain.TShopacc
+import com.supwisdom.dlpay.framework.service.SystemUtilService
+import com.supwisdom.dlpay.shop.service.ShopService
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.stereotype.Service
+
+/**
+ * Created by shuwei on 2019/4/15.
+ */
+@Service
+class ShopServiceImpl : ShopService {
+    @Autowired
+    private lateinit var shopDao: ShopDao
+    @Autowired
+    private lateinit var shopaccDao: ShopaccDao
+    @Autowired
+    private lateinit var systemUtilService: SystemUtilService
+
+    override fun findByThirdUniqueId(uniqueId: String): TShop? {
+       return shopDao.getByThirdUniqueIdenty(uniqueId)
+    }
+
+    override fun save(shop: TShop): TShop {
+        var systemdatetime = systemUtilService.sysdatetime
+        shop.opendate = systemdatetime.hostdate
+        shopDao.save(shop)
+        var shopacc = shopaccDao.findByShopid(shop.shopid)
+        if (shopacc == null) {
+            shopacc = TShopacc()
+            shopacc.shopid = shop.shopid
+            shopacc.shopname = shop.shopname
+            shopacc.status = shop.status
+            shopacc.subjno = "2004"
+            shopacc.opendate = systemdatetime.hostdate
+            shopacc.shopaccno = String.format("2%09d",shop.shopid)
+            shopaccDao.save(shopacc)
+        }
+        return shop
+    }
+
+    override fun findByShopId(shopid: Int): TShop? {
+        return shopDao.getOne(shopid)
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/com/supwisdom/dlpay/shop/service/shop_service.kt b/src/main/kotlin/com/supwisdom/dlpay/shop/service/shop_service.kt
new file mode 100644
index 0000000..a42b86b
--- /dev/null
+++ b/src/main/kotlin/com/supwisdom/dlpay/shop/service/shop_service.kt
@@ -0,0 +1,19 @@
+package com.supwisdom.dlpay.shop.service
+
+import com.supwisdom.dlpay.framework.domain.TShop
+import org.springframework.transaction.annotation.Propagation
+import org.springframework.transaction.annotation.Transactional
+
+/**
+ * Created by shuwei on 2019/4/15.
+ */
+interface ShopService {
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class))
+    fun save(shop: TShop): TShop
+
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class), readOnly = true)
+    fun findByThirdUniqueId(uniqueId: String): TShop?
+
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class), readOnly = true)
+    fun findByShopId(shopid: Int): TShop?
+}
\ No newline at end of file
diff --git a/src/main/kotlin/com/supwisdom/dlpay/user/controller/user_controller.kt b/src/main/kotlin/com/supwisdom/dlpay/user/controller/user_controller.kt
new file mode 100644
index 0000000..3c6ca0c
--- /dev/null
+++ b/src/main/kotlin/com/supwisdom/dlpay/user/controller/user_controller.kt
@@ -0,0 +1,76 @@
+package com.supwisdom.dlpay.user.controller
+
+import com.supwisdom.dlpay.consume.domain.TPerson
+import com.supwisdom.dlpay.framework.ResponseBodyBuilder
+import com.supwisdom.dlpay.framework.util.TradeDict
+import com.supwisdom.dlpay.shop.bean.UserParam
+import com.supwisdom.dlpay.user.service.UserService
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.http.ResponseEntity
+import org.springframework.web.bind.annotation.*
+
+/**
+ * Created by shuwei on 2019/4/15.
+ */
+@RestController
+@RequestMapping("/user")
+class UserController {
+    @Autowired
+    private lateinit var useService: UserService
+
+    @PostMapping("/open")
+    fun openAccount(@RequestBody request: UserParam): ResponseEntity<Any> {
+        if (request.uniqueId != null && request.uniqueId != "") {
+            var person = useService.findByThirdUniqueIdenty(request.uniqueId!!)
+            if (person != null) {
+                return ResponseEntity.ok(ResponseBodyBuilder.create()
+                        .result(1, "[uniqueId]该值已存在")
+                        .build())
+            }
+        }
+        if (request.name == null) {
+            return ResponseEntity.ok(ResponseBodyBuilder.create()
+                    .result(1, "[name]不能为空")
+                    .build())
+        }
+        val person = TPerson()
+        person.addr = request.addr
+        person.name = request.name
+        person.mobile = request.mobile
+        person.status = TradeDict.STATUS_NORMAL
+        person.thirdUniqueIdenty = request.uniqueId
+        useService.save(person)
+        return ResponseEntity.ok(ResponseBodyBuilder.create()
+                .success()
+                .data("userid", person.userid)
+                .build())
+    }
+
+    @GetMapping("/get")
+    fun queryShop(@RequestBody request: UserParam): ResponseEntity<Any> {
+        if (request.uniqueId != null && request.uniqueId != "") {
+            var person = useService.findByThirdUniqueIdenty(request.uniqueId!!)
+            if (person != null) {
+                var account = useService.findAccountByUserid(person.userid)
+                return ResponseEntity.ok(ResponseBodyBuilder.create()
+                        .success()
+                        .data("person", person)
+                        .data("account", account!!)
+                        .build())
+            }
+        } else if (request.userid != null && request.userid != "") {
+            var person = useService.findPersonByUserid(request.userid!!)
+            if (person != null) {
+                var account = useService.findAccountByUserid(person.userid)
+                return ResponseEntity.ok(ResponseBodyBuilder.create()
+                        .success()
+                        .data("person", person)
+                        .data("account", account!!)
+                        .build())
+            }
+        }
+        return ResponseEntity.ok(ResponseBodyBuilder.create()
+                .result(1, "数据不存在")
+                .build())
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/com/supwisdom/dlpay/user/service/impl/user_service_impl.kt b/src/main/kotlin/com/supwisdom/dlpay/user/service/impl/user_service_impl.kt
new file mode 100644
index 0000000..8842924
--- /dev/null
+++ b/src/main/kotlin/com/supwisdom/dlpay/user/service/impl/user_service_impl.kt
@@ -0,0 +1,55 @@
+package com.supwisdom.dlpay.user.service.impl
+
+import com.supwisdom.dlpay.consume.dao.AccountDao
+import com.supwisdom.dlpay.consume.dao.PersonDao
+import com.supwisdom.dlpay.consume.domain.TAccount
+import com.supwisdom.dlpay.consume.domain.TPerson
+import com.supwisdom.dlpay.framework.service.SystemUtilService
+import com.supwisdom.dlpay.user.service.UserService
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.stereotype.Service
+
+/**
+ * Created by shuwei on 2019/4/15.
+ */
+@Service
+class UserServiceImpl : UserService {
+    @Autowired
+    private lateinit var personDao: PersonDao
+    @Autowired
+    private lateinit var accountDao: AccountDao
+    @Autowired
+    private lateinit var systemUtilService: SystemUtilService
+
+    override fun save(person: TPerson): TPerson {
+        personDao.save(person)
+        var account = accountDao.findByUserid(person.userid)
+        if (account == null) {
+            var systemdatetime = systemUtilService.sysdatetime
+            account = TAccount()
+            account.accname = person.name
+            account.opendate = systemdatetime.hostdate
+            account.userid = person.userid
+            account.status = person.status
+            account.subjno = "220201"
+            account.balance = 0.0
+            account.availbal = 0.0
+            account.frozebal = 0.0
+            account.lowfreeFlag = false
+            accountDao.save(account)
+        }
+        return person
+    }
+
+    override fun findByThirdUniqueIdenty(thirdUniqueIdenty: String): TPerson? {
+        return personDao.findByThirdUniqueIdenty(thirdUniqueIdenty)
+    }
+
+    override fun findPersonByUserid(userid: String): TPerson? {
+        return personDao.getOne(userid)
+    }
+
+    override fun findAccountByUserid(userid: String): TAccount? {
+        return accountDao.findByUserid(userid)
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/com/supwisdom/dlpay/user/service/user_service.kt b/src/main/kotlin/com/supwisdom/dlpay/user/service/user_service.kt
new file mode 100644
index 0000000..57dd108
--- /dev/null
+++ b/src/main/kotlin/com/supwisdom/dlpay/user/service/user_service.kt
@@ -0,0 +1,23 @@
+package com.supwisdom.dlpay.user.service
+
+import com.supwisdom.dlpay.consume.domain.TAccount
+import com.supwisdom.dlpay.consume.domain.TPerson
+import org.springframework.transaction.annotation.Propagation
+import org.springframework.transaction.annotation.Transactional
+
+/**
+ * Created by shuwei on 2019/4/15.
+ */
+interface UserService {
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class))
+    fun save(person: TPerson): TPerson
+
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class), readOnly = true)
+    fun findByThirdUniqueIdenty(thirdUniqueIdenty: String): TPerson?
+
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class), readOnly = true)
+    fun findPersonByUserid(userid: String): TPerson?
+
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class), readOnly = true)
+    fun findAccountByUserid(userid: String): TAccount?
+}
\ No newline at end of file