jiangqs
2023-09-01 dfe810a2108e479c4ed4f8d24dd181140afd8730
Merge branch 'master' of ssh://120.76.84.145:20202/java/HongRuiTang into master
4个文件已修改
92 ■■■■■ 已修改文件
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityMapper.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppPlaceOrderVo.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java 77 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java
@@ -459,12 +459,14 @@
        String activityId = activityGoodsGetDto.getActivityId();
        String goodsId = activityGoodsGetDto.getGoodsId();
        Activity activity = this.getById(activityId);
        //获取活动商品
        ActivityGoods activityGoods = activityGoodsService.getByGoodsId(activityId,goodsId);
        activityGoodsGetVo.setActivityName(activity.getActivityName());
        activityGoodsGetVo.setActivityPrice(activityGoods.getActivityPrice());
        activityGoodsGetVo.setActivitySubscription(activityGoods.getActivitySubscription());
        activityGoodsGetVo.setActivityStatus(activity.getActivityStatus());
        Integer availableBuyNum = activityGoods.getActivityNumber() - activityGoods.getSalesNumber();
        //剩余库存
        Integer availableBuyNum = activityGoods.getActivityNumber();
        //限购判断
        if(activityGoods.getPurchaseLimitationFlag()==1){
            Integer buyNum = activityRecordService.getUserActivityGoodsNum(goodsId,activityId,activityGoodsGetDto.getUserId());
ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityMapper.xml
@@ -145,6 +145,7 @@
    <update id="addActivityGoodsStock">
        UPDATE t_activity_goods
        SET sales_number = sales_number - #{param.changeNum},
            activity_number = activity_number + #{param.changeNum},
            sell_out_flag =  0,
            sell_out_time = NULL
        WHERE activity_id = #{param.activityId} AND goods_id = #{param.goodsId}
@@ -153,9 +154,10 @@
    <update id="subActivityGoodsStock">
        UPDATE t_activity_goods
        SET sales_number = sales_number + #{param.changeNum},
            sell_out_flag = CASE WHEN sales_number + #{param.changeNum} = activity_number THEN 1 ELSE sell_out_flag END,
            sell_out_time = CASE WHEN sales_number + #{param.changeNum} = activity_number THEN NOW() ELSE sell_out_time END
        WHERE activity_id = #{param.activityId} AND goods_id = #{param.goodsId} AND sales_number + #{param.changeNum} &lt;= activity_number
            activity_number = activity_number - #{param.changeNum},
            sell_out_flag = CASE WHEN activity_number = 0 THEN 1 ELSE sell_out_flag END,
            sell_out_time = CASE WHEN activity_number = 0 THEN NOW() ELSE sell_out_time END
        WHERE activity_id = #{param.activityId} AND goods_id = #{param.goodsId} AND activity_number &gt;= #{param.changeNum}
    </update>
    <select id="checkSellOut" resultType="java.lang.Integer">
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppPlaceOrderVo.java
@@ -26,6 +26,9 @@
    @ApiModelProperty(value = "订单编号")
    private String orderNo;
    @ApiModelProperty(value = "金额为零无需支付")
    private Integer zeroFlag;
    @ApiModelProperty(value = "支付方式1.全款2.订金")
    private Integer payType;
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -751,24 +751,13 @@
        }
        // 保存订单
        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);
        //商品数据
        String goodsName = "";
        if (null != goodsNameList) {
            goodsName = String.join(",", goodsNameList);
        }
        //减去优惠券
        if (StringUtils.isNotBlank(memberCouponSJ.toString())) {
            remoteCouponService.useMemberCoupon(memberCouponSJ.toString());
        }
        //判断是否需要支付 不需要直接待核销
        if(appPlaceOrderVo.getPayMoney().compareTo(BigDecimal.ZERO)>0){
            String outTradeNo = IdUtils.simpleUUID();
            // 保存订单 交易流水
@@ -779,6 +768,11 @@
                delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
            }
            appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime));
            //商品数据
            String goodsName = "";
            if (null != goodsNameList) {
                goodsName = String.join(",", goodsNameList);
            }
            // 小程序微信下单支付
            createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), goodsName, outTradeNo,
                    orderId, order.getPayMoney(), appPlaceOrderDto.getOpenid(),
@@ -792,11 +786,19 @@
            delayTask.setEndTime(DateUtils.addMinutes(new Date(), delayTime));
            delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId);
            remoteConfigService.addDelayTask(delayTask);
            appPlaceOrderVo.setZeroFlag(0);
        }else{
            order.setOrderStatus(2);
            this.saveOrUpdate(order);
            appPlaceOrderVo.setZeroFlag(1);
        }
        // 更新用户商品类型统计
        if (goodsTypeSet != null && goodsTypeSet.size() > 0) {
            AppMemberGoodsTypeDto appMemberGoodsTypeDto = new AppMemberGoodsTypeDto();
            appMemberGoodsTypeDto.setUserId(userId);
            appMemberGoodsTypeDto.setGoodsTypeSet(goodsTypeSet);
            remoteMemberService.updateMemberGoodsType(appMemberGoodsTypeDto);
        }
        return appPlaceOrderVo;
    }
@@ -920,7 +922,7 @@
        String activityId = appPlaceActivityDto.getActivityId();
        String goodsId = appPlaceActivityDto.getGoodsId();
        Integer buyNum = appPlaceActivityDto.getBuyNum();
        //redis库存控制极简版
        //redis分布式锁库存控制
        String goodsLock = "goods_lock_" + activityId + "_" + goodsId;
        RLock redissonLock = redissonClient.getLock(goodsLock);
        try {
@@ -1130,51 +1132,15 @@
        agStockChangeDto.setShopId(order.getShopId());
        agStockChangeDto.setUserId(order.getUserId());
        remoteActivityService.changeActivityStock(agStockChangeDto);
        // 调用支付
        /*PrepayRequest request = new PrepayRequest();
        Amount amount = new Amount();
        amount.setTotal(Integer.parseInt(order.getPayMoney().multiply(new BigDecimal(100)).toString()));
        request.setAmount(amount);
        request.setAppid(this.appId);
        request.setMchid(this.mchId);
        request.setDescription(order.getGoodsInfo());
        request.setNotifyUrl(this.notifyUrl);
        request.setOutTradeNo(order.getOrderId());
        Payer payer = new Payer();
        // TODO 获取openID
        payer.setOpenid("oLTPCuN5a-nBD4rAL_fa********");
        request.setPayer(payer);*/
        //设置订单允许分账 秒杀活动才允许分账
        /*if(order.getOrderFrom()==2){
            SettleInfo settleInfo=new SettleInfo();
            settleInfo.setProfitSharing(true);
            request.setSettleInfo(settleInfo);
        }*/
        //返回前端唤醒支付结果信息
        /*PrepayWithRequestPaymentResponse res = this.getJsApIResponse(request);
        appPlaceOrderVo.setAppId(this.appId);
        appPlaceOrderVo.setTimeStamp(res.getTimeStamp());
        appPlaceOrderVo.setNonceStr(res.getNonceStr());
        appPlaceOrderVo.setPackageStr(res.getPackageVal());
        appPlaceOrderVo.setTradeType(res.getSignType());
        appPlaceOrderVo.setPaySign(res.getPaySign());
*/
        List<String> goodsNameList = new ArrayList<>();
        goodsNameList.add(orderGoods.getGoodsName());
        //支付金额大于0走支付 负责直接完成订单
        if(appPlaceOrderVo.getPayMoney().compareTo(BigDecimal.ZERO)>0){
            List<String> goodsNameList = new ArrayList<>();
            goodsNameList.add(orderGoods.getGoodsName());
            String outTradeNo = IdUtils.simpleUUID();
            // 保存订单 交易流水
            order.setOutTradeNo(outTradeNo);
            this.saveOrUpdate(order);
            //自动取消订单任务时间获取
            Integer delayTime = 30;
            if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
                delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
@@ -1193,10 +1159,11 @@
            delayTask.setEndTime(DateUtils.addMinutes(new Date(), delayTime));
            delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId);
            remoteConfigService.addDelayTask(delayTask);
            appPlaceOrderVo.setZeroFlag(0);
        }else{
            order.setOrderStatus(2);
            this.saveOrUpdate(order);
            appPlaceOrderVo.setZeroFlag(1);
        }
        //生成活动参加记录
        ActivityRecord activityRecord = new ActivityRecord();