admin/dmmall_admin/index.html
@@ -1 +1 @@ <!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>é¼å åæºåå°ç®¡ç</title><link href="static/css/app.51bd40d6.css" rel="preload" as="style"><link href="static/css/chunk-vendors.d9e68312.css" rel="preload" as="style"><link href="static/js/app.17ff12aa.js" rel="preload" as="script"><link href="static/js/chunk-vendors.22d73e08.js" rel="preload" as="script"><link href="static/css/chunk-vendors.d9e68312.css" rel="stylesheet"><link href="static/css/app.51bd40d6.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but é¼å åæºåå°ç®¡ç doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="static/js/chunk-vendors.22d73e08.js"></script><script src="static/js/app.17ff12aa.js"></script></body></html> <!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>é¼å åæºåå°ç®¡ç</title><link href="static/css/app.420cab1e.css" rel="preload" as="style"><link href="static/css/chunk-vendors.d9e68312.css" rel="preload" as="style"><link href="static/js/app.93385205.js" rel="preload" as="script"><link href="static/js/chunk-vendors.22d73e08.js" rel="preload" as="script"><link href="static/css/chunk-vendors.d9e68312.css" rel="stylesheet"><link href="static/css/app.420cab1e.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but é¼å åæºåå°ç®¡ç doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="static/js/chunk-vendors.22d73e08.js"></script><script src="static/js/app.93385205.js"></script></body></html> admin/dmmall_admin/static/css/app.51bd40d6.css
ÎļþÒÑɾ³ý admin/dmmall_admin/static/js/app.17ff12aa.js
ÎļþÒÑɾ³ý admin/dmmall_admin/static/js/app.17ff12aa.js.map
ÎļþÒÑɾ³ý admin/src/components/business/OperaInformationWindow.vue
@@ -1,6 +1,5 @@ <template> <GlobalWindow width="80%" :title="title" :visible.sync="visible" v-loading="isUploading" @@ -11,7 +10,7 @@ <el-form-item label="æ é¢" prop="name"> <el-input v-model="form.name" placeholder="请è¾å ¥æ é¢" v-trim/> </el-form-item> <el-form-item label="主å¾" prop="imgurlfull"> <el-form-item label="主å¾" prop="imgurl"> <UploadAvatarImage :file="{ 'imgurlfull': form.imgurlfull, 'imgurl': form.imgurl }" @uploadSuccess="uploadAvatarSuccess" @@ -119,6 +118,26 @@ }, getWangedditor(val){ this.form.content =val }, open (title, target) { this.title = title this.visible = true this.form.imgurlfull=null this.form.imgurl=null // æ°å»º if (target == null) { this.$nextTick(() => { this.$refs.form.resetFields() this.form[this.configData['field.id']] = null }) return } // ç¼è¾ this.$nextTick(() => { for (const key in this.form) { this.form[key] = target[key] } }) } } } @@ -126,43 +145,10 @@ <style lang="scss" scoped> @import "@/assets/style/alertstyle.scss"; ::v-deep .el-form-item__content { flex: 0.6; } ::v-deep .el-select { width: 100%; .el-input__inner { width: 100%; } } $image-width: 100px; .avatar-uploader { width: $image-width; height: $image-width; } ::v-deep .el-upload { border: 1px dashed #d9d9d9; border-radius: 6px; cursor: pointer; position: relative; width: $image-width; height: $image-width; overflow: hidden; } .avatar-uploader .el-upload:hover { border-color: #409EFF; } .avatar-uploader-icon { font-size: 28px; color: #8c939d; width: $image-width; height: $image-width; line-height: $image-width; text-align: center; } .avatar { width: $image-width; height: $image-width; display: block; } </style> admin/src/components/business/OperaOrderRefundWindow.vue
@@ -53,31 +53,31 @@ <div class="header-b">鿬¾å 容</div> <div class="info-item" > <el-form :model="form" ref="form" label-width="120px" label-suffix="ï¼" :rules="rules" > <el-form-item label="鿬¾éé¢" prop="money" style="display: block;"> <el-form-item label="鿬¾éé¢" prop="money" > <el-input type="number" v-model="form.money" placeholder="请è¾å ¥é款éé¢" v-trim> <template slot="append"> å </template> </el-input> <span class="tip-warn" style="margin-bottom: 30px;font-size: 14px;"> <i class="el-icon-warning"></i> æç¤ºï¼å½å订åæå¤å¯ééé¢ä¸º<span class="red">{{(info.price||0).toFixed(2)}}</span></span> </el-form-item> <div style="display:flex;"> <el-form-item label="éè¿" prop="refundInfo" style="display: inline;"> <el-form-item label="éè¿" prop="refundInfo" > <el-checkbox style="border: none;" v-model="form.returnUseCouponStatus" label="éè¿å®¢æ·ä¼æ å¸" border></el-checkbox> </el-form-item> <el-form-item label="" prop="refundInfo" style="display: inline;"> <el-form-item label="" prop="refundInfo" > <el-checkbox style="border: none" v-model="form.returnUseIntegralStatus" label="éè¿å®¢æ·ç§¯å" border></el-checkbox> </el-form-item> </div> <div style="display:flex;"> <el-form-item label="æ£é¤" prop="refundInfo" style="display: inline;"> <el-form-item label="æ£é¤" prop="refundInfo" > <el-checkbox style="border: none" v-model="form.returnShopSettlementStatus" label="æ£é¤ç»éåå·²ç»ç®éé¢" border></el-checkbox> </el-form-item> <el-form-item label="" prop="refundInfo" style="display: inline;"> <el-form-item label="" prop="refundInfo" > <el-checkbox style="border: none" v-model="form.returnIntegralStatus" label="æ£é¤å·²è¿å®¢æ·ç§¯å" border></el-checkbox> </el-form-item> <el-form-item label="" prop="refundInfo" style="display: inline;"> <el-form-item label="" prop="refundInfo" > <el-checkbox style="border: none" v-model="form.returnShopIntegralStatus" label="æ£é¤å·²è¿ç»éå积å" border></el-checkbox> </el-form-item> </div> <el-form-item label="夿³¨" prop="remark" style="display: block;"> <el-form-item label="夿³¨" prop="remark" > <el-input type="textarea" :autosize="{ minRows: 4, maxRows:4 }" style="width: 500px;" v-model="form.remark" placeholder="请è¾å ¥åæ¶è¯´æ" v-trim/> </el-form-item> </el-form> admin/src/components/business/OperaShopInfoWindow.vue
@@ -126,6 +126,7 @@ <el-option :key="2" :value="2" label="å¾ æ¶è´§" ></el-option> <el-option :key="3" :value="3" label="交æå®æ" ></el-option> <el-option :key="4" :value="4" label="å·²å ³é" ></el-option> <el-option :key="6" :value="6" label="已鿬¾" ></el-option> </el-select> </el-form-item> <el-form-item label="" prop="receiveType" style="display: inline-block;margin-right: 20px;"> @@ -183,7 +184,7 @@ > <el-table-column prop="code" label="订åç¼å·" fixed align="center" min-width="120px" show-overflow-tooltip> <template slot-scope="{row}"> <span style="color: #216EEE; " @click="$refs.operaGoodsOrderDetail.open('订å详æ ', row, 'first')">{{row.code}}</span> <span style="color: #216EEE;cursor: pointer; " @click="$refs.operaGoodsOrderDetail.open('订å详æ ', row, 'first')">{{row.code}}</span> </template> </el-table-column> @@ -198,7 +199,7 @@ </el-table-column> <el-table-column prop="price" label="å忻价(å )" align="center" min-width="100px"> <template slot-scope="{row}"> {{(row.totalPrice || 0) - (row.mailPrice||0)}} {{((row.totalPrice || 0) - (row.mailPrice||0)).toFixed(2)}} </template> </el-table-column> <el-table-column prop="mailPrice" label="è¿è´¹(å )" align="center" min-width="100px"></el-table-column> admin/src/views/business/platformGoods.vue
@@ -90,8 +90,8 @@ </el-table-column> <el-table-column prop="categoryName" label="æå±åç±»" min-width="120px"></el-table-column> <el-table-column prop="brandName" label="æå±åç" min-width="120px"></el-table-column> <el-table-column prop="showPrice" label="åºåä»·(å ï¼" min-width="100px"></el-table-column> <el-table-column prop="price" label="å线价(å ï¼" min-width="100px"></el-table-column> <el-table-column prop="price" label="åºåä»·(å ï¼" min-width="100px"></el-table-column> <el-table-column prop="showPrice" label="å线价(å ï¼" min-width="100px"></el-table-column> <el-table-column prop="skuPrice" label="éå®ä»·(å )" min-width="100px"></el-table-column> <el-table-column prop="shopPrice" label="ä¾è´§ä»·è®¾ç½®" min-width="100px" align="center"> <template slot-scope="{row}" > admin/src/views/index.vue
@@ -66,7 +66,7 @@ <el-table-column prop="sortnum" label="æå" align="center"> <template slot-scope="scope">{{scope.$index +1}}</template> </el-table-column> <el-table-column prop="name" label="ç»éååç§°" align="center" > </el-table-column> <el-table-column prop="name" label="ç»éååç§°" show-overflow-tooltip align="center" > </el-table-column> <el-table-column prop="num" label="订åé" align="center" > </el-table-column> <el-table-column prop="price" label="éå®é¢ï¼å ï¼" align="center" ></el-table-column> <el-table-column prop="num1" label="ä¼åæ°" align="center" ></el-table-column> @@ -87,7 +87,7 @@ <el-table-column prop="sortnum" label="æå" align="center"> <template slot-scope="scope">{{scope.$index +1}}</template> </el-table-column> <el-table-column prop="name" label="åååç§°" align="center" > </el-table-column> <el-table-column prop="name" label="åååç§°" show-overflow-tooltip align="center" > </el-table-column> <el-table-column prop="num" label="éé" align="center" > </el-table-column> <el-table-column prop="price" label="éå®é¢ï¼å ï¼" align="center" ></el-table-column> </el-table> server/dmmall_service/src/main/java/com/doumee/service/business/impl/AftersaleServiceImpl.java
@@ -1050,7 +1050,7 @@ aftersale.setCode(getNextInCode()); //订åéåè¿åç»ç»éåç积å if(Objects.nonNull(goodsorder.getDistributionShopId())&&goodsorder.getReturnCustomerIntegral().compareTo(BigDecimal.ZERO)>Constants.ZERO){ if(Objects.nonNull(goodsorder.getDistributionShopId())){ Shop shop = shopMapper.selectById(goodsorder.getDistributionShopId()); //ç»éååå¨å©ä½ç§¯å if(Objects.nonNull(shop)&&shop.getIntegral().compareTo(BigDecimal.ZERO)>Constants.ZERO){ @@ -1072,7 +1072,7 @@ } //订åéå ç»éåç»ç®ä½é¢ if(Objects.nonNull(goodsorder.getDistributionShopId())&&goodsorder.getShopSettlement().compareTo(BigDecimal.ZERO)>Constants.ZERO){ if(Objects.nonNull(goodsorder.getDistributionShopId())){ Shop shop = shopMapper.selectById(goodsorder.getDistributionShopId()); //ç»éååå¨å©ä½ç§¯å if(Objects.nonNull(shop)&&shop.getAmount().compareTo(BigDecimal.ZERO)>Constants.ZERO){ @@ -1095,7 +1095,7 @@ } //订åéå è¿è¿ç»å®¢æ·ç积å if(Objects.nonNull(goodsorder.getDistributionShopId())&&goodsorder.getReturnMemberIntegral().compareTo(BigDecimal.ZERO)>Constants.ZERO){ if(Objects.nonNull(goodsorder.getDistributionShopId())){ Member member = memberMapper.selectById(goodsorder.getMemberId()); //客æ·åå¨å©ä½ç§¯å if(Objects.nonNull(member)&&member.getIntegral().compareTo(BigDecimal.ZERO)>Constants.ZERO){ server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java
@@ -973,6 +973,7 @@ MPJLambdaWrapper<Goods> wrapper = new MPJLambdaWrapper<Goods>() .selectAll(Goods.class) .select(" ifnull(( select min(gs.PRICE) from goods_sku gs where gs.GOODS_ID = t.id ),0) ",Goods::getMinPrice) .select(" ifnull(( select min(gs.SHOW_PRICE) from goods_sku gs where gs.GOODS_ID = t.id ),0) ",Goods::getLinePrice) .leftJoin(SystemUser.class, SystemUser::getId, Goods::getCreator) .eq(Goods::getIsdeleted,Constants.ZERO) .eq(!Objects.isNull(model) && Objects.nonNull(model.getCategoryId()), @@ -1062,7 +1063,6 @@ //çå®éé = realSaleNum - saleNum; //çå®åºå= sumStock - (realSaleNum - saleNum) goodsResponse.setStock(sumStock); goodsResponse.setRealSaleNum(goodsResponse.getRealSaleNum()+sumStock); goodsResponse.setGoodsSkuResponseList(goodsSkuResponseList); //Skuåºç¡ä¿¡æ¯ List<SkuResponse> skuResponseList = skuMapper.getSkuResponseList(goodsResponse.getId()); server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -857,12 +857,14 @@ if(!Constants.equalsInteger(goods.getStatus(),Constants.ZERO)||!Constants.equalsInteger(goods.getIsdeleted(),Constants.ZERO)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"åå¨ååå·²å 餿已䏿¶ï¼æ æ³ä¸å"); } if(Objects.nonNull(goodsSku.getStock())){ if(goodsSku.getStock().compareTo(new BigDecimal(Constants.formatIntegerNum(payDetailRequest.getGoodsNum())))<Constants.ZERO){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"åå¨åååºåä¸è¶³ï¼æ æ³ä¸åï¼"); } //åååºåæ£é¤ goodsSku.setStock(goodsSku.getStock().subtract(new BigDecimal(Constants.formatIntegerNum(payDetailRequest.getGoodsNum())))); goodsSkuMapper.updateById(goodsSku); } GoodsorderDetail goodsOrderDetail = new GoodsorderDetail(); goodsOrderDetail.setCreator(member.getId()); goodsOrderDetail.setCreateDate(new Date()); @@ -1443,6 +1445,7 @@ orderPayConfirmResponse.setCouponAmount(couponAmount); //è·åå¯ä»¥ä½¿ç¨ç伿 å¸ List<MemberCoupon> memberCouponList = memberCouponService.getApplyCoupon(request.getPayDetailRequestList(),request.getMemberId()); if(CollectionUtils.isNotEmpty(memberCouponList)){ orderPayConfirmResponse.setMemberCouponList(memberCouponList); if(Objects.nonNull(request.getCouponId())&&Constants.equalsInteger(request.getCouponId(),-Constants.ONE)&&Objects.nonNull(memberCouponList)){ @@ -1456,11 +1459,11 @@ } memberCoupon = memberCoupons.get(Constants.ZERO); couponAmount = memberCoupon.getValidAmount(); memberCouponService.calculateCouponRata(memberCoupon,goodsCalculateList,amount); // memberCouponService.calculateCouponRata(memberCoupon,goodsCalculateList,amount); orderPayConfirmResponse.setMemberCoupon(memberCoupon); } }else { if(Objects.nonNull(request.getCouponId())){ if(Objects.nonNull(request.getCouponId())&&!Constants.equalsInteger(request.getCouponId(),-Constants.ONE)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"æ å¯ç¨ä¼æ å¸ï¼è¯·å·æ°æ¥ç"); } } @@ -1533,7 +1536,7 @@ orderPayConfirmResponse.setIntegralAmount(integralAmount); } //使ç¨ä¼æ å¸ åå»ä¼æ 叿µæ£éé¢ if(Objects.nonNull(request.getCouponId())){ if(Objects.nonNull(orderPayConfirmResponse.getMemberCoupon())){ orderPayConfirmResponse.setCouponAmount(couponAmount); } //å®é æ¯ä»éé¢ åå»ä¼æ å¸ãç§¯åæµæ£éé¢ @@ -2285,6 +2288,7 @@ List<Goodsorder> goodsorderList = goodsorderMapper.selectList(new QueryWrapper<Goodsorder>().lambda() .eq(Goodsorder::getIsdeleted,Constants.ZERO) .eq(Goodsorder::getReceiveType,Constants.ONE) .isNotNull(Goodsorder::getExchangeCode) .in(Goodsorder::getStatus,Constants.OrderStatus.WAIT_RECEIVE.getKey(), Constants.OrderStatus.WAIT_PAY.getKey(), Constants.OrderStatus.PAY_DONE.getKey()) @@ -2325,7 +2329,7 @@ List<Goodsorder> goodsorderList = goodsorderMapper.selectList(new QueryWrapper<Goodsorder>().lambda() .eq(Goodsorder::getIsdeleted, Constants.ZERO) .eq(Goodsorder::getStatus, Constants.OrderStatus.WAIT_PAY.getKey()) .ge(Goodsorder::getCreateDate, "DATE_SUB(NOW(), INTERVAL 15 MINUTE)") .apply(" CREATE_DATE > DATE_SUB(NOW(), INTERVAL 15 MINUTE) ") ); if(CollectionUtils.isNotEmpty(goodsorderList)){ for (Goodsorder goodsorder:goodsorderList) { server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java
@@ -594,9 +594,13 @@ if(CollectionUtils.isNotEmpty(allCoupon)){ for (MemberCoupon memberCoupon:allCoupon) { //éç¨ç±»åï¼0=å ¨åº;1=åç±»ï¼2=æå®åå if(this.calculateCouponRata(memberCoupon,goodsCalculateList,totalAmount).compareTo(memberCoupon.getPrice())<=Constants.ZERO){ continue; } memberCouponList.add(memberCoupon); /*//éç¨ç±»åï¼0=å ¨åº;1=åç±»ï¼2=æå®åå if(Constants.equalsInteger(memberCoupon.getApplyType(),Constants.ZERO)){ memberCoupon.setValidAmount(memberCoupon.getPrice()); memberCoupon.setValidAmount(memberCoupon.getMaxPrice()); memberCouponList.add(memberCoupon); }else{ List<String> applyIdList = Arrays.asList(memberCoupon.getApplyIds().split(",")); @@ -604,13 +608,13 @@ isVaildUse(applyIdList,goodsCalculateList,memberCoupon.getApplyType()); BigDecimal skuAmount = goodsCalculateList.stream().filter(i->i.getUseCoupon()).map(i->i.getSkuAmount()).reduce(BigDecimal.ZERO,BigDecimal::add); if(skuAmount.compareTo(memberCoupon.getLimitPrice())>=Constants.ZERO){ //æ ¹æ®éé¢è®¡ç®å®é ææ£éé¢ BigDecimal couponPrice = skuAmount.multiply(memberCoupon.getPrice()).divide(new BigDecimal("100"),2, RoundingMode.HALF_UP); //æ ¹æ®éé¢è®¡ç®å®é ææ£éé¢ PRICE å卿æ£å¼ ä¾å¦ 5æ åå¨å¼ 5 BigDecimal couponPrice = skuAmount.multiply(memberCoupon.getPrice()).divide(new BigDecimal("10"),2, RoundingMode.HALF_UP); //ææ£éé¢å¤§äºæå¤§å¯ææ£éé¢ åä½¿ç¨æå¤§å¯ææ£éé¢ memberCoupon.setValidAmount(couponPrice.compareTo(memberCoupon.getMaxPrice())>Constants.ZERO?memberCoupon.getMaxPrice():couponPrice); memberCouponList.add(memberCoupon); } } }*/ } } // ä½¿ç¨ Stream æåº reversed() 表示ååº @@ -683,14 +687,15 @@ /** * 计ç®å½å已鿩伿 叿¯ä¸ªååå æ¯éé¢ * 计ç®ä¼æ 叿¯ä¸ªååå æ¯éé¢ * @param coupon 伿 å¸ä¿¡æ¯ * @param goodsCalculateList ååéå * @param totalAmount è®¢åæ»éé¢ * @return å¯ä»¥ä½¿ç¨ä¼æ å¸çååæ»éé¢ */ public void calculateCouponRata(MemberCoupon coupon,List<OrderGoodsCalculateResponse> goodsCalculateList,BigDecimal totalAmount){ public BigDecimal calculateCouponRata(MemberCoupon coupon,List<OrderGoodsCalculateResponse> goodsCalculateList,BigDecimal totalAmount){ //æ»ä½é¢ BigDecimal validAmount = coupon.getValidAmount(); BigDecimal validAmount = coupon.getMaxPrice(); //å©ä½å¯åé éé¢ BigDecimal surplusValidAmount = validAmount; //å·²ç¨å æ¯æ¯ä¾å¼ @@ -699,12 +704,22 @@ if(!Constants.equalsInteger(coupon.getApplyType(),Constants.ZERO)){ List<String> applyIdList = Arrays.asList(coupon.getApplyIds().split(",")); isVaildUse(applyIdList,goodsCalculateList,coupon.getApplyType()); //Constants.equalsInteger(coupon.getApplyType(),Constants.ONE)?Constants.ONE:Constants.ZERO); }else{ isVaildUse(null,goodsCalculateList,coupon.getApplyType()); } //使ç¨äºä¼æ å¸çååæ°é Integer countCouponNum = goodsCalculateList.stream().filter(i->i.getUseCoupon()).collect(Collectors.toList()).size(); //使ç¨ä¼æ å¸çæ»éé¢ BigDecimal useCouponPrice = goodsCalculateList.stream().filter(i->i.getUseCoupon()) .map(i->i.getSkuAmount()).reduce(BigDecimal.ZERO,BigDecimal::add); if(Constants.equalsInteger(coupon.getCouponType(),Constants.ONE)){ //æå¤§å¯ä¼æ éé¢ BigDecimal couponAmount = useCouponPrice.multiply(coupon.getPrice()).divide(new BigDecimal("10"),2,BigDecimal.ROUND_DOWN); if(couponAmount.compareTo(validAmount)<=Constants.ZERO){ validAmount = couponAmount; surplusValidAmount = validAmount; } } Integer useCouponNum = Constants.ZERO; for (int i = 0; i < goodsCalculateList.size(); i++) { if(!goodsCalculateList.get(i).getUseCoupon()){ @@ -714,6 +729,7 @@ if(Constants.equalsInteger(useCouponNum+1,countCouponNum)){ goodsCalculateList.get(i).setOrderCouponRata(new BigDecimal("1").subtract(rata)); goodsCalculateList.get(i).setCouponDeductCash(surplusValidAmount); surplusValidAmount = BigDecimal.ZERO; break; } goodsCalculateList.get(i).setOrderCouponRata(goodsCalculateList.get(i).getSkuAmount().divide(totalAmount,2,BigDecimal.ROUND_DOWN)); @@ -722,6 +738,8 @@ rata = rata.add(goodsCalculateList.get(i).getOrderCouponRata()); useCouponNum = useCouponNum + 1; } coupon.setValidAmount(validAmount.subtract(surplusValidAmount)); return useCouponPrice; } server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java
@@ -724,9 +724,7 @@ String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.SHOP_FILE).getCode(); for(Shop model:shopList){ model.setImgFullUrl(StringUtils.isNotBlank(model.getImgurl())?path+model.getImgurl():null); } return shopList; } server/dmmall_service/src/main/java/com/doumee/service/business/impl/UserActionServiceImpl.java
@@ -85,9 +85,9 @@ String before, String after) { String info = type.getInfo(); if(params!=null){ if(params!=null&&info!= null){ for (int i = 0; i < params.length; i++) { info = info.replace("${param"+(i+1)+"}",params[i]); info = info.replace("${param"+(i+1)+"}",StringUtils.defaultString(params[i],"")); } } UserAction userAction=new UserAction();