|
|
@@ -14,6 +14,7 @@ import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.github.pagehelper.Page;
|
|
|
+import com.zhongzheng.common.core.domain.entity.store.StoreUser;
|
|
|
import com.zhongzheng.common.core.redis.RedisCache;
|
|
|
import com.zhongzheng.common.core.redis.RedisLockEntity;
|
|
|
import com.zhongzheng.common.exception.CustomException;
|
|
|
@@ -65,10 +66,8 @@ import com.zhongzheng.modules.order.bo.*;
|
|
|
import com.zhongzheng.modules.order.domain.*;
|
|
|
import com.zhongzheng.modules.order.mapper.OrderMapper;
|
|
|
import com.zhongzheng.modules.order.service.*;
|
|
|
-import com.zhongzheng.modules.order.vo.OrderGoodsVo;
|
|
|
-import com.zhongzheng.modules.order.vo.OrderListVo;
|
|
|
-import com.zhongzheng.modules.order.vo.OrderPayVo;
|
|
|
-import com.zhongzheng.modules.order.vo.OrderVo;
|
|
|
+import com.zhongzheng.modules.order.vo.*;
|
|
|
+import com.zhongzheng.modules.store.service.IStoreUserService;
|
|
|
import com.zhongzheng.modules.system.domain.SysOldOrg;
|
|
|
import com.zhongzheng.modules.system.domain.SysTenant;
|
|
|
import com.zhongzheng.modules.system.service.ISysOldOrgService;
|
|
|
@@ -85,7 +84,9 @@ import com.zhongzheng.modules.top.goods.service.ITopOldOrderCheckLogService;
|
|
|
import com.zhongzheng.modules.top.goods.service.ITopOldOrderCheckService;
|
|
|
import com.zhongzheng.modules.user.domain.User;
|
|
|
import com.zhongzheng.modules.user.domain.UserExamGoods;
|
|
|
+import com.zhongzheng.modules.user.domain.UserPointsLog;
|
|
|
import com.zhongzheng.modules.user.service.IUserExamGoodsService;
|
|
|
+import com.zhongzheng.modules.user.service.IUserPointsLogService;
|
|
|
import com.zhongzheng.modules.user.service.IUserService;
|
|
|
import com.zhongzheng.modules.user.vo.UserVo;
|
|
|
import com.zhongzheng.modules.wx.service.IWxPayService;
|
|
|
@@ -194,6 +195,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
private ITopOldOrderCheckService topOldOrderCheckService;
|
|
|
@Autowired
|
|
|
private ITopOldOrderCheckLogService topOldOrderCheckLogService;
|
|
|
+ @Autowired
|
|
|
+ private IUserPointsLogService userPointsLogService;
|
|
|
+ @Autowired
|
|
|
+ private IStoreOrderRefundService storeOrderRefundService;
|
|
|
+ @Autowired
|
|
|
+ private IStoreUserService storeUserService;
|
|
|
|
|
|
|
|
|
@Override
|
|
|
@@ -2256,8 +2263,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public Map<String, String> addIntegralOrder(IntegralOrderAddBo bo) {
|
|
|
- String key = "ORDER-" + "-" + bo.getUserId();
|
|
|
+ String key = "ORDER-HX" + "-" + bo.getUserId();
|
|
|
Long value = redisCache.getCacheObject(key);
|
|
|
if (Validator.isNotEmpty(value)) {
|
|
|
throw new CustomException("请勿频繁提交订单");
|
|
|
@@ -2267,15 +2275,27 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
if (goodsList == null || goodsList.size() < 1) {
|
|
|
throw new CustomException("商品列表为空");
|
|
|
}
|
|
|
+ if (bo.getOrderType() == 3 && bo.getDeductionIntegral().compareTo(BigDecimal.ZERO) > 0){
|
|
|
+ //核销订单,积分扣除
|
|
|
+ User user = iUserService.getById(bo.getUserId());
|
|
|
+ if (user.getPointsValue().compareTo(bo.getDeductionIntegral()) < 0){
|
|
|
+ throw new CustomException("订单有误【用户积分不够】!请检查");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
Order add = BeanUtil.toBean(bo, Order.class);
|
|
|
validEntityBeforeSave(add);
|
|
|
add.setCreateTime(DateUtils.getNowTime());
|
|
|
add.setUpdateTime(DateUtils.getNowTime());
|
|
|
add.setOrderType(3);//核销订单
|
|
|
+ //订单实付价格
|
|
|
+ BigDecimal payPrice = add.getPayPrice();
|
|
|
+ //支付方式
|
|
|
+ Integer payType = add.getPayType();
|
|
|
//生成订单号
|
|
|
String out_trade_no = "HX"+DateUtils.getDateOrderSn();
|
|
|
BigDecimal totalPrice = new BigDecimal(0);
|
|
|
- BigDecimal payPrice = new BigDecimal(0);
|
|
|
+ BigDecimal goodsTotalPrice = new BigDecimal(0);
|
|
|
String body = "中正核销系统-";
|
|
|
List<OrderGoods> freeList = new ArrayList<>();
|
|
|
//生成订单
|
|
|
@@ -2300,7 +2320,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
//订单价格不计算优惠
|
|
|
totalPrice = totalPrice.add(goods.getStandPrice());
|
|
|
//暂不计算优惠券
|
|
|
- payPrice = payPrice.add(goods.getSpecialPrice());
|
|
|
+ goodsTotalPrice = goodsTotalPrice.add(goods.getSpecialPrice());
|
|
|
iOrderGoodsService.save(orderGoods);
|
|
|
|
|
|
if (goods.getGoodsType() == 7) {
|
|
|
@@ -2308,23 +2328,29 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
}
|
|
|
|
|
|
//商品0元加入免费商品列表
|
|
|
- if (orderGoods.getGoodsPrice().compareTo(BigDecimal.ZERO) == 0) {
|
|
|
+ if (orderGoods.getGoodsPrice().compareTo(BigDecimal.ZERO) == 0 || payType == 3) {
|
|
|
freeList.add(orderGoods);
|
|
|
}
|
|
|
}
|
|
|
+ //价格校验
|
|
|
+ if (goodsTotalPrice.compareTo(payPrice) > 0){
|
|
|
+ throw new CustomException("订单价格有误!请稍后");
|
|
|
+ }
|
|
|
|
|
|
add.setOrderSn(out_trade_no);
|
|
|
add.setOrderFrom(Order.FROM_HX_PC);
|
|
|
add.setPayPrice(payPrice);
|
|
|
add.setPayType(bo.getPayType());
|
|
|
add.setOrderPrice(totalPrice);
|
|
|
+ add.setCheckStatus(1);
|
|
|
+ add.setRefundStatus(1);
|
|
|
//生成支付单号
|
|
|
String pay_no = DateUtils.getPayOrderSn();
|
|
|
//订单0元
|
|
|
- if (payPrice.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
+ if (payPrice.compareTo(BigDecimal.ZERO) == 0 || payType == 3) {
|
|
|
//完全收费
|
|
|
add.setOrderStatus(Order.ORDER_STATUS_PAY);
|
|
|
- add.setPayStatus(Order.PAY_FREE);
|
|
|
+ add.setPayStatus(payType == 3?Order.PAY_FULL:Order.PAY_FREE);
|
|
|
add.setStatus(1);
|
|
|
} else {
|
|
|
OrderPayAddBo payAddBo = new OrderPayAddBo();
|
|
|
@@ -2339,7 +2365,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
|
|
|
//处理免费商品
|
|
|
for (OrderGoods orderGoods : freeList) {
|
|
|
- dealFreeGoods(orderGoods, add);
|
|
|
+ orderGoods.setPayStatus(payType == 3?OrderGoods.PAY_FULL:OrderGoods.PAY_FREE);
|
|
|
+ orderGoods.setGoodsReceived(orderGoods.getGoodsRealPrice());
|
|
|
+ iOrderGoodsService.updateById(orderGoods);
|
|
|
}
|
|
|
|
|
|
Map<String, Object> result = new HashMap<>();
|
|
|
@@ -2348,14 +2376,272 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
UserVo userVo = iUserService.queryById(add.getUserId());
|
|
|
Map<String, String> payResult = new HashMap<>();
|
|
|
//大于0元,获取微信支付信息
|
|
|
- if (payPrice.compareTo(BigDecimal.ZERO) != 0) {
|
|
|
- payResult = iWxPayService.paymentPc(pay_no, userVo.getOpenId(), body, payPrice);
|
|
|
+ if (payPrice.compareTo(BigDecimal.ZERO) != 0 && payType != 3) {
|
|
|
+ payResult = iWxPayService.paymentStorePc(pay_no, userVo.getOpenId(), body, payPrice);
|
|
|
+ }else{
|
|
|
+ //等于0元,或者现金支付
|
|
|
+ //积分扣除,保存积分变动
|
|
|
+ if (bo.getDeductionIntegral().compareTo(BigDecimal.ZERO) > 0){
|
|
|
+ BigDecimal subtract = userVo.getPointsValue().subtract(bo.getDeductionIntegral());
|
|
|
+ UserPointsLog log = new UserPointsLog();
|
|
|
+ log.setUserId(userVo.getUserId());
|
|
|
+ log.setPoints(bo.getDeductionIntegral());
|
|
|
+ log.setPointsBefore(userVo.getPointsValue());
|
|
|
+ log.setPointsAfter(subtract);
|
|
|
+ log.setStatus(1);
|
|
|
+ log.setOrderSn(add.getOrderSn());
|
|
|
+ log.setType(1);
|
|
|
+ log.setCreateTime(DateUtils.getNowTime());
|
|
|
+ log.setUpdateTime(DateUtils.getNowTime());
|
|
|
+ userPointsLogService.save(log);
|
|
|
+ iUserService.update(new LambdaUpdateWrapper<User>()
|
|
|
+ .eq(User::getUserId,add.getUserId())
|
|
|
+ .set(User::getPointsValue,subtract));
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
payResult.put("orderSn", out_trade_no);
|
|
|
return payResult;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean cancelIntegralOrder(IntegralOrderAddBo bo) {
|
|
|
+ Order order = getOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderSn, bo.getOrderSn()));
|
|
|
+ if (ObjectUtils.isNull(order)){
|
|
|
+ throw new CustomException("订单信息有误!");
|
|
|
+ }
|
|
|
+ if (order.getPayStatus() != 0){
|
|
|
+ throw new CustomException("订单已支付,不能取消!");
|
|
|
+ }
|
|
|
+ order.setOrderStatus(-1);//手动关闭订单
|
|
|
+ updateById(order);
|
|
|
+ List<OrderGoods> list = iOrderGoodsService.list(new LambdaQueryWrapper<OrderGoods>().eq(OrderGoods::getOrderSn, bo.getOrderSn()));
|
|
|
+ if (CollectionUtils.isNotEmpty(list)){
|
|
|
+ //关闭订单
|
|
|
+ list.forEach(x -> x.setStatus(0));
|
|
|
+ iOrderGoodsService.updateBatchById(list);
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<IntegralOrderVo> getIntegralOrderList(IntegralOrderQueryBo bo) {
|
|
|
+ String store = ServletUtils.getRequest().getHeader("Store");
|
|
|
+ if (StringUtils.isNotBlank(store)){
|
|
|
+ bo.setStoreId(Long.valueOf(store));
|
|
|
+ }
|
|
|
+ String merId = ServletUtils.getRequest().getHeader("MerId");
|
|
|
+ if (StringUtils.isNotBlank(merId)){
|
|
|
+ bo.setMerId(Long.valueOf(merId));
|
|
|
+ }
|
|
|
+ String tenantId = ServletUtils.getRequest().getHeader("TenantId");
|
|
|
+ if (StringUtils.isNotBlank(tenantId)){
|
|
|
+ bo.setTenantId(Long.valueOf(tenantId));
|
|
|
+ }
|
|
|
+ return baseMapper.getIntegralOrderList(bo);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public IntegralOrderDeatilVo getIntegralOrderDetail(Long orderId) {
|
|
|
+ Order order = getById(orderId);
|
|
|
+ if (ObjectUtils.isNull(order)){
|
|
|
+ throw new CustomException("订单信息获取有误!");
|
|
|
+ }
|
|
|
+ IntegralOrderDeatilVo vo = BeanUtil.toBean(order, IntegralOrderDeatilVo.class);
|
|
|
+
|
|
|
+ //订单商品
|
|
|
+ List<OrderGoods> orderGoodsList = iOrderGoodsService.list(new LambdaQueryWrapper<OrderGoods>()
|
|
|
+ .eq(OrderGoods::getOrderSn, order.getOrderSn()));
|
|
|
+ if (CollectionUtils.isEmpty(orderGoodsList)){
|
|
|
+ throw new CustomException("订单不存在商品信息!");
|
|
|
+ }
|
|
|
+
|
|
|
+ List<IntegralOrderGoodsVo> goodsVoList = new ArrayList<>();
|
|
|
+ BigDecimal goodsPrice = BigDecimal.ZERO;
|
|
|
+ BigDecimal discountsPrice = BigDecimal.ZERO;
|
|
|
+ for (OrderGoods orderGoods : orderGoodsList) {
|
|
|
+ //商品金额
|
|
|
+ Goods goods = iGoodsService.getById(orderGoods.getGoodsId());
|
|
|
+ goodsPrice = goodsPrice.add(goods.getStandPrice());
|
|
|
+ discountsPrice = discountsPrice.add(goods.getSpecialPrice());
|
|
|
+
|
|
|
+ IntegralOrderGoodsVo goodsVo = new IntegralOrderGoodsVo();
|
|
|
+ goodsVo.setOrderSn(order.getOrderSn());
|
|
|
+ goodsVo.setOrderGoodsId(orderGoods.getOrderGoodsId());
|
|
|
+ goodsVo.setGoodsId(goods.getGoodsId());
|
|
|
+ goodsVo.setGoodsName(goods.getGoodsName());
|
|
|
+ goodsVo.setGoodsPrice(goods.getStandPrice());
|
|
|
+ goodsVo.setCoverUrl(goods.getCoverUrl());
|
|
|
+ goodsVo.setGoodsInputData(orderGoods.getGoodsInputData());
|
|
|
+ goodsVo.setGoodsRealPrice(orderGoods.getGoodsRealPrice());
|
|
|
+ goodsVo.setPayStatus(orderGoods.getPayStatus());
|
|
|
+ goodsVo.setStatus(orderGoods.getStatus());
|
|
|
+ goodsVoList.add(goodsVo);
|
|
|
+ }
|
|
|
+ vo.setGoodsPrice(goodsPrice);
|
|
|
+ vo.setDiscountsPrice(discountsPrice);
|
|
|
+ vo.setAnotherPrice(order.getPayPrice().subtract(discountsPrice));
|
|
|
+ return vo;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public IntegralOrderStatisticsVo getIntegralOrderStatistics(IntegralOrderQueryBo bo) {
|
|
|
+ List<IntegralOrderVo> list = baseMapper.getIntegralOrderList(bo);
|
|
|
+ if (CollectionUtils.isEmpty(list)){
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ BigDecimal orderPriceTotal = list.stream().map(IntegralOrderVo::getOrderPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ BigDecimal payPriceTotal = list.stream().map(IntegralOrderVo::getPayPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ BigDecimal deductionIntegralTotal = list.stream().map(IntegralOrderVo::getDeductionIntegral).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ BigDecimal deductionPriceTotal = list.stream().map(IntegralOrderVo::getDeductionMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+
|
|
|
+ BigDecimal goodsPriceTotal = BigDecimal.ZERO;
|
|
|
+ BigDecimal refundMoneyTotal = BigDecimal.ZERO;
|
|
|
+ for (IntegralOrderVo orderVo : list) {
|
|
|
+ //商品金额
|
|
|
+ List<OrderGoods> goodsList = iOrderGoodsService
|
|
|
+ .list(new LambdaQueryWrapper<OrderGoods>().eq(OrderGoods::getOrderSn, orderVo.getOrderSn()).eq(OrderGoods::getStatus,1));
|
|
|
+ if (CollectionUtils.isNotEmpty(goodsList)){
|
|
|
+ BigDecimal goodsPrice = goodsList.stream().map(OrderGoods::getGoodsPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ goodsPriceTotal = goodsPriceTotal.add(goodsPrice);
|
|
|
+ }
|
|
|
+
|
|
|
+ //退款金额
|
|
|
+ List<StoreOrderRefund> refundList = storeOrderRefundService.list(new LambdaQueryWrapper<StoreOrderRefund>()
|
|
|
+ .eq(StoreOrderRefund::getOrderSn, orderVo.getOrderSn()).eq(StoreOrderRefund::getStatus, 1));
|
|
|
+ if (CollectionUtils.isNotEmpty(refundList)){
|
|
|
+ BigDecimal refundPrice = refundList.stream().map(StoreOrderRefund::getRealRefundFee).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ refundMoneyTotal = refundMoneyTotal.add(refundPrice);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ IntegralOrderStatisticsVo vo = new IntegralOrderStatisticsVo();
|
|
|
+ vo.setDeductionIntegralTotal(deductionIntegralTotal);
|
|
|
+ vo.setDeductionPriceTotal(deductionPriceTotal);
|
|
|
+ vo.setOrderPriceTotal(orderPriceTotal);
|
|
|
+ vo.setGoodsPriceTotal(goodsPriceTotal);
|
|
|
+ vo.setPayPriceTotal(payPriceTotal);
|
|
|
+ vo.setRefundMoneyTotal(refundMoneyTotal);
|
|
|
+ return vo;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public boolean refundIntegralOrder(IntegralOrderRefundBo bo) {
|
|
|
+ //退款账号角色校验
|
|
|
+ Order order = getOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderSn, bo.getOrderSn()));
|
|
|
+ if (Objects.isNull(order)){
|
|
|
+ throw new CustomException("订单信息有误!请检查");
|
|
|
+ }
|
|
|
+ BigDecimal refundPrice = BigDecimal.ZERO;
|
|
|
+ //查看订单已退金额
|
|
|
+ List<StoreOrderRefund> refundList = storeOrderRefundService.list(new LambdaQueryWrapper<StoreOrderRefund>()
|
|
|
+ .eq(StoreOrderRefund::getOrderSn, order.getOrderSn()).eq(StoreOrderRefund::getStatus, 1));
|
|
|
+ if (CollectionUtils.isNotEmpty(refundList)){
|
|
|
+ refundPrice = refundList.stream().map(StoreOrderRefund::getRealRefundFee).reduce(BigDecimal.ZERO,BigDecimal::add);
|
|
|
+ }
|
|
|
+ BigDecimal payPrice = order.getPayPrice();
|
|
|
+ //可退金额
|
|
|
+ BigDecimal returnable = payPrice.subtract(refundPrice);
|
|
|
+ if (returnable.compareTo(bo.getRefundPrice()) < 0){
|
|
|
+ throw new CustomException("订单可退金额不足!请检查");
|
|
|
+ }
|
|
|
+ //退款生成
|
|
|
+ StoreOrderRefund add = new StoreOrderRefund();
|
|
|
+
|
|
|
+ add.setCreateTime(DateUtils.getNowTime());
|
|
|
+ add.setUpdateTime(DateUtils.getNowTime());
|
|
|
+ //退款单号
|
|
|
+ String refundSn = DateUtils.getDateOrderSn();
|
|
|
+ add.setRefundSn(refundSn);
|
|
|
+ add.setRefundFee(bo.getRefundPrice());
|
|
|
+ add.setUserId(order.getUserId());
|
|
|
+ add.setType(1); // 核销退款
|
|
|
+ add.setOrderSn(bo.getOrderSn());
|
|
|
+ //操作人
|
|
|
+ StoreUser user = storeUserService.getById(bo.getLoginId());
|
|
|
+ add.setCreateBy(user.getRealname());
|
|
|
+ storeOrderRefundService.save(add);
|
|
|
+ order.setOrderRefund(bo.getRefundPrice());
|
|
|
+ order.setRefundStatus(2);
|
|
|
+ updateById(order);
|
|
|
+
|
|
|
+ if (order.getPayType() == 1){
|
|
|
+ //微信支付,原路返回
|
|
|
+ Map<String, String> payResult = iWxPayService.refund(refundSn,order.getTransid(),bo.getRefundPrice(),order.getPayPrice());
|
|
|
+ }
|
|
|
+ StoreOrderRefund refund = storeOrderRefundService.getOne(new LambdaQueryWrapper<StoreOrderRefund>().eq(StoreOrderRefund::getRefundSn, refundSn));
|
|
|
+ refund.setRealRefundFee(bo.getRefundPrice());
|
|
|
+ refund.setRefundTime(DateUtils.getNowTime());
|
|
|
+ storeOrderRefundService.updateById(refund);
|
|
|
+
|
|
|
+ BigDecimal refundedPrice = order.getOrderRefunded().add(bo.getRefundPrice());
|
|
|
+ Integer refundStatus = 0;
|
|
|
+ if (refundedPrice.compareTo(order.getPayPrice()) < 0 ){
|
|
|
+ refundStatus = 5; // 部分退款
|
|
|
+ }else {
|
|
|
+ refundStatus = 3;// 已退款
|
|
|
+ }
|
|
|
+ updateById(order);
|
|
|
+ return update(new LambdaUpdateWrapper<Order>()
|
|
|
+ .set(Order::getOrderRefunded,refundedPrice)
|
|
|
+ .set(Order::getRefundStatus,refundStatus)
|
|
|
+ .eq(Order::getOrderSn,order.getOrderSn()));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public boolean rechargeIntegral(IntegralRechargeBo bo) {
|
|
|
+ Order order = getOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderSn, bo.getOrderSn()));
|
|
|
+ if (ObjectUtil.isNull(order)){
|
|
|
+ throw new CustomException("订单信息获取有误!");
|
|
|
+ }
|
|
|
+ StoreUser storeUser = storeUserService.getById(bo.getLoginId());
|
|
|
+ //积分校验
|
|
|
+ if (order.getDeductionIntegral().compareTo(bo.getIntegral()) < 0){
|
|
|
+ throw new CustomException("订单积分不足!请检查");
|
|
|
+ }
|
|
|
+ BigDecimal integral = bo.getIntegral();
|
|
|
+ //积分冲账
|
|
|
+ User user = iUserService.getById(order.getUserId());
|
|
|
+ BigDecimal pointsValue = user.getPointsValue();
|
|
|
+ BigDecimal add = pointsValue.add(integral);
|
|
|
+ user.setPointsValue(add);
|
|
|
+ //记录
|
|
|
+ UserPointsLog log = new UserPointsLog();
|
|
|
+ log.setUserId(user.getUserId());
|
|
|
+ log.setPoints(integral);
|
|
|
+ log.setPointsBefore(pointsValue);
|
|
|
+ log.setPointsAfter(add);
|
|
|
+ log.setOrderSn(order.getOrderSn());
|
|
|
+ log.setStatus(1);
|
|
|
+ log.setType(2);//积分冲账
|
|
|
+ log.setCreateTime(DateUtils.getNowTime());
|
|
|
+ log.setUpdateTime(DateUtils.getNowTime());
|
|
|
+ log.setCreateBy(storeUser.getRealname());
|
|
|
+ userPointsLogService.save(log);
|
|
|
+
|
|
|
+ iUserService.updateById(user);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<IntegralOrderUserVo> getOrderUserList(OrderUserQueryBo bo) {
|
|
|
+ String store = ServletUtils.getRequest().getHeader("Store");
|
|
|
+ if (StringUtils.isNotBlank(store)){
|
|
|
+ bo.setStoreId(Long.valueOf(store));
|
|
|
+ }
|
|
|
+ String merId = ServletUtils.getRequest().getHeader("MerId");
|
|
|
+ if (StringUtils.isNotBlank(merId)){
|
|
|
+ bo.setMerId(Long.valueOf(merId));
|
|
|
+ }
|
|
|
+ String tenantId = ServletUtils.getRequest().getHeader("TenantId");
|
|
|
+ if (StringUtils.isNotBlank(tenantId)){
|
|
|
+ bo.setTenantId(Long.valueOf(tenantId));
|
|
|
+ }
|
|
|
+ return baseMapper.getOrderUserList(bo);
|
|
|
+ }
|
|
|
+
|
|
|
private String createGradeCode(Long goodsId, CourseBusinessVo business) {
|
|
|
|
|
|
Goods goods = iGoodsService.getById(goodsId);
|