|
|
@@ -1,12 +1,8 @@
|
|
|
package com.sqx.modules.order.service.impl;
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
-import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
-import cn.hutool.core.util.URLUtil;
|
|
|
-import com.alibaba.excel.EasyExcel;
|
|
|
-import com.alibaba.excel.converters.longconverter.LongStringConverter;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
@@ -24,14 +20,20 @@ import com.github.wxpay.sdk.WXPay;
|
|
|
import com.sqx.common.constant.RedisKey;
|
|
|
import com.sqx.common.exception.SqxException;
|
|
|
import com.sqx.common.sms.SmsSendResult;
|
|
|
-import com.sqx.common.utils.*;
|
|
|
+import com.sqx.common.utils.Constant;
|
|
|
+import com.sqx.common.utils.DateUtils;
|
|
|
+import com.sqx.common.utils.DistanceUtil;
|
|
|
+import com.sqx.common.utils.MyGlobalThreadPool;
|
|
|
+import com.sqx.common.utils.PageUtils;
|
|
|
+import com.sqx.common.utils.Result;
|
|
|
import com.sqx.modules.activity.entity.ActivityPartRecord;
|
|
|
import com.sqx.modules.activity.service.ActivityPartRecordService;
|
|
|
import com.sqx.modules.activity.service.ActivityService;
|
|
|
import com.sqx.modules.activity.vo.OrderSuitActivityVO;
|
|
|
-import com.sqx.modules.address.dao.AddressDao;
|
|
|
import com.sqx.modules.address.entity.Address;
|
|
|
+import com.sqx.modules.address.entity.InsideAddress;
|
|
|
import com.sqx.modules.address.service.AddressService;
|
|
|
+import com.sqx.modules.address.service.InsideAddressService;
|
|
|
import com.sqx.modules.app.dao.UserBrowseDao;
|
|
|
import com.sqx.modules.app.dao.UserDao;
|
|
|
import com.sqx.modules.app.dao.UserMoneyDao;
|
|
|
@@ -47,7 +49,6 @@ import com.sqx.modules.common.service.CommonInfoService;
|
|
|
import com.sqx.modules.coupon.dao.TbCouponUserDao;
|
|
|
import com.sqx.modules.coupon.entity.TbCouponUser;
|
|
|
import com.sqx.modules.datacentre.entity.SysUserShop;
|
|
|
-import com.sqx.modules.errand.dao.TbIndentDao;
|
|
|
import com.sqx.modules.errand.entity.TbIndent;
|
|
|
import com.sqx.modules.errand.entity.TbIndentSmsSendLog;
|
|
|
import com.sqx.modules.errand.service.TbIndentService;
|
|
|
@@ -101,15 +102,11 @@ import com.sqx.modules.shop.service.ShopTypeService;
|
|
|
import com.sqx.modules.sys.entity.SysUserEntity;
|
|
|
import com.sqx.modules.sys.service.SysUserService;
|
|
|
import com.sqx.modules.utils.SenInfoCheckUtil;
|
|
|
+import com.sqx.modules.utils.excel.EasyExcelUtil;
|
|
|
import com.sqx.modules.utils.excel.ExcelData;
|
|
|
import com.sqx.modules.utils.fieYun.FeiYunUtils;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
-import org.apache.http.client.methods.HttpPost;
|
|
|
-import org.apache.http.entity.StringEntity;
|
|
|
-import org.apache.http.impl.client.CloseableHttpClient;
|
|
|
-import org.apache.http.impl.client.HttpClients;
|
|
|
-import org.apache.http.util.EntityUtils;
|
|
|
import org.apache.shiro.SecurityUtils;
|
|
|
import org.redisson.api.RLock;
|
|
|
import org.redisson.api.RedissonClient;
|
|
|
@@ -121,16 +118,10 @@ import org.springframework.transaction.TransactionStatus;
|
|
|
import org.springframework.transaction.annotation.Propagation;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.transaction.support.DefaultTransactionDefinition;
|
|
|
-import org.springframework.web.context.request.RequestAttributes;
|
|
|
-import org.springframework.web.context.request.RequestContextHolder;
|
|
|
-import org.springframework.web.context.request.ServletRequestAttributes;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
-import javax.servlet.http.HttpServletResponse;
|
|
|
-import java.io.IOException;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
-import java.nio.charset.StandardCharsets;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.LocalTime;
|
|
|
@@ -186,8 +177,6 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
@Autowired
|
|
|
private UserMoneyService userMoneyService;
|
|
|
@Autowired
|
|
|
- private TbIndentDao tbIndentDao;
|
|
|
- @Autowired
|
|
|
private UserBrowseDao userBrowseDao;
|
|
|
@Autowired
|
|
|
private PayDetailsDao payDetailsDao;
|
|
|
@@ -216,16 +205,16 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
private UserIntegralDao userIntegralDao;
|
|
|
@Autowired
|
|
|
private UserIntegralDetailsDao userIntegralDetailsDao;
|
|
|
-
|
|
|
@Autowired
|
|
|
private EvaluateRiderService evaluateRiderService;
|
|
|
@Autowired
|
|
|
private ShopTypeService shopTypeService;
|
|
|
-
|
|
|
@Autowired
|
|
|
private GoodsShopService goodsShopService;
|
|
|
|
|
|
@Resource
|
|
|
+ private InsideAddressService insideAddressService;
|
|
|
+ @Resource
|
|
|
private RedissonClient redissonClient;
|
|
|
|
|
|
private final static String RHT_PAY_BASE_URL = "https://api.ekbuyclub.com";
|
|
|
@@ -1020,7 +1009,7 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 计算店铺收益 店铺订单收益=订单应付金额+订单使用的优惠券金额-跑腿费用
|
|
|
+ * 计算店铺收益 店铺订单收益=订单应付金额+订单使用的优惠券金额-跑腿费用-校内配送费用
|
|
|
*
|
|
|
* @param order 订单信息
|
|
|
* @param goodsShop 店铺信息
|
|
|
@@ -1034,6 +1023,8 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
sumMoney = sumMoney.subtract(goodsShop.getErrandMoney());
|
|
|
}
|
|
|
|
|
|
+ sumMoney = sumMoney.subtract(order.getInsideDeliveryFee());
|
|
|
+
|
|
|
BigDecimal shopMoney = sumMoney.multiply(shopRate);
|
|
|
order.setShopIncomeMoney(shopMoney.setScale(2, BigDecimal.ROUND_DOWN));
|
|
|
|
|
|
@@ -1110,6 +1101,12 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
throw new SqxException("超出商家配送范围,无法点餐!");
|
|
|
}
|
|
|
|
|
|
+ Long insideAddressId = address.getInsideAddressId();
|
|
|
+ if (ObjectUtil.isNotNull(insideAddressId)) {
|
|
|
+ InsideAddress insideAddress = insideAddressService.getById(insideAddressId);
|
|
|
+ order.setInsideDeliveryFee(insideAddress.getDeliveryFee());
|
|
|
+ }
|
|
|
+
|
|
|
// 店铺是否开启配送费满减 0是 1否
|
|
|
Integer enableFullReductionFlag = goodsShop.getEnableFullReductionFlag() != null ? goodsShop.getEnableFullReductionFlag() : 1;
|
|
|
// 店铺跑腿费
|
|
|
@@ -1143,6 +1140,9 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
|
|
|
order.setErrandMoney(shopErrandMoney);
|
|
|
|
|
|
+ // 支付金额加入内部配送费
|
|
|
+ order.setPayMoney(order.getPayMoney().add(order.getInsideDeliveryFee()));
|
|
|
+
|
|
|
// 判断订单金额是否大于最低起送金额
|
|
|
if (goodsShop.getMinimumDelivery() == null) {
|
|
|
goodsShop.setMinimumDelivery(BigDecimal.valueOf(0));
|
|
|
@@ -1167,8 +1167,7 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
order.setErrandMoney(BigDecimal.ZERO);
|
|
|
}
|
|
|
|
|
|
- log.info("preOrder==>[{}],订单跑腿费计算结束,跑腿费[{}],当前订单应付总价[{}]",
|
|
|
- order.getOrderId(), order.getErrandMoney(), order.getPayMoney());
|
|
|
+ log.info("preOrder==>[{}],订单跑腿费计算结束,跑腿费[{}],校内配送费[{}],当前订单应付总价[{}]", order.getOrderId(), order.getErrandMoney(), order.getInsideDeliveryFee(), order.getPayMoney());
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -1361,49 +1360,6 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
return Result.success().put("data", orderGoodsList);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- /*public Result insertOrder1(Long userId, Long shopId, Long goodsId, Integer num, Long skuId, String skuMessage, Integer orderType) {
|
|
|
- //判断该用户在该商店有没有订单,没有的话创建订单,有的话加入订单
|
|
|
- List<TbOrder> tbOrder1 = appOrderDao.selectList(new QueryWrapper<TbOrder>()
|
|
|
- .eq("user_id", userId).eq("shop_id", shopId).eq("status", 1));
|
|
|
-
|
|
|
- if(tbOrder1==null) {
|
|
|
- Goods goods = goodsDao.selectById(goodsId);
|
|
|
- UserEntity userEntity = userDao.selectById(userId);
|
|
|
- net.sf.json.JSONObject goodsJson = net.sf.json.JSONObject.fromObject(goods);
|
|
|
-
|
|
|
- TbOrder order = new TbOrder();
|
|
|
- order.setUserId(userId);
|
|
|
- order.setUserName(userEntity.getUserName());
|
|
|
- order.setPhone(userEntity.getPhone());
|
|
|
- order.setOrderNumber(getGeneralOrder());
|
|
|
- order.setIsPay(0);
|
|
|
- order.setDeleteFlag(0);
|
|
|
- order.setStatus(1);
|
|
|
- // order.setNum(num);
|
|
|
- order.setShopId(shopId);
|
|
|
- //创建订单,订单发起人就是该登录用户
|
|
|
- order.setParentUserId(userId);
|
|
|
- order.setPackMoney(goods.getPackMoney());
|
|
|
- order.setOrderType(orderType);
|
|
|
- order.setCreateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
|
|
|
- if (orderType == 2) {
|
|
|
- CommonInfo one = commonInfoService.findOne(121);
|
|
|
- Double value = Double.valueOf(one.getValue());
|
|
|
- order.setErrandMoney(BigDecimal.valueOf(value));
|
|
|
- }
|
|
|
- appOrderDao.insertOrder(order);
|
|
|
- TbOrder tbOrder = new TbOrder();
|
|
|
- tbOrder.setOrderId(order.getOrderId());
|
|
|
- tbOrder.setParentId(order.getOrderId());
|
|
|
- appOrderDao.updateById(tbOrder);
|
|
|
- }
|
|
|
- return Result.success();
|
|
|
- }*/
|
|
|
-
|
|
|
-
|
|
|
@Override
|
|
|
public TbOrder selectOrderByNum(String orderNum) {
|
|
|
TbOrder tbOrder = appOrderDao.selectOne(new QueryWrapper<TbOrder>().eq("order_number", orderNum));
|
|
|
@@ -1438,22 +1394,6 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
@Override
|
|
|
public Result selectAllOrderAdmin(OrderQueryDto queryDto) {
|
|
|
Page<TbOrder> pages = new Page<>(queryDto.getPage(), queryDto.getLimit());
|
|
|
-// pages.setOptimizeCountSql(false);
|
|
|
-// pages.setSearchCount(false);
|
|
|
-// pages.setTotal()
|
|
|
-
|
|
|
-// if (org.springframework.util.StringUtils.hasText(queryDto.getEndTime())) {
|
|
|
-// queryDto.setEndTime(queryDto.getEndTime() + " 23:59:59");
|
|
|
-// }
|
|
|
-// if (org.springframework.util.StringUtils.hasText(queryDto.getPayEndTime())) {
|
|
|
-// queryDto.setPayEndTime(queryDto.getPayEndTime() + " 23:59:59");
|
|
|
-// }
|
|
|
-// if (org.springframework.util.StringUtils.hasText(queryDto.getStartTime())) {
|
|
|
-// queryDto.setStartTime(queryDto.getStartTime() + " 00:00:00");
|
|
|
-// }
|
|
|
-// if (org.springframework.util.StringUtils.hasText(queryDto.getPayStartTime())) {
|
|
|
-// queryDto.setPayStartTime(queryDto.getPayStartTime() + " 00:00:00");
|
|
|
-// }
|
|
|
IPage<TbOrder> tbOrderIPage = appOrderDao.selectAllOrderAdmin(pages, queryDto);
|
|
|
for (int i = 0; i < tbOrderIPage.getRecords().size(); i++) {
|
|
|
List<OrderGoods> orderGoodsList = orderGoodsDao.selectList(new QueryWrapper<OrderGoods>()
|
|
|
@@ -1469,21 +1409,11 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
if (org.springframework.util.StringUtils.hasText(queryDto.getEndTime())) {
|
|
|
queryDto.setEndTime(queryDto.getEndTime() + " 23:59:59");
|
|
|
}
|
|
|
- // if (org.springframework.util.StringUtils.hasText(queryDto.getPayEndTime())) {
|
|
|
- // queryDto.setPayEndTime(queryDto.getPayEndTime() + " 23:59:59");
|
|
|
- // }
|
|
|
if (org.springframework.util.StringUtils.hasText(queryDto.getStartTime())) {
|
|
|
queryDto.setStartTime(queryDto.getStartTime() + " 00:00:00");
|
|
|
}
|
|
|
- // if (org.springframework.util.StringUtils.hasText(queryDto.getPayStartTime())) {
|
|
|
- // queryDto.setPayStartTime(queryDto.getPayStartTime() + " 00:00:00");
|
|
|
- // }
|
|
|
+
|
|
|
List<TbOrder> tbOrderIPage = appOrderDao.excelAllOrderAdmin(queryDto);
|
|
|
-// for (int i = 0; i < tbOrderIPage.size(); i++) {
|
|
|
-// List<OrderGoods> orderGoodsList = orderGoodsDao.selectList(new QueryWrapper<OrderGoods>()
|
|
|
-// .eq("order_id", tbOrderIPage.get(i).getOrderId()));
|
|
|
-// tbOrderIPage.get(i).setOrderGoodsList(orderGoodsList);
|
|
|
-// }
|
|
|
ExcelData data = new ExcelData();
|
|
|
data.setName("订单列表");
|
|
|
List<String> titles = new ArrayList();
|
|
|
@@ -1556,17 +1486,6 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
row.add(order.getRiderPhone());
|
|
|
row.add(order.getReceivingTime());
|
|
|
row.add(order.getOrderNumber());
|
|
|
-// stringBuffer=new StringBuffer();
|
|
|
-// BigDecimal sumGoodsPrice=BigDecimal.ZERO;
|
|
|
-// List<OrderGoods> orderGoodsList = order.getOrderGoodsList();
|
|
|
-// for(int i=0;i<orderGoodsList.size();i++){
|
|
|
-// OrderGoods orderGoods = orderGoodsList.get(i);
|
|
|
-// stringBuffer.append(i + 1).append(". 商品名:").append(orderGoods.getGoodsName()).append(",数量:").append(orderGoods.getGoodsNum()).append(",规格:").append(orderGoods.getSkuMessage());
|
|
|
-// if(orderGoods.getGoodsPrice()!=null && orderGoods.getGoodsNum()!=null){
|
|
|
-// BigDecimal goodsPrice = orderGoods.getGoodsPrice().multiply(BigDecimal.valueOf(orderGoods.getGoodsNum()));
|
|
|
-// sumGoodsPrice=sumGoodsPrice.add(goodsPrice);
|
|
|
-// }
|
|
|
-// }
|
|
|
row.add(order.getDetail());
|
|
|
row.add(order.getSumPrice());
|
|
|
row.add(order.getCouponMoney());
|
|
|
@@ -1697,9 +1616,6 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
tbOrder.setShopName(goodsShop.getShopName());
|
|
|
tbOrder.setShopPhone(goodsShop.getPhone());
|
|
|
}
|
|
|
-// if (tbOrder.getOrderTypeExtra() == 2 && "2".equals(tbOrder.getIndentState())) {
|
|
|
-// tbOrder.setStatus(13);
|
|
|
-// }
|
|
|
List<OrderGoods> orderGoodsList = orderGoodsDao.selectList(new QueryWrapper<OrderGoods>().eq("order_id", tbOrder.getOrderId()));
|
|
|
tbOrder.setOrderGoodsList(orderGoodsList);
|
|
|
TbIndent tbIndent = tbIndentService.getOne(new QueryWrapper<TbIndent>().eq("order_id", tbOrder.getOrderId()));
|
|
|
@@ -1834,7 +1750,6 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
// 生成跑腿订单
|
|
|
tbIndentService.insertIndent(tbOrder);
|
|
|
|
|
|
-
|
|
|
//设置小程序消息推送
|
|
|
CommonInfo one = commonInfoService.findOne(269);
|
|
|
List<String> msgList = new ArrayList<>();
|
|
|
@@ -1861,6 +1776,9 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
sumMoney = sumMoney.subtract(goodsShop.getErrandMoney());
|
|
|
}
|
|
|
|
|
|
+ // 再减去校内配送费
|
|
|
+ sumMoney = sumMoney.subtract(tbOrder.getInsideDeliveryFee());
|
|
|
+
|
|
|
BigDecimal shopMoney = sumMoney.multiply(shopRate);
|
|
|
shopMoney = (shopMoney.setScale(2, BigDecimal.ROUND_DOWN));
|
|
|
tbOrder.setShopIncomeMoney(shopMoney);
|
|
|
@@ -2172,6 +2090,9 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ // 再减去校内配送费
|
|
|
+ sumMoney = sumMoney.subtract(tbOrder.getInsideDeliveryFee());
|
|
|
+
|
|
|
// 店铺收入
|
|
|
BigDecimal shopMoney = sumMoney.multiply(shopRate);
|
|
|
shopMoney = shopMoney.setScale(2, BigDecimal.ROUND_DOWN);
|
|
|
@@ -2244,6 +2165,7 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
contentBuffer.append("跑腿费:").append(errandMoney.setScale(2, BigDecimal.ROUND_DOWN)).append("(").append(tbOrder.getErrandMoneyIsShop()).append(")").append(",");
|
|
|
}
|
|
|
|
|
|
+ contentBuffer.append("特殊地址跑腿费:").append(tbOrder.getInsideDeliveryFee().setScale(2, BigDecimal.ROUND_DOWN)).append(",");
|
|
|
contentBuffer.append("平台服务费:").append(pingRate.setScale(2, BigDecimal.ROUND_DOWN)).append(",");
|
|
|
contentBuffer.append("短信服务费:").append(smsSendMoney.setScale(2, BigDecimal.ROUND_DOWN)).append(",");
|
|
|
contentBuffer.append("到账金额:").append(shopMoney.setScale(2, BigDecimal.ROUND_DOWN));
|
|
|
@@ -2552,7 +2474,6 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
|
|
|
@Override
|
|
|
public Result selectBuyGoods(Long userId, Long orderId) {
|
|
|
- // TbOrder tbOrder = appOrderDao.selectOne(new QueryWrapper<TbOrder>().eq("order_id", orderId).eq("user_id", userId));
|
|
|
TbOrder tbOrder = appOrderDao.selectBuyGoods(orderId, userId);
|
|
|
List<OrderGoods> orderGoodsList = orderGoodsDao.selectList(new QueryWrapper<OrderGoods>().eq("order_id", tbOrder.getOrderId()));
|
|
|
tbOrder.setOrderGoodsList(orderGoodsList);
|
|
|
@@ -2969,26 +2890,7 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
IPage<GoodsSkuSalesCountVO> page = baseMapper.getGoodsSkuSalesCount(pages, query);
|
|
|
List<GoodsSkuSalesCountVO> records = page.getRecords();
|
|
|
|
|
|
- try {
|
|
|
- RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
|
|
|
- HttpServletResponse response = ((ServletRequestAttributes) requestAttributes).getResponse();
|
|
|
- response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
|
|
|
- response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
|
|
|
- response.setCharacterEncoding("UTF-8");
|
|
|
-
|
|
|
- String excelName = "sku销售记录_";
|
|
|
- excelName += DateUtil.format(new Date(), "yyyyMMddHHmmss");
|
|
|
- String fileName = URLUtil.encode(excelName, "UTF-8");
|
|
|
- response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
|
|
|
-
|
|
|
- EasyExcel.write(response.getOutputStream(), GoodsSkuSalesCountVO.class)
|
|
|
- .sheet("sheet1")
|
|
|
- .registerConverter(new LongStringConverter())
|
|
|
- .doWrite(records);
|
|
|
- } catch (IOException e) {
|
|
|
- log.error("sku销售记录导出失败:{}", e.getMessage());
|
|
|
- throw new SqxException("sku销售记录导出失败");
|
|
|
- }
|
|
|
+ EasyExcelUtil.exportExcel(records, GoodsSkuSalesCountVO.class, "sku销售记录", "sheet1");
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -3009,6 +2911,4 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
|
|
|
lock.unlock();
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
}
|