You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2367 lines
110 KiB
2367 lines
110 KiB
package com.hai.service.impl;
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.fastjson.JSONArray;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.hai.common.exception.ErrorCode;
|
|
import com.hai.common.exception.ErrorHelp;
|
|
import com.hai.common.exception.SysCode;
|
|
import com.hai.common.pay.util.XmlUtil;
|
|
import com.hai.common.pay.util.sdk.WXPayConstants;
|
|
import com.hai.common.security.AESEncodeUtil;
|
|
import com.hai.common.utils.DateUtil;
|
|
import com.hai.common.utils.HttpsUtils;
|
|
import com.hai.common.utils.IDGenerator;
|
|
import com.hai.common.utils.WxUtils;
|
|
import com.hai.config.*;
|
|
import com.hai.dao.*;
|
|
import com.hai.entity.*;
|
|
import com.hai.entity.OutRechargeOrder;
|
|
import com.hai.enum_type.*;
|
|
import com.hai.model.*;
|
|
import com.hai.msg.entity.MsgTopic;
|
|
import com.hai.order.type.OrderPayType;
|
|
import com.hai.order.type.OrderProductType;
|
|
import com.hai.order.utils.OrderUtil;
|
|
import com.hai.service.*;
|
|
import com.hai.service.pay.impl.GoodsOrderServiceImpl;
|
|
import org.apache.commons.collections4.MapUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.http.HttpEntity;
|
|
import org.apache.http.client.methods.CloseableHttpResponse;
|
|
import org.apache.http.client.methods.HttpPost;
|
|
import org.apache.http.entity.StringEntity;
|
|
import org.apache.http.impl.client.CloseableHttpClient;
|
|
import org.apache.http.util.EntityUtils;
|
|
import org.springframework.data.redis.core.RedisTemplate;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Isolation;
|
|
import org.springframework.transaction.annotation.Propagation;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
import javax.annotation.Resource;
|
|
import java.math.BigDecimal;
|
|
import java.math.RoundingMode;
|
|
import java.util.*;
|
|
|
|
/**
|
|
* @Auther: 胡锐
|
|
* @Description:
|
|
* @Date: 2021/3/26 23:06
|
|
*/
|
|
@Service("highOrderService")
|
|
public class HighOrderServiceImpl implements HighOrderService {
|
|
|
|
@Resource
|
|
private HighOrderMapper highOrderMapper;
|
|
|
|
@Resource
|
|
private HighDeviceService deviceService;
|
|
|
|
@Resource
|
|
private BsRequestRecordService bsRequestRecordService;
|
|
|
|
@Resource
|
|
private HighUserPayPasswordService highUserPayPasswordService;
|
|
|
|
@Resource
|
|
private ThirdProductConfig thirdProductConfig;
|
|
|
|
@Resource
|
|
private HighOrderMapperExt highOrderMapperExt;
|
|
|
|
@Resource
|
|
private HighUserCardService highUserCardService;
|
|
|
|
@Resource
|
|
private HighChildOrderMapper highChildOrderMapper;
|
|
|
|
@Resource
|
|
private HighCouponCodeService highCouponCodeService;
|
|
|
|
@Resource
|
|
private HighCouponService highCouponService;
|
|
|
|
@Resource
|
|
private HighGasOrderPushMapper highGasOrderPushMapper;
|
|
|
|
@Resource
|
|
private HighCouponHandselService highCouponHandselService;
|
|
|
|
@Resource
|
|
private HighCouponCodeOtherMapper highCouponCodeOtherMapper;
|
|
|
|
@Resource
|
|
private HighUserService highUserService;
|
|
|
|
@Resource
|
|
private HighUserCouponMapper highUserCouponMapper;
|
|
|
|
@Resource
|
|
private HighDiscountUserRelMapper highDiscountUserRelMapper;
|
|
|
|
@Resource
|
|
private HighDiscountUserRelService highDiscountUserRelService;
|
|
|
|
@Resource
|
|
private HighDiscountAgentCodeService highDiscountAgentCodeService;
|
|
|
|
@Resource
|
|
private HighDiscountPackageService discountPackageService;
|
|
|
|
@Resource
|
|
private HighDiscountPackageRecordService discountPackageRecordService;
|
|
|
|
@Resource
|
|
private HighMerchantStoreService highMerchantStoreService;
|
|
|
|
@Resource
|
|
private HighOrderService highOrderService;
|
|
|
|
@Resource
|
|
private HighOrderPreService highOrderPreService;
|
|
|
|
@Resource
|
|
private HighActivityInfoService highActivityInfoService;
|
|
|
|
@Resource
|
|
private HighActivityUserLotteryNumService highActivityUserLotteryNumService;
|
|
|
|
@Resource
|
|
private HighDiscountPackageActualService discountPackageActualService;
|
|
|
|
@Resource
|
|
private HighDiscountPackageDiscountActualService discountPackageDiscountActualService;
|
|
|
|
@Resource
|
|
private HuiLianTongConfig huiLianTongConfig;
|
|
|
|
@Resource
|
|
private HighOilCardService oilCardService;
|
|
|
|
@Resource
|
|
private HighFleetOilCardService fleetOilCardService;
|
|
|
|
@Resource
|
|
private RedisTemplate redisTemplate;
|
|
|
|
@Resource
|
|
private GoodsOrderServiceImpl goodsOrderService;
|
|
|
|
@Resource
|
|
private MqttProviderConfig mqttProviderConfig;
|
|
|
|
@Resource
|
|
private BaiduVoiceService baiduVoiceService;
|
|
|
|
@Resource
|
|
private ApiMerchantsService apiMerchantsService;
|
|
|
|
@Resource
|
|
private ApiAmountRecordService apiAmountRecordService;
|
|
|
|
@Resource
|
|
private ApiOrderRecordService apiOrderRecordService;
|
|
|
|
@Resource
|
|
private ApiMemberProductService apiMemberProductService;
|
|
|
|
@Resource
|
|
private ShellGroupService shellGroupService;
|
|
|
|
@Resource
|
|
private JinZhuJiaYouService jinZhuJiaYouService;
|
|
|
|
@Override
|
|
@Transactional(
|
|
isolation = Isolation.SERIALIZABLE,
|
|
propagation = Propagation.REQUIRES_NEW)
|
|
public void insertOrder(HighOrder highOrder) throws Exception {
|
|
highOrderMapper.insert(highOrder);
|
|
|
|
// 使用优惠券
|
|
if (highOrder.getMemDiscountId() != null) {
|
|
HighDiscountUserRel discountUserRel = highDiscountUserRelService.getRelById(highOrder.getMemDiscountId());
|
|
discountUserRel.setUseTime(new Date()); // 使用时间
|
|
discountUserRel.setStatus(2); //状态 0:已过期 1:未使用 2:已使用
|
|
highDiscountUserRelService.updateDiscountUserRel(discountUserRel);
|
|
|
|
HighDiscountAgentCode code = highDiscountAgentCodeService.getCodeById(discountUserRel.getDiscountAgentCodeId());
|
|
code.setStatus(3);
|
|
highDiscountAgentCodeService.updateCode(code);
|
|
}
|
|
|
|
for (int i = 0; i < highOrder.getHighChildOrderList().size(); i++) {
|
|
HighChildOrder childOrder = highOrder.getHighChildOrderList().get(i);
|
|
childOrder.setOrderId(highOrder.getId());
|
|
highChildOrderMapper.insert(childOrder);
|
|
|
|
// 商品类型 1:卡卷
|
|
if (childOrder.getGoodsType() == 1) {
|
|
// 查询卡券
|
|
HighCoupon couponDetail = highCouponService.getCouponDetail(childOrder.getGoodsId());
|
|
if (couponDetail.getCouponSource() != 4 && couponDetail.getCouponSource() != 5) {
|
|
// 查询待销售
|
|
List<HighCouponCode> list = highCouponCodeService.getNoSaleCode(childOrder.getGoodsId());
|
|
if (list == null || list.size() == 0) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COUPON_STOCK_INSUFFICIENT, "");
|
|
}
|
|
list.get(0).setChildOrderId(childOrder.getId());
|
|
list.get(0).setStatus(99); // 状态:1.待销售 2.未使用 3.已使用 99.预支付
|
|
highCouponCodeService.updateCouponCode(list.get(0));
|
|
childOrder.setExt1(list.get(0).getExt1());
|
|
highChildOrderMapper.updateByPrimaryKey(childOrder);
|
|
}
|
|
|
|
if (couponDetail.getCouponSource().equals(4)) {
|
|
String code = String.valueOf(new Random().nextInt(899999) + 100000);
|
|
// 下单请求
|
|
JSONObject jsonObject = HuiLianTongConfig.recharge(highOrder.getOrderNo() + "_"+code,
|
|
childOrder.getSaleCount(),
|
|
couponDetail.getCouponKey(),
|
|
highOrder.getMemPhone());
|
|
System.out.println(jsonObject);
|
|
if (!jsonObject.getString("respCode").equals("0000")) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "下单失败");
|
|
}
|
|
JSONObject response = HuiLianTongUnionCardConfig.resolveResponse(jsonObject.getString("data"));
|
|
if (!response.getString("respCode").equals("0000")) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, response.getString("msg"));
|
|
}
|
|
childOrder.setExt2(response.getJSONObject("data").getString("rechargeOrderId"));
|
|
highChildOrderMapper.updateByPrimaryKey(childOrder);
|
|
}
|
|
|
|
/* if (!childOrder.getGiveawayType()) {
|
|
// 查看是否需要赠送卡卷
|
|
List<HighCouponHandselModel> handselListByCoupon = highCouponHandselService.getHandselListByCoupon(childOrder.getGoodsId());
|
|
if (handselListByCoupon != null && handselListByCoupon.size() > 0) {
|
|
for (HighCouponHandsel highCouponHandsel : handselListByCoupon) {
|
|
// 查询卡卷信息
|
|
HighCoupon coupon = highCouponService.getCouponById(highCouponHandsel.getHandselCouponId());
|
|
if (coupon == null) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.NOT_FOUND_COUPON, "");
|
|
}
|
|
|
|
// 查询赠送卡卷 是否有库存,没有就不赠送
|
|
if (highCouponCodeService.getStockCountByCoupon(coupon.getId()) > 0) {
|
|
HighChildOrder highChildOrder = new HighChildOrder();
|
|
highChildOrder.setOrderId(highOrder.getId());
|
|
highChildOrder.setGoodsType(1);
|
|
highChildOrder.setGoodsId(coupon.getId());
|
|
highChildOrder.setGoodsName(coupon.getCouponName());
|
|
highChildOrder.setGoodsImg(coupon.getCouponImg());
|
|
highChildOrder.setGoodsSpecName("默认");
|
|
highChildOrder.setGoodsPrice(new BigDecimal(0));
|
|
highChildOrder.setGoodsActualPrice(new BigDecimal("0"));
|
|
highChildOrder.setSaleCount(1);
|
|
highChildOrder.setTotalPrice(new BigDecimal(0));
|
|
highChildOrder.setGiveawayType(true); // 是否是赠品 0:否 1:是
|
|
highChildOrder.setChildOrderStatus(1); // 1 待支付 2 已支付 3.已完成 4. 已退款 5.已取消
|
|
highChildOrder.setPraiseStatus(0);
|
|
highOrder.getHighChildOrderList().add(highChildOrder);
|
|
}
|
|
}
|
|
}
|
|
}*/
|
|
}
|
|
|
|
if (childOrder.getGoodsType() == 3) {
|
|
// 加油站详情
|
|
HighMerchantStore store = highMerchantStoreService.getDetailById(childOrder.getGoodsId());
|
|
if (store == null) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.NOT_FOUND_ORDER, "");
|
|
}
|
|
|
|
if (store.getSourceType().equals(MerchantStoreSourceType.type4.getNumber())) {
|
|
/*// 查询金猪油品数据
|
|
JinZhuJiaYouOilNo jzOilNo = JinZhuJiaYouOilNo.getDataByOilNo(Integer.valueOf(childOrder.getGasOilNo()));
|
|
if (jzOilNo == null) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "暂时无法提交订单,未知的油品");
|
|
}
|
|
// 创建金猪订单
|
|
JSONObject jzOrderObject = jinZhuJiaYouService.createOrder(highOrder.getOrderNo(),
|
|
highOrder.getTotalPrice(),
|
|
store.getStoreKey(),
|
|
jzOilNo.getOilNoCode(),
|
|
childOrder.getGasGunNo(),
|
|
highOrder.getMemPhone()
|
|
);
|
|
childOrder.setGasOrderNo(jzOrderObject.getJSONObject("data").getString("systemOrderNo"));
|
|
childOrder.setGasPriceChannelPay(jzOrderObject.getJSONObject("data").getBigDecimal("paymentAmount"));
|
|
highChildOrderMapper.updateByPrimaryKey(childOrder);*/
|
|
}
|
|
|
|
}
|
|
|
|
if (childOrder.getGoodsType() == 7) {
|
|
// 查询库存
|
|
List<HighDiscountPackageActual> list = discountPackageActualService.getListByPackageId(childOrder.getGoodsId().intValue(), 1);
|
|
if (list == null || list.size() == 0) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COUPON_STOCK_INSUFFICIENT, "");
|
|
}
|
|
list.get(0).setUserId(highOrder.getMemId().intValue());
|
|
list.get(0).setChildOrderId(childOrder.getId());
|
|
list.get(0).setStatus(2); // 状态: 1: 待分配 2:预分配(售卖)3:已分配
|
|
discountPackageActualService.updateHighDiscountPackageActual(list.get(0));
|
|
}
|
|
}
|
|
|
|
// 积分抵扣,卡券除外
|
|
if (!highOrder.getHighChildOrderList().get(0).getGoodsType().equals(1) && highOrder.getPayGold() != null) {
|
|
// 积分转换成金额
|
|
BigDecimal goldPrice = new BigDecimal(highOrder.getPayGold().toString()).divide(new BigDecimal(100));
|
|
|
|
// 积分金额大于应付金额
|
|
if (goldPrice.compareTo(highOrder.getPayablePrice()) == 1) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "支付的积分金额大于支付金额");
|
|
}
|
|
|
|
// 应付金额 减去 积分抵扣金额 = 支付金额
|
|
highOrder.setPayPrice(highOrder.getPayablePrice().subtract(goldPrice));
|
|
|
|
// 积分金额小于应付金额
|
|
if (goldPrice.compareTo(highOrder.getPayablePrice()) == -1) {
|
|
updateOrderDetail(highOrder);
|
|
|
|
// 扣除用户积分
|
|
highUserService.goldHandle(highOrder.getMemId(), highOrder.getPayGold(), 2, 2, highOrder.getId(),
|
|
"抵扣积分订单:" + highOrder.getOrderNo() + ",使用积分:" + highOrder.getPayGold() , highOrder.getOrderNo());
|
|
}
|
|
|
|
// 积分金额等于应付金额
|
|
/* if (goldPrice.compareTo(highOrder.getPayablePrice()) == 0) {
|
|
if (StringUtils.isBlank(highOrder.getPayPwd())) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.NOT_ENTER_USER_PAY_PWD, "");
|
|
}
|
|
// 查询用户密码
|
|
HighUserPayPassword userPayPwd = highUserPayPasswordService.getDetailByUser(highOrder.getMemId());
|
|
if (userPayPwd == null) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.NOT_SET_USER_PAY_PWD, "");
|
|
}
|
|
// 校验支付密码是否正确
|
|
if (!userPayPwd.getPassword().equals(AESEncodeUtil.aesEncrypt(highOrder.getPayPwd()))) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.USER_PAY_PWD_ERROR, "");
|
|
}
|
|
// 扣除用户积分
|
|
highUserService.goldHandle(highOrder.getMemId(), highOrder.getPayGold(), 2, 2, highOrder.getId(),
|
|
"抵扣积分订单:" + highOrder.getOrderNo() + ",使用积分:" + highOrder.getPayGold());
|
|
|
|
highOrder.setOrderStatus(OrderStatusEnum.type3.getType());
|
|
highOrder.setPayRealPrice(highOrder.getPayPrice());
|
|
highOrder.setPayTime(new Date());
|
|
|
|
for (HighChildOrder childOrder : highOrder.getHighChildOrderList()) {
|
|
childOrder.setChildOrderStatus(3);
|
|
}
|
|
updateOrder(highOrder);
|
|
|
|
// 订单完成业务处理
|
|
orderBusinessTransaction(highOrder);
|
|
}*/
|
|
}
|
|
|
|
}
|
|
|
|
@Override
|
|
public void updateChildOrder(HighChildOrder highChildOrder) {
|
|
highChildOrderMapper.updateByPrimaryKey(highChildOrder);
|
|
}
|
|
|
|
@Override
|
|
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
|
public void updateOrder(HighOrder highOrder) {
|
|
highOrderMapper.updateByPrimaryKey(highOrder);
|
|
|
|
for (HighChildOrder childOrder : highOrder.getHighChildOrderList()) {
|
|
highChildOrderMapper.updateByPrimaryKey(childOrder);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void updateOrderDetail(HighOrder highOrder) {
|
|
highOrderMapper.updateByPrimaryKey(highOrder);
|
|
}
|
|
|
|
@Override
|
|
public void orderBusinessTransaction(HighOrder order) throws Exception {
|
|
for (HighChildOrder highChildOrder : order.getHighChildOrderList()) {
|
|
// 商品类型 商品类型 1:卡卷 2:金币充值
|
|
if (highChildOrder.getGoodsType() == 1) {
|
|
highChildOrder.setChildOrderStatus(2); // 子订单状态:1 待支付 2 已支付 3.已完成 4. 已退款 5.已取消
|
|
|
|
HighCoupon coupon = highCouponService.getCouponById(highChildOrder.getGoodsId());
|
|
|
|
// 是否预约
|
|
if (coupon.getReserveStatus() == true) {
|
|
HighOrderPre orderPre = new HighOrderPre();
|
|
orderPre.setCompanyId(coupon.getCompanyId());
|
|
orderPre.setMerchantId(coupon.getMerchantId());
|
|
orderPre.setMerchantStoreId(highChildOrder.getStoreId());
|
|
orderPre.setPreOrderNo(System.currentTimeMillis() + "");
|
|
orderPre.setOrderId(order.getId());
|
|
orderPre.setOrderNo(order.getOrderNo());
|
|
orderPre.setChildOrderId(highChildOrder.getId());
|
|
orderPre.setPayRealPrice(order.getPayRealPrice());
|
|
orderPre.setGoodsType(1);
|
|
orderPre.setGoodsName(coupon.getCouponName());
|
|
orderPre.setGoodsId(coupon.getId());
|
|
orderPre.setPreUserId(order.getMemId());
|
|
orderPre.setPreUserName(order.getMemName());
|
|
orderPre.setPreUserPhone(order.getMemPhone());
|
|
orderPre.setPreUserRemark(order.getRemarks());
|
|
orderPre.setStatus(1);
|
|
highOrderPreService.insertOrderPre(orderPre);
|
|
}
|
|
|
|
// 贵州中石化
|
|
if (coupon.getCouponSource() == 4) {
|
|
Map<String, Object> push = new HashMap<>();
|
|
push.put("couTypeCode", coupon.getCouponKey());
|
|
push.put("distCouCount", highChildOrder.getSaleCount());
|
|
push.put("userPhone", order.getMemPhone());
|
|
// push.put("thirdUserId", order.getMerchId());
|
|
|
|
// 推送给高速
|
|
JSONObject returnParam = HuiLianTongConfig.costRechargeOrder(highChildOrder.getExt2());
|
|
if (returnParam != null && returnParam.getString("respCode").equals("0000")) {
|
|
// 解密
|
|
JSONObject jsonObject = HuiLianTongUnionCardConfig.resolveResponse(returnParam.getString("data"));
|
|
JSONArray dataArray = JSONObject.parseObject(jsonObject.getString("data"), JSONArray.class);
|
|
for (Object data : dataArray) {
|
|
JSONObject dataObject = (JSONObject) data;
|
|
HighCouponCodeOther couponCodeOther = new HighCouponCodeOther();
|
|
couponCodeOther.setType(1);
|
|
couponCodeOther.setOrderId(order.getId());
|
|
couponCodeOther.setChildOrderId(highChildOrder.getId());
|
|
couponCodeOther.setCouTypeCode(dataObject.getString("couTypeCode"));
|
|
couponCodeOther.setCouNo(dataObject.getString("couNo"));
|
|
couponCodeOther.setActiveTime(dataObject.getDate("activeTime"));
|
|
couponCodeOther.setValidStartDate(dataObject.getDate("validStartDate"));
|
|
couponCodeOther.setValidEndDate(dataObject.getDate("validEndDate"));
|
|
couponCodeOther.setStatus(20);
|
|
couponCodeOther.setCreateTime(new Date());
|
|
highCouponCodeOtherMapper.insert(couponCodeOther);
|
|
|
|
// 卡卷关联用户
|
|
HighUserCoupon highUserCoupon = new HighUserCoupon();
|
|
highUserCoupon.setOrderId(order.getId());
|
|
highUserCoupon.setChildOrderId(highChildOrder.getId());
|
|
highUserCoupon.setMerchantId(coupon.getMerchantId());
|
|
highUserCoupon.setCouponId(coupon.getId());
|
|
highUserCoupon.setUserId(order.getMemId());
|
|
highUserCoupon.setCreateTime(new Date());
|
|
highUserCoupon.setQrCodeImg(dataObject.getString("couNo"));
|
|
highUserCoupon.setUseEndTime(dataObject.getDate("validEndDate"));
|
|
highUserCoupon.setStatus(1); // 状态 0:已过期 1:未使用 2:已使用
|
|
highUserCouponMapper.insert(highUserCoupon);
|
|
}
|
|
}
|
|
|
|
// 推送记录
|
|
HighGasOrderPush highGasOrderPush = new HighGasOrderPush();
|
|
highGasOrderPush.setType(OrderPushType.type6.getType());
|
|
highGasOrderPush.setOrderNo(order.getOrderNo());
|
|
highGasOrderPush.setCreateTime(new Date());
|
|
highGasOrderPush.setCode(returnParam.getString("result"));
|
|
highGasOrderPush.setRequestContent(JSONObject.toJSONString(push));
|
|
highGasOrderPush.setReturnContent(returnParam.toJSONString());
|
|
highGasOrderPushMapper.insert(highGasOrderPush);
|
|
|
|
} else if (coupon.getCouponSource() == 5) {
|
|
// 给用户发码
|
|
JSONObject response = ChongQingCNPCService.sendCNPCTicket(coupon.getCouponKey(), order.getOrderNo(), highChildOrder.getSaleCount(), order.getMemPhone());
|
|
|
|
// 推送记录
|
|
JSONObject request = new JSONObject();
|
|
request.put("requestCode", coupon.getCouponKey());
|
|
request.put("tradeId", order.getOrderNo());
|
|
request.put("ticketSum", highChildOrder.getSaleCount());
|
|
request.put("phone", order.getMemPhone());
|
|
|
|
HighGasOrderPush highGasOrderPush = new HighGasOrderPush();
|
|
highGasOrderPush.setType(OrderPushType.type10.getType());
|
|
highGasOrderPush.setOrderNo(order.getOrderNo());
|
|
highGasOrderPush.setCreateTime(new Date());
|
|
highGasOrderPush.setRequestContent(request.toJSONString());
|
|
highGasOrderPush.setReturnContent(response.toJSONString());
|
|
highGasOrderPushMapper.insert(highGasOrderPush);
|
|
|
|
JSONObject couponDetail = response.getJSONObject("ticketDetail");
|
|
JSONArray codeList = response.getJSONArray("codeList");
|
|
|
|
for (Object data : codeList) {
|
|
HighCouponCodeOther couponCodeOther = new HighCouponCodeOther();
|
|
couponCodeOther.setType(2);
|
|
couponCodeOther.setOrderId(order.getId());
|
|
couponCodeOther.setChildOrderId(highChildOrder.getId());
|
|
couponCodeOther.setCouTypeCode(couponDetail.getString("requestCode"));
|
|
couponCodeOther.setCouNo(ChongQingCNPCService.decryptCouponCode(String.valueOf(data)));
|
|
couponCodeOther.setActiveTime(DateUtil.format(couponDetail.getString("effectiveTime"), "yyyy-MM-dd"));
|
|
couponCodeOther.setValidStartDate(DateUtil.format(couponDetail.getString("effectiveTime"), "yyyy-MM-dd"));
|
|
couponCodeOther.setValidEndDate(DateUtil.format(couponDetail.getString("expiredDate"), "yyyy-MM-dd"));
|
|
couponCodeOther.setStatus(20);
|
|
couponCodeOther.setCreateTime(new Date());
|
|
highCouponCodeOtherMapper.insert(couponCodeOther);
|
|
|
|
// 卡卷关联用户
|
|
HighUserCoupon highUserCoupon = new HighUserCoupon();
|
|
highUserCoupon.setOrderId(order.getId());
|
|
highUserCoupon.setChildOrderId(highChildOrder.getId());
|
|
highUserCoupon.setMerchantId(coupon.getMerchantId());
|
|
highUserCoupon.setCouponId(coupon.getId());
|
|
highUserCoupon.setUserId(order.getMemId());
|
|
highUserCoupon.setCreateTime(new Date());
|
|
highUserCoupon.setQrCodeImg(couponCodeOther.getCouNo());
|
|
highUserCoupon.setUseEndTime(couponCodeOther.getValidEndDate());
|
|
highUserCoupon.setStatus(1); // 状态 0:已过期 1:未使用 2:已使用
|
|
highUserCouponMapper.insert(highUserCoupon);
|
|
}
|
|
} else {
|
|
HighCouponCode code = highCouponCodeService.getCouponCodeByOrderId(highChildOrder.getId());
|
|
code.setStatus(2); // 状态:1.待销售 2.未使用 3.已使用 99.预支付
|
|
code.setReceiveTime(new Date());
|
|
highCouponCodeService.updateCouponCode(code);
|
|
|
|
// 卡卷关联用户
|
|
HighUserCoupon highUserCoupon = new HighUserCoupon();
|
|
highUserCoupon.setOrderId(order.getId());
|
|
highUserCoupon.setChildOrderId(highChildOrder.getId());
|
|
highUserCoupon.setMerchantId(code.getMerchantId());
|
|
highUserCoupon.setCouponId(code.getCouponId());
|
|
highUserCoupon.setUserId(order.getMemId());
|
|
highUserCoupon.setCouponCodeId(code.getId());
|
|
highUserCoupon.setCreateTime(new Date());
|
|
highUserCoupon.setQrCodeImg(code.getExt1());
|
|
|
|
// 计算使用有效期
|
|
Calendar userEndTime = Calendar.getInstance();
|
|
userEndTime.setTime(new Date());
|
|
userEndTime.set(Calendar.HOUR_OF_DAY, 23);
|
|
userEndTime.set(Calendar.MINUTE, 59);
|
|
userEndTime.set(Calendar.SECOND, 59);
|
|
userEndTime.add(Calendar.DATE, coupon.getRecycleDay());
|
|
if (userEndTime.getTime().compareTo(code.getUseEndTime()) == 1) {
|
|
highUserCoupon.setUseEndTime(code.getUseEndTime());
|
|
} else {
|
|
highUserCoupon.setUseEndTime(userEndTime.getTime());
|
|
}
|
|
highUserCoupon.setStatus(1); // 状态 0:已过期 1:未使用 2:已使用
|
|
highUserCouponMapper.insert(highUserCoupon);
|
|
}
|
|
|
|
// 查询卡券是否有活动
|
|
Map<String, Object> activity = highActivityInfoService.getNewActivityByCouponId(coupon.getId());
|
|
if (activity != null && MapUtils.getLong(activity, "id") != null) {
|
|
highActivityUserLotteryNumService.addLotteryNum(MapUtils.getLong(activity, "id"), order.getMemId(), 1);
|
|
}
|
|
}
|
|
|
|
if (highChildOrder.getGoodsType() == 2) {
|
|
highChildOrder.setChildOrderStatus(3); // 子订单状态:1 待支付 2 已支付 3.已完成 4. 已退款 5.已取消
|
|
|
|
// 金币 1:100
|
|
Integer goldNum = new BigDecimal(highChildOrder.getTotalPrice().toString()).multiply(new BigDecimal("100")).intValue();
|
|
String remark = "订单" + order.getOrderNo() + "积分充值积分:" + goldNum;
|
|
highUserService.goldHandle(highChildOrder.getGoodsId(), goldNum, 1, 1, highChildOrder.getId(), remark , highChildOrder.getChildOrderNo());
|
|
}
|
|
|
|
/* if (highChildOrder.getGoodsType() == 3) {
|
|
highChildOrder.setChildOrdeStatus(3);
|
|
order.setOrderStatus(3);
|
|
HighMerchantStoreModel store = highMerchantStoreService.getMerchantStoreById(highChildOrder.getGoodsId());
|
|
|
|
// 来源类型 1:平台自建 2:团油
|
|
if (store.getSourceType().equals(1)) {
|
|
|
|
// 预存类型 0:非预存 1:预存门店
|
|
if (store.getPrestoreType() != null && store.getPrestoreType().equals(1)) {
|
|
Map<String, Object> pushParam = new HashMap<>();
|
|
pushParam.put("businessType", MerStoreAmountTypeEnum.type2.getType());
|
|
pushParam.put("storeId", highChildOrder.getGoodsId());
|
|
pushParam.put("price", order.getTotalPrice());
|
|
pushParam.put("sourceType", MerStoreAmountSourceTypeEnum.type2.getType());
|
|
pushParam.put("sourceId", order.getId());
|
|
pushParam.put("sourceContent", "订单号:" + order.getOrderNo() + ",加油金额:¥" + order.getTotalPrice());
|
|
pushParam.put("opUserId", order.getMemId());
|
|
pushParam.put("opUserName", order.getMemName());
|
|
// 扣预存款
|
|
this.redisTemplate.boundListOps(MsgTopic.MerStoreAccount.getName()).leftPush(pushParam);
|
|
}
|
|
|
|
// 打印小票
|
|
printGasOrder(highChildOrder.getGoodsId(), order, false);
|
|
|
|
} else if (store.getSourceType().equals(2)) {
|
|
// 推送团油订单
|
|
Map<String, Object> paramMap = new HashMap<>();
|
|
paramMap.put("gasId", store.getStoreKey());
|
|
paramMap.put("oilNo", highChildOrder.getGasOilNo());
|
|
paramMap.put("gunNo", highChildOrder.getGasGunNo());
|
|
BigDecimal priceGun = highChildOrder.getGasPriceGun();
|
|
BigDecimal priceVip = highChildOrder.getGasPriceVip();
|
|
paramMap.put("priceGun", priceGun); // 枪单价
|
|
paramMap.put("priceVip", priceVip); // 优惠价
|
|
paramMap.put("driverPhone", order.getMemPhone());
|
|
paramMap.put("thirdSerialNo", order.getOrderNo());
|
|
paramMap.put("refuelingAmount", highChildOrder.getTotalPrice());
|
|
|
|
// 油品类型 1:汽油:2:柴油;3:天然气
|
|
if (highChildOrder.getGasOilType() == 1) {
|
|
paramMap.put("accountNo", CommonSysConst.getSysConfig().getTuanYouGasolineAccount());
|
|
} else if (highChildOrder.getGasOilType() == 2) {
|
|
paramMap.put("accountNo", CommonSysConst.getSysConfig().getTuanYouDieselAccount());
|
|
}
|
|
JSONObject orderPushObject = TuanYouConfig.refuelingOrderPush(paramMap);
|
|
// 推送团油订单记录
|
|
HighGasOrderPush highGasOrderPush = new HighGasOrderPush();
|
|
highGasOrderPush.setType(OrderPushType.type1.getType());
|
|
highGasOrderPush.setOrderNo(order.getOrderNo());
|
|
highGasOrderPush.setCreateTime(new Date());
|
|
highGasOrderPush.setCode(orderPushObject.getString("code"));
|
|
highGasOrderPush.setRequestContent(JSONObject.toJSONString(paramMap));
|
|
highGasOrderPush.setReturnContent(orderPushObject.toJSONString());
|
|
highGasOrderPushMapper.insert(highGasOrderPush);
|
|
|
|
if (orderPushObject != null && orderPushObject.getString("code").equals("200")) {
|
|
highChildOrder.setGasOrderNo(orderPushObject.getJSONObject("result").getString("orderNo"));
|
|
}
|
|
} else if (store.getSourceType().equals(MerchantStoreSourceType.type3.getNumber())) {
|
|
|
|
// 推送加好油
|
|
shellGroupService.gasSyncPayment(order.getOrderNo(),
|
|
store.getStoreKey(),
|
|
order.getPayTime(),
|
|
highChildOrder.getTotalPrice(),
|
|
highChildOrder.getGasOilNo(),
|
|
highChildOrder.getGasGunNo(),
|
|
order.getPayablePrice(),
|
|
order.getDeductionPrice()
|
|
);
|
|
} else if (store.getSourceType().equals(MerchantStoreSourceType.type4.getNumber())) {
|
|
// 推送金猪加油
|
|
JSONObject jzOrderObject = jinZhuJiaYouService.payOrder(order.getOrderNo(), highChildOrder.getGasPriceChannelPay());
|
|
if (jzOrderObject == null
|
|
|| !jzOrderObject.getString("type").equals("OK")
|
|
|| !jzOrderObject.getInteger("status").equals(200)) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, jzOrderObject.getString("title"));
|
|
}
|
|
}
|
|
}
|
|
*/
|
|
if (highChildOrder.getGoodsType() == 7) {
|
|
HighDiscountPackageActual actual = discountPackageActualService.getDetailByChildOrderNo(highChildOrder.getOrderNo());
|
|
if (actual != null) {
|
|
List<HighDiscountPackageDiscountActual> discountList = discountPackageDiscountActualService.getHighDiscountPackageDiscountActualList(actual.getId());
|
|
for (HighDiscountPackageDiscountActual discount : discountList) {
|
|
highDiscountUserRelService.receiveDiscount(order.getMemId(), discount.getAgentDiscountCodeId());
|
|
}
|
|
HighDiscountPackage discountPackage = discountPackageService.findDiscountPackageById(actual.getDiscountPackageId());
|
|
HighDiscountPackageRecord record = new HighDiscountPackageRecord();
|
|
record.setDiscountPackageId(discountPackage.getId());
|
|
record.setDiscountPackageTitle(discountPackage.getTitle());
|
|
record.setUsingAttribution(discountPackage.getUsingAttribution());
|
|
record.setCompanyId(discountPackage.getCompanyId());
|
|
record.setOrderId(order.getId().intValue());
|
|
record.setChildOrderId(highChildOrder.getId().intValue());
|
|
record.setRecordNo(System.currentTimeMillis() + "");
|
|
record.setSalesType(1);
|
|
record.setPrice(order.getPayPrice());
|
|
record.setUserId(order.getMemId().intValue());
|
|
discountPackageRecordService.insertRecord(record);
|
|
actual.setAllocationTime(new Date());
|
|
actual.setStatus(3); // 状态: 1: 待分配 2:预分配(售卖)3:已分配
|
|
discountPackageActualService.updateHighDiscountPackageActual(actual);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public Integer getUndoneChildOrder(Long orderId) {
|
|
HighOrder order = getOrderById(orderId);
|
|
Integer count = 0;
|
|
for (HighChildOrder childOrder : order.getHighChildOrderList()) {
|
|
if (childOrder.getChildOrderStatus() != 3) {
|
|
count++;
|
|
}
|
|
}
|
|
return count;
|
|
}
|
|
|
|
@Override
|
|
public HighOrder getDetailById(Long orderId) {
|
|
return highOrderMapper.selectByPrimaryKey(orderId);
|
|
}
|
|
|
|
@Override
|
|
public HighChildOrder getChildOrderById(Long childOrderId) {
|
|
return highChildOrderMapper.selectByPrimaryKey(childOrderId);
|
|
}
|
|
|
|
@Override
|
|
public HighChildOrder getChildOrderByUserGoods(Long userId, Integer goodsType, Long goodsId) {
|
|
HighChildOrderExample example = new HighChildOrderExample();
|
|
example.createCriteria().andMemIdEqualTo(userId).andGoodsTypeEqualTo(goodsType).andGoodsIdEqualTo(goodsId);
|
|
List<HighChildOrder> list = highChildOrderMapper.selectByExample(example);
|
|
if (list.size() > 0) {
|
|
return list.get(0);
|
|
}
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public List<HighChildOrder> getChildOrderByOrder(Long orderId) {
|
|
HighChildOrderExample example = new HighChildOrderExample();
|
|
example.createCriteria().andOrderIdEqualTo(orderId);
|
|
return highChildOrderMapper.selectByExample(example);
|
|
}
|
|
|
|
@Override
|
|
public List<HighChildOrder> getChildOrderList(Map<String, Object> map) {
|
|
HighChildOrderExample example = new HighChildOrderExample();
|
|
HighChildOrderExample.Criteria criteria = example.createCriteria();
|
|
|
|
if (MapUtils.getLong(map, "memId") != null) {
|
|
criteria.andOrderIdEqualTo(MapUtils.getLong(map, "memId"));
|
|
}
|
|
|
|
if (MapUtils.getLong(map, "childOrdeStatus") != null) {
|
|
criteria.andChildOrderStatusEqualTo(MapUtils.getInteger(map, "childOrdeStatus"));
|
|
}
|
|
|
|
if (MapUtils.getString(map, "childOrdeStatusList") != null) {
|
|
String[] childOrdeStatusLists = MapUtils.getString(map, "childOrdeStatusList").split(",");
|
|
List<Integer> integerList = new ArrayList<>();
|
|
for (String status : childOrdeStatusLists) {
|
|
integerList.add(Integer.parseInt(status));
|
|
}
|
|
criteria.andChildOrderStatusIn(integerList);
|
|
}
|
|
|
|
if (MapUtils.getLong(map, "goodsType") != null) {
|
|
criteria.andGoodsTypeEqualTo(MapUtils.getInteger(map, "goodsType"));
|
|
}
|
|
|
|
if (MapUtils.getLong(map, "goodsId") != null) {
|
|
criteria.andGoodsIdEqualTo(MapUtils.getLong(map, "goodsId"));
|
|
}
|
|
|
|
if (MapUtils.getLong(map, "giveawayType") != null) {
|
|
criteria.andGiveawayTypeEqualTo(MapUtils.getBoolean(map, "giveawayType"));
|
|
}
|
|
return highChildOrderMapper.selectByExample(example);
|
|
}
|
|
|
|
@Override
|
|
public HighOrder getOrderById(Long id) {
|
|
HighOrder order = highOrderMapper.selectByPrimaryKey(id);
|
|
if (order == null) {
|
|
return null;
|
|
}
|
|
order.setHighChildOrderList(getChildOrderByOrder(order.getId()));
|
|
if (order.getMemDiscountId() != null) {
|
|
// order.setHighDiscount(highDiscountUserRelService.getRelById(order.getMemDiscountId()).getHighDiscount());
|
|
}
|
|
return order;
|
|
}
|
|
|
|
@Override
|
|
public HighOrder getOrderByOrderNo(String orderNo) {
|
|
HighOrderExample example = new HighOrderExample();
|
|
example.createCriteria().andOrderNoEqualTo(orderNo);
|
|
|
|
List<HighOrder> list = highOrderMapper.selectByExample(example);
|
|
if (list != null && list.size() > 0) {
|
|
return getOrderById(list.get(0).getId());
|
|
}
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public List<HighOrderData> getOrderBList(Map<String, Object> map) {
|
|
return highOrderMapperExt.selectOrderDataList(map);
|
|
}
|
|
|
|
@Override
|
|
public List<HighOrder> getOrderList(Map<String, Object> map) {
|
|
HighOrderExample example = new HighOrderExample();
|
|
HighOrderExample.Criteria criteria = example.createCriteria();
|
|
|
|
if (MapUtils.getLong(map, "memId") != null) {
|
|
criteria.andMemIdEqualTo(MapUtils.getLong(map, "memId"));
|
|
}
|
|
|
|
if (StringUtils.isNotBlank(MapUtils.getString(map, "status"))) {
|
|
String[] statuses = MapUtils.getString(map, "status").split(",");
|
|
List<Integer> list = new ArrayList<>();
|
|
for (String status : statuses) {
|
|
list.add(Integer.parseInt(status));
|
|
}
|
|
criteria.andOrderStatusIn(list);
|
|
}
|
|
|
|
if (MapUtils.getString(map, "orderNo") != null) {
|
|
criteria.andOrderNoEqualTo(MapUtils.getString(map, "orderNo"));
|
|
}
|
|
|
|
if (MapUtils.getString(map, "phone") != null) {
|
|
criteria.andMemPhoneEqualTo(MapUtils.getString(map, "phone"));
|
|
}
|
|
|
|
if (MapUtils.getInteger(map, "productType") != null) {
|
|
criteria.andProductTypeEqualTo(MapUtils.getInteger(map, "productType"));
|
|
}
|
|
|
|
if (StringUtils.isNotBlank(MapUtils.getString(map, "createTimeS")) && StringUtils.isNotBlank(MapUtils.getString(map, "createTimeE"))) {
|
|
criteria.andCreateTimeBetween(
|
|
DateUtil.format(MapUtils.getString(map, "createTimeS"), "yyyy-MM-dd HH:mm:ss"),
|
|
DateUtil.format(MapUtils.getString(map, "createTimeE"), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
|
|
example.setOrderByClause("create_time desc");
|
|
List<HighOrder> list = highOrderMapper.selectByExample(example);
|
|
if (list.size() > 0) {
|
|
for (HighOrder order : list) {
|
|
order.setHighChildOrderList(getChildOrderByOrder(order.getId()));
|
|
}
|
|
}
|
|
|
|
return list;
|
|
}
|
|
|
|
@Override
|
|
public List<HighOrder> getOrderListNotChild(Map<String, Object> map) {
|
|
HighOrderExample example = new HighOrderExample();
|
|
HighOrderExample.Criteria criteria = example.createCriteria();
|
|
|
|
if (MapUtils.getLong(map, "memId") != null) {
|
|
criteria.andMemIdEqualTo(MapUtils.getLong(map, "memId"));
|
|
}
|
|
|
|
if (StringUtils.isNotBlank(MapUtils.getString(map, "status"))) {
|
|
String[] statuses = MapUtils.getString(map, "status").split(",");
|
|
List<Integer> list = new ArrayList<>();
|
|
for (String status : statuses) {
|
|
list.add(Integer.parseInt(status));
|
|
}
|
|
criteria.andOrderStatusIn(list);
|
|
}
|
|
|
|
if (MapUtils.getString(map, "orderNo") != null) {
|
|
criteria.andOrderNoEqualTo(MapUtils.getString(map, "orderNo"));
|
|
}
|
|
|
|
if (MapUtils.getString(map, "phone") != null) {
|
|
criteria.andMemPhoneEqualTo(MapUtils.getString(map, "phone"));
|
|
}
|
|
|
|
if (MapUtils.getInteger(map, "productType") != null) {
|
|
criteria.andProductTypeEqualTo(MapUtils.getInteger(map, "productType"));
|
|
}
|
|
|
|
if (StringUtils.isNotBlank(MapUtils.getString(map, "createTimeS")) && StringUtils.isNotBlank(MapUtils.getString(map, "createTimeE"))) {
|
|
criteria.andCreateTimeBetween(
|
|
DateUtil.format(MapUtils.getString(map, "createTimeS"), "yyyy-MM-dd HH:mm:ss"),
|
|
DateUtil.format(MapUtils.getString(map, "createTimeE"), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
|
|
if (StringUtils.isNotBlank(MapUtils.getString(map, "refundTimeS")) && StringUtils.isNotBlank(MapUtils.getString(map, "refundTimeE"))) {
|
|
criteria.andRefundTimeBetween(
|
|
DateUtil.format(MapUtils.getString(map, "refundTimeS"), "yyyy-MM-dd HH:mm:ss"),
|
|
DateUtil.format(MapUtils.getString(map, "refundTimeE"), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
|
|
return highOrderMapper.selectByExample(example);
|
|
}
|
|
|
|
|
|
@Override
|
|
public List<HighOrderModel> getGoodsOrderModelList(Map<String, Object> map) throws Exception {
|
|
|
|
if (MapUtils.getLong(map, "createTimeS") != null) {
|
|
map.put("createTimeS", DateUtil.date2String(new Date(MapUtils.getLong(map, "createTimeS")), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
|
|
if (MapUtils.getLong(map, "createTimeE") != null) {
|
|
map.put("createTimeE", DateUtil.date2String(new Date(MapUtils.getLong(map, "createTimeE")), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
|
|
if (MapUtils.getLong(map, "payTimeS") != null) {
|
|
map.put("payTimeS", DateUtil.date2String(new Date(MapUtils.getLong(map, "payTimeS")), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
|
|
if (MapUtils.getLong(map, "payTimeE") != null) {
|
|
map.put("payTimeE", DateUtil.date2String(new Date(MapUtils.getLong(map, "payTimeE")), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
|
|
return highOrderMapper.selectGoodsOrderList(map);
|
|
}
|
|
|
|
@Override
|
|
public List<HighOrderModel> getGasOrderModelList(Map<String, Object> map) throws Exception {
|
|
|
|
if (MapUtils.getLong(map, "createTimeS") != null) {
|
|
map.put("createTimeS", DateUtil.date2String(new Date(MapUtils.getLong(map, "createTimeS")), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
|
|
if (MapUtils.getLong(map, "createTimeE") != null) {
|
|
map.put("createTimeE", DateUtil.date2String(new Date(MapUtils.getLong(map, "createTimeE")), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
|
|
if (MapUtils.getLong(map, "payTimeS") != null) {
|
|
map.put("payTimeS", DateUtil.date2String(new Date(MapUtils.getLong(map, "payTimeS")), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
|
|
if (MapUtils.getLong(map, "payTimeE") != null) {
|
|
map.put("payTimeE", DateUtil.date2String(new Date(MapUtils.getLong(map, "payTimeE")), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
|
|
return null;//highOrderMapper.selectGasOrderList(map);
|
|
}
|
|
|
|
@Override
|
|
public List<HighOrderModel> getKfcOrderModelList(Map<String, Object> map) throws Exception {
|
|
if (MapUtils.getLong(map, "createTimeS") != null) {
|
|
map.put("createTimeS", DateUtil.date2String(new Date(MapUtils.getLong(map, "createTimeS")), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
|
|
if (MapUtils.getLong(map, "createTimeE") != null) {
|
|
map.put("createTimeE", DateUtil.date2String(new Date(MapUtils.getLong(map, "createTimeE")), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
|
|
if (MapUtils.getLong(map, "payTimeS") != null) {
|
|
map.put("payTimeS", DateUtil.date2String(new Date(MapUtils.getLong(map, "payTimeS")), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
|
|
if (MapUtils.getLong(map, "payTimeE") != null) {
|
|
map.put("payTimeE", DateUtil.date2String(new Date(MapUtils.getLong(map, "payTimeE")), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
|
|
return highOrderMapper.selectKfcOrderList(map);
|
|
}
|
|
|
|
@Override
|
|
public List<HighOrderModel> getCinemaOrderList(Map<String, Object> map) throws Exception {
|
|
if (MapUtils.getLong(map, "createTimeS") != null) {
|
|
map.put("createTimeS", DateUtil.date2String(new Date(MapUtils.getLong(map, "createTimeS")), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
|
|
if (MapUtils.getLong(map, "createTimeE") != null) {
|
|
map.put("createTimeE", DateUtil.date2String(new Date(MapUtils.getLong(map, "createTimeE")), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
|
|
if (MapUtils.getLong(map, "payTimeS") != null) {
|
|
map.put("payTimeS", DateUtil.date2String(new Date(MapUtils.getLong(map, "payTimeS")), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
|
|
if (MapUtils.getLong(map, "payTimeE") != null) {
|
|
map.put("payTimeE", DateUtil.date2String(new Date(MapUtils.getLong(map, "payTimeE")), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
|
|
return highOrderMapper.selectCinemaOrderList(map);
|
|
}
|
|
|
|
@Override
|
|
public List<HighOrderModel> getMobileOrderList(Map<String, Object> map) throws Exception {
|
|
if (MapUtils.getLong(map, "createTimeS") != null) {
|
|
map.put("createTimeS", DateUtil.date2String(new Date(MapUtils.getLong(map, "createTimeS")), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
|
|
if (MapUtils.getLong(map, "createTimeE") != null) {
|
|
map.put("createTimeE", DateUtil.date2String(new Date(MapUtils.getLong(map, "createTimeE")), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
|
|
if (MapUtils.getLong(map, "payTimeS") != null) {
|
|
map.put("payTimeS", DateUtil.date2String(new Date(MapUtils.getLong(map, "payTimeS")), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
|
|
if (MapUtils.getLong(map, "payTimeE") != null) {
|
|
map.put("payTimeE", DateUtil.date2String(new Date(MapUtils.getLong(map, "payTimeE")), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
|
|
return highOrderMapper.getMobileOrderList(map);
|
|
}
|
|
|
|
@Override
|
|
public List<HighOrderModel> getOrderListByIdCode(String identificationCode, Map<String, Object> map) throws Exception {
|
|
map.put("identificationCode", identificationCode);
|
|
|
|
if (MapUtils.getLong(map, "createTimeS") != null) {
|
|
map.put("createTimeS", DateUtil.date2String(new Date(MapUtils.getLong(map, "createTimeS")), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
|
|
if (MapUtils.getLong(map, "createTimeE") != null) {
|
|
map.put("createTimeE", DateUtil.date2String(new Date(MapUtils.getLong(map, "createTimeE")), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
|
|
if (MapUtils.getLong(map, "payTimeS") != null) {
|
|
map.put("payTimeS", DateUtil.date2String(new Date(MapUtils.getLong(map, "payTimeS")), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
|
|
if (MapUtils.getLong(map, "payTimeE") != null) {
|
|
map.put("payTimeE", DateUtil.date2String(new Date(MapUtils.getLong(map, "payTimeE")), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
|
|
return highOrderMapper.getOrderListByIdCode(map);
|
|
}
|
|
|
|
@Override
|
|
public List<HighOrder> getCloseOrder() {
|
|
return highOrderMapperExt.getCloseOrder();
|
|
}
|
|
|
|
@Override
|
|
public HighOrder getConsumeOrderByDiscountCode(Long discountCodeId) {
|
|
|
|
// 查询优惠券有没有被使用
|
|
HighDiscountUserRelExample example = new HighDiscountUserRelExample();
|
|
example.createCriteria().andDiscountAgentCodeIdEqualTo(discountCodeId).andStatusEqualTo(2);
|
|
List<HighDiscountUserRel> userRels = highDiscountUserRelMapper.selectByExample(example);
|
|
|
|
if (userRels.size() > 0) {
|
|
HighOrderExample orderExample = new HighOrderExample();
|
|
orderExample.createCriteria().andMemDiscountIdEqualTo(userRels.get(0).getId());
|
|
List<HighOrder> orderList = highOrderMapper.selectByExample(orderExample);
|
|
if (orderList.size() > 0) {
|
|
HighOrder highOrder = orderList.get(0);
|
|
highOrder.setHighChildOrderList(getChildOrderByOrder(highOrder.getId()));
|
|
return highOrder;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
|
public void childOrderComplete(Long childOrderId) {
|
|
HighChildOrder childOrder = highChildOrderMapper.selectByPrimaryKey(childOrderId);
|
|
if (childOrder == null) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
|
|
}
|
|
childOrder.setChildOrderStatus(3);
|
|
highChildOrderMapper.updateByPrimaryKey(childOrder);
|
|
|
|
// 查询未完成的子订单数量
|
|
Integer count = getUndoneChildOrder(childOrder.getOrderId());
|
|
if (count == 0) {
|
|
HighOrder order = getOrderById(childOrder.getOrderId());
|
|
order.setOrderStatus(3);
|
|
order.setFinishTime(new Date());
|
|
highOrderMapper.updateByPrimaryKey(order);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
|
public void cancelOrder(Long orderId) {
|
|
HighOrder order = getOrderById(orderId);
|
|
if (order != null) {
|
|
if (order.getOrderStatus() != 1) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.STATUS_ERROR, "");
|
|
}
|
|
order.setOrderStatus(5); // 订单状态:1 待支付 2 已支付 3.已完成 4. 已退款 5.已取消
|
|
order.setCancelTime(new Date());
|
|
|
|
for (HighChildOrder highChildOrder : order.getHighChildOrderList()) {
|
|
// 商品类型 1:卡卷 2:金币充值
|
|
if (highChildOrder.getGoodsType() == 1) {
|
|
// 查询卡卷详情
|
|
HighCouponCode couponCode = highCouponCodeService.getCouponCodeByOrderId(highChildOrder.getId());
|
|
if (couponCode != null) {
|
|
couponCode.setChildOrderId(null);
|
|
couponCode.setStatus(1); // 状态:1.待销售 2.未使用 3.已使用 99.预支付
|
|
highCouponCodeService.updateCouponCode(couponCode);
|
|
}
|
|
}
|
|
|
|
if (highChildOrder.getGoodsType() == 7) {
|
|
HighDiscountPackageActual actual = discountPackageActualService.getDetailByChildOrderNo(highChildOrder.getOrderNo());
|
|
if (actual != null) {
|
|
actual.setChildOrderId(null);
|
|
actual.setUserId(null);
|
|
actual.setStatus(1);
|
|
discountPackageActualService.updateHighDiscountPackageActual(actual);
|
|
}
|
|
}
|
|
|
|
highChildOrder.setChildOrderStatus(5); // 子订单状态:1 待支付 2 已支付 3.已完成 4. 已退款 5.已取消
|
|
}
|
|
|
|
if (order.getMemDiscountId() != null) {
|
|
HighDiscountUserRel rel = highDiscountUserRelService.getRelById(order.getMemDiscountId());
|
|
if (rel != null) {
|
|
rel.setStatus(1); // 状态 0:已过期 1:未使用 2:已使用
|
|
rel.setUseTime(null);
|
|
highDiscountUserRelService.updateDiscountUserRel(rel);
|
|
|
|
HighDiscountAgentCode code = highDiscountAgentCodeService.getCodeById(rel.getDiscountAgentCodeId());
|
|
code.setStatus(2);
|
|
highDiscountAgentCodeService.updateCode(code);
|
|
}
|
|
}
|
|
|
|
if (order.getPayGold() != null) {
|
|
// 积分返回
|
|
String remark = "订单" + order.getOrderNo() + "取消,退还积分:" + order.getPayGold();
|
|
highUserService.goldHandle(order.getMemId(), order.getPayGold(), 1, 3, order.getId() , remark , order.getOrderNo());
|
|
}
|
|
|
|
updateOrder(order);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public Long countOrderByUserId(Long memId, Integer status) {
|
|
|
|
HighOrderExample example = new HighOrderExample();
|
|
HighOrderExample.Criteria criteria = example.createCriteria();
|
|
|
|
criteria.andMemIdEqualTo(memId);
|
|
criteria.andOrderStatusEqualTo(status);
|
|
return highOrderMapper.countByExample(example);
|
|
}
|
|
|
|
@Override
|
|
public Integer countUnusedDiscountByUserId(Long userId, Integer status) {
|
|
|
|
HighDiscountUserRelExample example = new HighDiscountUserRelExample();
|
|
HighDiscountUserRelExample.Criteria criteria = example.createCriteria();
|
|
|
|
if (userId != null) {
|
|
criteria.andUserIdEqualTo(userId);
|
|
}
|
|
|
|
if (status != null) {
|
|
criteria.andStatusEqualTo(status);
|
|
}
|
|
|
|
example.setOrderByClause("create_time desc");
|
|
return highDiscountUserRelMapper.selectByExample(example).size();
|
|
}
|
|
|
|
@Override
|
|
public List<HighOrder> getAlreadyPaidMobileOrder() {
|
|
return highOrderMapperExt.selectAlreadyPaidMobileOrder();
|
|
}
|
|
|
|
@Override
|
|
public List<HighOrder> getAlreadyPaidKfcOrder() {
|
|
return highOrderMapperExt.selectAlreadyPaidKfcOrder();
|
|
}
|
|
|
|
@Override
|
|
public List<HighOrder> getAlreadyPaidCinemaOrder() {
|
|
return highOrderMapperExt.selectAlreadyPaidCinemaOrder();
|
|
}
|
|
|
|
@Override
|
|
public List<HighOrder> getTest() {
|
|
return highOrderMapperExt.selectTest();
|
|
}
|
|
|
|
@Override
|
|
public List<Map<String, Object>> getFinishGasOrder() {
|
|
return highOrderMapper.selectFinishGasOrder();
|
|
}
|
|
|
|
@Override
|
|
public HighChildOrder getChildOrderByPresentation(Long orderId) {
|
|
HighChildOrderExample example = new HighChildOrderExample();
|
|
example.createCriteria().andOrderIdEqualTo(orderId).andGiveawayTypeEqualTo(false);
|
|
return highChildOrderMapper.selectByExample(example).get(0);
|
|
}
|
|
|
|
@Override
|
|
public List<HighOrderModel> selectDiscountPackageOrderList(Map<String, Object> map) throws Exception {
|
|
|
|
if (MapUtils.getLong(map, "createTimeS") != null) {
|
|
map.put("createTimeS", DateUtil.date2String(new Date(MapUtils.getLong(map, "createTimeS")), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
|
|
if (MapUtils.getLong(map, "createTimeE") != null) {
|
|
map.put("createTimeE", DateUtil.date2String(new Date(MapUtils.getLong(map, "createTimeE")), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
|
|
if (MapUtils.getLong(map, "payTimeS") != null) {
|
|
map.put("payTimeS", DateUtil.date2String(new Date(MapUtils.getLong(map, "payTimeS")), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
|
|
if (MapUtils.getLong(map, "payTimeE") != null) {
|
|
map.put("payTimeE", DateUtil.date2String(new Date(MapUtils.getLong(map, "payTimeE")), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
|
|
return highOrderMapper.selectDiscountPackageOrderList(map);
|
|
}
|
|
|
|
@Override
|
|
public OrderCountModel orderByIndex(Integer code) {
|
|
return highOrderMapper.orderByIndex(code);
|
|
}
|
|
|
|
@Override
|
|
public OrderCountModel HLTOrderByIndex(Integer code) {
|
|
return highOrderMapper.HLTOrderByIndex(code);
|
|
}
|
|
|
|
@Override
|
|
public List<HighOrderModel> HLTOrderByList(Integer code) throws Exception {
|
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
|
map.put("identificationCode", code);
|
|
map.put("orderStatus", "2,3");
|
|
map.put("payType", "1,2,3,5");
|
|
|
|
return highOrderMapper.selectOrderList(map);
|
|
}
|
|
|
|
@Override
|
|
public BigDecimal orderPriceTotal(Map<String, Object> map) {
|
|
if (highOrderMapper.orderPriceTotal(map) == null) {
|
|
return new BigDecimal(0);
|
|
}
|
|
return highOrderMapper.orderPriceTotal(map);
|
|
}
|
|
|
|
@Override
|
|
public BigDecimal rechargePriceTotal(Map<String, Object> map) {
|
|
if (highOrderMapper.rechargePriceTotal(map) == null) {
|
|
return new BigDecimal(0);
|
|
}
|
|
return highOrderMapper.rechargePriceTotal(map);
|
|
}
|
|
|
|
@Override
|
|
public Long orderPriceCount(Map<String, Object> map) {
|
|
return highOrderMapper.orderPriceCount(map);
|
|
}
|
|
|
|
@Override
|
|
public Long rechargePriceCount(Map<String, Object> map) {
|
|
return highOrderMapper.rechargePriceCount(map);
|
|
}
|
|
|
|
@Override
|
|
public List<OrderSumModel> getOrderSumOrderByDate() {
|
|
return highOrderMapper.getOrderSumOrderByDate();
|
|
}
|
|
|
|
@Override
|
|
public List<OrderSumModel> getOrderSumRechargeByDate() {
|
|
return highOrderMapper.getOrderSumRechargeByDate();
|
|
}
|
|
|
|
@Override
|
|
public List<DateCountModel> getDateCountByUser() {
|
|
return highOrderMapper.getDateCountByUser();
|
|
}
|
|
|
|
@Override
|
|
public List<DateCountModel> getDateCountByOrder() {
|
|
return highOrderMapper.getDateCountByOrder();
|
|
}
|
|
|
|
@Override
|
|
public List<DateCountModel> getDateCountByRecharge() {
|
|
return highOrderMapper.getDateCountByRecharge();
|
|
}
|
|
|
|
@Override
|
|
public int getGasTheDayOrderNum(Long userId) {
|
|
return 0;
|
|
}
|
|
|
|
@Override
|
|
public TyOrderCountModel TyOrderStatistics(Map<String, Object> map) throws Exception {
|
|
|
|
if (MapUtils.getLong(map, "createTimeS") != null) {
|
|
map.put("createTimeS", DateUtil.date2String(new Date(MapUtils.getLong(map, "createTimeS")), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
|
|
if (MapUtils.getLong(map, "createTimeE") != null) {
|
|
map.put("createTimeE", DateUtil.date2String(new Date(MapUtils.getLong(map, "createTimeE")), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
|
|
TyOrderCountModel tyOrderCountModel = new TyOrderCountModel();
|
|
|
|
if (highOrderMapper.TyOrderCount(map) != null) {
|
|
tyOrderCountModel = highOrderMapper.TyOrderCount(map);
|
|
tyOrderCountModel.setOrderNum(highOrderMapper.TyOrderNum(map));
|
|
}
|
|
Integer[] priceArr = {100, 200, 300, 400, 20000};
|
|
|
|
List<TyOrderGorpModel> priceList = new ArrayList<>();
|
|
|
|
for (Integer s : priceArr) {
|
|
TyOrderGorpModel tyOrderGorpModel = new TyOrderGorpModel();
|
|
map.put("totalPrice", s);
|
|
tyOrderGorpModel.setName(priceName(s));
|
|
tyOrderGorpModel.setValue(highOrderMapper.TyOrderNumByPrice(map));
|
|
priceList.add(tyOrderGorpModel);
|
|
}
|
|
|
|
priceList.get(1).setValue(priceList.get(1).getValue() - priceList.get(0).getValue());
|
|
priceList.get(2).setValue(priceList.get(2).getValue() - priceList.get(1).getValue() - priceList.get(0).getValue());
|
|
priceList.get(3).setValue(priceList.get(3).getValue() - priceList.get(2).getValue() - priceList.get(1).getValue() - priceList.get(0).getValue());
|
|
priceList.get(4).setValue(priceList.get(4).getValue() - priceList.get(3).getValue() - priceList.get(2).getValue() - priceList.get(1).getValue() - priceList.get(0).getValue());
|
|
|
|
|
|
tyOrderCountModel.setPriceGorp(priceList);
|
|
tyOrderCountModel.setPayTypeGorp(highOrderMapper.TyOrderNumGroupByPayType(map));
|
|
tyOrderCountModel.setGasOilNoGorp(highOrderMapper.TyOrderNumGroupByGasOilNo(map));
|
|
|
|
return tyOrderCountModel;
|
|
}
|
|
|
|
@Override
|
|
public Map<String, Object> getGasTheDayOrderCount(Long storeId, String status) {
|
|
return highOrderMapperExt.selectGasTheDayOrderCount(storeId, status);
|
|
}
|
|
|
|
@Override
|
|
public Map<String, Object> getGasStaffTheDayOrderCount(Long gasStaffId, String status) {
|
|
return highOrderMapperExt.selectGasStaffTheDayOrderCount(gasStaffId,status);
|
|
}
|
|
|
|
@Override
|
|
public Map<String, Object> getGasHistoryOrderCount(Long storeId, String status) {
|
|
return highOrderMapperExt.selectGasHistoryOrderCount(storeId, status);
|
|
}
|
|
|
|
@Override
|
|
public Map<String, Object> getGasStaffHistoryOrderCount(Long gasStaffId, String status) {
|
|
return highOrderMapperExt.selectGasStaffHistoryOrderCount(gasStaffId,status);
|
|
}
|
|
|
|
@Override
|
|
public Map<String, Object> countGasOrder(Map<String, Object> param) throws Exception {
|
|
if (MapUtils.getLong(param, "createTimeS") != null) {
|
|
param.put("createTimeS", DateUtil.date2String(new Date(MapUtils.getLong(param, "createTimeS")), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
if (MapUtils.getLong(param, "createTimeE") != null) {
|
|
param.put("createTimeE", DateUtil.date2String(new Date(MapUtils.getLong(param, "createTimeE")), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
if (MapUtils.getLong(param, "payTimeS") != null) {
|
|
param.put("payTimeS", DateUtil.date2String(new Date(MapUtils.getLong(param, "payTimeS")), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
if (MapUtils.getLong(param, "payTimeE") != null) {
|
|
param.put("payTimeE", DateUtil.date2String(new Date(MapUtils.getLong(param, "payTimeE")), "yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
return highOrderMapperExt.countGasStoreOrder(param);
|
|
}
|
|
|
|
@Override
|
|
public Map<String, Object> hltCardNoTopUpStatistic() {
|
|
return highOrderMapperExt.HltCardNoTopUpStatistic();
|
|
}
|
|
|
|
@Override
|
|
public GasOrderModel getGasOrderDetail(String orderNo) {
|
|
Map<String, Object> param = new HashMap<>();
|
|
param.put("orderNo", orderNo);
|
|
/*List<GasOrderModel> list = highOrderMapperExt.selectGasOrderList(param);
|
|
if (list.size() > 0) {
|
|
return list.get(0);
|
|
}*/
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public void printGasOrder(Long gasId, HighGasOrder order, boolean makeUp) {
|
|
if (order == null) {
|
|
return;
|
|
}
|
|
// 查询油站云打印设备
|
|
List<HighDevice> deviceList = deviceService.getDeviceListByStoreId(gasId);
|
|
for (HighDevice device : deviceList) {
|
|
Map<String, Object> receiptMap = new HashMap<>();
|
|
receiptMap.put("receiptTop", device.getReceiptTop());
|
|
receiptMap.put("receiptSource", device.getReceiptSource());
|
|
receiptMap.put("receiptBottom", device.getReceiptBottom());
|
|
|
|
if (device.getType().equals(DeviceTypeEnum.type1.getType())) {
|
|
new Thread(() -> {
|
|
try {
|
|
SpPrinterConfig sp = new SpPrinterConfig();
|
|
sp.print(device.getDeviceSn(),
|
|
SpPrinterTemplate.oilCashierStubTemp(
|
|
order.getStoreName(),
|
|
order.getOrderNo(),
|
|
DateUtil.date2String(order.getPayTime(), "yyyy-MM-dd HH:mm:ss"),
|
|
order.getMemPhone(),
|
|
order.getGasGunNo(),
|
|
order.getGasOilNo(),
|
|
order.getGasOilLiters().toString(),
|
|
order.getGasRefuelPrice().toString(),
|
|
receiptMap,
|
|
makeUp
|
|
), 1);
|
|
|
|
sp.print(device.getDeviceSn(),
|
|
SpPrinterTemplate.oilClientStubTemp(
|
|
order.getStoreName(),
|
|
order.getOrderNo(),
|
|
DateUtil.date2String(order.getPayTime(), "yyyy-MM-dd HH:mm:ss"),
|
|
order.getMemPhone(),
|
|
order.getGasGunNo(),
|
|
order.getGasOilNo(),
|
|
order.getGasOilLiters().toString(),
|
|
order.getGasRefuelPrice().toString(),
|
|
receiptMap,
|
|
makeUp
|
|
), 1);
|
|
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
}).start();
|
|
}
|
|
|
|
if (device.getType().equals(DeviceTypeEnum.type2.getType())) {
|
|
new Thread(() -> {
|
|
try {
|
|
mqttProviderConfig.publish(2, false, device.getDeviceImei(),
|
|
ZkcPrinterTemplate.oilCashierStubTemp(
|
|
order.getStoreName(),
|
|
order.getOrderNo(),
|
|
DateUtil.date2String(order.getPayTime(), "yyyy-MM-dd HH:mm:ss"),
|
|
order.getMemPhone(),
|
|
"嗨森逛",
|
|
order.getGasGunNo(),
|
|
order.getGasOilNo(),
|
|
order.getGasOilLiters().toString(),
|
|
order.getGasRefuelPrice().toString(),
|
|
receiptMap,
|
|
makeUp
|
|
));
|
|
mqttProviderConfig.publish(2, false, device.getDeviceImei(),
|
|
ZkcPrinterTemplate.oilClientStubTemp(
|
|
order.getStoreName(),
|
|
order.getOrderNo(),
|
|
DateUtil.date2String(order.getPayTime(), "yyyy-MM-dd HH:mm:ss"),
|
|
order.getMemPhone(),
|
|
"嗨森逛",
|
|
order.getGasGunNo(),
|
|
order.getGasOilNo(),
|
|
order.getGasOilLiters().toString(),
|
|
order.getGasRefuelPrice().toString(),
|
|
receiptMap,
|
|
makeUp
|
|
));
|
|
} catch (Exception e) {
|
|
e.getMessage();
|
|
}
|
|
}).start();
|
|
}
|
|
}
|
|
}
|
|
|
|
public String priceName(Integer num) {
|
|
|
|
switch (num) {
|
|
case 100:
|
|
return "100元以下";
|
|
case 200:
|
|
return "100-200元";
|
|
case 300:
|
|
return "200-300元";
|
|
case 400:
|
|
return "300-400元";
|
|
default:
|
|
return "400元以上";
|
|
}
|
|
}
|
|
|
|
@Override
|
|
@Transactional(
|
|
isolation = Isolation.SERIALIZABLE,
|
|
propagation = Propagation.REQUIRES_NEW)
|
|
public HighOrder insertThirdProduct(JSONObject object) throws Exception {
|
|
|
|
HighOrder highOrder = new HighOrder();
|
|
// highOrder.setMerchId(object.getString("mchId"));
|
|
highOrder.setWhetherRebate(false);
|
|
HighUser user = highUserService.findByUserId(object.getLong("userId"));
|
|
|
|
JSONObject jsonObject = null;
|
|
JSONObject requestContent = null;
|
|
|
|
// 积分抵扣金额
|
|
BigDecimal integralPrice = new BigDecimal(0);
|
|
// 优惠券抵扣金额
|
|
BigDecimal discountPrice = new BigDecimal(0);
|
|
// 实际支付金额
|
|
BigDecimal orderPayPrice = new BigDecimal(0);
|
|
// 市场金额
|
|
BigDecimal marketPrice = new BigDecimal(0);
|
|
|
|
// 查询详单订单的实际
|
|
JSONObject productDetail = thirdProductConfig.getThirdPartyByDetail(object.getInteger("platformId"), object.getInteger("productType"), object.getLong("companyId") , object.getLong("productId") , null , "");
|
|
|
|
|
|
highOrder.setProductType(object.getInteger("productType"));
|
|
|
|
JSONObject userToken = QianZhuConfig.getTokenV2(user.getId().toString(), user.getName(), user.getPhone());
|
|
|
|
if (!userToken.getBoolean("success")) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, jsonObject.getString("message"));
|
|
}
|
|
|
|
// 1 星巴克 2 肯德基 3 会员充值
|
|
if (object.getInteger("productType") == 1) {
|
|
|
|
List<String> List = new ArrayList<>();
|
|
|
|
JSONArray array = object.getJSONArray("orderItems");
|
|
|
|
for (Object o : array) {
|
|
JSONObject object1 = (JSONObject) o;
|
|
Map<String, Object> contentMap = new LinkedHashMap<>();
|
|
if (!object1.getString("productId").equals("")) {
|
|
contentMap.put("productId", object1.getString("productId"));
|
|
}
|
|
if (!object1.getString("cupSize").equals("")) {
|
|
contentMap.put("cupSize", object1.getString("cupSize"));
|
|
}
|
|
if (!object1.getString("temperature").equals("")) {
|
|
contentMap.put("temperature", object1.getString("temperature"));
|
|
}
|
|
if (!object1.getString("cream").equals("")) {
|
|
contentMap.put("cream", object1.getString("cream"));
|
|
}
|
|
if (!object1.getString("espresso").equals("")) {
|
|
contentMap.put("espresso", object1.getString("espresso"));
|
|
}
|
|
if (!object1.getString("milk").equals("")) {
|
|
contentMap.put("milk", object1.getString("milk"));
|
|
}
|
|
if (!object1.getString("milkBubble").equals("")) {
|
|
contentMap.put("milkBubble", object1.getString("milkBubble"));
|
|
}
|
|
if (!"".equals(object1.getString("num"))) {
|
|
contentMap.put("num", object1.getString("num"));
|
|
}
|
|
List.add(JSON.toJSONString(contentMap));
|
|
}
|
|
|
|
// 下单
|
|
jsonObject = QianZhuConfig.starbucksOrders(user.getId().toString(), object.getString("storeCode"), List.toString().replace(" ", ""), object.getString("customerMobile"));
|
|
|
|
// 判断下单是否成功
|
|
if (!Objects.equals(jsonObject.getString("code"), "200")) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, jsonObject.getString("message"));
|
|
}
|
|
|
|
if (!jsonObject.getBoolean("success")) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, jsonObject.getString("message"));
|
|
}
|
|
|
|
// 根据订单号查询订单详情
|
|
JSONObject orderObject = QianZhuConfig.starbucksOrderByOrderNo(jsonObject.getJSONObject("data").getString("orderNo"));
|
|
|
|
// 判断是否成功
|
|
if (!orderObject.getBoolean("success")) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, jsonObject.getString("message"));
|
|
}
|
|
|
|
// 插入订单内容
|
|
highOrder.setOrderNo(jsonObject.getJSONObject("data").getString("orderNo"));
|
|
// highOrder.setRegionId(object.getString("regionId"));
|
|
highOrder.setCompanyId(object.getLong("companyId"));
|
|
highOrder.setCreateTime(new Date());
|
|
highOrder.setMemId(user.getId());
|
|
highOrder.setMemName(user.getName());
|
|
highOrder.setMemPhone(user.getPhone());
|
|
highOrder.setOrderStatus(1);
|
|
highOrderMapper.insert(highOrder);
|
|
|
|
// 获取星巴克订单内容
|
|
JSONArray starbucksOrder = orderObject.getJSONObject("data").getJSONArray("orderItems");
|
|
|
|
for (Object starbucksObject : starbucksOrder) {
|
|
JSONObject childObject = (JSONObject) starbucksObject;
|
|
HighChildOrder childOrder = new HighChildOrder();
|
|
childOrder.setOrderId(highOrder.getId());
|
|
childOrder.setChildOrderStatus(1);
|
|
childOrder.setGoodsType(9);
|
|
childOrder.setStoreId(object.getLong("storeCode"));
|
|
childOrder.setGoodsId(object.getLong("productId"));
|
|
childOrder.setStoreAddress(childObject.getString("storeAddress"));
|
|
childOrder.setStoreName(childObject.getString("storeName"));
|
|
childOrder.setGoodsName(childObject.getString("productName"));
|
|
childOrder.setGoodsImg(childObject.getString("imgUrl"));
|
|
childOrder.setSaleCount(childObject.getInteger("quantity"));
|
|
childOrder.setGoodsPrice(childObject.getBigDecimal("marketPrice"));
|
|
|
|
// 计算利润
|
|
BigDecimal profitPrice = childObject.getBigDecimal("marketPrice").multiply(productDetail.getBigDecimal("priceDiscount").divide(new BigDecimal(100)));
|
|
// 计算子订单支付金额
|
|
BigDecimal childPrice = childObject.getBigDecimal("unitPrice").add(profitPrice).setScale(2 , RoundingMode.HALF_UP);
|
|
if (childPrice.compareTo(childObject.getBigDecimal("marketPrice")) > 0) {
|
|
childPrice = childObject.getBigDecimal("marketPrice");
|
|
}
|
|
if (object.getLong("memDiscountId") != null) {
|
|
childOrder.setGoodsActualPrice(childObject.getBigDecimal("marketPrice"));
|
|
} else {
|
|
childOrder.setGoodsActualPrice(childPrice);
|
|
}
|
|
childPrice = childPrice.multiply(childObject.getBigDecimal("quantity"));
|
|
// 计算总订单实际支付金额
|
|
orderPayPrice = orderPayPrice.add(childPrice);
|
|
// 计算市场价金额
|
|
marketPrice = marketPrice.add(childObject.getBigDecimal("marketPrice").multiply(childObject.getBigDecimal("quantity")));
|
|
childOrder.setTotalPrice(childPrice);
|
|
highChildOrderMapper.insert(childOrder);
|
|
}
|
|
|
|
|
|
} else if (object.getInteger("productType") == 2) {
|
|
if (object.getInteger("eatType") == null) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "请选择就餐方式!");
|
|
}
|
|
// 下单
|
|
jsonObject = QianZhuConfig.createKfcOrder(object.getInteger("eatType"), object.getString("storeCode"), object.getString("customerMobile"), object.getString("orderItems"), object.getString("userId"));
|
|
|
|
// 判断下单是否成功
|
|
if (!Objects.equals(jsonObject.getString("code"), "10000")) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, jsonObject.getString("message"));
|
|
}
|
|
|
|
// 根据订单号查询订单详情
|
|
JSONObject orderObject = QianZhuConfig.getKfcOrderByOrderNo(jsonObject.getJSONObject("data").getString("orderNo"));
|
|
// 判断下单是否成功
|
|
if (!orderObject.getBoolean("success")) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, jsonObject.getString("message"));
|
|
}
|
|
|
|
// 插入订单内容
|
|
highOrder.setOrderNo(jsonObject.getJSONObject("data").getString("orderNo"));
|
|
// highOrder.setRegionId(object.getString("regionId"));
|
|
highOrder.setCompanyId(object.getLong("companyId"));
|
|
highOrder.setCreateTime(new Date());
|
|
highOrder.setMemId(user.getId());
|
|
highOrder.setMemName(user.getName());
|
|
highOrder.setMemPhone(user.getPhone());
|
|
highOrder.setOrderStatus(1);
|
|
|
|
highOrderMapper.insert(highOrder);
|
|
|
|
// 获取肯德基订单内容
|
|
JSONArray kfcOrder = orderObject.getJSONObject("data").getJSONObject("kfcPlaceOrder").getJSONArray("items");
|
|
for (Object kfcObject : kfcOrder) {
|
|
JSONObject childObject = (JSONObject) kfcObject;
|
|
HighChildOrder childOrder = new HighChildOrder();
|
|
childOrder.setOrderId(highOrder.getId());
|
|
childOrder.setChildOrderStatus(1);
|
|
childOrder.setGoodsType(4);
|
|
childOrder.setGoodsId(object.getLong("productId"));
|
|
childOrder.setStoreAddress(orderObject.getJSONObject("data").getJSONObject("kfcPlaceOrder").getString("storeAddress"));
|
|
childOrder.setStoreName(orderObject.getJSONObject("data").getJSONObject("kfcPlaceOrder").getString("storeName"));
|
|
childOrder.setGoodsName(childObject.getString("productName"));
|
|
childOrder.setGoodsImg(childObject.getString("imageUrl"));
|
|
childOrder.setSaleCount(childObject.getInteger("quantity"));
|
|
childOrder.setGoodsPrice(childObject.getBigDecimal("originPrice"));
|
|
|
|
// 计算利润
|
|
BigDecimal profitPrice = childObject.getBigDecimal("originPrice").multiply(productDetail.getBigDecimal("priceDiscount").divide(new BigDecimal(100)));
|
|
// 计算子订单支付金额
|
|
BigDecimal childPrice = childObject.getBigDecimal("price").add(profitPrice).setScale(2 , RoundingMode.HALF_UP);
|
|
if (childPrice.compareTo(childObject.getBigDecimal("originPrice")) > 0) {
|
|
childPrice = childObject.getBigDecimal("originPrice");
|
|
}
|
|
|
|
if (object.getLong("memDiscountId") != null) {
|
|
childOrder.setGoodsActualPrice(childObject.getBigDecimal("originPrice"));
|
|
} else {
|
|
childOrder.setGoodsActualPrice(childPrice);
|
|
}
|
|
childPrice = childPrice.multiply(childObject.getBigDecimal("quantity"));
|
|
// 计算总订单实际支付金额
|
|
orderPayPrice = orderPayPrice.add(childPrice);
|
|
// 计算市场价金额
|
|
marketPrice = marketPrice.add(childObject.getBigDecimal("originPrice").multiply(childObject.getBigDecimal("quantity")));
|
|
childOrder.setTotalPrice(childPrice);
|
|
highChildOrderMapper.insert(childOrder);
|
|
|
|
}
|
|
} else if (object.getInteger("productType") == 3) {
|
|
ApiMemberProduct memberProduct = apiMemberProductService.findById(object.getLong("goodsId"));
|
|
|
|
if (memberProduct == null) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "当前产品不可购买");
|
|
}
|
|
object.put("productId", memberProduct.getProductId());
|
|
// 插入订单内容
|
|
highOrder.setOrderNo("HF" + DateUtil.date2String(new Date(),"yyyyMMddHHmmss") + IDGenerator.nextId(5));
|
|
// highOrder.setRegionId(object.getString("regionId"));
|
|
highOrder.setCompanyId(object.getLong("companyId"));
|
|
highOrder.setCreateTime(new Date());
|
|
highOrder.setMemId(user.getId());
|
|
highOrder.setMemName(user.getName());
|
|
highOrder.setMemPhone(user.getPhone());
|
|
highOrder.setOrderStatus(1);
|
|
|
|
// 计算实际支付金额
|
|
orderPayPrice = memberProduct.getCostPrice().add(memberProduct.getPrice().multiply(productDetail.getBigDecimal("priceDiscount").divide(new BigDecimal(100)))).setScale(2, RoundingMode.HALF_UP);
|
|
if (orderPayPrice.compareTo(memberProduct.getPrice()) > 0) {
|
|
orderPayPrice = memberProduct.getPrice();
|
|
}
|
|
// 计算市场价金额
|
|
marketPrice = memberProduct.getPrice();
|
|
|
|
highOrderMapper.insert(highOrder);
|
|
|
|
HighChildOrder childOrder = new HighChildOrder();
|
|
childOrder.setOrderId(highOrder.getId());
|
|
childOrder.setChildOrderStatus(1);
|
|
childOrder.setGoodsType(10);
|
|
childOrder.setStoreId(object.getLong("storeCode"));
|
|
childOrder.setGoodsId(memberProduct.getId());
|
|
childOrder.setGoodsName(memberProduct.getName());
|
|
childOrder.setSaleCount(1);
|
|
childOrder.setGoodsPrice(marketPrice);
|
|
if (object.getLong("memDiscountId") != null) {
|
|
childOrder.setGoodsActualPrice(marketPrice);
|
|
childOrder.setTotalPrice(marketPrice);
|
|
} else {
|
|
childOrder.setGoodsActualPrice(orderPayPrice);
|
|
childOrder.setTotalPrice(orderPayPrice);
|
|
}
|
|
|
|
highChildOrderMapper.insert(childOrder);
|
|
|
|
}
|
|
|
|
// 定义优惠券
|
|
HighDiscountUserRel highDiscountUserRel = null;
|
|
// 判断是否有优惠券
|
|
if (object.getLong("memDiscountId") != null) {
|
|
orderPayPrice = marketPrice;
|
|
// 优惠券信息
|
|
highDiscountUserRel = highDiscountUserRelService.getRelById(object.getLong("memDiscountId"));
|
|
highOrder.setMemDiscountId(object.getLong("memDiscountId"));
|
|
if (highDiscountUserRel == null || highDiscountUserRel.getStatus() != 1) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "优惠券状态错误");
|
|
}
|
|
if (!highDiscountUserRel.getHighDiscount().getUseScope().equals(DiscountUseScope.type4.getType())
|
|
&& !highDiscountUserRel.getHighDiscount().getUseScope().equals(DiscountUseScope.type5.getType())
|
|
&& !highDiscountUserRel.getHighDiscount().getUseScope().equals(DiscountUseScope.type6.getType())
|
|
) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "无法使用此优惠券");
|
|
}
|
|
}
|
|
|
|
// 优惠券抵扣
|
|
if (highDiscountUserRel != null) {
|
|
highOrder.setMemDiscountName(highDiscountUserRel.getHighDiscount().getDiscountName());
|
|
// 卡卷类型 1:满减 2:抵扣 3:折扣
|
|
if (highDiscountUserRel.getHighDiscount().getDiscountType() == 1) {
|
|
// 如果商品支付总额 小于 满减价格
|
|
if (orderPayPrice.compareTo(highDiscountUserRel.getHighDiscount().getDiscountCondition()) < 0) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.UN_MEMBER_ERROR, "订单未达到" + highDiscountUserRel.getHighDiscount().getDiscountCondition() + "元,无法使用此优惠券");
|
|
}
|
|
// 满减额度
|
|
discountPrice = highDiscountUserRel.getHighDiscount().getDiscountPrice();
|
|
}
|
|
|
|
// 卡卷类型 1:满减 2:抵扣 3:折扣
|
|
if (highDiscountUserRel.getHighDiscount().getDiscountType() == 2) {
|
|
// 满减额度
|
|
discountPrice = highDiscountUserRel.getHighDiscount().getDiscountPrice();
|
|
|
|
}
|
|
|
|
// 卡卷类型 1:满减 2:抵扣 3:折扣
|
|
if (highDiscountUserRel.getHighDiscount().getDiscountType() == 3) {
|
|
// 满减额度
|
|
discountPrice = orderPayPrice.subtract(orderPayPrice.multiply(highDiscountUserRel.getHighDiscount().getDiscountPrice())).setScale(2, RoundingMode.HALF_UP);
|
|
}
|
|
}
|
|
|
|
// 使用优惠券
|
|
if (highOrder.getMemDiscountId() != null) {
|
|
HighDiscountUserRel discountUserRel = highDiscountUserRelService.getRelById(highOrder.getMemDiscountId());
|
|
discountUserRel.setUseTime(new Date()); // 使用时间
|
|
discountUserRel.setStatus(2); //状态 0:已过期 1:未使用 2:已使用
|
|
highDiscountUserRelService.updateDiscountUserRel(discountUserRel);
|
|
|
|
HighDiscountAgentCode code = highDiscountAgentCodeService.getCodeById(discountUserRel.getDiscountAgentCodeId());
|
|
code.setStatus(3);
|
|
highDiscountAgentCodeService.updateCode(code);
|
|
}
|
|
|
|
// 使用积分
|
|
// 判断积分数量是否大于0
|
|
if (object.getLong("integralNum") != null) {
|
|
if (object.getLong("integralNum") > 0 && productDetail.getBigDecimal("integralDiscount").compareTo(new BigDecimal("0")) > 0) {
|
|
|
|
// 判断用户积分是否够
|
|
if (object.getLong("integralNum") > user.getGold()) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "用户积分不足");
|
|
}
|
|
|
|
// 积分抵扣金额
|
|
integralPrice = object.getBigDecimal("integralNum").divide(new BigDecimal(100).setScale(2, RoundingMode.HALF_UP));
|
|
// 最高可抵扣金额
|
|
BigDecimal maxIntegralDeductionPrice = orderPayPrice.multiply(productDetail.getBigDecimal("integralDiscount")).divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP);
|
|
// 判读积分是否大于限制额度
|
|
if (maxIntegralDeductionPrice.compareTo(integralPrice) < 0) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "订单最大抵扣积分金额:" + maxIntegralDeductionPrice);
|
|
}
|
|
|
|
// 判断积分抵扣比例是否为100% 并且积分数量是否可以抵扣最后的支付金额
|
|
if (productDetail.getBigDecimal("integralDiscount").compareTo(new BigDecimal(100)) == 0 && integralPrice.compareTo(orderPayPrice) == 0) {
|
|
// 查询用户支付密码
|
|
HighUserPayPassword userPayPassword = highUserPayPasswordService.getDetailByUser(object.getLong("userId"));
|
|
if (userPayPassword == null) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.NOT_SET_USER_PAY_PWD, "");
|
|
}
|
|
if (StringUtils.isBlank(object.getString("password"))) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.NOT_ENTER_USER_PAY_PWD, "");
|
|
}
|
|
// 校验支付密码
|
|
if (!AESEncodeUtil.aesEncrypt(object.getString("password")).equals(userPayPassword.getPassword())) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.USER_PAY_PWD_ERROR, "");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
highOrder.setTotalDeductionPrice(discountPrice);
|
|
highOrder.setPayGold(object.getInteger("integralNum"));
|
|
|
|
highOrder.setTotalPrice(orderPayPrice);
|
|
highOrder.setPayPrice(orderPayPrice.subtract(discountPrice));
|
|
|
|
if (integralPrice.compareTo(new BigDecimal(0)) > 0) {
|
|
highOrder.setPayPrice(highOrder.getPayPrice().subtract(integralPrice));
|
|
|
|
String remark = "订单" + highOrder.getOrderNo() + "下单,使用积分:" + object.getInteger("integralNum");
|
|
highUserService.goldHandle(highOrder.getMemId(), object.getInteger("integralNum"), 2, 2, highOrder.getId() , remark , highOrder.getOrderNo());
|
|
}
|
|
|
|
// 判断积分支付是否扣完金额
|
|
if (highOrder.getPayPrice().compareTo(new BigDecimal(0)) == 0) {
|
|
highOrder.setOrderStatus(2);
|
|
// highOrder.setPayModel(1);
|
|
highOrder.setPayType(3);
|
|
highOrder.setPayTime(new Date());
|
|
highOrder.setPaySerialNo("HF" + DateUtil.date2String(new Date(), "yyyyMMddHHmmss") + IDGenerator.nextId(5));
|
|
} else {
|
|
highOrder.setOrderStatus(1);
|
|
}
|
|
|
|
highOrder.setPayRealPrice(highOrder.getPayPrice());
|
|
highOrder.setRemarks(object.getString("customerMobile"));
|
|
|
|
highOrderMapper.updateByPrimaryKey(highOrder);
|
|
|
|
if (highOrder.getOrderStatus() == 2) {
|
|
HighOrder highOrderList = highOrderService.getOrderById(highOrder.getId());
|
|
for (HighChildOrder childOrder : highOrderList.getHighChildOrderList()) {
|
|
childOrder.setChildOrderStatus(2);
|
|
}
|
|
|
|
// 推送订单记录
|
|
HighGasOrderPush highGasOrderPush = new HighGasOrderPush();
|
|
|
|
// 1 星巴克 2 肯德基 3:第三方会员充值
|
|
if (object.getInteger("productType") == 1) {
|
|
highGasOrderPush.setType(OrderPushType.type8.getType());
|
|
requestContent = QianZhuConfig.starbucksOrdersPay(highOrder.getOrderNo());
|
|
} else if (object.getInteger("productType") == 2){
|
|
highGasOrderPush.setType(OrderPushType.type4.getType());
|
|
requestContent = QianZhuConfig.payKfcOrder(highOrder.getOrderNo());
|
|
} else if (object.getInteger("productType") == 3){
|
|
highGasOrderPush.setType(OrderPushType.type9.getType());
|
|
requestContent = QianZhuConfig.insertV2(object.getString("productId") , highOrder.getOrderNo() , object.getString("customerMobile"));
|
|
}
|
|
|
|
highGasOrderPush.setOrderNo(highOrder.getOrderNo());
|
|
highGasOrderPush.setCreateTime(new Date());
|
|
highGasOrderPush.setRequestContent(highOrder.getOrderNo());
|
|
highGasOrderPush.setReturnContent(requestContent.toJSONString());
|
|
highGasOrderPushMapper.insert(highGasOrderPush);
|
|
|
|
}
|
|
return highOrder;
|
|
}
|
|
|
|
@Override
|
|
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
|
public void hltUnionCardPayByThirdProduct(HighUserCard userCard, Long orderId) throws Exception {
|
|
String goodsDesc = "";
|
|
String tranDesc = "";
|
|
String instCode = "11101527";
|
|
String businessType = "hisen_consume";
|
|
|
|
// 查询订单信息
|
|
HighOrder order = getOrderById(orderId);
|
|
if (order == null) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.NOT_FOUND_ORDER, "");
|
|
}
|
|
|
|
if (order.getHighChildOrderList().get(0).getGoodsType() == 4) {
|
|
goodsDesc = "购买肯德基产品";
|
|
tranDesc = goodsDesc + order.getPayRealPrice() + "元";
|
|
} else if (order.getHighChildOrderList().get(0).getGoodsType() == 9) {
|
|
goodsDesc = "购买星巴克产品";
|
|
tranDesc = goodsDesc + order.getPayRealPrice() + "元";
|
|
} else if (order.getHighChildOrderList().get(0).getGoodsType() == 10) {
|
|
goodsDesc = "购买会员充值产品";
|
|
tranDesc = goodsDesc + order.getPayRealPrice() + "元";
|
|
} else {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "暂时无法支付,请使用其他支付方式");
|
|
}
|
|
|
|
// 工会卡支付
|
|
JSONObject consumption = HuiLianTongUnionCardConfig.consumption(order.getOrderNo(), userCard.getCardNo(), order.getPayRealPrice(), businessType, instCode, goodsDesc, tranDesc);
|
|
System.out.println("工会卡支付响应参数" + consumption.toJSONString());
|
|
|
|
Map<String, Object> dataMap = new HashMap<>();
|
|
dataMap.put("orderNo", order.getOrderNo());
|
|
dataMap.put("cardType", "ghk");
|
|
dataMap.put("cardNo", userCard.getCardNo());
|
|
dataMap.put("checkPassword", "N");
|
|
dataMap.put("tranAmount", order.getPayRealPrice());
|
|
dataMap.put("tranChannel", "HiSen");
|
|
dataMap.put("businessType", businessType);
|
|
dataMap.put("instCode", instCode);
|
|
dataMap.put("goodsDesc", goodsDesc);
|
|
dataMap.put("tranDesc", tranDesc);
|
|
HighGasOrderPush payPush = new HighGasOrderPush();
|
|
payPush.setType(OrderPushType.type5.getType());
|
|
payPush.setOrderNo(order.getOrderNo());
|
|
payPush.setCreateTime(new Date());
|
|
payPush.setCode(consumption.getString("respCode"));
|
|
payPush.setRequestContent(JSON.toJSONString(dataMap));
|
|
payPush.setReturnContent(consumption.toJSONString());
|
|
highGasOrderPushMapper.insert(payPush);
|
|
|
|
if (!consumption.getString("respCode").equals("0000")) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, consumption.getString("respMessage"));
|
|
}
|
|
JSONObject consumptionResult = HuiLianTongUnionCardConfig.resolveResponse(consumption.getString("data"));
|
|
if (!consumptionResult.getBoolean("success")) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, consumptionResult.getString("message"));
|
|
}
|
|
order.setPaySerialNo(consumptionResult.getString("orderId")); // 支付流水号
|
|
order.setOrderStatus(2);
|
|
order.setMemCardNo(userCard.getCardNo());
|
|
order.setPayType(4);
|
|
|
|
order.setPayTime(new Date()); // 支付时间
|
|
updateOrder(order);
|
|
|
|
HighGasOrderPush orderPush = new HighGasOrderPush();
|
|
JSONObject returnObject;
|
|
|
|
for (HighChildOrder childOrder : order.getHighChildOrderList()) {
|
|
childOrder.setChildOrderStatus(2);
|
|
}
|
|
if (order.getHighChildOrderList().get(0).getGoodsType() == 4) {
|
|
orderPush.setType(OrderPushType.type4.getType());
|
|
returnObject = QianZhuConfig.payKfcOrder(order.getOrderNo());
|
|
} else if (order.getHighChildOrderList().get(0).getGoodsType() == 9) {
|
|
orderPush.setType(OrderPushType.type8.getType());
|
|
returnObject = QianZhuConfig.starbucksOrdersPay(order.getOrderNo());
|
|
} else if (order.getHighChildOrderList().get(0).getGoodsType() == 10){
|
|
orderPush.setType(OrderPushType.type9.getType());
|
|
ApiMemberProduct memberProduct = apiMemberProductService.findById(order.getHighChildOrderList().get(0).getGoodsId());
|
|
returnObject = QianZhuConfig.insertV2(memberProduct.getProductId() , order.getOrderNo() , order.getRemarks());
|
|
} else {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "暂时无法支付,请使用其他支付方式");
|
|
}
|
|
|
|
orderPush.setOrderNo(order.getOrderNo());
|
|
orderPush.setCreateTime(new Date());
|
|
orderPush.setRequestContent(JSON.toJSONString(dataMap));
|
|
orderPush.setReturnContent(returnObject.toJSONString());
|
|
highGasOrderPushMapper.insert(orderPush);
|
|
|
|
}
|
|
|
|
@Override
|
|
public List<HighOrder> getThirdOrder() {
|
|
return highOrderMapper.getThirdOrder();
|
|
}
|
|
|
|
|
|
@Override
|
|
public void thirdOrderToRefund(Long orderId) throws Exception {
|
|
|
|
HighOrder order = highOrderService.getOrderById(orderId);
|
|
|
|
|
|
// 101.待支付 102.已支付 100.已完成 104.已取消 105.已退款
|
|
if (order.getOrderStatus() != 2) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "无法退款,订单不处于已支付状态");
|
|
}
|
|
|
|
|
|
|
|
// 微信退款
|
|
if (order.getPayType() == 2) {
|
|
Map<String, String> param = new HashMap<>();
|
|
param.put("appid", "wx637bd6f7314daa46");
|
|
param.put("mch_id", "1289663601");
|
|
param.put("sub_mch_id", "1614670195");
|
|
param.put("nonce_str", WxUtils.makeNonStr());
|
|
param.put("transaction_id", order.getPaySerialNo());
|
|
param.put("out_refund_no", "HFR" + new Date().getTime());
|
|
param.put("total_fee", String.valueOf(order.getPayRealPrice().multiply(new BigDecimal("100")).intValue()));
|
|
param.put("refund_fee", String.valueOf(order.getPayRealPrice().multiply(new BigDecimal("100")).intValue()));
|
|
param.put("sign_type", "HMAC-SHA256");
|
|
|
|
String signStr = WxUtils.generateSignature(param, "Skufk5oi85wDFGl888i6wsRSTkdd5df5", WXPayConstants.SignType.HMACSHA256);
|
|
param.put("sign", signStr);
|
|
|
|
String resultXmL = doRefundRequest(param.get("mch_id"), WxUtils.mapToXml(param));
|
|
OrderRefundModel orderRefundModel = XmlUtil.getObjectFromXML(resultXmL, OrderRefundModel.class);
|
|
if (orderRefundModel.getResult_code().equals("SUCCESS")) {
|
|
//order.setRefundTime(new Date());
|
|
// order.setRefundNo(orderRefundModel.getOut_refund_no());
|
|
// order.setRefundPrice(new BigDecimal(orderRefundModel.getRefund_fee()).divide(new BigDecimal("100")));
|
|
order.setOrderStatus(4);
|
|
//order.setRefundTime(new Date());
|
|
for (HighChildOrder childOrder : order.getHighChildOrderList()) {
|
|
childOrder.setChildOrderStatus(4);
|
|
}
|
|
updateOrder(order);
|
|
} else {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "退款失败!错误代码:" + orderRefundModel.getErr_code() + ",错误描述" + orderRefundModel.getErr_code_des());
|
|
}
|
|
}
|
|
|
|
// 工会卡退款
|
|
if (order.getPayType() == 4) {
|
|
JSONObject jsonObject = HuiLianTongUnionCardConfig.refund("HFR" + new Date().getTime(), order.getOrderNo());
|
|
|
|
if (jsonObject == null) {
|
|
jsonObject = HuiLianTongUnionCardConfig.refund("HFR" + new Date().getTime(), order.getOrderNo());
|
|
}
|
|
|
|
JSONObject dataObject = HuiLianTongUnionCardConfig.resolveResponse(jsonObject.getString("data"));
|
|
|
|
if (dataObject.getBoolean("success") || Objects.equals(dataObject.getString("message"), "原交易已撤销,不可再次操作")) {
|
|
// order.setRefundTime(new Date());
|
|
// order.setRefundNo("HFR" + new Date().getTime());
|
|
// order.setRefundPrice(order.getPayRealPrice());
|
|
order.setOrderStatus(4);
|
|
// order.setRefundTime(new Date());
|
|
for (HighChildOrder childOrder : order.getHighChildOrderList()) {
|
|
childOrder.setChildOrderStatus(4);
|
|
}
|
|
updateOrder(order);
|
|
|
|
} else {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, dataObject.getString("message"));
|
|
}
|
|
|
|
// 商户预充值 帐户退款
|
|
if (order.getPayType() == 7) {
|
|
|
|
Map<String , Object> map = new HashMap<>();
|
|
map.put("orderNo" , order.getOrderNo());
|
|
map.put("amountType" , 1);
|
|
map.put("sourceType" , 2);
|
|
|
|
/* if ( apiAmountRecordService.getApiAmountRecordByList(map).size() == 1) {
|
|
|
|
ApiMerchants apiMerchants = apiMerchantsService.findByMchId(order.getMerchId());
|
|
// 插入金额记录
|
|
// 变更前金额
|
|
BigDecimal beforeAmount = apiMerchants.getAmounts();
|
|
// 计算金额
|
|
apiMerchants.setAmounts(apiMerchants.getAmounts().add(order.getPayPrice()));
|
|
// 变更后金额
|
|
BigDecimal afterAmount = apiMerchants.getAmounts();
|
|
|
|
apiMerchantsService.updateApiMerchants(apiMerchants);
|
|
|
|
ApiAmountRecord apiAmountRecord = new ApiAmountRecord();
|
|
|
|
apiAmountRecord.setCreateTime(new Date());
|
|
apiAmountRecord.setUpdateTime(new Date());
|
|
apiAmountRecord.setMchId(order.getMerchId());
|
|
|
|
apiAmountRecord.setStatus(100);
|
|
apiAmountRecord.setAmount(order.getPayPrice());
|
|
apiAmountRecord.setAfterAmount(afterAmount);
|
|
apiAmountRecord.setBeforeAmount(beforeAmount);
|
|
apiAmountRecord.setAmountType(1);
|
|
apiAmountRecord.setSourceType(2);
|
|
apiAmountRecord.setSourceOrderNo(order.getOrderNo());
|
|
apiAmountRecord.setSourceId(order.getId());
|
|
apiAmountRecord.setSourceContent(apiMerchants.getMerchantName() + "|订单退款" + order.getPayPrice());
|
|
|
|
apiAmountRecordService.insertAmountRecord(apiAmountRecord);
|
|
|
|
Map<String, Object> orderMap = new HashMap<>();
|
|
orderMap.put("orderId" , order.getId());
|
|
|
|
// 查询是否用重复订单
|
|
ApiOrderRecord apiOrderRecord = apiOrderRecordService.queryOrderResult(orderMap);
|
|
|
|
apiOrderRecord.setStatus(100);
|
|
apiOrderRecord.setRequestTime(new Date());
|
|
apiOrderRecordService.updateOrderRecord(apiOrderRecord);
|
|
}*/
|
|
|
|
}
|
|
}
|
|
|
|
// 银联退款
|
|
if (order.getPayType() == 5) {
|
|
// 订单退款
|
|
JSONObject refund = UnionPayConfig.zwrefund(UnionPayConfig.MER_ID2, UnionPayConfig.TERM_ID2, order.getOrderNo(), order.getPaySerialNo(), order.getPayRealPrice().multiply(new BigDecimal("100")).longValue());
|
|
if (!refund.getString("resultcode").equals("W6")) {
|
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, refund.getString("returnmsg"));
|
|
}
|
|
//order.setRefundTime(new Date());
|
|
//order.setRefundNo(refund.getString("oriwtorderid"));
|
|
//order.setRefundPrice(order.getPayRealPrice());
|
|
order.setOrderStatus(4);
|
|
// order.setRefundTime(new Date());
|
|
for (HighChildOrder childOrder : order.getHighChildOrderList()) {
|
|
childOrder.setChildOrderStatus(4);
|
|
}
|
|
updateOrder(order);
|
|
}
|
|
// 退还积分
|
|
if (order.getPayGold() != null) {
|
|
String remark = "订单" + order.getOrderNo() + "退款,退还积分:" + order.getPayGold();
|
|
highUserService.goldHandle(order.getMemId(), order.getPayGold(), 1, 3, order.getId() , remark , order.getOrderNo());
|
|
if (order.getPayRealPrice().compareTo(new BigDecimal(0)) == 0) {
|
|
order.setOrderStatus(4);
|
|
//order.setRefundTime(new Date());
|
|
for (HighChildOrder childOrder : order.getHighChildOrderList()) {
|
|
childOrder.setChildOrderStatus(4);
|
|
}
|
|
updateOrder(order);
|
|
}
|
|
}
|
|
|
|
if (order.getMemDiscountId() != null) {
|
|
HighDiscountUserRel rel = highDiscountUserRelService.getRelById(order.getMemDiscountId());
|
|
if (rel != null) {
|
|
rel.setStatus(1); // 状态 0:已过期 1:未使用 2:已使用
|
|
rel.setUseTime(null);
|
|
highDiscountUserRelService.updateDiscountUserRel(rel);
|
|
|
|
HighDiscountAgentCode code = highDiscountAgentCodeService.getCodeById(rel.getDiscountAgentCodeId());
|
|
code.setStatus(2);
|
|
highDiscountAgentCodeService.updateCode(code);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
public String doRefundRequest(String mchId, String data) throws Exception {
|
|
|
|
//小程序退款需要调用双向证书的认证
|
|
CloseableHttpClient httpClient = goodsOrderService.readCertificate(mchId);
|
|
try {
|
|
HttpPost httpost = new HttpPost("https://api.mch.weixin.qq.com/secapi/pay/refund"); // 设置响应头信息
|
|
httpost.addHeader("Connection", "keep-alive");
|
|
httpost.addHeader("Accept", "*/*");
|
|
httpost.addHeader("Content-Type", "text/xml");
|
|
httpost.addHeader("Host", "api.mch.weixin.qq.com");
|
|
httpost.addHeader("X-Requested-With", "XMLHttpRequest");
|
|
httpost.addHeader("Cache-Control", "max-age=0");
|
|
httpost.addHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0) ");
|
|
httpost.setEntity(new StringEntity(data, "UTF-8"));
|
|
CloseableHttpResponse response = httpClient.execute(httpost);
|
|
try {
|
|
HttpEntity entity = response.getEntity();
|
|
String jsonStr = EntityUtils.toString(response.getEntity(), "UTF-8");
|
|
EntityUtils.consume(entity);
|
|
return jsonStr;
|
|
} finally {
|
|
response.close();
|
|
}
|
|
} catch (Exception e) {
|
|
throw new RuntimeException(e);
|
|
} finally {
|
|
httpClient.close();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
|
public void thirdCancelOrder(Long orderId) {
|
|
HighOrder order = getOrderById(orderId);
|
|
if (order != null && order.getOrderStatus() == 1) {
|
|
order.setOrderStatus(5);
|
|
order.setCancelTime(new Date());
|
|
|
|
for (HighChildOrder childOrder : order.getHighChildOrderList()) {
|
|
childOrder.setChildOrderStatus(5);
|
|
}
|
|
|
|
if (order.getMemDiscountId() != null) {
|
|
HighDiscountUserRel rel = highDiscountUserRelService.getRelById(order.getMemDiscountId());
|
|
if (rel != null) {
|
|
rel.setStatus(1); // 状态 0:已过期 1:未使用 2:已使用
|
|
rel.setUseTime(null);
|
|
highDiscountUserRelService.updateDiscountUserRel(rel);
|
|
|
|
HighDiscountAgentCode code = highDiscountAgentCodeService.getCodeById(rel.getDiscountAgentCodeId());
|
|
code.setStatus(2);
|
|
highDiscountAgentCodeService.updateCode(code);
|
|
}
|
|
}
|
|
|
|
if (order.getPayGold() != null) {
|
|
// 积分返回
|
|
String remark = "订单" + order.getOrderNo() + "取消,退还积分:" + order.getPayGold();
|
|
highUserService.goldHandle(order.getMemId(), order.getPayGold(), 1, 3, order.getId() , remark , order.getOrderNo());
|
|
}
|
|
|
|
updateOrder(order);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public Long whetherCheck(Long memId, Integer status) {
|
|
|
|
HighOrderExample example = new HighOrderExample();
|
|
HighOrderExample.Criteria criteria = example.createCriteria();
|
|
|
|
criteria.andMemIdEqualTo(memId).andOrderStatusEqualTo(status).andWhetherCheckEqualTo(false);
|
|
|
|
return highOrderMapper.countByExample(example);
|
|
}
|
|
|
|
@Override
|
|
public void orderCheck(Long orderId) {
|
|
HighOrder highOrder = highOrderMapper.selectByPrimaryKey(orderId);
|
|
|
|
highOrder.setWhetherCheck(true);
|
|
|
|
if (highOrder.getOrderStatus() == 3) {
|
|
highOrderMapper.updateByPrimaryKey(highOrder);
|
|
}
|
|
|
|
}
|
|
|
|
@Override
|
|
public List<SelfOilStationModel> getSelfOilStationOrderList(String goodsId) {
|
|
return highOrderMapper.getSelfOilStationOrderList(goodsId);
|
|
}
|
|
|
|
@Override
|
|
public List<HighOrder> integralRebateOrder() {
|
|
return highOrderMapper.integralRebateOrder();
|
|
}
|
|
|
|
// todo 废弃代码
|
|
@Override
|
|
public JSONObject orderSource(Integer goodsType, Long goodsId , String orderNo , Long companyId , Integer productId) {
|
|
|
|
JSONObject object = new JSONObject();
|
|
|
|
if (goodsType == 1) {
|
|
HighCoupon coupon = highCouponService.getCouponById(goodsId);
|
|
|
|
object.put("type" , 1);
|
|
object.put("productId", 1);
|
|
object.put("companyId", coupon.getCompanyId());
|
|
object.put("remark" , "卡券订单:"+ coupon.getCouponName() + "-" + orderNo + "积分返利:");
|
|
object.put("name" , "购买卡券产品:"+ coupon.getCouponName());
|
|
|
|
}
|
|
if (goodsType == 3) {
|
|
HighMerchantStore merchantStore = highMerchantStoreService.getMerchantStoreById(goodsId);
|
|
object.put("type" , 2);
|
|
object.put("productId", 1);
|
|
object.put("companyId", merchantStore.getCompanyId());
|
|
object.put("remark" , "在线加油订单" + orderNo + "积分返利:");
|
|
object.put("name" , "购买在线加油产品");
|
|
}
|
|
|
|
if (goodsType == 4) {
|
|
object.put("type" , 4);
|
|
object.put("productId", 2);
|
|
object.put("companyId", companyId);
|
|
object.put("remark" , "肯德基订单" + orderNo + "积分返利:");
|
|
object.put("name" , "购买肯德基产品");
|
|
}
|
|
if (goodsType == 9) {
|
|
object.put("type" , 4);
|
|
object.put("productId", 1);
|
|
object.put("companyId", companyId);
|
|
object.put("remark" , "星巴克订单" + orderNo + "积分返利:");
|
|
object.put("name" , "购买星巴克产品");
|
|
}
|
|
if (goodsType == 10) {
|
|
object.put("type" , 4);
|
|
object.put("productId", 3);
|
|
object.put("companyId", companyId);
|
|
object.put("remark" , "会员充值订单" + orderNo + "积分返利:");
|
|
object.put("name" , "购买会员充值产品");
|
|
}
|
|
if (goodsType == 20) {
|
|
object.put("type" , 3);
|
|
object.put("productId", productId);
|
|
object.put("companyId", companyId);
|
|
object.put("remark" , "话费充值订单" + orderNo + "积分返利:");
|
|
object.put("name" , "购买话费充值产品");
|
|
}
|
|
|
|
// object.put("logoImg" , OrderLogoEnum.getNameByImgUrl(goodsType));
|
|
return object;
|
|
}
|
|
|
|
@Override
|
|
public List<HighOrder> promoteOrderList(String identificationCode) throws Exception {
|
|
|
|
HighOrderExample example = new HighOrderExample();
|
|
HighOrderExample.Criteria criteria = example.createCriteria();
|
|
|
|
criteria.andPromoteCodeEqualTo(identificationCode).andOrderStatusEqualTo(3);
|
|
|
|
List<HighOrder> list = highOrderMapper.selectByExample(example);
|
|
|
|
for (HighOrder order : list) {
|
|
order.setTime(DateUtil.date2String(order.getCreateTime() , "MM月dd日 HH:mm"));
|
|
order.setGoodsTypeName("下单:" + OrderProductType.getDataByType(order.getProductType()).getName());
|
|
}
|
|
|
|
return list;
|
|
}
|
|
|
|
@Override
|
|
public List<HighOrder> orderListByAgentId(Map<String, Object> map) throws Exception {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public void phoneBillOrderMigration(HighOrder highOrder) {
|
|
highOrderMapper.insert(highOrder);
|
|
HighChildOrder highChildOrder = new HighChildOrder();
|
|
|
|
highChildOrder.setOrderNo(highOrder.getOrderNo());
|
|
highChildOrder.setChildOrderNo(OrderUtil.generateChildOrderNo());
|
|
highChildOrder.setChildOrderStatus(highOrder.getOrderStatus());
|
|
highChildOrder.setTotalPrice(highOrder.getTotalPrice());
|
|
highChildOrder.setGoodsPrice(highOrder.getTotalPrice());
|
|
highChildOrder.setGoodsActualPrice(highOrder.getPayPrice());
|
|
highChildOrder.setGoodsName(highOrder.getTitle());
|
|
highChildOrder.setGoodsType(6);
|
|
highChildOrder.setSaleCount(1);
|
|
highChildOrder.setGiveawayType(false);
|
|
highChildOrder.setMemId(highOrder.getMemId());
|
|
highChildOrder.setTotalDeductionPrice(highOrder.getTotalDeductionPrice());
|
|
highChildOrder.setGoodsSpecName("话费充值");
|
|
highChildOrder.setCreateTime(highOrder.getCreateTime());
|
|
highChildOrder.setOrderId(highOrder.getId());
|
|
highChildOrder.setCancelTime(highOrder.getCancelTime());
|
|
highChildOrder.setFinishTime(highOrder.getFinishTime());
|
|
highChildOrder.setRefundTime(highOrder.getRefundTime());
|
|
highChildOrder.setPayTime(highOrder.getPayTime());
|
|
highChildOrderMapper.insert(highChildOrder);
|
|
|
|
}
|
|
}
|
|
|