|  |  |  | 
|---|
|  |  |  | import com.mzl.flower.base.BaseController; | 
|---|
|  |  |  | import com.mzl.flower.base.R; | 
|---|
|  |  |  | import com.mzl.flower.base.ReturnDataDTO; | 
|---|
|  |  |  | import com.mzl.flower.entity.wallet.WalletBillRecordDO; | 
|---|
|  |  |  | import com.mzl.flower.config.exception.ValidationException; | 
|---|
|  |  |  | import com.mzl.flower.dto.request.wallet.QueryWalletDTO; | 
|---|
|  |  |  | import com.mzl.flower.dto.response.supplier.SupplierDTO; | 
|---|
|  |  |  | import com.mzl.flower.service.supplier.SupplierService; | 
|---|
|  |  |  | import com.mzl.flower.service.wallet.WalletBillRecordService; | 
|---|
|  |  |  | import com.mzl.flower.service.wallet.WalletService; | 
|---|
|  |  |  | import io.swagger.annotations.Api; | 
|---|
|  |  |  | import io.swagger.annotations.ApiOperation; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.http.ResponseEntity; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.PostMapping; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.PutMapping; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.DeleteMapping; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.GetMapping; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.RequestMapping; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.PathVariable; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.RequestParam; | 
|---|
|  |  |  | import org.springframework.validation.annotation.Validated; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.*; | 
|---|
|  |  |  | import com.mzl.flower.entity.wallet.WalletDO; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import javax.validation.constraints.Min; | 
|---|
|  |  |  | import javax.validation.constraints.Max; | 
|---|
|  |  |  | import javax.validation.constraints.Positive; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.RestController; | 
|---|
|  |  |  | import java.math.BigDecimal; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * @author @TaoJie | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @RestController | 
|---|
|  |  |  | @RequestMapping("/v2/wallet") | 
|---|
|  |  |  | @Api(value = "供应商-钱包", tags = "供应商-钱包") | 
|---|
|  |  |  | @Validated | 
|---|
|  |  |  | public class WalletController extends BaseController { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private WalletService walletService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private SupplierService supplierService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private WalletBillRecordService walletBillRecordService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @PostMapping("") | 
|---|
|  |  |  | public ResponseEntity<ReturnDataDTO> create() { | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @DeleteMapping("/{id}") | 
|---|
|  |  |  | public ResponseEntity<ReturnDataDTO> delete(@PathVariable @Positive(message = "{id.positive}") Integer id) { | 
|---|
|  |  |  | public ResponseEntity<ReturnDataDTO> delete(@PathVariable  Integer id) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return returnData(R.SUCCESS.getCode(), null); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @GetMapping("/{id}") | 
|---|
|  |  |  | public WalletDO get(@PathVariable(value = "id") @Positive(message = "{id.positive}") Integer id) { | 
|---|
|  |  |  | public ResponseEntity<ReturnDataDTO> get(@PathVariable(value = "id") @Positive(message = "{id.positive}") Integer id) { | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @GetMapping("/supplier") | 
|---|
|  |  |  | @ApiOperation(value = "获取供应商钱包", notes = "获取供应商钱包") | 
|---|
|  |  |  | public ResponseEntity<ReturnDataDTO> getWalletBySupplierId() { | 
|---|
|  |  |  | // 判断供应商是否存在 | 
|---|
|  |  |  | final SupplierDTO currentSupplier = supplierService.getCurrentSupplier(); | 
|---|
|  |  |  | if(null==currentSupplier){ | 
|---|
|  |  |  | throw new ValidationException("供应商不能为空"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | final WalletDO walletDO = walletService.getCurrentSupplier(); | 
|---|
|  |  |  | if(null!=walletDO){ | 
|---|
|  |  |  | // 根据当前供应商获取待结算的钱 | 
|---|
|  |  |  | BigDecimal waittingSettlementAmount = walletService.getWaittingSettlementAmount(walletDO); | 
|---|
|  |  |  | // 获取已经提现和已结算的钱 | 
|---|
|  |  |  | BigDecimal historyAmount = walletBillRecordService.getHistoryAmount(walletDO.getId(), walletDO.getSupplierId()); | 
|---|
|  |  |  | //已提现 | 
|---|
|  |  |  | walletDO.setWithdrawnAmount(walletDO.getWithdrawnAmount().add(historyAmount)); | 
|---|
|  |  |  | //已结算 | 
|---|
|  |  |  | walletDO.setSettledAmount(walletDO.getSettledAmount().add(historyAmount)); | 
|---|
|  |  |  | walletDO.setSettlingAmount(waittingSettlementAmount); | 
|---|
|  |  |  | // 总交易额度 | 
|---|
|  |  |  | walletDO.setTotalTransactionAmount(walletService.getSupplierTotalTransactionAmount(walletDO)); | 
|---|
|  |  |  | // 总扣款数量 | 
|---|
|  |  |  | walletDO.setTotalDeduction(walletService.getSupplierDeductAmount(walletDO)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return returnData(R.SUCCESS.getCode(), walletDO); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @GetMapping("/page") | 
|---|
|  |  |  | public ResponseEntity<ReturnDataDTO<Page<WalletDO>>> page( | 
|---|
|  |  |  | @RequestParam(name = "page", required = false, defaultValue = "0") | 
|---|
|  |  |  | @Min(value = 0, message = "{page.number.min}") Integer page, | 
|---|
|  |  |  | @RequestParam(name = "count", required = false, defaultValue = "10") | 
|---|
|  |  |  | @Min(value = 1, message = "{page.count.min}") | 
|---|
|  |  |  | @Max(value = 30, message = "{page.count.max}") Integer count | 
|---|
|  |  |  | public ResponseEntity<ReturnDataDTO<Page<WalletDO>>> page(@RequestBody QueryWalletDTO dto | 
|---|
|  |  |  | ) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|