| | |
| | | import cc.mrbird.febs.mall.entity.*; |
| | | import cc.mrbird.febs.mall.mapper.*; |
| | | import cc.mrbird.febs.mall.service.*; |
| | | import cc.mrbird.febs.mall.vo.ApiShopApplyVo; |
| | | import cc.mrbird.febs.mall.vo.OrderDetailVo; |
| | | import cc.mrbird.febs.mall.vo.OrderListVo; |
| | | import cc.mrbird.febs.mall.vo.OrderRefundVo; |
| | | import cc.mrbird.febs.pay.model.AgreementPayDto; |
| | | import cc.mrbird.febs.pay.model.AgreementSignDto; |
| | | import cc.mrbird.febs.pay.model.UnipayDto; |
| | | import cc.mrbird.febs.pay.service.AliIPayService; |
| | | import cc.mrbird.febs.pay.service.IPayService; |
| | | import cc.mrbird.febs.pay.service.UnipayService; |
| | | import cc.mrbird.febs.rabbit.producter.AgentProducer; |
| | |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | |
| | | private final RedisUtils redisUtils; |
| | | |
| | | private final AgentProducer agentProducer; |
| | | private final IPayService payService; |
| | | private final AliIPayService payService; |
| | | private final IMallAchieveService mallAchieveService; |
| | | private final MallAchieveRecordMapper mallAchieveRecordMapper; |
| | | private final UnipayService unipayService; |
| | | |
| | | private final MallMemberBankSignMapper mallMemberBankSignMapper; |
| | | private final MallMemberBankMapper mallMemberBankMapper; |
| | | private final MallShopApplyMapper mallShopApplyMapper; |
| | | private final IPayService wechatPayService; |
| | | private final ICommonService commonService; |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | |
| | | |
| | | if (CollUtil.isEmpty(addOrderDto.getItems())) { |
| | | throw new FebsException("参数错误"); |
| | | } |
| | | |
| | | int deliverType = ObjectUtil.isEmpty(addOrderDto.getDeliverType()) ? 1 : addOrderDto.getDeliverType(); |
| | | if(2 == deliverType){ |
| | | if(ObjectUtil.isEmpty(addOrderDto.getShopId())){ |
| | | throw new FebsException("请选择门店"); |
| | | } |
| | | Long shopId = addOrderDto.getShopId(); |
| | | MallShopApply mallShopApply = mallShopApplyMapper.selectById(shopId); |
| | | if(ObjectUtil.isEmpty(mallShopApply)){ |
| | | throw new FebsException("请选择门店"); |
| | | } |
| | | if(MallShopApply.APPLY_AGREE != mallShopApply.getStatus()){ |
| | | throw new FebsException("请选择门店"); |
| | | } |
| | | orderInfo.setShopId(shopId); |
| | | } |
| | | |
| | | this.baseMapper.insert(orderInfo); |
| | |
| | | } |
| | | |
| | | orderInfo.setAmount(total); |
| | | orderInfo.setCarriage(carriage); |
| | | if(2 == deliverType){ |
| | | orderInfo.setDeliverType(2); |
| | | orderInfo.setCarriage(BigDecimal.ZERO); |
| | | }else{ |
| | | orderInfo.setDeliverType(1); |
| | | orderInfo.setCarriage(carriage); |
| | | } |
| | | this.baseMapper.updateById(orderInfo); |
| | | |
| | | agentProducer.sendOrderCancelDelayMsg(orderInfo.getId(), 15 * 60 * 1000L); |
| | | return orderInfo.getId(); |
| | | } |
| | | |
| | |
| | | String rcResult = ""; |
| | | switch (payOrderDto.getType()) { |
| | | case "1": |
| | | // orderInfo.setPayOrderNo(payOrderDto.getPayOrderNo()); |
| | | // orderInfo.setPayImage(payOrderDto.getPayImage()); |
| | | List<MallOrderItem> itemsWx = orderInfo.getItems(); |
| | | if(CollUtil.isEmpty(itemsWx)){ |
| | | orderInfo.setName("商品"); |
| | | }else{ |
| | | orderInfo.setName(itemsWx.get(0).getGoodsName()); |
| | | } |
| | | |
| | | payResultStr = wechatPayService.pay(orderInfo); |
| | | orderInfo.setPayOrderNo(payResultStr); |
| | | orderInfo.setPayMethod("微信支付"); |
| | | agentProducer.sendOrderReturn(orderInfo.getId()); |
| | | orderInfo.setPayResult("2"); |
| | | break; |
| | | // case "1": |
| | | // UnipayDto unipayDtoWx = new UnipayDto(); |
| | | //// unipayDto.setAmount(new BigDecimal("0.01")); |
| | | // unipayDtoWx.setAmount(orderInfo.getAmount()); |
| | | // unipayDtoWx.setFrpCode("WEIXIN_APP3"); |
| | | // unipayDtoWx.setTradeMerchantNo("777180800385820"); |
| | | // unipayDtoWx.setOrderNo(orderInfo.getOrderNo()); |
| | | // List<MallOrderItem> itemsWx = orderInfo.getItems(); |
| | | // if(CollUtil.isEmpty(itemsWx)){ |
| | | // unipayDtoWx.setProductName("商品"); |
| | | // }else{ |
| | | // unipayDtoWx.setProductName(itemsWx.get(0).getGoodsName()); |
| | | // } |
| | | // String unipayStrWx = unipayService.unipay(unipayDtoWx); |
| | | // if("fail" == unipayStrWx){ |
| | | // throw new FebsException("支付失败"); |
| | | // }else{ |
| | | //// JSONUtil.parseObj(unipayStr); |
| | | // JSONObject jsonObject = JSONUtil.parseObj(unipayStrWx); |
| | | // payResultStr = (String) jsonObject.get("r7_TrxNo"); |
| | | // rcResult = (String) jsonObject.get("rc_Result"); |
| | | // } |
| | | // orderInfo.setPayOrderNo(payResultStr); |
| | | //// orderInfo.setPayOrderNo(payOrderDto.getPayOrderNo()); |
| | | //// orderInfo.setPayImage(payOrderDto.getPayImage()); |
| | | // orderInfo.setPayMethod("微信支付"); |
| | | // break; |
| | | case "2": |
| | | // if (StrUtil.isNotBlank(orderInfo.getPayOrderNo())) { |
| | | // payResultStr = orderInfo.getPayOrderNo(); |
| | |
| | | // unipayDto.setAmount(new BigDecimal("0.01")); |
| | | unipayDto.setAmount(orderInfo.getAmount()); |
| | | unipayDto.setFrpCode("ALIPAY_H5"); |
| | | unipayDto.setTradeMerchantNo("777180800385820"); |
| | | unipayDto.setTradeMerchantNo("777184100385821"); |
| | | unipayDto.setOrderNo(orderInfo.getOrderNo()); |
| | | List<MallOrderItem> items = orderInfo.getItems(); |
| | | if(CollUtil.isEmpty(items)){ |
| | |
| | | orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue()); |
| | | orderInfo.setPayTime(new Date()); |
| | | orderInfo.setPayResult("1"); |
| | | this.baseMapper.updateById(orderInfo); |
| | | //新增业绩,第一次购买套餐则升级用户为普通会员 |
| | | |
| | | boolean hasTc = false; |
| | | // 静态倍数 |
| | | List<MallOrderItem> orderItems = this.baseMapper.getMallOrderItemByOrderId(orderInfo.getId()); |
| | | if (CollUtil.isNotEmpty(orderItems)) { |
| | | for (MallOrderItem orderItem : orderItems) { |
| | | MallGoods mallGoods = mallGoodsMapper.selectById(orderItem.getGoodsId()); |
| | | BigDecimal score = BigDecimal.ZERO; |
| | | MallGoodsSku sku = mallGoodsSkuMapper.selectById(orderItem.getSkuId()); |
| | | if (mallGoods.getIsNormal() == 2) { |
| | | hasTc = true; |
| | | score = sku.getPresentPrice().multiply(mallGoods.getStaticMulti()).multiply(new BigDecimal(orderItem.getCnt())); |
| | | // BigDecimal staticMulti = mallGoods.getStaticMulti() == null ? BigDecimal.ZERO : mallGoods.getStaticMulti(); |
| | | // score = sku.getPresentPrice().multiply(staticMulti); |
| | | // 普通商品也及时结算,不再10天结算 |
| | | } else { |
| | | score = sku.getPresentPrice(); |
| | | } |
| | | |
| | | if (score.compareTo(BigDecimal.ZERO) > 0) { |
| | | memberWalletService.add(score, member.getId(), "score"); |
| | | mallMoneyFlowService.addMoneyFlow(member.getId(), score, MoneyFlowTypeEnum.STATIC_BONUS.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.SCORE.getValue()); |
| | | |
| | | // 添加业绩 |
| | | mallAchieveService.add(orderItem.getId()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 购买套餐后,升级为普通会员 |
| | | if (hasTc) { |
| | | MallMember mallMember = memberMapper.selectById(member.getId()); |
| | | if (AgentLevelEnum.ZERO_LEVEL.name().equals(mallMember.getLevel())) { |
| | | mallMember.setLevel(AgentLevelEnum.FIRST_LEVEL.name()); |
| | | memberMapper.updateById(mallMember); |
| | | } |
| | | } |
| | | |
| | | commonService.addAchieveAndUpdateLevel(orderInfo.getId(),orderInfo.getMemberId()); |
| | | mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue()); |
| | | agentProducer.sendAutoLevelUpMsg(member.getId()); |
| | | agentProducer.sendOrderReturn(orderInfo.getId()); |
| | | break; |
| | | case "4": |
| | | if (orderInfo.getOrderType() != 2) { |
| | | throw new FebsException("非积分订单,无法使用积分支付"); |
| | | } |
| | | payResultStr = balancePay(orderInfo, payOrderDto.getTradePwd(), "prizeScore"); |
| | | payResultStr = balancePay(orderInfo, payOrderDto.getTradePwd(), "score"); |
| | | |
| | | orderInfo.setPayOrderNo(orderInfo.getOrderNo()); |
| | | orderInfo.setPayMethod("积分支付"); |
| | |
| | | orderInfo.setPayTime(new Date()); |
| | | orderInfo.setPayResult("1"); |
| | | |
| | | mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.PRIZE_SCORE.getValue()); |
| | | mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.SCORE.getValue()); |
| | | break; |
| | | case "5": |
| | | // AgreementSignDto agreementSignDto = new AgreementSignDto(); |
| | |
| | | return map; |
| | | } |
| | | |
| | | /** |
| | | * 新增业绩,第一次购买套餐则升级用户为普通会员 |
| | | * @param orderId |
| | | * @param memberId |
| | | */ |
| | | private void addAchieveAndUpdateLevel(Long orderId,Long memberId){ |
| | | MallOrderInfo orderInfo = this.baseMapper.selectById(orderId); |
| | | MallMember member = memberMapper.selectById(memberId); |
| | | |
| | | boolean hasTc = false; |
| | | BigDecimal achieveAmount = BigDecimal.ZERO; |
| | | List<MallOrderItem> orderItems = this.baseMapper.getMallOrderItemByOrderId(orderId); |
| | | if (CollUtil.isNotEmpty(orderItems)) { |
| | | for (MallOrderItem orderItem : orderItems) { |
| | | MallGoods mallGoods = mallGoodsMapper.selectById(orderItem.getGoodsId()); |
| | | MallGoodsSku sku = mallGoodsSkuMapper.selectById(orderItem.getSkuId()); |
| | | if (mallGoods.getIsNormal() == 2) { |
| | | hasTc = true; |
| | | achieveAmount = achieveAmount.add(sku.getPresentPrice().multiply(new BigDecimal(orderItem.getCnt()))); |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (hasTc){ |
| | | if(achieveAmount.compareTo(BigDecimal.ZERO) > 0) { |
| | | // 添加业绩 |
| | | MallAchieveRecord mallAchieveRecord = new MallAchieveRecord(); |
| | | mallAchieveRecord.setMemberId(memberId); |
| | | mallAchieveRecord.setAmount(achieveAmount); |
| | | mallAchieveRecord.setAchieveTime(orderInfo.getPayTime()); |
| | | mallAchieveRecord.setOrderId(orderInfo.getId()); |
| | | mallAchieveRecord.setIsNormal(2); |
| | | mallAchieveRecord.setPayTime(orderInfo.getPayTime()); |
| | | mallAchieveRecordMapper.insert(mallAchieveRecord); |
| | | //得到三倍补助 |
| | | // BigDecimal multiply = achieveAmount.multiply(new BigDecimal(3)); |
| | | // memberWalletService.add(multiply, memberId, "commission"); |
| | | |
| | | } |
| | | if(member.getLevel().equals(MemberLevelEnum.FANS.getType())){ |
| | | member.setLevel(MemberLevelEnum.NORMAL.getType()); |
| | | memberMapper.updateById(member); |
| | | } |
| | | } |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | String str = "{\"biz_code\":\"JS000000\",\"biz_msg\":\"成功\",\"data\":\"{\\\"order_status\\\":\\\"P2000\\\",\\\"jp_order_no\\\":\\\"100120220826446740396081496064\\\",\\\"err_msg\\\":\\\"短信验证码不符\\\",\\\"err_code\\\":\\\"CP110026\\\",\\\"sign_no\\\":\\\"\\\",\\\"mch_order_no\\\":\\\"NO_2022082618263952399\\\"}\",\"mch_no\":\"888118000001971\",\"rand_str\":\"an2w7ulf5ru6upkk5bdg441kdi3gnpvu\",\"resp_code\":\"SUCCESS\",\"sec_key\":\"\",\"sign\":\"NiJXRTSIZ9xZMUOwEHiEHdZXmgL2cHUU5WUa1NbMRRzui0DIiuZSW4e31LjnBxwVwmy3uuPMP+tqhY8VLyC8uCFOdGdZI7e72VuRvyvaiW7/sqCrsfgPOBEjiGE/CmSMRoEXv9HmqCyNBF6iHSEhQJql5Yge30dQdyB6xFfqjk0=\",\"sign_type\":\"2\"}"; |
| | | |
| | |
| | | |
| | | OrderDetailVo orderDetailVo = MallOrderInfoConversion.INSTANCE.entityToDetailVo(orderInfo); |
| | | |
| | | if (orderInfo.getStatus() == OrderStatusEnum.WAIT_FINISH.getValue()) { |
| | | Integer deliverType = (ObjectUtil.isEmpty(orderInfo.getDeliverType()) ? new Integer(0):orderInfo.getDeliverType()); |
| | | if (orderInfo.getStatus() == OrderStatusEnum.WAIT_FINISH.getValue() && 2 != deliverType) { |
| | | MallExpressInfo expressInfo = expressInfoMapper.selectByOrderId(orderInfo.getId()); |
| | | orderDetailVo.setExpressNo(expressInfo.getExpressNo()); |
| | | orderDetailVo.setExpressCom(expressInfo.getExpressCom()); |
| | |
| | | long remainTime = DateUtil.between(new Date(), endTime, DateUnit.SECOND, false); |
| | | orderDetailVo.setRemainTime(remainTime); |
| | | } |
| | | if(2 == deliverType){ |
| | | MallShopApply mallShopApply = mallShopApplyMapper.selectById(orderInfo.getShopId()); |
| | | if(ObjectUtil.isNotEmpty(mallShopApply)){ |
| | | ApiShopApplyVo apiShopApplyVo = new ApiShopApplyVo(); |
| | | apiShopApplyVo.setName(mallShopApply.getName()); |
| | | apiShopApplyVo.setPhone(mallShopApply.getPhone()); |
| | | apiShopApplyVo.setSaleArea(mallShopApply.getSaleArea()); |
| | | apiShopApplyVo.setLatitude(mallShopApply.getLatitude()); |
| | | apiShopApplyVo.setLongitude(mallShopApply.getLongitude()); |
| | | apiShopApplyVo.setShopName(mallShopApply.getShopName()); |
| | | apiShopApplyVo.setAddress(mallShopApply.getAddress()); |
| | | orderDetailVo.setApiShopApplyVo(apiShopApplyVo); |
| | | } |
| | | } |
| | | return orderDetailVo; |
| | | } |
| | | |