用户修改
diff --git a/src/main/kotlin/com/supwisdom/dlpay/api/bean/api_request_param.kt b/src/main/kotlin/com/supwisdom/dlpay/api/bean/api_request_param.kt
index 9fd9e5d..79d56ea 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/api/bean/api_request_param.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/api/bean/api_request_param.kt
@@ -27,21 +27,21 @@
var syscode: String = "" //必传
var uid: String = "" //必传
var name: String = "" //必传
- var sex: String? = ""
+ var sex: String? = null
var idtype: String = "" //必传
var idno: String = "" //必传
- var mobile: String? = ""
- var tel: String? = ""
- var email: String? = ""
- var address: String? = ""
- var zipcode: String? = ""
+ var mobile: String? = null
+ var tel: String? = null
+ var email: String? = null
+ var address: String? = null
+ var zipcode: String? = null
var sign: String = "" //必传
fun checkParam(): Boolean {
if (StringUtil.isEmpty(syscode)) throw RequestParamCheckException(TradeErrorCode.REQUEST_PARAM_ERROR, "子系统注册代码不能为空")
if (StringUtil.isEmpty(uid)) throw RequestParamCheckException(TradeErrorCode.REQUEST_PARAM_ERROR, "用户唯一号不能为空")
if (StringUtil.isEmpty(name)) throw RequestParamCheckException(TradeErrorCode.REQUEST_PARAM_ERROR, "姓名不能为空")
- if (!StringUtil.isEmpty(sex) && !ConstantUtil.SEX_MALE.equals(sex, true) && !ConstantUtil.SEX_FEMALE.equals(sex, true)) throw RequestParamCheckException(TradeErrorCode.REQUEST_PARAM_ERROR, "性别非法[male|female]")
+ if (!StringUtil.isEmpty(sex) && ConstantUtil.SEX_MALE != sex && ConstantUtil.SEX_FEMALE != sex) throw RequestParamCheckException(TradeErrorCode.REQUEST_PARAM_ERROR, "性别非法[male|female]")
if (StringUtil.isEmpty(idtype) || !ConstantUtil.IDTYPE_DICTS.contains(idtype)) throw RequestParamCheckException(TradeErrorCode.REQUEST_PARAM_ERROR, "证件类型非法")
if (StringUtil.isEmpty(idno) || !StringUtil.isCharAndNum(idno)) throw RequestParamCheckException(TradeErrorCode.REQUEST_PARAM_ERROR, "证件号不能为空,且仅支持数字和字母")
if (ConstantUtil.IDTYPE_IDENTITY == idtype && !StringUtil.isIdentity(idno)) throw RequestParamCheckException(TradeErrorCode.REQUEST_PARAM_ERROR, "身份证格式错误")
@@ -55,8 +55,8 @@
class QueryUserParam : APIRequestParam() {
var syscode: String = "" //必传
- var userid: String? = "" // 用户ID二选一 (两者都传取userid)
- var uid: String? = "" // 用户ID二选一
+ var userid: String? = null // 用户ID二选一 (两者都传取userid)
+ var uid: String? = null // 用户ID二选一
var sign: String = "" //必传
fun checkParam(): Boolean {
@@ -66,4 +66,36 @@
param_map.plus(mapOf("syscode" to syscode, "userid" to userid, "uid" to uid, "sign" to sign))
return true
}
+}
+
+class ModifyUserParam : APIRequestParam() {
+ var syscode: String = "" //必传
+ var userid: String? = null // 用户ID二选一 (两者都传取userid)
+ var uid: String? = null // 用户ID二选一
+ var name: String? = null
+ var sex: String? = null
+ var idtype: String? = null
+ var idno: String? = null
+ var mobile: String? = null
+ var tel: String? = null
+ var email: String? = null
+ var address: String? = null
+ var zipcode: String? = null
+ var sign: String = "" //必传
+
+ fun checkParam(): Boolean {
+ if (StringUtil.isEmpty(syscode)) throw RequestParamCheckException(TradeErrorCode.REQUEST_PARAM_ERROR, "子系统注册代码不能为空")
+ if (StringUtil.isEmpty(userid) && StringUtil.isEmpty(uid)) throw RequestParamCheckException(TradeErrorCode.REQUEST_PARAM_ERROR, "用户唯一号不能为空")
+ if (!StringUtil.isEmpty(sex) && ConstantUtil.SEX_MALE != sex && ConstantUtil.SEX_FEMALE != sex) throw RequestParamCheckException(TradeErrorCode.REQUEST_PARAM_ERROR, "性别非法[male|female]")
+ if (!StringUtil.isEmpty(idtype) && !ConstantUtil.IDTYPE_DICTS.contains(idtype)) throw RequestParamCheckException(TradeErrorCode.REQUEST_PARAM_ERROR, "证件类型非法")
+ if (!StringUtil.isEmpty(idno) && !StringUtil.isCharAndNum(idno)) throw RequestParamCheckException(TradeErrorCode.REQUEST_PARAM_ERROR, "证件号不能为空,且仅支持数字和字母")
+ if (!StringUtil.isEmpty(idno) && StringUtil.isEmpty(idtype)) throw RequestParamCheckException(TradeErrorCode.REQUEST_PARAM_ERROR, "证件号不能为空时,请指定证件类型")
+ if (!StringUtil.isEmpty(idno) && ConstantUtil.IDTYPE_IDENTITY == idtype && !StringUtil.isIdentity(idno)) throw RequestParamCheckException(TradeErrorCode.REQUEST_PARAM_ERROR, "身份证格式错误")
+ if (!StringUtil.isEmpty(mobile) && !StringUtil.isMobile(mobile)) throw RequestParamCheckException(TradeErrorCode.REQUEST_PARAM_ERROR, "手机号格式错误")
+ if (!StringUtil.isEmpty(email) && !StringUtil.isEmail(email)) throw RequestParamCheckException(TradeErrorCode.REQUEST_PARAM_ERROR, "邮箱格式错误")
+
+
+ param_map.plus(mapOf("syscode" to syscode, "userid" to userid, "uid" to uid, "name" to name, "sex" to sex, "idtype" to idtype, "idno" to idno, "mobile" to mobile, "tel" to tel, "email" to email, "address" to address, "zipcode" to zipcode, "sign" to sign))
+ return true
+ }
}
\ No newline at end of file
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 092d541..ac86e3a 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
@@ -1,5 +1,6 @@
package com.supwisdom.dlpay.api.controller
+import com.supwisdom.dlpay.api.bean.ModifyUserParam
import com.supwisdom.dlpay.api.bean.OpenUserParam
import com.supwisdom.dlpay.api.bean.QueryUserParam
import com.supwisdom.dlpay.api.service.UserService
@@ -14,6 +15,7 @@
import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
+import java.net.URLDecoder
@RestController
@RequestMapping("/api/user")
@@ -36,6 +38,8 @@
.fail(TradeErrorCode.REGISTER_USER_EXIST, "改用户唯一号已经注册"))
}
+ request.name = URLDecoder.decode(request.name, Charsets.UTF_8.toString()) //解码
+ request.address = request.address?.let { URLDecoder.decode(request.address, Charsets.UTF_8.toString()) } //解码
useService.registerUser(request).let {
if (null != it) {
ResponseEntity.ok(ResponseBodyBuilder.create()
@@ -74,6 +78,8 @@
.data("name", it.name)
.data("idtype", it.idtype)
.data("idno", it.idno)
+ .data("mobile", it.mobile)
+ .data("email", it.email)
.data("status", it.status)
.data("balance", account.let {
if (null == it) {
@@ -104,5 +110,35 @@
}
}
+ @PostMapping("/modify")
+ fun modifyAccount(@RequestBody request: ModifyUserParam): ResponseEntity<Any> {
+ return try {
+ if (request.checkParam() && request.checkSign(systemUtilService.getSubsystemSignKey(request.syscode))) {
+ ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(TradeErrorCode.REQUEST_SIGN_ERROR, "参数签名错误"))
+ }
+ useService.findByUseridOrThirdUniqueIdenty(request.userid, request.uid, request.syscode)?.let {
+ request.name = request.name?.let { URLDecoder.decode(request.name, Charsets.UTF_8.toString()) } //解码
+ request.address = request.address?.let { URLDecoder.decode(request.address, Charsets.UTF_8.toString()) } //解码
+ if (useService.modifyUserInfo(it, request)) {
+ ResponseEntity.ok(ResponseBodyBuilder.create()
+ .success("修改成功"))
+ } else {
+ ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(TradeErrorCode.BUSINESS_DEAL_ERROR, "账户信息修改失败"))
+ }
+ }
+
+ ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(TradeErrorCode.ACCOUNT_NOT_EXISTS, "账户不存在"))
+ } catch (ex: RequestParamCheckException) {
+ ResponseEntity.ok(ResponseBodyBuilder.create()
+ .requestException(ex, "请求参数错误"))
+ } catch (et: TransactionException) {
+ ResponseEntity.ok(ResponseBodyBuilder.create()
+ .transException(et, "业务处理错误"))
+ }
+ }
+
}
\ No newline at end of file
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 e5f3353..510fd35 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
@@ -1,5 +1,6 @@
package com.supwisdom.dlpay.api.service.impl
+import com.supwisdom.dlpay.api.bean.ModifyUserParam
import com.supwisdom.dlpay.api.bean.OpenUserParam
import com.supwisdom.dlpay.api.dao.AccountDao
import com.supwisdom.dlpay.api.dao.PersonDao
@@ -34,24 +35,23 @@
private lateinit var systemUtilService: SystemUtilService
override fun registerUser(param: OpenUserParam): TPerson {
- val username = URLDecoder.decode(param.name, Charsets.UTF_8.toString())
var person = personDao.findByIdentity(param.idtype, param.idno)
- if (null != person && username != person.name)
+ if (null != person && param.name != person.name)
throw TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "证件指定用户与请求的用户名不匹配")
val systemdatetime = systemUtilService.sysdatetime
if (null == person) {
person = personDao.save(TPerson().apply {
- name = username
- sex = param.sex ?: null
+ name = param.name
+ sex = param.sex
status = TradeDict.STATUS_NORMAL
idtype = param.idtype
idno = param.idno
- email = param.email ?: null
- tel = param.tel ?: null
- mobile = param.mobile ?: null
- addr = param.address?.let { URLDecoder.decode(param.address, Charsets.UTF_8.toString()) }
- zipcode = param.zipcode ?: null
+ email = param.email
+ tel = param.tel
+ mobile = param.mobile
+ addr = param.address
+ zipcode = param.zipcode
lastsaved = systemdatetime.hostdatetime
})
}
@@ -81,7 +81,7 @@
personIdentityDao.save(TPersonIdentity().apply {
thirdUserid = param.uid
thirdSyscode = param.syscode
- person = person
+ this.person = person
}) //保存绑定关系
return person
@@ -99,6 +99,28 @@
}
}
+ override fun modifyUserInfo(person: TPerson, param: ModifyUserParam): Boolean {
+ if (!StringUtil.isEmpty(param.name) && param.name != person.name) {
+ person.name = param.name
+ accountDao.findByUseridAndSubjno(person.userid, Subject.SUBJNO_PERSONAL_DEPOSIT)?.let {
+ it.accname = param.name
+ accountDao.save(it)
+ }
+ }
+ if (!StringUtil.isEmpty(param.sex)) person.sex = param.sex
+ if (!StringUtil.isEmpty(param.idno)) {
+ person.idtype = param.idtype
+ person.idno = param.idno
+ }
+ if (!StringUtil.isEmpty(param.mobile)) person.mobile = param.mobile
+ if (!StringUtil.isEmpty(param.tel)) person.tel = param.tel
+ if (!StringUtil.isEmpty(param.email)) person.email = param.email
+ if (!StringUtil.isEmpty(param.address)) person.addr = param.address
+ if (!StringUtil.isEmpty(param.zipcode)) person.zipcode = param.zipcode
+ personDao.save(person)
+ return true
+ }
+
override fun findPersonByUserid(userid: String): TPerson? {
return personDao.findByUserid(userid)
}
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 0fe40a5..9f2d3fd 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
@@ -1,5 +1,6 @@
package com.supwisdom.dlpay.api.service
+import com.supwisdom.dlpay.api.bean.ModifyUserParam
import com.supwisdom.dlpay.api.bean.OpenUserParam
import com.supwisdom.dlpay.api.domain.TAccount
import com.supwisdom.dlpay.api.domain.TPerson
@@ -20,6 +21,8 @@
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class), readOnly = true)
fun findByUseridOrThirdUniqueIdenty(userid: String?, thirdUniqueIdenty: String?, syscode: String): TPerson?
+ @Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class), readOnly = true)
+ fun modifyUserInfo(person:TPerson,param: ModifyUserParam):Boolean
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class), readOnly = true)
fun findPersonByUserid(userid: String): TPerson?