| | |
| | | import com.ruoyi.common.core.exception.ServiceException; |
| | | import com.ruoyi.common.core.utils.StringUtils; |
| | | import com.ruoyi.common.core.utils.uuid.IdUtils; |
| | | import com.ruoyi.common.security.utils.SecurityUtils; |
| | | import com.ruoyi.order.domain.dto.*; |
| | | import com.ruoyi.order.domain.pojo.goods.Goods; |
| | | import com.ruoyi.order.domain.pojo.goods.GoodsFile; |
| | | import com.ruoyi.order.domain.pojo.goods.ShopGoods; |
| | | import com.ruoyi.order.domain.pojo.order.ConsumerGoods; |
| | | import com.ruoyi.order.domain.pojo.order.Order; |
| | | import com.ruoyi.order.domain.pojo.order.OrderGoods; |
| | | import com.ruoyi.order.domain.vo.*; |
| | | import com.ruoyi.order.service.goods.GoodsFileService; |
| | | import com.ruoyi.order.service.goods.ShopGoodsService; |
| | | import com.ruoyi.order.service.order.ConsumerGoodsService; |
| | | import com.ruoyi.order.service.order.OrderGoodsService; |
| | | import com.ruoyi.order.util.CodeFactoryUtil; |
| | | import com.ruoyi.system.api.RemoteMemberService; |
| | | import com.ruoyi.system.api.RemoteShopService; |
| | | import com.ruoyi.system.api.RemoteUserService; |
| | | import com.ruoyi.system.api.domain.dto.*; |
| | | import com.ruoyi.system.api.service.*; |
| | | import com.ruoyi.system.api.constant.AppErrorConstant; |
| | | import com.ruoyi.system.api.domain.dto.AppBaseGetDto; |
| | | import com.ruoyi.system.api.domain.dto.AppMemberBindingDto; |
| | | import com.ruoyi.system.api.domain.poji.goods.Goods; |
| | | import com.ruoyi.system.api.domain.poji.goods.GoodsFile; |
| | | import com.ruoyi.system.api.domain.poji.goods.ShopGoods; |
| | | import com.ruoyi.system.api.domain.poji.member.Member; |
| | | import com.ruoyi.system.api.domain.poji.shop.Shop; |
| | | import com.ruoyi.system.api.domain.poji.sys.SysUser; |
| | | import com.ruoyi.system.api.domain.vo.AppOrderTotalVo; |
| | | import com.ruoyi.system.api.domain.vo.AppUserCouponVo; |
| | | import com.ruoyi.order.mapper.order.OrderMapper; |
| | | import com.ruoyi.order.service.goods.GoodsService; |
| | | import com.ruoyi.order.service.order.OrderService; |
| | | import com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | private OrderMapper orderMapper; |
| | | |
| | | @Resource |
| | | private GoodsService goodsService; |
| | | |
| | | @Resource |
| | | private ShopGoodsService shopGoodsService; |
| | | |
| | | @Resource |
| | | private RemoteMemberService remoteMemberService; |
| | | |
| | | @Resource |
| | | private GoodsFileService goodsFileService; |
| | | |
| | | @Resource |
| | | private OrderGoodsService orderGoodsService; |
| | |
| | | |
| | | @Resource |
| | | private ConsumerGoodsService consumerGoodsService; |
| | | |
| | | @Resource |
| | | private RemoteGoodsService remoteGoodsService; |
| | | |
| | | @Resource |
| | | private RemoteShoppingCartService remoteShoppingCartService; |
| | | |
| | | |
| | | /** |
| | | * @description: buyGoods |
| | |
| | | goodsId = appBuyGoodsDto.getGoodsId(); |
| | | buyNum = appBuyGoodsDto.getBuyNum(); |
| | | userCouponId = appBuyGoodsDto.getUserCouponId(); |
| | | goods = goodsService.getById(goodsId); |
| | | goods = remoteGoodsService.getGoods(goodsId).getData(); |
| | | appSureOrderGoodsVo.setGoodsId(goodsId); |
| | | appSureOrderGoodsVo.setGoodsName(goods.getGoodsName()); |
| | | appSureOrderGoodsVo.setGoodsIntroduction(goods.getGoodsIntroduction()); |
| | | appSureOrderGoodsVo.setGoodsType(goods.getGoodsType()); |
| | | //商品图片 |
| | | goodsFile = goodsFileService.getGoodsPicture(goodsId); |
| | | goodsFile = remoteGoodsService.getGoodsFile(goodsId).getData(); |
| | | appSureOrderGoodsVo.setGoodsPicture(goodsFile.getFileUrl()); |
| | | buyNum = appBuyGoodsDto.getBuyNum(); |
| | | appSureOrderGoodsVo.setBuyNum(buyNum); |
| | | goodsPrice = goods.getSalesPrice(); |
| | | //商户定制价格 |
| | | ShopGoods shopGoods = shopGoodsService.getByShopIdAndGoodsId(appSureOrderDto.getShopId(),goods.getGoodsId()); |
| | | AppShopGoodsGetDto appShopGoodsGetDto = new AppShopGoodsGetDto(); |
| | | appShopGoodsGetDto.setGoodsId(goods.getGoodsId()); |
| | | appShopGoodsGetDto.setShopId(appSureOrderDto.getShopId()); |
| | | ShopGoods shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData(); |
| | | if(shopGoods!=null){ |
| | | goodsPrice = shopGoods.getSalesPrice(); |
| | | } |
| | |
| | | String orderNo = CodeFactoryUtil.getShopOrderNo(); |
| | | OrderGoods orderGoods; |
| | | String orderGoodsId; |
| | | HashSet<String> goodsTypeSet = new HashSet<>(); |
| | | for(AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList){ |
| | | appSureOrderGoodsVo = new AppSureOrderGoodsVo(); |
| | | useCoupon = 0; |
| | | goodsId = appBuyGoodsDto.getGoodsId(); |
| | | userCouponId = appBuyGoodsDto.getUserCouponId(); |
| | | goods = goodsService.getById(goodsId); |
| | | goods = remoteGoodsService.getGoods(goodsId).getData(); |
| | | appSureOrderGoodsVo.setGoodsId(goodsId); |
| | | appSureOrderGoodsVo.setGoodsName(goods.getGoodsName()); |
| | | appSureOrderGoodsVo.setGoodsIntroduction(goods.getGoodsIntroduction()); |
| | | appSureOrderGoodsVo.setGoodsType(goods.getGoodsType()); |
| | | //商品图片 |
| | | goodsFile = goodsFileService.getGoodsPicture(goodsId); |
| | | goodsFile = remoteGoodsService.getGoodsFile(goodsId).getData(); |
| | | appSureOrderGoodsVo.setGoodsPicture(goodsFile.getFileUrl()); |
| | | buyNum = appBuyGoodsDto.getBuyNum(); |
| | | appSureOrderGoodsVo.setBuyNum(buyNum); |
| | | goodsPrice = goods.getSalesPrice(); |
| | | serviceNum = goods.getServiceNum(); |
| | | //商户定制价格 |
| | | ShopGoods shopGoods = shopGoodsService.getByShopIdAndGoodsId(appPlaceOrderDto.getShopId(),goods.getGoodsId()); |
| | | AppShopGoodsGetDto appShopGoodsGetDto = new AppShopGoodsGetDto(); |
| | | appShopGoodsGetDto.setGoodsId(goods.getGoodsId()); |
| | | appShopGoodsGetDto.setShopId(appPlaceOrderDto.getShopId()); |
| | | ShopGoods shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData(); |
| | | if(shopGoods!=null){ |
| | | goodsPrice = shopGoods.getSalesPrice(); |
| | | serviceNum = shopGoods.getServiceNum(); |
| | |
| | | orderGoods.setServiceNum(serviceNum); |
| | | orderGoods.setGoodsType(goods.getGoodsType()); |
| | | orderGoodsService.save(orderGoods); |
| | | //清空购物车 |
| | | AppShoppingCartDelDto appShoppingCartDelDto = new AppShoppingCartDelDto(); |
| | | appShoppingCartDelDto.setGoodsId(goodsId); |
| | | appShoppingCartDelDto.setUserId(userId); |
| | | remoteShoppingCartService.deleteShoppingCart(appShoppingCartDelDto); |
| | | if(goods.getGoodsType()==1){ |
| | | goodsTypeSet.add("周期"); |
| | | }else if(goods.getGoodsType()==2){ |
| | | goodsTypeSet.add("服务"); |
| | | }else if(goods.getGoodsType()==3){ |
| | | goodsTypeSet.add("体验"); |
| | | }else if(goods.getGoodsType()==4){ |
| | | goodsTypeSet.add("单品"); |
| | | } |
| | | } |
| | | Order order = new Order(); |
| | | order.setOrderId(orderId); |
| | |
| | | order.setCouponMoney(couponDiscount); |
| | | order.setDiscountMoney(couponDiscount); |
| | | order.setReceivableMoney(orderPayMoney); |
| | | order.setReceivableDeposit(orderPayDeposit); |
| | | order.setPayType(appPlaceOrderDto.getPayType()); |
| | | if(order.getPayType()==1){ |
| | | order.setPayMoney(orderPayMoney); |
| | |
| | | order.setGoodsNum(goodsNum); |
| | | order.setCreateTime(new Date()); |
| | | this.save(order); |
| | | //更新用户商品类型 |
| | | if(goodsTypeSet!=null&&goodsTypeSet.size()>0){ |
| | | AppMemberGoodsTypeDto appMemberGoodsTypeDto = new AppMemberGoodsTypeDto(); |
| | | appMemberGoodsTypeDto.setUserId(userId); |
| | | appMemberGoodsTypeDto.setGoodsTypeSet(goodsTypeSet); |
| | | remoteMemberService.updateMemberGoodsType(appMemberGoodsTypeDto); |
| | | } |
| | | appPlaceOrderVo.setOrderId(orderId); |
| | | appPlaceOrderVo.setOrderNo(orderNo); |
| | | |
| | | //调用支付 |
| | | |
| | | |
| | | return appPlaceOrderVo; |
| | | } |
| | |
| | | appUserOrderGetVo.setPayMoney(order.getPayMoney()); |
| | | appUserOrderGetVo.setOrderRemark(order.getOrderRemark()); |
| | | appUserOrderGetVo.setShopId(order.getShopId()); |
| | | appUserOrderGetVo.setCreateTime(order.getCreateTime()); |
| | | appUserOrderGetVo.setPayTime(order.getCreateTime()); |
| | | appUserOrderGetVo.setUseTime(order.getUseTime()); |
| | | appUserOrderGetVo.setCancelTime(order.getCancelTime()); |
| | | appUserOrderGetVo.setOrderRemark(order.getOrderRemark()); |
| | | Shop shop = remoteShopService.getShop(order.getShopId()).getData(); |
| | | appUserOrderGetVo.setShopName(shop.getShopName()); |
| | | appUserOrderGetVo.setAppUserOrderGoodsPageVoList(appUserOrderGoodsPageVoList); |
| | |
| | | merVerifyOrderVo.setReceivableMoney(order.getReceivableMoney()); |
| | | merVerifyOrderVo.setPayMoney(order.getPayMoney()); |
| | | merVerifyOrderVo.setOrderRemark(order.getOrderRemark()); |
| | | merVerifyOrderVo.setCreateTime(order.getCreateTime()); |
| | | merVerifyOrderVo.setPayTime(order.getPayTime()); |
| | | merVerifyOrderVo.setUseTime(order.getUseTime()); |
| | | merVerifyOrderVo.setAppUserOrderGoodsPageVoList(appUserOrderGoodsPageVoList); |
| | | SysUser sysUser = remoteUserService.getSysUser(order.getUserId()).getData(); |
| | | merVerifyOrderVo.setUserName(sysUser.getNickName()); |
| | |
| | | public MerVerifyOrderVo sureVerifyOrder(MerVerifyOrderDto merVerifyOrderDto){ |
| | | String orderId = merVerifyOrderDto.getOrderId(); |
| | | BigDecimal relReceiveMoney = merVerifyOrderDto.getRelReceiveMoney(); |
| | | BigDecimal relPayMoney = merVerifyOrderDto.getRelPayMoney(); |
| | | Date nowTime = new Date(); |
| | | //更新订单信息 |
| | | Order order = this.getById(orderId); |
| | | order.setOrderStatus(3); |
| | | order.setUseTime(nowTime); |
| | | order.setUseUserId(merVerifyOrderDto.getUserId()); |
| | | order.setOfflinePayMoney(relReceiveMoney); |
| | | order.setPayMoney(order.getPayMoney().add(relReceiveMoney)); |
| | | order.setOfflinePayMoney(relPayMoney); |
| | | order.setPayMoney(relReceiveMoney.add(relPayMoney)); |
| | | order.setCloseFlag(1); |
| | | this.saveOrUpdate(order); |
| | | //创建服务商品 |
| | |
| | | merVerifyOrderVo.setPayMoney(order.getPayMoney()); |
| | | merVerifyOrderVo.setOrderRemark(order.getOrderRemark()); |
| | | merVerifyOrderVo.setAppUserOrderGoodsPageVoList(appUserOrderGoodsPageVoList); |
| | | merVerifyOrderVo.setCreateTime(order.getCreateTime()); |
| | | merVerifyOrderVo.setPayTime(order.getPayTime()); |
| | | merVerifyOrderVo.setUseTime(order.getUseTime()); |
| | | SysUser sysUser = remoteUserService.getSysUser(order.getUserId()).getData(); |
| | | merVerifyOrderVo.setUserName(sysUser.getNickName()); |
| | | merVerifyOrderVo.setUserMobile(sysUser.getPhonenumber()); |
| | |
| | | public List<MerMemberNoClearOrderVo> pageMerMemberNoClearOrder(Page page, MerMemberNoClearOrderDto merMemberNoClearOrderDto){ |
| | | List<MerMemberNoClearOrderVo> merMemberNoClearOrderVoList = orderMapper.pageMerMemberNoClearOrder(page,merMemberNoClearOrderDto.getMemberUserId()); |
| | | if(merMemberNoClearOrderVoList!=null&&!merMemberNoClearOrderVoList.isEmpty()){ |
| | | BigDecimal zeroBig = new BigDecimal("0.00"); |
| | | for(MerMemberNoClearOrderVo merMemberNoClearOrderVo : merMemberNoClearOrderVoList){ |
| | | merMemberNoClearOrderVo.setUnPaidMoney(merMemberNoClearOrderVo.getReceivableMoney().subtract(merMemberNoClearOrderVo.getPayMoney())); |
| | | if(merMemberNoClearOrderVo.getUnPaidMoney()==null){ |
| | | merMemberNoClearOrderVo.setUnPaidMoney(zeroBig); |
| | | } |
| | | } |
| | | } |
| | | return merMemberNoClearOrderVoList; |
| | |
| | | @Override |
| | | public void createNewOrder(MerNewOrderDto merNewOrderDto){ |
| | | Long userId = merNewOrderDto.getBuyUserId(); |
| | | if(userId==null){ |
| | | String name = merNewOrderDto.getName(); |
| | | String mobile = merNewOrderDto.getMobile(); |
| | | SysUser sysUser = remoteUserService.getSysUserByMobile(mobile).getData(); |
| | | if(sysUser==null){ |
| | | //创建新用户 |
| | | String memberId = IdUtils.simpleUUID(); |
| | | sysUser = new SysUser(); |
| | | sysUser.setUserName(mobile); |
| | | sysUser.setUserType("03"); |
| | | sysUser.setNickName(name); |
| | | sysUser.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png"); |
| | | String password = "hongruitang"; |
| | | sysUser.setPassword(SecurityUtils.encryptPassword(password)); |
| | | log.debug("sysUser"+sysUser.toString()); |
| | | sysUser = remoteUserService.registerUser(sysUser).getData(); |
| | | userId = sysUser.getUserId(); |
| | | }else{ |
| | | userId = sysUser.getUserId(); |
| | | } |
| | | } |
| | | //创建订单 |
| | | List<AppBuyGoodsDto> appBuyGoodsDtoList = merNewOrderDto.getAppBuyGoodsDtoList(); |
| | | String goodsId; |
| | |
| | | BigDecimal goodsTotalPrice; |
| | | BigDecimal goodsRealPrice; |
| | | List<AppUserCouponVo> appUserCouponVoList = remoteMemberService.listVoUserCouponByUserId(userId).getData(); |
| | | Map<Long,AppUserCouponVo> appUserCouponVoMap = appUserCouponVoList.stream().collect(Collectors.toMap(AppUserCouponVo::getUserCouponId, Function.identity())); |
| | | Map<Long,AppUserCouponVo> appUserCouponVoMap = new HashMap<>(); |
| | | if(null != appUserCouponVoList){ |
| | | appUserCouponVoMap = appUserCouponVoList.stream().collect(Collectors.toMap(AppUserCouponVo::getUserCouponId, Function.identity())); |
| | | } |
| | | |
| | | AppUserCouponVo appUserCouponVo; |
| | | Integer couponType; |
| | | BigDecimal moneyThreshold; |
| | |
| | | for(AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList){ |
| | | goodsId = appBuyGoodsDto.getGoodsId(); |
| | | userCouponId = appBuyGoodsDto.getUserCouponId(); |
| | | goods = goodsService.getById(goodsId); |
| | | goods = remoteGoodsService.getGoods(goodsId).getData(); |
| | | buyNum = appBuyGoodsDto.getBuyNum(); |
| | | goodsPrice = goods.getSalesPrice(); |
| | | serviceNum = goods.getServiceNum(); |
| | | //商户定制价格 |
| | | ShopGoods shopGoods = shopGoodsService.getByShopIdAndGoodsId(merNewOrderDto.getShopId(),goods.getGoodsId()); |
| | | AppShopGoodsGetDto appShopGoodsGetDto = new AppShopGoodsGetDto(); |
| | | appShopGoodsGetDto.setGoodsId(goods.getGoodsId()); |
| | | appShopGoodsGetDto.setShopId(merNewOrderDto.getShopId()); |
| | | ShopGoods shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData(); |
| | | if(shopGoods!=null){ |
| | | goodsPrice = shopGoods.getSalesPrice(); |
| | | serviceNum = shopGoods.getServiceNum(); |
| | |
| | | goodsRealPrice = goodsTotalPrice; |
| | | if(userCouponId!=null){ |
| | | appUserCouponVo = appUserCouponVoMap.get(userCouponId); |
| | | if(StringUtils.isBlank(appUserCouponVo.getRelGoodsIds()) || appUserCouponVo.getRelGoodsIds().contains(goodsId)){ |
| | | if(null != appUserCouponVo && (StringUtils.isBlank(appUserCouponVo.getRelGoodsIds()) || appUserCouponVo.getRelGoodsIds().contains(goodsId))){ |
| | | couponType = appUserCouponVo.getCouponType(); |
| | | if(couponType == 1 && appUserCouponVo.getMoneyThreshold()!=null && appUserCouponVo.getDiscountMoney()!=null){ |
| | | moneyThreshold = appUserCouponVo.getMoneyThreshold(); |
| | |
| | | orderGoods.setOrderId(orderId); |
| | | orderGoods.setGoodsId(goodsId); |
| | | orderGoods.setBuyNum(buyNum); |
| | | orderGoods.setCouponId(userCouponId.toString()); |
| | | if(null != userCouponId){ |
| | | orderGoods.setCouponId(userCouponId.toString()); |
| | | } |
| | | orderGoods.setGoodsPrice(goodsPrice); |
| | | orderGoods.setGoodsTotalMoney(orderGoodsMoney); |
| | | orderGoods.setGoodsReceivableMoney(goodsRealPrice); |
| | |
| | | order.setCouponMoney(couponDiscount); |
| | | order.setDiscountMoney(couponDiscount); |
| | | order.setReceivableMoney(orderPayMoney); |
| | | order.setReceivableDeposit(new BigDecimal("0.00")); |
| | | order.setPayType(1); |
| | | if(order.getPayType()==1){ |
| | | order.setPayMoney(orderPayMoney); |
| | |
| | | consumerGoodsService.save(consumerGoods); |
| | | } |
| | | Member member = remoteMemberService.getMember(userId).getData(); |
| | | if(member.getBindingFlag()!=1){ |
| | | if(member!=null&&member.getBindingFlag()!=1){ |
| | | //绑定商户 |
| | | AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto(); |
| | | appMemberBindingDto.setShopId(merNewOrderDto.getShopId()); |
| | |
| | | Member member; |
| | | Integer orderFrom; |
| | | String orderFromDesc; |
| | | BigDecimal zeroBig = new BigDecimal("0.00"); |
| | | for(MerOrderPageVo merOrderPageVo : merOrderPageVoList){ |
| | | userId = merOrderPageVo.getUserId(); |
| | | member = remoteMemberService.getMember(userId).getData(); |
| | | merOrderPageVo.setUserName(member.getRealName()); |
| | | merOrderPageVo.setUserMobile(member.getMobile()); |
| | | if(member!=null){ |
| | | if(StringUtils.isNotBlank(member.getNickName())){ |
| | | merOrderPageVo.setUserName(member.getNickName()); |
| | | } |
| | | merOrderPageVo.setUserMobile(member.getMobile()); |
| | | }else{ |
| | | SysUser sysUser = remoteUserService.getSysUser(userId).getData(); |
| | | if(StringUtils.isNotBlank(sysUser.getNickName())){ |
| | | merOrderPageVo.setUserName(sysUser.getNickName()); |
| | | } |
| | | merOrderPageVo.setUserMobile(sysUser.getPhonenumber()); |
| | | } |
| | | orderFrom = merOrderPageVo.getOrderFrom(); |
| | | orderFromDesc = "商城订单"; |
| | | if(orderFrom!=null){ |
| | | if(orderFrom == 1){ |
| | | orderFromDesc = "商城订单"; |
| | | }else{ |
| | | orderFromDesc = "线下创建"; |
| | | } |
| | | }else{ |
| | | orderFromDesc = "商城订单"; |
| | | } |
| | | merOrderPageVo.setOrderFromDesc(orderFromDesc); |
| | | merOrderPageVo.setUnPaidMoney(merOrderPageVo.getReceivableMoney().subtract(merOrderPageVo.getPayMoney())); |
| | | if(merOrderPageVo.getUnPaidMoney()==null){ |
| | | merOrderPageVo.setUnPaidMoney(zeroBig); |
| | | } |
| | | } |
| | | } |
| | | return merOrderPageVoList; |
| | |
| | | public List<MerMemberNoClearOrderVo> pageMerMemberOrder(Page page, MerMemberNoClearOrderDto merMemberNoClearOrderDto){ |
| | | List<MerMemberNoClearOrderVo> merMemberNoClearOrderVoList = orderMapper.pageMerMemberOrder(page,merMemberNoClearOrderDto.getMemberUserId()); |
| | | if(merMemberNoClearOrderVoList!=null&&!merMemberNoClearOrderVoList.isEmpty()){ |
| | | BigDecimal zeroBig = new BigDecimal("0.00"); |
| | | for(MerMemberNoClearOrderVo merMemberNoClearOrderVo : merMemberNoClearOrderVoList){ |
| | | merMemberNoClearOrderVo.setUnPaidMoney(merMemberNoClearOrderVo.getReceivableMoney().subtract(merMemberNoClearOrderVo.getPayMoney())); |
| | | if(merMemberNoClearOrderVo.getUnPaidMoney()==null){ |
| | | merMemberNoClearOrderVo.setUnPaidMoney(zeroBig); |
| | | } |
| | | } |
| | | } |
| | | return merMemberNoClearOrderVoList; |