package com.lunhan.water.host.controller.api; import com.lunhan.water.common.ExecutedResult; import com.lunhan.water.common.PagerResult; import com.lunhan.water.common.jwt.LoginUserDTO; import com.lunhan.water.common.util.ParameterUtil; import com.lunhan.water.common.validator.ParameterValidateResult; import com.lunhan.water.common.validator.ParameterValidator; import com.lunhan.water.entity.enums.EPayType; import com.lunhan.water.entity.request.paymentrecords.ReqBuyWater; import com.lunhan.water.entity.request.rechargerecords.Recharge; import com.lunhan.water.entity.request.userlogin.ReqModifyUserLogin; import com.lunhan.water.entity.search.SearchPaymentRecords; import com.lunhan.water.entity.search.SearchRechargeRecords; import com.lunhan.water.entity.search.SearchWaterFacility; import com.lunhan.water.host.BasicController; import com.lunhan.water.repository.po.UserLoginPO; import com.lunhan.water.repository.vo.PaymentRecordsVO; import com.lunhan.water.repository.vo.RechargeRecordsVO; import com.lunhan.water.repository.vo.UserLoginVO; import com.lunhan.water.repository.vo.WaterFacilityVO; import com.lunhan.water.service.PaymentRecordsService; import com.lunhan.water.service.RechargeRecordsService; import com.lunhan.water.service.UserLoginService; import com.lunhan.water.service.WaterFacilityService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; import java.util.Objects; @RestController @RequestMapping(value = "api/user") public class UserController extends BasicController { @Autowired private PaymentRecordsService paymentRecordsService; @Autowired private RechargeRecordsService rechargeRecordsService; @Autowired private UserLoginService userLoginService; @Autowired private WaterFacilityService waterFacilityService; /** * 查询用户信息 * @author lin.liu */ @GetMapping(value = "getUser") public ExecutedResult getUser() { return userLoginService.getUser(this.getTokenUser()); } /** * 编辑用户头像信息 * @author lin.liu */ @PostMapping(value = "editUser") public ExecutedResult editUser(@RequestBody ReqModifyUserLogin request ) { return userLoginService.modify(request); } /** * 用户取水 * @author lin.liu */ @PostMapping(value = "userWaterInTaking") public ExecutedResult userWaterInTaking(@RequestBody ReqBuyWater request) { return paymentRecordsService.userWaterInTaking(this.getTokenUser(),request); } /** * 查询取水设备列表 * @author lin.liu */ @PostMapping(value = "searchFacility") public ExecutedResult> searchFacility(@RequestBody SearchWaterFacility request) { //#region 参数验证 ParameterValidator validator = new ParameterValidator() // 必须大于0 .addGreater(ParameterUtil.named("纬度"), request.getLatitude(), 0L) .addGreater(ParameterUtil.named("经度"), request.getLongitude(), 0L) ; ParameterValidateResult result = validator.validate(); if (result.getIsFiled()) { return failed(result.getErrorMsg()); } return waterFacilityService.search(request); } /** * 查询[消费记录] * @author lin.liu */ @PostMapping(value = "searchPaymentRecords") public ExecutedResult> searchPaymentRecords(@RequestBody SearchPaymentRecords request) { //#region 参数验证 LoginUserDTO tokenUser = this.getTokenUser(); UserLoginPO user = userLoginService.get4Openid(tokenUser.getUserId()); if(Objects.isNull(user)){ return ExecutedResult.failed("用户信息不存在!"); } request.setUserId(user.getId()); return paymentRecordsService.search(request); } /** * 查询[充值记录] * @author lin.liu */ @PostMapping(value = "searchRechargeRecords") public ExecutedResult> searchRechargeRecords(@RequestBody SearchRechargeRecords request) { LoginUserDTO tokenUser = this.getTokenUser(); UserLoginPO user = userLoginService.get4Openid(tokenUser.getUserId()); if(Objects.isNull(user)){ return ExecutedResult.failed("用户信息不存在!"); } request.setUserId(user.getId()); return rechargeRecordsService.search(request); } /** * 用户充值 * * @author li。ling。yu * @date 2023/08/04 */ @PostMapping(value = "fees") public ExecutedResult pay(@RequestBody Recharge request) { //#region 参数验证 ParameterValidator validator = new ParameterValidator() // 必须大于0 .addGreater(ParameterUtil.named("充值金额"), request.getRechargeAmount(), BigDecimal.ZERO) ; LoginUserDTO loginUser = super.getTokenUser(); ParameterValidateResult result = validator.validate(); if (result.getIsFiled()) { return failed(result.getErrorMsg()); } //#endregion return this.rechargeRecordsService.recharge(request,loginUser); } }