| | |
| | | |
| | | import com.google.gson.Gson; |
| | | import com.google.gson.GsonBuilder; |
| | | import com.matrix.biz.bean.BizUser; |
| | | import com.matrix.component.redis.RedisUserLoginUtils; |
| | | import com.matrix.component.tools.WxUtils; |
| | | import com.matrix.component.wechat.externalInterface.protocol.paramProtocol.BrandWCPayRequestData; |
| | | import com.matrix.core.exception.GlobleException; |
| | | import com.matrix.core.pojo.AjaxResult; |
| | | import com.matrix.core.tools.LogUtil; |
| | | import com.matrix.core.tools.StringUtils; |
| | | import com.matrix.system.common.constance.AppConstance; |
| | | import com.matrix.system.constance.Dictionary; |
| | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public AjaxResult createGroupBuy(CreateGroupBuyDTO createGroupBuyDTO) throws Exception { |
| | | BizUser bizUser = redisUserLoginUtils.getLoginUser(BizUser.class); |
| | | SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class); |
| | | |
| | | ShopActivitiesGroupPrice groupPrice = shopActivitiesGroupPriceDao.selectById(createGroupBuyDTO.getGpId()); |
| | | ShopActivitiesGroupInfo groupInfo = shopActivitiesGroupInfoDao.selectGroupInfoByActId(groupPrice.getActId()); |
| | |
| | | |
| | | // 判断最大开团数量 |
| | | if (groupInfo.getGiHeadDiscount() != null && groupInfo.getGiHeadDiscount() != 0) { |
| | | int createCnt = shopActivitiesGroupJoinDao.selectCreateGroupBuyCount(shopActivities.getId(), bizUser.getOpenId()); |
| | | int createCnt = shopActivitiesGroupJoinDao.selectCreateGroupBuyCount(shopActivities.getId(), sysVipInfo.getOpenId()); |
| | | if (createCnt > groupInfo.getGiHeadDiscount()) { |
| | | return AjaxResult.buildFailInstance("达到最大开团数量"); |
| | | } |
| | |
| | | return AjaxResult.buildFailInstance("达到最大限购数量"); |
| | | } |
| | | |
| | | int count = shopActivitiesGroupJoinUserDao.selectCountHasBuy(groupInfo.getId(), bizUser.getOpenId()); |
| | | int count = shopActivitiesGroupJoinUserDao.selectCountHasBuy(groupInfo.getId(), sysVipInfo.getOpenId()); |
| | | if (count + createGroupBuyDTO.getCount() > groupInfo.getGiLimitBuy()) { |
| | | return AjaxResult.buildFailInstance("达到最大限购数量"); |
| | | } |
| | | } |
| | | |
| | | // 判断该用户在这个活动中是否存在拼团,并判断该拼团订单是否已付款 |
| | | ShopActivitiesGroupJoin existGroupJoin = shopActivitiesGroupJoinDao.selectExistGroupingJoinByUser(groupPrice.getActId(), bizUser.getOpenId()); |
| | | ShopActivitiesGroupJoin existGroupJoin = shopActivitiesGroupJoinDao.selectExistGroupingJoinByUser(groupPrice.getActId(), sysVipInfo.getOpenId()); |
| | | if (existGroupJoin != null) { |
| | | if (existGroupJoin.getGjStatus() == ShopActivitiesGroupJoin.ACTIVITIES_JOIN_WAIT_PAY) { |
| | | return new AjaxResult(AjaxResult.STATUS_FAIL, "您该活动有个订单未付款"); |
| | |
| | | return new AjaxResult(AjaxResult.STATUS_FAIL, "该活动已存在拼团"); |
| | | } |
| | | |
| | | boolean isOld = isOldUser(bizUser.getPhoneNumber()); |
| | | boolean isOld = isOldUser(sysVipInfo.getPhone()); |
| | | // 老用户和老带新的开团都必须是老用户 |
| | | if (ShopActivitiesGroupInfo.GROUP_TYPE_ALL_OLD == groupInfo.getGiType() || ShopActivitiesGroupInfo.GROUP_TYPE_OLD_AND_NEW == groupInfo.getGiType()) { |
| | | if (!isOld) { |
| | |
| | | |
| | | createGroupBuyDTO.setPrice(groupPrice.getGpPrice()); |
| | | createGroupBuyDTO.setGoodsId(groupInfo.getGoodsId().intValue()); |
| | | createGroupBuyDTO.setOpenId(bizUser.getOpenId()); |
| | | createGroupBuyDTO.setUserId(sysVipInfo.getId()); |
| | | ShopOrder shopOrder = createOrderByGroupBuy(createGroupBuyDTO); |
| | | |
| | | ShopActivitiesGroupJoin groupJoin = new ShopActivitiesGroupJoin(); |
| | |
| | | groupJoin.setGjEndTime(gjEndTime.getTime()); |
| | | groupJoin.setGiId(groupInfo.getId()); |
| | | groupJoin.setGjStatus(ShopActivitiesGroupJoin.ACTIVITIES_JOIN_WAIT_PAY); |
| | | groupJoin.setCreateBy(bizUser.getNickName() == null ? "游客" : bizUser.getNickName()); |
| | | groupJoin.setUpdateBy(bizUser.getNickName() == null ? "游客" : bizUser.getNickName()); |
| | | groupJoin.setGjHeadId(bizUser.getOpenId()); |
| | | groupJoin.setCreateBy(sysVipInfo.getNickName() == null ? "游客" : sysVipInfo.getNickName()); |
| | | groupJoin.setUpdateBy(sysVipInfo.getNickName() == null ? "游客" : sysVipInfo.getNickName()); |
| | | groupJoin.setGjHeadId(sysVipInfo.getId()); |
| | | groupJoin.setCompanyId(shopActivities.getCompanyId()); |
| | | shopActivitiesGroupJoinDao.insert(groupJoin); |
| | | |
| | | ShopActivitiesGroupJoinUser joinUser = new ShopActivitiesGroupJoinUser(); |
| | | joinUser.setGjId(groupJoin.getId()); |
| | | joinUser.setGiId(groupInfo.getId()); |
| | | joinUser.setUserId(bizUser.getOpenId()); |
| | | joinUser.setUserId(sysVipInfo.getId()); |
| | | joinUser.setIsHead(ShopActivitiesGroupJoinUser.USER_IS_HEAD_Y); |
| | | joinUser.setCreateBy(bizUser.getNickName() == null ? "游客" : bizUser.getNickName()); |
| | | joinUser.setUpdateBy(bizUser.getNickName() == null ? "游客" : bizUser.getNickName()); |
| | | joinUser.setCreateBy(sysVipInfo.getNickName() == null ? "游客" : sysVipInfo.getNickName()); |
| | | joinUser.setUpdateBy(sysVipInfo.getNickName() == null ? "游客" : sysVipInfo.getNickName()); |
| | | joinUser.setIsHasPay(ShopActivitiesGroupJoinUser.IS_HAS_PAY_N); |
| | | joinUser.setIsHasCancel(ShopActivitiesGroupJoinUser.IS_HAS_CANCEL_N); |
| | | Calendar payEndTime = Calendar.getInstance(); |
| | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @Override |
| | | public AjaxResult joinGroupBuy(CreateGroupBuyDTO createGroupBuyDTO) throws Exception { |
| | | BizUser bizUser = redisUserLoginUtils.getLoginUser(BizUser.class); |
| | | SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class); |
| | | |
| | | // TODO 需判断拼团结束时间以及当前拼团是否已满员 |
| | | |
| | |
| | | return AjaxResult.buildFailInstance("该拼团不存在"); |
| | | } |
| | | |
| | | if (groupJoin.getGjHeadId().equals(bizUser.getOpenId())) { |
| | | if (groupJoin.getGjHeadId().equals(sysVipInfo.getOpenId())) { |
| | | return AjaxResult.buildFailInstance("您是拼团团长,无法加入拼团"); |
| | | } |
| | | |
| | |
| | | return AjaxResult.buildFailInstance("该拼团时间已结束"); |
| | | } |
| | | |
| | | ShopActivitiesGroupJoinUser groupJoinUser = shopActivitiesGroupJoinUserDao.selectGroupJoinUserByUserIdAndGjId(bizUser.getOpenId(), groupJoin.getId()); |
| | | ShopActivitiesGroupJoinUser groupJoinUser = shopActivitiesGroupJoinUserDao.selectGroupJoinUserByUserIdAndGjId(sysVipInfo.getOpenId(), groupJoin.getId()); |
| | | if (groupJoinUser != null) { |
| | | return AjaxResult.buildFailInstance("您已加入了该拼团"); |
| | | } |
| | |
| | | return AjaxResult.buildFailInstance("达到最大限购数量"); |
| | | } |
| | | |
| | | int count = shopActivitiesGroupJoinUserDao.selectCountHasBuy(groupInfo.getId(), bizUser.getOpenId()); |
| | | int count = shopActivitiesGroupJoinUserDao.selectCountHasBuy(groupInfo.getId(), sysVipInfo.getOpenId()); |
| | | if (count + createGroupBuyDTO.getCount() > groupInfo.getGiLimitBuy()) { |
| | | return AjaxResult.buildFailInstance("达到最大限购数量"); |
| | | } |
| | |
| | | return AjaxResult.buildFailInstance("该拼团已满员"); |
| | | } |
| | | |
| | | boolean isOld = isOldUser(bizUser.getPhoneNumber()); |
| | | boolean isOld = isOldUser(sysVipInfo.getPhone()); |
| | | // 老用户 -- 加入拼团的都必须是老用户 |
| | | if (ShopActivitiesGroupInfo.GROUP_TYPE_ALL_OLD == groupInfo.getGiType()) { |
| | | if (!isOld) { |
| | |
| | | |
| | | createGroupBuyDTO.setPrice(groupPrice.getGpPrice()); |
| | | createGroupBuyDTO.setGoodsId(groupInfo.getGoodsId().intValue()); |
| | | createGroupBuyDTO.setOpenId(bizUser.getOpenId()); |
| | | createGroupBuyDTO.setUserId(sysVipInfo.getId()); |
| | | ShopOrder shopOrder = createOrderByGroupBuy(createGroupBuyDTO); |
| | | |
| | | ShopActivitiesGroupJoinUser joinUser = new ShopActivitiesGroupJoinUser(); |
| | |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.set(Calendar.MINUTE, Integer.parseInt(payTimeLimit)); |
| | | joinUser.setPayEndTime(calendar.getTime()); |
| | | joinUser.setUserId(bizUser.getOpenId()); |
| | | joinUser.setUserId(sysVipInfo.getId()); |
| | | joinUser.setGiId(groupInfo.getId()); |
| | | joinUser.setGjId(groupJoin.getId()); |
| | | joinUser.setIsHead(ShopActivitiesGroupJoinUser.USER_IS_HEAD_N); |
| | | joinUser.setCreateBy(bizUser.getNickName() == null ? "游客" : bizUser.getNickName()); |
| | | joinUser.setUpdateBy(bizUser.getNickName() == null ? "游客" : bizUser.getNickName()); |
| | | joinUser.setCreateBy(sysVipInfo.getNickName() == null ? "游客" : sysVipInfo.getNickName()); |
| | | joinUser.setUpdateBy(sysVipInfo.getNickName() == null ? "游客" : sysVipInfo.getNickName()); |
| | | joinUser.setIsNewUser(isOld ? 2 : 1); |
| | | joinUser.setIsHasCancel(ShopActivitiesGroupJoinUser.IS_HAS_CANCEL_N); |
| | | joinUser.setCompanyId(groupJoin.getCompanyId()); |
| | |
| | | if (shopReceiveAddress == null) { |
| | | throw new GlobleException("请选择正确的收获地址"); |
| | | } |
| | | |
| | | SysVipInfo user=redisUserLoginUtils.getLoginUser(SysVipInfo.class); |
| | | ShopOrder shopOrder = new ShopOrder(); |
| | | shopOrder.setCompanyId(user.getCompanyId()); |
| | | shopOrder.setStoreId(Integer.parseInt(createGroupBuyDTO.getShopId().toString())); |
| | | shopOrder.setOrderType(ShopOrder.ORDER_TYPE_SERVICE); |
| | | |
| | |
| | | //TODO 更新库存和销量 更新库存和销量[考虑和erp库存联动] |
| | | wxShopOrderUtil.updateProductAndSkuInfo(details); |
| | | |
| | | shopOrder.setUserId(createGroupBuyDTO.getOpenId()); |
| | | shopOrder.setUserId(createGroupBuyDTO.getUserId()); |
| | | shopOrder.setCreateBy("微信小程序生成"); |
| | | shopOrder.setUpdateBy("微信小程序生成"); |
| | | shopOrder.setCommodityPrice(createGroupBuyDTO.getPrice()); |
| | |
| | | shopOrder.setPayResult(ShopOrder.ORDER_WX_STATUS_WAIT_PAY); |
| | | //如果没有提交购买方式或配送方式不是物流 |
| | | //获取邮费 |
| | | BigDecimal postPrice = wxShopOrderService.calculationPostage(createGroupBuyDTO.getAddressId(), createGroupBuyDTO.getPrice()); |
| | | BigDecimal postPrice = wxShopOrderService.calculationPostage(createGroupBuyDTO.getPrice(),user.getCompanyId()); |
| | | shopOrder.setPostage(postPrice); |
| | | BigDecimal payPrice = createGroupBuyDTO.getPrice().multiply(BigDecimal.valueOf(createGroupBuyDTO.getCount())).add(shopOrder.getPostage()); |
| | | shopOrder.setOrderMoney(payPrice); |
| | | DiscountExplain discountExplain = new DiscountExplain(); |
| | | discountExplain.setPayPrice(payPrice); |
| | | discountExplain.setPostage(postPrice); |
| | | discountExplain.setActivity(BigDecimal.ZERO); |
| | | discountExplain.setCoupon(BigDecimal.ZERO); |
| | | discountExplain.setActivityPrice(BigDecimal.ZERO); |
| | | discountExplain.setCouponPrice(BigDecimal.ZERO); |
| | | discountExplain.setBillPrice(payPrice); |
| | | Gson g = new GsonBuilder().create(); |
| | | shopOrder.setDiscountExplain(g.toJson(discountExplain)); |