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
index c7d70db..411182d 100644
--- 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
@@ -5,6 +5,7 @@
 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.framework.util.Subject
 import com.supwisdom.dlpay.shop.service.ShopService
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.stereotype.Service
@@ -35,7 +36,7 @@
             shopacc.shopid = shop.shopid
             shopacc.shopname = shop.shopname
             shopacc.status = shop.status
-            shopacc.subjno = "2004"
+            shopacc.subjno = Subject.SUBJNO_MACHANT_INCOME
             shopacc.opendate = systemdatetime.hostdate
             shopacc.shopaccno = String.format("2%09d",shop.shopid)
             shopaccDao.save(shopacc)
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
index 8842924..4f04d2c 100644
--- 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
@@ -5,6 +5,7 @@
 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.framework.util.Subject
 import com.supwisdom.dlpay.user.service.UserService
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.stereotype.Service
@@ -22,6 +23,7 @@
     private lateinit var systemUtilService: SystemUtilService
 
     override fun save(person: TPerson): TPerson {
+        //TODO check tac
         personDao.save(person)
         var account = accountDao.findByUserid(person.userid)
         if (account == null) {
@@ -31,7 +33,7 @@
             account.opendate = systemdatetime.hostdate
             account.userid = person.userid
             account.status = person.status
-            account.subjno = "220201"
+            account.subjno = Subject.SUBJNO_PERSONAL_DEPOSIT
             account.balance = 0.0
             account.availbal = 0.0
             account.frozebal = 0.0
diff --git a/src/test/kotlin/com/supwisdom/dlpay/MvcBaseTest.kt b/src/test/kotlin/com/supwisdom/dlpay/MvcBaseTest.kt
new file mode 100644
index 0000000..626b090
--- /dev/null
+++ b/src/test/kotlin/com/supwisdom/dlpay/MvcBaseTest.kt
@@ -0,0 +1,15 @@
+package com.supwisdom.dlpay
+
+import org.junit.runner.RunWith
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc
+import org.springframework.boot.test.context.SpringBootTest
+import org.springframework.test.context.junit4.SpringRunner
+
+/**
+ * mvc 基础测试类
+ * 放置基础方法，如认证信息等
+ */
+@RunWith(SpringRunner::class)
+@SpringBootTest
+@AutoConfigureMockMvc
+abstract class MvcBaseTest
\ No newline at end of file
diff --git a/src/test/kotlin/com/supwisdom/dlpay/ShopControllerTest.kt b/src/test/kotlin/com/supwisdom/dlpay/controller/ShopControllerTest.kt
similarity index 87%
rename from src/test/kotlin/com/supwisdom/dlpay/ShopControllerTest.kt
rename to src/test/kotlin/com/supwisdom/dlpay/controller/ShopControllerTest.kt
index 4ff1714..e07a5fe 100644
--- a/src/test/kotlin/com/supwisdom/dlpay/ShopControllerTest.kt
+++ b/src/test/kotlin/com/supwisdom/dlpay/controller/ShopControllerTest.kt
@@ -1,17 +1,13 @@
-package com.supwisdom.dlpay
+package com.supwisdom.dlpay.controller
 
 import com.google.gson.Gson
+import com.supwisdom.dlpay.MvcBaseTest
 import com.supwisdom.dlpay.framework.domain.TShop
 import com.supwisdom.dlpay.shop.bean.ShopParam
 import org.junit.Assert
 import org.junit.Test
-import org.junit.runner.RunWith
 import org.springframework.beans.factory.annotation.Autowired
-import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc
-import org.springframework.boot.test.context.SpringBootTest
 import org.springframework.http.MediaType
-import org.springframework.test.context.TestPropertySource
-import org.springframework.test.context.junit4.SpringRunner
 import org.springframework.test.web.servlet.MockMvc
 
 import org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get
@@ -22,10 +18,7 @@
 /**
  * Created by shuwei on 2019/4/15.
  */
-@RunWith(SpringRunner::class)
-@SpringBootTest
-@AutoConfigureMockMvc
-class ShopControllerTest {
+class ShopControllerTest : MvcBaseTest() {
     @Autowired
     private lateinit var mvc: MockMvc
 
diff --git a/src/test/kotlin/com/supwisdom/dlpay/controller/UserControllerTest.kt b/src/test/kotlin/com/supwisdom/dlpay/controller/UserControllerTest.kt
new file mode 100644
index 0000000..3d93d47
--- /dev/null
+++ b/src/test/kotlin/com/supwisdom/dlpay/controller/UserControllerTest.kt
@@ -0,0 +1,84 @@
+package com.supwisdom.dlpay.controller
+
+import com.google.gson.Gson
+import com.supwisdom.dlpay.MvcBaseTest
+import com.supwisdom.dlpay.consume.domain.TAccount
+import com.supwisdom.dlpay.consume.domain.TPerson
+import com.supwisdom.dlpay.shop.bean.ShopParam
+import com.supwisdom.dlpay.shop.bean.UserParam
+import org.junit.Assert
+import org.junit.Test
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.http.MediaType
+import org.springframework.test.web.servlet.MockMvc
+import org.springframework.test.web.servlet.request.MockMvcRequestBuilders
+import org.springframework.test.web.servlet.result.MockMvcResultHandlers
+import org.springframework.test.web.servlet.result.MockMvcResultMatchers
+
+
+class UserControllerTest : MvcBaseTest() {
+    @Autowired
+    private lateinit var mvc: MockMvc
+
+    class RetBean {
+        var userid: String = ""
+        var retcode: Int = 0
+        lateinit var person: TPerson
+        lateinit var account: TAccount
+    }
+
+    @Test
+    fun open() {
+        val userParam = UserParam()
+        userParam.uniqueId = ""//random req
+        userParam.name = "测试名称"
+        val gson = Gson()
+        val ret = mvc.perform(MockMvcRequestBuilders.post("/user/open").content(gson.toJson(userParam))
+                .contentType(MediaType.APPLICATION_JSON))
+                .andExpect(MockMvcResultMatchers.status().isOk)
+                .andDo(MockMvcResultHandlers.print())
+                .andReturn()
+        val res = ret.response.contentAsString
+        Assert.assertNotNull(res)
+        val retBean = gson.fromJson(res, RetBean::class.java)
+        Assert.assertNotNull(retBean)
+        Assert.assertEquals(0, retBean.retcode)
+        Assert.assertNotNull(retBean.userid)
+        Assert.assertNotEquals("", retBean.userid)
+    }
+
+    @Test
+    fun get() {
+        val userParam = UserParam()
+        userParam.uniqueId = "testuseruniqueId"//测试用
+        userParam.name = "测试名称:testuseruniqueId"
+        val gson = Gson()
+        val ret = mvc.perform(MockMvcRequestBuilders.post("/user/open").content(gson.toJson(userParam))
+                .contentType(MediaType.APPLICATION_JSON))
+                .andExpect(MockMvcResultMatchers.status().isOk)
+                .andDo(MockMvcResultHandlers.print())
+                .andReturn()
+        val resOpen = ret.response.contentAsString
+        Assert.assertNotNull(resOpen)
+        val retBeanOpen = gson.fromJson(resOpen, RetBean::class.java)
+        Assert.assertNotNull(retBeanOpen)
+        Assert.assertNotNull(retBeanOpen.userid)
+        userParam.userid = retBeanOpen.userid
+
+        val retGet = mvc.perform(MockMvcRequestBuilders.get("/user/get").content(gson.toJson(userParam))
+                .contentType(MediaType.APPLICATION_JSON))
+                .andExpect(MockMvcResultMatchers.status().isOk)
+                .andDo(MockMvcResultHandlers.print())
+                .andReturn()
+        val res = retGet.response.contentAsString
+        Assert.assertNotNull(res)
+        val retBean = gson.fromJson(res, RetBean::class.java)
+        Assert.assertNotNull(retBean)
+        Assert.assertEquals(0, retBean.retcode)
+        Assert.assertNotNull(retBean.person)
+        Assert.assertEquals(retBeanOpen.userid, retBean.person.userid)
+        Assert.assertNotNull(retBeanOpen.account)
+        Assert.assertEquals(retBeanOpen.person.userid, retBean.account.userid)
+    }
+
+}
\ No newline at end of file
