|
@@ -1,52 +1,74 @@
|
|
|
package com.izouma.awesomeadmin.service.impl;
|
|
package com.izouma.awesomeadmin.service.impl;
|
|
|
|
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
|
|
+
|
|
|
|
|
+import com.izouma.awesomeadmin.dao.AlipayTempMapper;
|
|
|
|
|
+import com.izouma.awesomeadmin.dao.UserInfoMapper;
|
|
|
|
|
+import com.izouma.awesomeadmin.dto.Result;
|
|
|
|
|
+import com.izouma.awesomeadmin.model.*;
|
|
|
|
|
+import com.izouma.awesomeadmin.service.*;
|
|
|
|
|
+import com.izouma.awesomeadmin.util.MbappUtil;
|
|
|
import org.apache.log4j.Logger;
|
|
import org.apache.log4j.Logger;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
import com.izouma.awesomeadmin.constant.AppConstant;
|
|
import com.izouma.awesomeadmin.constant.AppConstant;
|
|
|
import com.izouma.awesomeadmin.dto.Page;
|
|
import com.izouma.awesomeadmin.dto.Page;
|
|
|
-import com.izouma.awesomeadmin.model.UserOrder;
|
|
|
|
|
-import com.izouma.awesomeadmin.service.UserOrderService;
|
|
|
|
|
import com.izouma.awesomeadmin.dao.UserOrderMapper;
|
|
import com.izouma.awesomeadmin.dao.UserOrderMapper;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
-* service接口实现类
|
|
|
|
|
-*/
|
|
|
|
|
|
|
+ * service接口实现类
|
|
|
|
|
+ */
|
|
|
@Service
|
|
@Service
|
|
|
-public class UserOrderServiceImpl implements UserOrderService{
|
|
|
|
|
|
|
+public class UserOrderServiceImpl implements UserOrderService {
|
|
|
|
|
|
|
|
private static Logger logger = Logger.getLogger(UserOrderServiceImpl.class);
|
|
private static Logger logger = Logger.getLogger(UserOrderServiceImpl.class);
|
|
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private UserOrderMapper userOrderMapper;
|
|
private UserOrderMapper userOrderMapper;
|
|
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private UserInfoService userInfoService;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private StoreInfoService storeInfoService;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private MemberPointService memberPointService;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private MemberCoinService memberCoinService;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private AlipayTempMapper alipayTempMapper;
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
public List<UserOrder> getUserOrderList(UserOrder record) {
|
|
public List<UserOrder> getUserOrderList(UserOrder record) {
|
|
|
|
|
|
|
|
logger.info("getUserOrderList");
|
|
logger.info("getUserOrderList");
|
|
|
try {
|
|
try {
|
|
|
|
|
|
|
|
- return userOrderMapper.queryAllUserOrder(record);
|
|
|
|
|
|
|
+ return userOrderMapper.queryAllUserOrder(record);
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
- logger.error("getUserOrderList", e);
|
|
|
|
|
|
|
+ logger.error("getUserOrderList", e);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
return null;
|
|
return null;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
public List<UserOrder> getUserOrderByPage(Page page, UserOrder record) {
|
|
public List<UserOrder> getUserOrderByPage(Page page, UserOrder record) {
|
|
|
|
|
|
|
|
logger.info("getUserOrderByPage");
|
|
logger.info("getUserOrderByPage");
|
|
|
try {
|
|
try {
|
|
|
|
|
|
|
|
- Map<String, Object> parameter = new HashMap<String, Object>();
|
|
|
|
|
- parameter.put("record", record);
|
|
|
|
|
- parameter.put(AppConstant.PAGE, page);
|
|
|
|
|
|
|
+ Map<String, Object> parameter = new HashMap<String, Object>();
|
|
|
|
|
+ parameter.put("record", record);
|
|
|
|
|
+ parameter.put(AppConstant.PAGE, page);
|
|
|
|
|
|
|
|
- return userOrderMapper.queryUserOrderByPage(parameter);
|
|
|
|
|
|
|
+ return userOrderMapper.queryUserOrderByPage(parameter);
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
- logger.error("getUserOrderByPage", e);
|
|
|
|
|
|
|
+ logger.error("getUserOrderByPage", e);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
return null;
|
|
return null;
|
|
@@ -60,7 +82,7 @@ public class UserOrderServiceImpl implements UserOrderService{
|
|
|
|
|
|
|
|
return userOrderMapper.selectByPrimaryKey(Integer.valueOf(id));
|
|
return userOrderMapper.selectByPrimaryKey(Integer.valueOf(id));
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
- logger.error("getUserOrderById", e);
|
|
|
|
|
|
|
+ logger.error("getUserOrderById", e);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
return null;
|
|
return null;
|
|
@@ -74,7 +96,7 @@ public class UserOrderServiceImpl implements UserOrderService{
|
|
|
|
|
|
|
|
return userOrderMapper.queryUserOrder(record);
|
|
return userOrderMapper.queryUserOrder(record);
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
- logger.error("getUserOrder", e);
|
|
|
|
|
|
|
+ logger.error("getUserOrder", e);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
return null;
|
|
return null;
|
|
@@ -85,11 +107,12 @@ public class UserOrderServiceImpl implements UserOrderService{
|
|
|
|
|
|
|
|
logger.info("createUserOrder");
|
|
logger.info("createUserOrder");
|
|
|
try {
|
|
try {
|
|
|
|
|
+ record.setOrderCode(MbappUtil.getOrderIdByUUId());
|
|
|
|
|
|
|
|
int updates = userOrderMapper.insertSelective(record);
|
|
int updates = userOrderMapper.insertSelective(record);
|
|
|
|
|
|
|
|
if (updates > 0) {
|
|
if (updates > 0) {
|
|
|
- return true;
|
|
|
|
|
|
|
+ return true;
|
|
|
}
|
|
}
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
logger.error("createUserOrder", e);
|
|
logger.error("createUserOrder", e);
|
|
@@ -104,13 +127,13 @@ public class UserOrderServiceImpl implements UserOrderService{
|
|
|
logger.info("deleteUserOrder");
|
|
logger.info("deleteUserOrder");
|
|
|
try {
|
|
try {
|
|
|
|
|
|
|
|
- int updates = userOrderMapper.delete(id);
|
|
|
|
|
|
|
+ int updates = userOrderMapper.delete(id);
|
|
|
|
|
|
|
|
if (updates > 0) {
|
|
if (updates > 0) {
|
|
|
- return true;
|
|
|
|
|
|
|
+ return true;
|
|
|
}
|
|
}
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
- logger.error("deleteUserOrder", e);
|
|
|
|
|
|
|
+ logger.error("deleteUserOrder", e);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
return false;
|
|
return false;
|
|
@@ -125,13 +148,185 @@ public class UserOrderServiceImpl implements UserOrderService{
|
|
|
int updates = userOrderMapper.updateByPrimaryKeySelective(record);
|
|
int updates = userOrderMapper.updateByPrimaryKeySelective(record);
|
|
|
|
|
|
|
|
if (updates > 0) {
|
|
if (updates > 0) {
|
|
|
- return true;
|
|
|
|
|
|
|
+ return true;
|
|
|
}
|
|
}
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
- logger.error("updateUserOrder", e);
|
|
|
|
|
|
|
+ logger.error("updateUserOrder", e);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public Result payOrder(String orderId, double coin, double point, double cash, int payMode) {
|
|
|
|
|
+
|
|
|
|
|
+ logger.info("payOrder:支付订单");
|
|
|
|
|
+ try {
|
|
|
|
|
+
|
|
|
|
|
+ UserOrder userOrder = new UserOrder();
|
|
|
|
|
+
|
|
|
|
|
+ userOrder.setId(Integer.valueOf(orderId));
|
|
|
|
|
+
|
|
|
|
|
+ userOrder = userOrderMapper.queryUserOrder(userOrder);
|
|
|
|
|
+
|
|
|
|
|
+ if (userOrder == null) {
|
|
|
|
|
+ return new Result(false, "支付失败,订单不存在");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ double money = userOrder.getDealPrice().doubleValue();
|
|
|
|
|
+
|
|
|
|
|
+ if (AppConstant.PayMode.COIN == payMode) {
|
|
|
|
|
+ //如果支付总额不足则用余额补足;
|
|
|
|
|
+ if (money > (coin + point + cash)) {
|
|
|
|
|
+ coin = money - point - cash;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ UserInfo userInfo = userInfoService.getUserInfoById(userOrder.getUserId() + "");
|
|
|
|
|
+
|
|
|
|
|
+ if (userInfo == null) {
|
|
|
|
|
+ return new Result(false, "支付失败,用户不存在!");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 余额
|
|
|
|
|
+ */
|
|
|
|
|
+ double moneyCoin = userInfo.getMoneyCoin();
|
|
|
|
|
+ if (coin > moneyCoin) {
|
|
|
|
|
+ return new Result(false, "支付失败,余额不足");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 商城积分
|
|
|
|
|
+ */
|
|
|
|
|
+ double moneyPoint = userInfo.getMoneyPoint();
|
|
|
|
|
+ if (point > moneyPoint) {
|
|
|
|
|
+ return new Result(false, "支付失败,商城积分不足");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ if (money > (coin + point + cash)) {
|
|
|
|
|
+ return new Result(false, "支付失败,金额不足");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (point > 0) {
|
|
|
|
|
+ //积分兑换区 只能用商城积分
|
|
|
|
|
+ MemberPoint memberPoint = new MemberPoint();
|
|
|
|
|
+ memberPoint.setCreateUser("系统");
|
|
|
|
|
+ memberPoint.setUserId(userOrder.getUserId() + "");
|
|
|
|
|
+ memberPoint.setMoney(String.valueOf(-point + 0.0));
|
|
|
|
|
+ memberPoint.setBalance(String.valueOf(moneyPoint - point));
|
|
|
|
|
+ memberPoint.setTypeFlag(AppConstant.CoinType.CONSUMPTION);
|
|
|
|
|
+ memberPoint.setRemark("购买商品消费,订单号:" + userOrder.getOrderCode());
|
|
|
|
|
+ memberPointService.createMemberPoint(memberPoint);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ // 个人店铺,只能用余额支付
|
|
|
|
|
+ if (coin > 0) {
|
|
|
|
|
+
|
|
|
|
|
+ MemberCoin memberCoin = new MemberCoin();
|
|
|
|
|
+ memberCoin.setCreateUser("系统");
|
|
|
|
|
+ memberCoin.setUserId(userOrder.getUserId() + "");
|
|
|
|
|
+ memberCoin.setMoney(String.valueOf(-coin + 0.0));
|
|
|
|
|
+ memberCoin.setBalance(String.valueOf(moneyCoin - coin));
|
|
|
|
|
+ memberCoin.setTypeFlag(AppConstant.CoinType.CONSUMPTION);
|
|
|
|
|
+ memberCoin.setRemark("购买积分商品消费,订单号:" + userOrder.getOrderCode());
|
|
|
|
|
+ memberCoinService.createMemberCoin(memberCoin);
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ UserInfo updateUser = new UserInfo();
|
|
|
|
|
+ updateUser.setId(userOrder.getUserId());
|
|
|
|
|
+ updateUser.setMoneyCoin(moneyCoin - coin);
|
|
|
|
|
+ updateUser.setMoneyPoint(moneyPoint - point);
|
|
|
|
|
+ userInfoService.updateUserInfo(updateUser);
|
|
|
|
|
+
|
|
|
|
|
+ //更新为已经支付
|
|
|
|
|
+ UserOrder userOrderPay = new UserOrder();
|
|
|
|
|
+
|
|
|
|
|
+ userOrderPay.setId(Integer.valueOf(orderId));
|
|
|
|
|
+ userOrderPay.setCoin(BigDecimal.valueOf(coin));
|
|
|
|
|
+ userOrderPay.setPoint(BigDecimal.valueOf(point));
|
|
|
|
|
+ userOrderPay.setCash(BigDecimal.valueOf(cash));
|
|
|
|
|
+ userOrderPay.setPayMode(payMode);
|
|
|
|
|
+ userOrderPay.setPayTime(new Date());
|
|
|
|
|
+ userOrderPay.setStatusFlag(AppConstant.OrderStatus.PAY_OVER);
|
|
|
|
|
+
|
|
|
|
|
+ userOrderMapper.updateByPrimaryKeySelective(userOrderPay);
|
|
|
|
|
+
|
|
|
|
|
+ return new Result(true, "支付成功");
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ logger.error("payOrder:支付订单异常", e);
|
|
|
|
|
+ }
|
|
|
|
|
+ return new Result(false, "支付失败");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public double calculatedPrice(String orderId, double coin, double point) {
|
|
|
|
|
+
|
|
|
|
|
+ logger.info("calculatedPrice:计算价格");
|
|
|
|
|
+ try {
|
|
|
|
|
+
|
|
|
|
|
+ UserOrder userOrder = new UserOrder();
|
|
|
|
|
+
|
|
|
|
|
+ userOrder.setId(Integer.valueOf(orderId));
|
|
|
|
|
+
|
|
|
|
|
+ userOrder = userOrderMapper.queryUserOrder(userOrder);
|
|
|
|
|
+
|
|
|
|
|
+ double money = userOrder.getDealPrice().doubleValue();
|
|
|
|
|
+
|
|
|
|
|
+ double cash = money - coin - point;
|
|
|
|
|
+
|
|
|
|
|
+ return cash;
|
|
|
|
|
+
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ logger.error("calculatedPrice:计算价格异常", e);
|
|
|
|
|
+ }
|
|
|
|
|
+ return 0;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * <p>支付宝支付成功回调接口。</p>
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param tradeNo
|
|
|
|
|
+ * @param tradeStatus
|
|
|
|
|
+ */
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void alipaySuccess(String tradeNo, String tradeStatus) {
|
|
|
|
|
+
|
|
|
|
|
+ logger.info("alipaySuccess:支付宝支付成功回调接口 tradeNo:" + tradeNo + ", tradeStatus:" + tradeStatus);
|
|
|
|
|
+ try {
|
|
|
|
|
+ AlipayTemp alipayTemp = new AlipayTemp();
|
|
|
|
|
+ alipayTemp.setOutTradeNo(tradeNo);
|
|
|
|
|
+ alipayTemp = alipayTempMapper.queryAlipayTemp(alipayTemp);
|
|
|
|
|
+
|
|
|
|
|
+ if (alipayTemp != null) {
|
|
|
|
|
+
|
|
|
|
|
+ if (!AppConstant.Aliapi.TRADE_SUCCESS.equals(alipayTemp.getTradeStatus())) {
|
|
|
|
|
+
|
|
|
|
|
+ payOrder(alipayTemp.getOrderId() + "", alipayTemp.getCoin().doubleValue(),
|
|
|
|
|
+ alipayTemp.getPoint().doubleValue(), alipayTemp.getCash().doubleValue(), AppConstant.PayMode.ALIPAY);
|
|
|
|
|
+
|
|
|
|
|
+ alipayTemp.setTradeStatus(tradeStatus);
|
|
|
|
|
+
|
|
|
|
|
+ alipayTempMapper.updateByPrimaryKeySelective(alipayTemp);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ logger.error("alipaySuccess:支付宝支付成功回调接口异常 tradeNo:" + tradeNo + ", tradeStatus:" + tradeStatus, e);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
|
|
|