package com.ruoyi.account.controller;
|
|
import cn.hutool.core.collection.CollectionUtil;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.ruoyi.account.api.model.AppUser;
|
import com.ruoyi.account.api.model.BalanceChangeRecord;
|
import com.ruoyi.account.service.AppUserService;
|
import com.ruoyi.account.service.BalanceChangeRecordService;
|
import com.ruoyi.account.service.WalletService;
|
import com.ruoyi.account.vo.WalletVO;
|
import com.ruoyi.common.core.domain.R;
|
import com.ruoyi.common.core.web.controller.BaseController;
|
import com.ruoyi.common.security.service.TokenService;
|
import com.ruoyi.common.security.utils.SecurityUtils;
|
import com.ruoyi.other.api.feignClient.OrderClient;
|
import com.ruoyi.system.api.model.LoginUser;
|
import feignClient.RemoteOrderClient;
|
import feignClient.RemoteOrderGoodsClient;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiParam;
|
import model.Order;
|
import model.OrderGood;
|
import org.springframework.format.annotation.DateTimeFormat;
|
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import javax.annotation.Resource;
|
import java.time.LocalDate;
|
import java.time.LocalDateTime;
|
import java.time.LocalTime;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.stream.Collectors;
|
|
@Api(tags = "小程序-个人中心-我的钱包")
|
@RestController
|
@RequestMapping("wallet")
|
public class WalletController extends BaseController {
|
@Resource
|
private BalanceChangeRecordService balanceChangeRecordService;
|
@Resource
|
private TokenService tokenService;
|
@Resource
|
private WalletService walletService;
|
@Resource
|
private RemoteOrderGoodsClient remoteOrderGoodsClient;
|
@Resource
|
private AppUserService appUserService;
|
|
/**
|
* 钱包详情
|
*/
|
@GetMapping("detail")
|
@ApiOperation(value = "钱包详情", notes = "钱包详情")
|
public R<WalletVO> detail() {
|
LoginUser loginUserApplet = tokenService.getLoginUserApplet();
|
WalletVO walletVO = walletService.getWalletByUserId(loginUserApplet.getUserid());
|
return R.ok(walletVO);
|
}
|
|
/**
|
* 变更明细
|
*/
|
@ApiOperation(value = "变更明细", notes = "变更明细")
|
@GetMapping("change")
|
public R<List<BalanceChangeRecord>> change(@ApiParam(value = "变更类型")
|
@RequestParam(required = false) Integer changeType,
|
@ApiParam(value = "创建时间")
|
@RequestParam(required = false)
|
@DateTimeFormat(pattern = "yyyy-MM")
|
LocalDate createTime) {
|
Long userId = SecurityUtils.getUserId();
|
|
LocalDateTime localDateTime = null;
|
if (createTime != null) {
|
LocalTime specificTime = LocalTime.of(0, 0);
|
localDateTime = createTime.atTime(specificTime);
|
}
|
|
List<BalanceChangeRecord> list = balanceChangeRecordService.list(new LambdaQueryWrapper<BalanceChangeRecord>()
|
.eq(changeType != null, BalanceChangeRecord::getChangeType, changeType)
|
.eq(createTime != null, BalanceChangeRecord::getCreateTime, localDateTime)
|
.eq(BalanceChangeRecord::getAppUserId, userId));
|
|
List<Long> orderIds = list.stream().map(BalanceChangeRecord::getOrderId).collect(Collectors.toList());
|
R<List<Order>> r = remoteOrderGoodsClient.getOrderListByIds(orderIds);
|
if (!R.isSuccess(r)){
|
return R.fail(r.getMsg());
|
}
|
List<Order> orderList = r.getData();
|
list.forEach(bc -> {
|
orderList.stream().filter(o -> o.getId().equals(bc.getOrderId())).findFirst().ifPresent(o -> {
|
Long appUserId = o.getAppUserId();
|
AppUser appUser = appUserService.getById(appUserId);
|
bc.setUserName(appUser.getName());
|
bc.setAmount(o.getPaymentAmount());
|
});
|
});
|
return R.ok(list);
|
}
|
|
// /**
|
// * 充值
|
// */
|
// @GetMapping("recharge")
|
// @ApiOperation(value = "充值", notes = "钱包充值")
|
// public AjaxResult recharge(@ApiParam(value = "充值金额", required = true) @RequestParam BigDecimal amount) {
|
// Long userId = SecurityUtils.getUserId();
|
// String openId;
|
// // 商户号
|
// String partnerTradeNo;
|
// // TODO 充值
|
// return AjaxResult.success();
|
// }
|
|
}
|