魏熙美 преди 6 години
родител
ревизия
d20c220683

+ 9
- 2
CODE/smart-community/app-api/src/main/java/com/community/huiju/service/impl/TaUserServiceImpl.java Целия файл

@@ -833,6 +833,9 @@ public class TaUserServiceImpl implements ITaUserService {
833 833
             return response;
834 834
         }
835 835
 
836
+        user.setUserVerifyId(userElement.getUserVerifyId());
837
+        user.setCommunityId(userElement.getCommunityId());
838
+
836 839
         // 查询 家属或者租客
837 840
         if (null != userId) {
838 841
             TaUserVerify todUserVerify = taUserVerifyMapper.selectCommunityAndAddress(userId, userElement.getCommunityId(), userElement.getPhaseId(), userElement.getBuildingId(), userElement.getUnitId(), userElement.getLevelId(), userElement.getRoomNoId());
@@ -842,11 +845,12 @@ public class TaUserServiceImpl implements ITaUserService {
842 845
                 return response;
843 846
             }
844 847
             TaUser todUser = taUserMapper.selectByPrimaryKey(userId);
848
+            todUser.setUserVerifyId(todUserVerify.getId());
849
+            todUser.setCommunityId(todUserVerify.getCommunityId());
845 850
             user = todUser;
846 851
         }
847 852
 
848
-        user.setUserVerifyId(userElement.getUserVerifyId());
849
-        user.setCommunityId(userElement.getCommunityId());
853
+
850 854
         TaUserVO userVO = new TaUserVO();
851 855
 
852 856
         // 根据用户id, 获取 用户的住址, 人脸是否认证, 角色
@@ -867,6 +871,9 @@ public class TaUserServiceImpl implements ITaUserService {
867 871
 
868 872
         BeanTools.copyProperties(user, userVO);
869 873
 
874
+        // 房产状态
875
+        userVO.setVerifyStatus(user.getVerifyStatus());
876
+
870 877
         // 默认未绑定微信
871 878
         userVO.setBindingWX(Constant.NO_BINDING_WX);
872 879
 

+ 1
- 1
CODE/smart-community/app-api/src/main/java/com/community/huiju/vo/TaUserVO.java Целия файл

@@ -34,7 +34,7 @@ public class TaUserVO {
34 34
     /** 性别 **/
35 35
     private String gender;
36 36
 
37
-    /** 认证状态 **/
37
+    /** 房产认证状态 **/
38 38
     private String verifyStatus;
39 39
 
40 40
     /** 角色 **/

BIN
CODE/smart-community/community-common/target/community-common-0.0.1.jar Целия файл


+ 59
- 0
CODE/smart-community/property-api/src/main/java/com/community/huiju/controller/UserVerifyController.java Целия файл

@@ -1,9 +1,16 @@
1 1
 package com.community.huiju.controller;
2 2
 
3
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
3 4
 import com.community.commom.mode.ResponseBean;
4 5
 import com.community.commom.session.UserElement;
5 6
 import com.community.huiju.common.base.BaseController;
7
+import com.community.huiju.model.TaUser;
8
+import com.community.huiju.model.TaUserVerify;
9
+import com.community.huiju.model.TpBuildingOwnerInfo;
10
+import com.community.huiju.service.IBuildingOwnerInfoService;
11
+import com.community.huiju.service.ITaUserService;
6 12
 import com.community.huiju.service.ITaUserVerifyService;
13
+import com.google.common.collect.Maps;
7 14
 import io.swagger.annotations.Api;
8 15
 import io.swagger.annotations.ApiImplicitParam;
9 16
 import io.swagger.annotations.ApiImplicitParams;
@@ -13,6 +20,7 @@ import org.springframework.cloud.context.config.annotation.RefreshScope;
13 20
 import org.springframework.web.bind.annotation.*;
14 21
 
15 22
 import javax.servlet.http.HttpSession;
23
+import java.util.Map;
16 24
 
17 25
 @RestController
18 26
 @RefreshScope
@@ -23,6 +31,12 @@ public class UserVerifyController extends BaseController {
23 31
     @Autowired
24 32
     private ITaUserVerifyService iTaUserVerifyService;
25 33
 
34
+    @Autowired
35
+    private ITaUserService iTaUserService;
36
+
37
+    @Autowired
38
+    private IBuildingOwnerInfoService iBuildingOwnerInfoService;
39
+
26 40
     @RequestMapping(value = "/user/verify/all", method = RequestMethod.GET)
27 41
     @ApiOperation(value = "获取待审核的用户列表", notes = "获取待审核的用户列表")
28 42
     @ApiImplicitParams({
@@ -60,4 +74,49 @@ public class UserVerifyController extends BaseController {
60 74
         return responseBean;
61 75
     }
62 76
 
77
+    @RequestMapping(value = "/ta/user/has", method = RequestMethod.GET)
78
+    @ApiOperation(value = "校验移动端手机号是否注册以及业主", notes = "校验移动端手机号是否注册以及业主")
79
+    @ApiImplicitParams({
80
+            @ApiImplicitParam(paramType = "header", dataTypeClass = String.class, name = "X-Auth-Token", value = "token"),
81
+            @ApiImplicitParam(paramType = "query", dataTypeClass = String.class, name = "ownerTel", value = "审核id"),
82
+    })
83
+    public ResponseBean getAll(@RequestParam("ownerTel") String ownerTel,
84
+                               @RequestParam("phaseId") Integer phaseId,
85
+                               @RequestParam("buildingId")Integer buildingId,
86
+                               @RequestParam("unitId")Integer unitId,
87
+                               @RequestParam("levelId")Integer levelId,
88
+                               @RequestParam("roomNoId")Integer roomNoId,
89
+                               HttpSession session) {
90
+
91
+        ResponseBean responseBean = new ResponseBean();
92
+        UserElement userElement = getUserElement(session);
93
+        QueryWrapper<TaUser> queryWrapper = new QueryWrapper<>();
94
+        queryWrapper.eq("login_name", ownerTel);
95
+        TaUser user = iTaUserService.getOne(queryWrapper);
96
+        if (null == user) {
97
+            responseBean.addError("未注册");
98
+            return responseBean;
99
+        }
100
+
101
+        Map<String, Object> map = Maps.newHashMap();
102
+        map.put("info", user);
103
+        // true 标识业主 false 非业主
104
+        map.put("boolRole", false);
105
+
106
+        QueryWrapper<TpBuildingOwnerInfo> buildingOwnerInfoQueryWrapper = new QueryWrapper<>();
107
+        buildingOwnerInfoQueryWrapper.eq("phase_id", phaseId);
108
+        buildingOwnerInfoQueryWrapper.eq("building_id", buildingId);
109
+        buildingOwnerInfoQueryWrapper.eq("unit_id", unitId);
110
+        buildingOwnerInfoQueryWrapper.eq("level_id", levelId);
111
+        buildingOwnerInfoQueryWrapper.eq("room_no_id", roomNoId);
112
+        buildingOwnerInfoQueryWrapper.eq("owner_tel", ownerTel);
113
+        TpBuildingOwnerInfo buildingOwnerInfo = iBuildingOwnerInfoService.getOne(buildingOwnerInfoQueryWrapper);
114
+        if (null == buildingOwnerInfo) {
115
+            map.put("boolRole", true);
116
+        }
117
+
118
+        responseBean.addSuccess(map);
119
+        return responseBean;
120
+    }
121
+
63 122
 }

+ 4
- 0
CODE/smart-community/property-api/src/main/java/com/community/huiju/model/TaUser.java Целия файл

@@ -130,5 +130,9 @@ public class TaUser implements Serializable {
130 130
      */
131 131
     private String faceStatus;
132 132
 
133
+    /**
134
+     * 身份证号
135
+     */
136
+    private String idCard;
133 137
 
134 138
 }

+ 1
- 1
CODE/smart-community/property-api/src/main/resources/mapper/TpBuildingOwnerInfoMapper.xml Целия файл

@@ -65,7 +65,7 @@
65 65
             t.owner_tel as ownerTel,
66 66
             t.owner_name as ownerName,
67 67
             t.id_card as idCard,
68
-            r.role_name as roleName,
68
+            r.description as roleName,
69 69
             u.verify_status as verifyStatus,
70 70
             m.user_name AS updateName,
71 71
             t.update_date as updateDate

+ 16
- 0
VUECODE/smart-property-manage/src/api/user.js Целия файл

@@ -106,3 +106,19 @@ export function userVerifyAudit(data) {
106 106
   })
107 107
 }
108 108
 
109
+// 校验移动端手机号是否注册以及业主
110
+export function taUserHas(data) {
111
+  return request({
112
+    url: '/ta/user/has',
113
+    method: 'get',
114
+    params: {
115
+      ownerTel: data.ownerTel,
116
+      phaseId: data.phaseId,
117
+      buildingId: data.buildingId,
118
+      unitId: data.unitId,
119
+      levelId: data.levelId,
120
+      roomNoId: data.roomNoId
121
+    }
122
+  })
123
+}
124
+

+ 10
- 1
VUECODE/smart-property-manage/src/store/modules/user.js Целия файл

@@ -1,6 +1,6 @@
1 1
 import { login, logOut, getInfo, sendCode, getPermission } from '@/api/login'
2 2
 import { getToken, setToken, removeToken } from '@/utils/auth'
3
-import { employeesList, userRoleById, addUser, selectUser, upDate, upDateStatus, userVerifyAll, userVerifyAudit } from '@/api/user'
3
+import { employeesList, userRoleById, addUser, selectUser, upDate, upDateStatus, userVerifyAll, userVerifyAudit, taUserHas } from '@/api/user'
4 4
 
5 5
 const user = {
6 6
   state: {
@@ -192,6 +192,15 @@ const user = {
192 192
           reject(error)
193 193
         })
194 194
       })
195
+    },
196
+    TaUserHas({ commit }, data) { // 校验移动端手机号是否注册以及业主
197
+      return new Promise((resolve, reject) => {
198
+        taUserHas(data).then(response => {
199
+          resolve(response)
200
+        }).catch(error => {
201
+          reject(error)
202
+        })
203
+      })
195 204
     }
196 205
   }
197 206
 }

+ 212
- 28
VUECODE/smart-property-manage/src/views/building/add/index.vue Целия файл

@@ -1,27 +1,83 @@
1 1
 <template>
2 2
   <div class="root">
3
-    <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="100px" class="add-ruleForm">
4
-      <el-form-item label="期/区" prop="phase">
5
-        <el-input v-model="ruleForm.phase"/>
3
+    <el-form ref="ruleForm" :model="listQuery" :rules="rules" label-width="100px" class="add-ruleForm">
4
+      <el-form-item label="期/区" prop="phaseId">
5
+        <el-select v-model="listQuery.phaseId" placeholder="期/区" @change="buildSelectChange(0)">
6
+          <!--<el-option label="选择楼栋" value="-1" />-->
7
+          <el-option
8
+            v-for="item in phaseList"
9
+            :key="item.id"
10
+            :label="item.name"
11
+            :value="item.id"/>
12
+        </el-select>
6 13
       </el-form-item>
7
-      <el-form-item label="栋" prop="building">
8
-        <el-input v-model="ruleForm.building"/>
14
+      <el-form-item label="栋" prop="buildingId">
15
+        <el-select v-model="listQuery.buildingId" placeholder="栋" @change="buildSelectChange(1)">
16
+          <!--<el-option label="选择楼栋" value="-1" />-->
17
+          <el-option
18
+            v-for="item in buildingList"
19
+            :key="item.id"
20
+            :label="item.name"
21
+            :value="item.id"/>
22
+        </el-select>
9 23
       </el-form-item>
10
-      <el-form-item label="单元" prop="unit">
11
-        <el-input v-model="ruleForm.unit"/>
24
+      <el-form-item label="单元" prop="unitId">
25
+        <el-select v-model="listQuery.unitId" placeholder="单元" @change="buildSelectChange(2)">
26
+          <!--<el-option label="选择单元" value="-1" />-->
27
+          <el-option
28
+            v-for="item in unitList"
29
+            :key="item.id"
30
+            :label="item.name"
31
+            :value="item.id"/>
32
+        </el-select>
12 33
       </el-form-item>
13
-      <el-form-item label="楼层" prop="level">
14
-        <el-input v-model="ruleForm.level"/>
34
+      <el-form-item label="楼层" prop="levelId">
35
+        <el-select v-model="listQuery.levelId" placeholder="楼层" @change="buildSelectChange(3)">
36
+          <!--<el-option label="选择楼层" value="-1" />-->
37
+          <el-option
38
+            v-for="item in levelList"
39
+            :key="item.id"
40
+            :label="item.name"
41
+            :value="item.id"/>
42
+        </el-select>
15 43
       </el-form-item>
16
-      <el-form-item label="户号" prop="roomNo">
17
-        <el-input v-model="ruleForm.roomNo"/>
44
+      <el-form-item label="户号" prop="roomNoId">
45
+        <el-select v-model="listQuery.roomNoId" placeholder="户号">
46
+          <!--<el-option label="选择户号" value="-1" />-->
47
+          <el-option
48
+            v-for="item in roomNoList"
49
+            :key="item.id"
50
+            :label="item.name"
51
+            :value="item.id"/>
52
+        </el-select>
18 53
       </el-form-item>
19
-      <el-form-item label="业主姓名" prop="ownerName">
20
-        <el-input v-model="ruleForm.ownerName"/>
54
+      <el-form-item label="手机号" prop="ownerTel" placeholder="手机号">
55
+        <el-input v-model="listQuery.ownerTel" @blur="taUserHas('ruleForm')"/>
21 56
       </el-form-item>
22
-      <el-form-item label="业主手机号" prop="ownerTel">
23
-        <el-input v-model="ruleForm.ownerTel"/>
57
+      <el-form-item label="身份" prop="roleId">
58
+        <el-select v-model="listQuery.roleId" placeholder="身份">
59
+          <el-option :disabled="roleDisabled" label="业主" value="1" />
60
+          <el-option label="租客" value="2" />
61
+          <el-option label="家属" value="3" />
62
+        </el-select>
24 63
       </el-form-item>
64
+      <el-form-item v-if="isRegistered" label="姓名" placeholder="姓名">
65
+        <el-input v-model="listQuery.ownerName"/>
66
+      </el-form-item>
67
+      <div v-else>
68
+        <el-form-item label="注册状态:" >
69
+          <span style="margin-left: 100px;">已注册</span>
70
+        </el-form-item>
71
+        <el-form-item label="姓名:" >
72
+          <span style="margin-left: 100px;">{{ userName }}</span>
73
+        </el-form-item>
74
+        <el-form-item label="性别:" >
75
+          <span style="margin-left: 100px;">{{ gender }}</span>
76
+        </el-form-item>
77
+        <el-form-item label="身份证号:" >
78
+          <span style="margin-left: 100px;">{{ idCard }}</span>
79
+        </el-form-item>
80
+      </div>
25 81
       <el-form-item>
26 82
         <el-button type="primary" @click="submitForm('ruleForm')">立即创建</el-button>
27 83
         <el-button @click="resetForm('ruleForm')">重置</el-button>
@@ -34,29 +90,40 @@
34 90
 export default {
35 91
   data() {
36 92
     return {
37
-      ruleForm: {
38
-        phase: '',
39
-        building: '',
40
-        unit: '',
41
-        level: '',
42
-        roomNo: '',
93
+      listQuery: {
94
+        phaseId: '',
95
+        buildingId: '',
96
+        unitId: '',
97
+        levelId: '',
98
+        roomNoId: '',
43 99
         ownerName: '',
44
-        ownerTel: ''
100
+        ownerTel: '',
101
+        roleId: ''
45 102
       },
103
+      isRegistered: true, // true 未注册 false 注册
104
+      roleDisabled: false, // 是否禁用业主下拉选项
105
+      phaseList: [], // 期 集合
106
+      buildingList: [], // seletc 楼栋集合
107
+      unitList: [], // seletc 单元集合
108
+      levelList: [], // seletc 层 集合
109
+      roomNoList: [], //  seletc 户号集合
110
+      userName: '', // 用户姓名
111
+      gender: '', // 性别
112
+      idCard: '', // 身份证
46 113
       rules: {
47
-        phase: [
114
+        phaseId: [
48 115
           { required: true, message: '请输入期/区', trigger: 'blur' }
49 116
         ],
50
-        building: [
117
+        buildingId: [
51 118
           { required: true, message: '请输入楼栋', trigger: 'blur' }
52 119
         ],
53
-        unit: [
120
+        unitId: [
54 121
           { required: true, message: '请输入单元', trigger: 'blur' }
55 122
         ],
56
-        level: [
123
+        levelId: [
57 124
           { required: true, message: '请输入楼层', trigger: 'blur' }
58 125
         ],
59
-        roomNo: [
126
+        roomNoId: [
60 127
           { required: true, message: '请输入户号', trigger: 'blur' }
61 128
         ],
62 129
         ownerName: [
@@ -65,10 +132,14 @@ export default {
65 132
         ownerTel: [
66 133
           { required: true, message: '请输入手机号', trigger: 'blur' },
67 134
           { min: 11, max: 11, required: true, message: '请输入11位手机号', trigger: 'blur' }
68
-        ],
135
+        ]
69 136
       }
70 137
     }
71 138
   },
139
+  mounted() {
140
+    // 获取期
141
+    this.getPhase()
142
+  },
72 143
   methods: {
73 144
     submitForm(formName) { // 提交
74 145
       this.$refs[formName].validate((valid) => {
@@ -81,6 +152,12 @@ export default {
81 152
       })
82 153
     },
83 154
     resetForm(formName) { // 重置
155
+      // 重置为未注册
156
+      this.isRegistered = true
157
+      // 重置为非业主
158
+      this.roleDisabled = false
159
+
160
+      console.log(this.isRegistered)
84 161
       this.$refs[formName].resetFields()
85 162
     },
86 163
     addBuilding() {
@@ -107,6 +184,113 @@ export default {
107 184
         loading.close()
108 185
         console.log('error AddBuilding')
109 186
       })
187
+    },
188
+    getPhase() { // 获取期
189
+      this.listQuery.phaseId = ''
190
+      this.$store.dispatch('GetPhaseList', this.listQuery).then((res) => {
191
+        this.phaseList = res.data
192
+      }).catch(() => {
193
+        console.log('error phase BuildingAddress')
194
+      })
195
+    },
196
+    getBuild() { // 获取楼栋
197
+      this.listQuery.buildingId = ''
198
+      this.$store.dispatch('GetBuildingList', this.listQuery).then((res) => {
199
+        this.buildingList = res.data
200
+      }).catch(() => {
201
+        console.log('error building BuildingAddress')
202
+      })
203
+    },
204
+    getUnit() { // 获取单元
205
+      this.listQuery.unitId = ''
206
+      this.$store.dispatch('GetUnitList', this.listQuery).then((res) => {
207
+        this.unitList = res.data
208
+      }).catch(() => {
209
+        console.log('error unit BuildingAddress')
210
+      })
211
+    },
212
+    getLevel() { // 获取楼层
213
+      this.listQuery.levelId = ''
214
+      this.$store.dispatch('GetLevelList', this.listQuery).then((res) => {
215
+        this.levelList = res.data
216
+      }).catch(() => {
217
+        console.log('error level BuildingAddress')
218
+      })
219
+    },
220
+    getRoomNo() { // 获取户号
221
+      this.listQuery.roomNoId = ''
222
+      this.$store.dispatch('GetRoomNoList', this.listQuery).then((res) => {
223
+        this.roomNoList = res.data
224
+      }).catch(() => {
225
+        console.log('error roomNo BuildingAddress')
226
+      })
227
+    },
228
+    buildSelectChange(value) { // select 的 change
229
+      switch (value) {
230
+        case 0: // 查询栋
231
+          this.buildingList = []
232
+          this.unitList = []
233
+          this.levelList = []
234
+          this.roomNoList = []
235
+          this.listQuery.buildingId = ''
236
+          this.listQuery.unitId = ''
237
+          this.listQuery.levelId = ''
238
+          this.listQuery.roomNoId = ''
239
+          this.getBuild()
240
+          break
241
+        case 1: // 查询 单元
242
+          this.unitList = []
243
+          this.levelList = []
244
+          this.roomNoList = []
245
+          this.listQuery.unitId = ''
246
+          this.listQuery.levelId = ''
247
+          this.listQuery.roomNoId = ''
248
+          this.getUnit()
249
+          break
250
+        case 2: // 查询 楼层
251
+          this.levelList = []
252
+          this.roomNoList = []
253
+          this.listQuery.levelId = ''
254
+          this.listQuery.roomNoId = ''
255
+          this.getLevel()
256
+          break
257
+        case 3: // 查询 户号
258
+          this.roomNoList = []
259
+          this.listQuery.roomNoId = ''
260
+          this.getRoomNo()
261
+          break
262
+      }
263
+    },
264
+    taUserHas(formName) { // 校验移动端手机号是否注册以及业主
265
+      this.$refs[formName].validate((valid) => {
266
+        if (valid) {
267
+          this.$store.dispatch('TaUserHas', this.listQuery).then((res) => {
268
+            const resCode = res.code
269
+            if (resCode === '1') {
270
+              // 未注册
271
+              this.isRegistered = true
272
+              return
273
+            }
274
+            // 已经注册
275
+            this.isRegistered = false
276
+            const resData = res.data
277
+            if (resData.boolRole === true) {
278
+              // 表示已经是业主
279
+              this.roleDisabled = true
280
+            }
281
+            // 展示注册信息
282
+            const resInfo = resData.info
283
+            this.userName = resInfo.userName
284
+            this.idCard = resInfo.idCard
285
+            this.gender = resInfo.gender === '1' ? '男' : '女'
286
+          }).catch(() => {
287
+            console.log('TaUserHas error')
288
+          })
289
+        } else {
290
+          console.log('error 校验号码')
291
+          return false
292
+        }
293
+      })
110 294
     }
111 295
   }
112 296
 }

+ 19
- 0
VUECODE/smart-property-manage/src/views/building/index.vue Целия файл

@@ -356,6 +356,9 @@ export default {
356 356
       })
357 357
     },
358 358
     formatDate(val) {
359
+      if (val === null) {
360
+        return ''
361
+      }
359 362
       var value = new Date(val)
360 363
       var year = value.getFullYear()
361 364
       var month = value.getMonth() + 1
@@ -365,6 +368,22 @@ export default {
365 368
       // var seconds = value.getSeconds()
366 369
       // return year + '-' + month + '-' + day + ' ' + hour + ':' + minutes + ':' + seconds
367 370
       return year + '-' + month + '-' + day
371
+    },
372
+    showRoleName(roleId) {
373
+      let str = ''
374
+      switch (roleId) {
375
+        case 1:
376
+          str = '业主'
377
+          break
378
+        case 2:
379
+          str = '租客'
380
+          break
381
+        case 3:
382
+          str = '家属'
383
+          break
384
+      }
385
+
386
+      return str
368 387
     }
369 388
   }
370 389
 }