From 33c8de38482ad995ec55b31018483215ea293e3a Mon Sep 17 00:00:00 2001 From: "sijun.li" Date: Mon, 14 Sep 2020 16:01:45 +0800 Subject: [PATCH] =?utf8?q?=E5=A2=9E=E5=8A=A0=E5=A4=A7=E7=90=86=E9=97=A8?= =?utf8?q?=E6=88=B7=E4=BF=AE=E6=94=B9=E5=8D=A1=E7=89=87=E4=BF=A1=E6=81=AF?= =?utf8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../dlpay/api/bean/QueryCardInfo.java | 26 ++++++++ .../dlpay/api/bean/QueryCardResponse.java | 12 ++++ .../dlpay/api/bean/QueryPersonInfo.java | 30 ++++++++++ .../dlpay/api/bean/QueryPersonResponse.java | 12 ++++ .../dlpay/paysdk/proxy/UserProxy.java | 19 ++++-- .../dlpay/api/bean/DtlGroupResultBean.kt | 8 +++ .../api/controller/user_api_controller.kt | 60 +++++++++++++++---- .../dlpay/api/service/card_service.kt | 7 +++ .../api/service/impl/card_service_impl.kt | 35 +++++++++-- .../api/service/impl/user_service_impl.kt | 36 ++++++++++- .../dlpay/api/service/user_service.kt | 3 + 11 files changed, 229 insertions(+), 19 deletions(-) create mode 100644 payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/QueryCardInfo.java create mode 100644 payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/QueryCardResponse.java create mode 100644 payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/QueryPersonInfo.java create mode 100644 payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/QueryPersonResponse.java create mode 100644 payapi/src/main/kotlin/com/supwisdom/dlpay/api/bean/DtlGroupResultBean.kt diff --git a/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/QueryCardInfo.java b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/QueryCardInfo.java new file mode 100644 index 00000000..11f94372 --- /dev/null +++ b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/QueryCardInfo.java @@ -0,0 +1,26 @@ +package com.supwisdom.dlpay.api.bean; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@JsonIgnoreProperties(value = { "hibernateLazyInitializer", "handler" }) +public class QueryCardInfo { + private String id; + private String cardno; + private String cardtype; + private String cardphyid; + private String status; + private String transStatus; + private String expiredate; + private Boolean signed = false; + private String userid; + private String lastsaved; + private String tenantid = ""; +} diff --git a/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/QueryCardResponse.java b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/QueryCardResponse.java new file mode 100644 index 00000000..61bb14ff --- /dev/null +++ b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/QueryCardResponse.java @@ -0,0 +1,12 @@ +package com.supwisdom.dlpay.api.bean; + +import lombok.*; + +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@ToString +public class QueryCardResponse extends ApiResponse { + QueryCardInfo card; +} diff --git a/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/QueryPersonInfo.java b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/QueryPersonInfo.java new file mode 100644 index 00000000..0426249c --- /dev/null +++ b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/QueryPersonInfo.java @@ -0,0 +1,30 @@ +package com.supwisdom.dlpay.api.bean; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@JsonIgnoreProperties(value = { "hibernateLazyInitializer", "handler" }) +public class QueryPersonInfo { + private String userid; + private String name; + private String sex; + private String status; + private String idtype; + private String idno; + private String country; + private String nation; + private String email; + private String tel; + private String mobile; + private String addr; + private String zipcode; + private String lastsaved; + private String tenantid = ""; +} diff --git a/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/QueryPersonResponse.java b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/QueryPersonResponse.java new file mode 100644 index 00000000..035ff25f --- /dev/null +++ b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/QueryPersonResponse.java @@ -0,0 +1,12 @@ +package com.supwisdom.dlpay.api.bean; + +import lombok.*; + +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@ToString +public class QueryPersonResponse extends ApiResponse { + QueryPersonInfo person; +} diff --git a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/UserProxy.java b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/UserProxy.java index 2aece8f5..45ea8310 100644 --- a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/UserProxy.java +++ b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/UserProxy.java @@ -2,11 +2,12 @@ package com.supwisdom.dlpay.paysdk.proxy; import com.supwisdom.dlpay.api.bean.*; import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; +import java.util.Map; + @FeignClient(value = "userProxy", url = "${payapi.url}") public interface UserProxy { @PostMapping("/api/user/open") @@ -37,11 +38,21 @@ public interface UserProxy { ApiResponse getUserPoints(@RequestBody UserPointsParam param); @PostMapping("/api/user/queryPersonDtl") - ApiResponse queryPersonDtl(@RequestBody QueryPersonDtlParam param); + Map queryPersonDtl(@RequestBody QueryPersonDtlParam param); + + @PostMapping("/api/user/billcount") + Map billCount(@RequestParam("userid") String userid,@RequestParam("month") String month); @PostMapping("/api/user/queryPerson") - ApiResponse queryPerson(@RequestParam("userid") String userid); + QueryPersonResponse queryPerson(@RequestParam("userid") String userid); @PostMapping("/api/user/queryCard") - ApiResponse queryCard(@RequestBody QueryCardParam param); + QueryCardResponse queryCard(@RequestBody QueryCardParam param); + + @PostMapping("/api/user/updateCardSign") + ApiResponse updateCardSign(@RequestParam("cardno") String cardno,@RequestParam("signed") Boolean signed); + + @PostMapping("/api/user/updateCardTransStatus") + ApiResponse updateCardTransStatus(@RequestParam("cardno") String cardno,@RequestParam("status") String status); + } diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/bean/DtlGroupResultBean.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/bean/DtlGroupResultBean.kt new file mode 100644 index 00000000..0e7ab74b --- /dev/null +++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/bean/DtlGroupResultBean.kt @@ -0,0 +1,8 @@ +package com.supwisdom.dlpay.api.bean + +import java.math.BigDecimal + +class DtlGroupResultBean { + var transtype:String = "" + var amount:BigDecimal = BigDecimal(0) +} \ No newline at end of file diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt index 04a0a824..e0100f29 100644 --- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt +++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt @@ -6,18 +6,15 @@ import com.supwisdom.dlpay.api.service.CardService import com.supwisdom.dlpay.api.service.KafkaSendMsgService import com.supwisdom.dlpay.api.service.UserService import com.supwisdom.dlpay.exception.TransactionException -import com.supwisdom.dlpay.exception.TransactionProcessException import com.supwisdom.dlpay.framework.ResponseBodyBuilder -import com.supwisdom.dlpay.framework.service.CommonService import com.supwisdom.dlpay.framework.util.TradeErrorCode import com.supwisdom.dlpay.system.bean.LevelBean import com.supwisdom.dlpay.system.service.PointsService +import org.apache.commons.beanutils.BeanUtils import org.springframework.beans.factory.annotation.Autowired import org.springframework.http.ResponseEntity import org.springframework.web.bind.annotation.* import java.net.URLDecoder -import javax.servlet.http.HttpServletRequest -import javax.servlet.http.HttpServletResponse @RestController @RequestMapping("/api/user") @@ -203,21 +200,64 @@ class UserAPIController { .success("ok")) } + @PostMapping("/billcount") + fun billCount(userid:String,month:String): ResponseEntity { + val page = useService.findDtlMonthCountByUserid(userid,month) + return ResponseEntity.ok(ResponseBodyBuilder.create().data("data", page!!) + .success("ok")) + } + @PostMapping("/queryPerson") fun queryPersonDtl( userid:String ): ResponseEntity { val person = useService.findPersonByUserid(userid) - ?:ResponseEntity.ok(ResponseBodyBuilder.create() + ?:return ResponseEntity.ok(ResponseBodyBuilder.create() .fail(500, "未找到[userid=${userid}]的用户")) - return ResponseEntity.ok(ResponseBodyBuilder.create().data("data", person) - .success("ok")) + return ResponseEntity.ok(ResponseBodyBuilder.create() + .success(QueryPersonResponse().apply{ + this.retcode = 0 + this.retmsg = "ok" + val personInfo = QueryPersonInfo() + BeanUtils.copyProperties(personInfo,person) + this.person = personInfo + },"ok")) } @PostMapping("/queryCard") fun queryCard(@RequestBody param: QueryCardParam): ResponseEntity { val card = cardService.getCardByCardNoOrUserid(param) - ?:ResponseEntity.ok(ResponseBodyBuilder.create() + ?:return ResponseEntity.ok(ResponseBodyBuilder.create() .fail(500, "未找到指定条件的卡片")) - return ResponseEntity.ok(ResponseBodyBuilder.create().data("data", card) - .success("ok")) + return ResponseEntity.ok(ResponseBodyBuilder.create() + .success(QueryCardResponse().apply { + this.retcode = 0 + this.retmsg = "ok" + val cardInfo = QueryCardInfo() + BeanUtils.copyProperties(cardInfo,card) + this.card = cardInfo + },"ok")) + } + + @PostMapping("/updateCardSign") + fun updateCardSign(cardno:String,signed:Boolean):ResponseEntity{ + val ret = cardService.updateCardSign(cardno, signed) + return if(ret.retcode==0){ + ResponseEntity.ok(ResponseBodyBuilder.create() + .success(ret,"ok")) + }else{ + ResponseEntity.ok(ResponseBodyBuilder.create() + .fail(ret.retcode, ret.retmsg)) + } + } + + @PostMapping("/updateCardTransStatus") + fun updateCardTransStatus(cardno:String,status:String):ResponseEntity{ + val ret = cardService.updateCardTransStatus(cardno, status) + return if(ret.retcode==0){ + ResponseEntity.ok(ResponseBodyBuilder.create() + .success(ret,"ok")) + }else{ + ResponseEntity.ok(ResponseBodyBuilder.create() + .fail(ret.retcode, ret.retmsg)) + } } } diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/card_service.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/card_service.kt index 7330e29c..e99baab9 100644 --- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/card_service.kt +++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/card_service.kt @@ -1,5 +1,6 @@ package com.supwisdom.dlpay.api.service +import com.supwisdom.dlpay.api.bean.ApiResponse import com.supwisdom.dlpay.api.bean.CardsResponse import com.supwisdom.dlpay.api.bean.QueryCardParam import com.supwisdom.dlpay.api.bean.UserInforResponse @@ -26,4 +27,10 @@ interface CardService { @Transactional(rollbackFor = arrayOf(Exception::class), readOnly = true) fun getCardByCardNoOrUserid(param: QueryCardParam): TCard? + + @Transactional(rollbackFor = arrayOf(Exception::class)) + fun updateCardSign(cardno:String,signed:Boolean): ApiResponse + + @Transactional(rollbackFor = arrayOf(Exception::class)) + fun updateCardTransStatus(cardno:String,status:String): ApiResponse } \ No newline at end of file diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/card_service_impl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/card_service_impl.kt index daa42d8d..9a0c135d 100644 --- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/card_service_impl.kt +++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/card_service_impl.kt @@ -1,9 +1,6 @@ package com.supwisdom.dlpay.api.service.impl -import com.supwisdom.dlpay.api.bean.CardsResponse -import com.supwisdom.dlpay.api.bean.CitizenCardInfo -import com.supwisdom.dlpay.api.bean.QueryCardParam -import com.supwisdom.dlpay.api.bean.UserInforResponse +import com.supwisdom.dlpay.api.bean.* import com.supwisdom.dlpay.api.dao.CardDao import com.supwisdom.dlpay.api.dao.PersonDao import com.supwisdom.dlpay.api.domain.TCard @@ -172,4 +169,34 @@ class CardServiceImpl : CardService { } return null } + + override fun updateCardSign(cardno: String, signed: Boolean): ApiResponse { + val result = ApiResponse().apply { + this.retcode = 1 + this.retmsg = "卡片不存在" + } + val card = cardDao.findCardByCardnoAndCardtype(cardno, ConstantUtil.CARDTYPE_BANKCARD) + ?: return result + card.signed = signed + cardDao.save(card) + return result.apply { + this.retcode = 0 + this.retmsg = "ok" + } + } + + override fun updateCardTransStatus(cardno: String, status: String): ApiResponse { + val result = ApiResponse().apply { + this.retcode = 1 + this.retmsg = "卡片不存在" + } + val card = cardDao.findCardByCardnoAndCardtype(cardno, ConstantUtil.CARDTYPE_BANKCARD) + ?: return result + card.transStatus = status + cardDao.save(card) + return result.apply { + this.retcode = 0 + this.retmsg = "ok" + } + } } \ No newline at end of file diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/user_service_impl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/user_service_impl.kt index 8b406736..ce708b1e 100644 --- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/user_service_impl.kt +++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/user_service_impl.kt @@ -1,18 +1,25 @@ package com.supwisdom.dlpay.api.service.impl +import com.supwisdom.dlpay.api.bean.DtlGroupResultBean import com.supwisdom.dlpay.api.bean.ModifyUserParam import com.supwisdom.dlpay.api.bean.OpenUserParam import com.supwisdom.dlpay.api.bean.QueryPersonDtlParam import com.supwisdom.dlpay.api.dao.* import com.supwisdom.dlpay.api.domain.* -import com.supwisdom.dlpay.framework.service.SystemUtilService import com.supwisdom.dlpay.api.service.UserService import com.supwisdom.dlpay.exception.TransactionProcessException +import com.supwisdom.dlpay.framework.service.SystemUtilService import com.supwisdom.dlpay.framework.util.* +import org.hibernate.query.NativeQuery +import org.hibernate.transform.Transformers import org.springframework.beans.factory.annotation.Autowired import org.springframework.data.domain.PageRequest import org.springframework.data.domain.Sort import org.springframework.stereotype.Service +import java.math.BigDecimal +import javax.persistence.EntityManager +import javax.persistence.PersistenceContext +import javax.persistence.Query /** * Created by shuwei on 2019/4/15. @@ -31,6 +38,8 @@ class UserServiceImpl : UserService { private lateinit var systemUtilService: SystemUtilService @Autowired private lateinit var persondtlDao: PersondtlDao + @PersistenceContext + private lateinit var em: EntityManager override fun registerUser(param: OpenUserParam): TPerson { @@ -185,6 +194,31 @@ class UserServiceImpl : UserService { return PageResult(persondtlDao.findByUseridAndStatusAndTransdateBetween(param.userid,TradeDict.DTL_STATUS_SUCCESS,param.month+"00",param.month+"32",pageable)) } + @Suppress("JpaQueryApiInspection") + override fun findDtlMonthCountByUserid(userid: String, month: String): Map? { + val totalSql = "select sum(cast(amount as decimal(18,2))) total from tb_persondtl where userid =:userid and transdate between :startdate and :enddate and status = 'success' and tradeflag = 'out'" + val totalQuery: Query = em.createNativeQuery(totalSql) + totalQuery.setParameter("userid", userid) + totalQuery.setParameter("startdate", month + "00") + totalQuery.setParameter("enddate", month + "32") + val list = totalQuery.resultList + val result = HashMap() + if (list.isNotEmpty()&&list[0]!=null) { + result["total"] = list[0] as BigDecimal + val groupSql = "select transdesc transtype,sum(cast(amount as decimal(18,2))) amount from tb_persondtl where userid =:userid and transdate between :startdate and :enddate and status = 'success' and tradeflag = 'out' group by transdesc" + val groupQuery = em.createNativeQuery(groupSql) + groupQuery.setParameter("userid", userid) + groupQuery.setParameter("startdate", month + "00") + groupQuery.setParameter("enddate", month + "32") + val nativeQuery = groupQuery.unwrap(NativeQuery::class.java) + nativeQuery.setResultTransformer(Transformers.aliasToBean(DtlGroupResultBean::class.java)) + result["group"] = nativeQuery.resultList + } else { + result["total"] = 0 + } + return result + } + override fun findPersondtlDetailByUserid(userid: String, billno: String): TPersondtl? { var dtl = persondtlDao.findById(billno) if(dtl.isPresent){ diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/user_service.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/user_service.kt index 30cb60c2..26fc2ff7 100644 --- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/user_service.kt +++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/user_service.kt @@ -48,6 +48,9 @@ interface UserService { @Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class), readOnly = true) fun findPersondtlByUseridAndMonth(param: QueryPersonDtlParam) : PageResult + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class), readOnly = true) + fun findDtlMonthCountByUserid(userid:String,month: String) : Map? + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class), readOnly = true) fun findPersondtlDetailByUserid(userid:String, billno :String) : TPersondtl? -- 2.17.1