记得上下班打卡 | git大法好,push需谨慎

Commit 6f9d922f authored by anjiabin's avatar anjiabin
parents cb36fe7f 11a9d715
......@@ -2,6 +2,7 @@ package com.liquidnet.service.kylin.dto.param;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
/**
......@@ -25,6 +26,7 @@ public class RefundApplyParam implements Serializable {
private Double RefundPriceExpress;
private List<String> ticketEntityIds;
private List<BigDecimal> entitiesPrice;
private List<String> ids;
......
package com.liquidnet.service.kylin.dto.vo.returns;
import com.liquidnet.service.kylin.dao.KylinOrderTicketEntitiesDao;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
import lombok.Data;
import java.util.List;
@Data
public class RefundOrderDetailsVo {
private KylinOrderTicketVo orderTicketVo;
private KylinPerformanceVo kylinPerformanceVo;
private List<KylinOrderTicketEntitiesDao> KylinOrderTicketEntitiesDao;
}
......@@ -14,6 +14,7 @@ import com.liquidnet.service.kylin.dto.param.RefundApplyParam;
import com.liquidnet.service.kylin.dto.param.RefundSearchParam;
import com.liquidnet.service.kylin.dto.vo.admin.OrderDetailsAdminVo;
import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderRefundsVo;
import com.liquidnet.service.kylin.dto.vo.returns.RefundOrderDetailsVo;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
......@@ -70,8 +71,8 @@ public class KylinOrderRefundAdminController extends BaseController {
@PostMapping("applyOrder")
@ResponseBody
public OrderDetailsAdminVo applyOrder(RefundApplyParam refundApplyParam) {
OrderDetailsAdminVo orderInfo = kylinOrderRefundsServiceImpl.orderDetails(refundApplyParam.getOrderCode());
public RefundOrderDetailsVo applyOrder(RefundApplyParam refundApplyParam) {
RefundOrderDetailsVo orderInfo = kylinOrderRefundsServiceImpl.orderDetails(refundApplyParam.getOrderCode());
return orderInfo;
}
......
......@@ -26,15 +26,15 @@ liquidnet:
database-name: dev_ln_scene
url-refund:
apply: "http://testpay.zhengzai.tv/refund/single"
notify: "https://devzuul.zhengzai.tv/kylin/refund/callback"
notify: "https://devkylin.zhengzai.tv/kylin/refund/callback"
url-banner:
provinces: "https://devservice.zhengzai.tv/provinces" #省份
url1: "https://devmediaapi.zhengzai.tv/api/video/list?per_page=50&page=1&type=1" #PGC点播
url2: "https://devmediaapi.zhengzai.tv/api/video/list?per_page=50&page=1&type=2" #PGC直播
url5: "https://devmall.zhengzai.tv/admin/fieldListForQuick?page=1&per_page=50" #场地
url6: "https://devzuul.zhengzai.tv/kylin/performances/roadShow/performance/status?pageNum=1&pageSize=50&status=3,6,7,8,9,10&title=''" #票务
url6: "https://devkylin.zhengzai.tv/kylin/performances/roadShow/performance/status?pageNum=1&pageSize=50&status=3,6,7,8,9,10&title=''" #票务
url7: "https://devmall.zhengzai.tv/admin/goodListForQuick?page=1&per_page=50" #商品
url8: "https://devzuul.zhengzai.tv/kylin/performances/roadShow/list?pageNum=1&pageSize=50" #巡演
url8: "https://devkylin.zhengzai.tv/kylin/performances/roadShow/list?pageNum=1&pageSize=50" #巡演
url13: "https://devmall.zhengzai.tv/admin/integrationListForQuick?page=1&per_page=50" #积分商城
url14: "https://devmall.zhengzai.tv/admin/good/collective/quick?page=1&per_page=50" #商品集合
url20: "https://devmerchantapi.zhengzai.tv/admin/mis/musician/quick?page=1&per_page=50" #音乐人
......
......@@ -26,15 +26,15 @@ liquidnet:
database-name: test_ln_scene
url-refund:
apply: "http://pay.zhengzai.tv/refund/single"
notify: "https://zuul.zhengzai.tv/kylin/refund/callback"
notify: "https://kylin.zhengzai.tv/kylin/refund/callback"
url-banner:
provinces: "https://service.zhengzai.tv/provinces" #省份
url1: "https://mediaapi.zhengzai.tv/api/video/list?per_page=50&page=1&type=1" #PGC点播
url2: "https://mediaapi.zhengzai.tv/api/video/list?per_page=50&page=1&type=2" #PGC直播
url5: "https://mall.zhengzai.tv/admin/fieldListForQuick?page=1&per_page=50" #场地
url6: "https://zuul.zhengzai.tv/kylin/performances/roadShow/performance/status?pageNum=1&pageSize=50&status=3,6,7,8,9,10&title=''" #票务
url6: "https://kylin.zhengzai.tv/kylin/performances/roadShow/performance/status?pageNum=1&pageSize=50&status=3,6,7,8,9,10&title=''" #票务
url7: "https://mall.zhengzai.tv/admin/goodListForQuick?page=1&per_page=50" #商品
url8: "https://zuul.zhengzai.tv/kylin/performances/roadShow/list?pageNum=1&pageSize=50" #巡演
url8: "https://kylin.zhengzai.tv/kylin/performances/roadShow/list?pageNum=1&pageSize=50" #巡演
url13: "https://mall.zhengzai.tv/admin/integrationListForQuick?page=1&per_page=50" #积分商城
url14: "https://mall.zhengzai.tv/admin/good/collective/quick?page=1&per_page=50" #商品集合
url20: "https://merchantapi.zhengzai.tv/admin/mis/musician/quick?page=1&per_page=50" #音乐人
......
......@@ -26,15 +26,15 @@ liquidnet:
database-name: test_ln_scene
url-refund:
apply: "http://testpay.zhengzai.tv/refund/single"
notify: "https://zuul.zhengzai.tv/kylin/refund/callback"
notify: "https://testkylin.zhengzai.tv/kylin/refund/callback"
url-banner:
provinces: "https://testservice.zhengzai.tv/provinces" #省份
url1: "https://testmediaapi.zhengzai.tv/api/video/list?per_page=50&page=1&type=1" #PGC点播
url2: "https://testmediaapi.zhengzai.tv/api/video/list?per_page=50&page=1&type=2" #PGC直播
url5: "https://testmall.zhengzai.tv/admin/fieldListForQuick?page=1&per_page=50" #场地
url6: "https://zuul.zhengzai.tv/kylin/kylin/performances/roadShow/performance/status?pageNum=1&pageSize=50&status=3,6,7,8,9,10&title=''" #票务
url6: "https://testkylin.zhengzai.tv/kylin/kylin/performances/roadShow/performance/status?pageNum=1&pageSize=50&status=3,6,7,8,9,10&title=''" #票务
url7: "https://testmall.zhengzai.tv/admin/goodListForQuick?page=1&per_page=50" #商品
url8: "https://zuul.zhengzai.tv/kylin/performances/roadShow/list?pageNum=1&pageSize=50" #巡演
url8: "https://testkylin.zhengzai.tv/kylin/performances/roadShow/list?pageNum=1&pageSize=50" #巡演
url13: "https://testmall.zhengzai.tv/admin/integrationListForQuick?page=1&per_page=50" #积分商城
url14: "https://testmall.zhengzai.tv/admin/good/collective/quick?page=1&per_page=50" #商品集合
url20: "https://testmerchantapi.zhengzai.tv/admin/mis/musician/quick?page=1&per_page=50" #音乐人
......
......@@ -8,28 +8,34 @@
<form class="form-horizontal m" id="form-post-add">
<input hidden="hidden" type="text" name="orderTicketsId" id="orderTicketsId">
<div class="form-group">
<label class="col-sm-3 control-label is-required">订单编号:</label>
<div class="col-sm-8">
<label class="col-sm-2 control-label is-required">订单编号:</label>
<div class="col-sm-10">
<input class="form-control" type="text" name="orderCode" id="orderCode" required>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">快递费:</label>
<div class="col-sm-8">
<label class="col-sm-2 control-label is-required">演出名称:</label>
<div class="col-sm-10">
<span id="performanceTitle"></span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">快递费:</label>
<div class="col-sm-10">
<input class="form-control" type="number" min="0" name="RefundPriceExpress">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label is-required">入场人:</label>
<div class="col-sm-8">
<label class="col-sm-2 control-label is-required">入场人:</label>
<div class="col-sm-10">
<div class="col-sm-12 select-table table-bordered">
<table id="bootstrap-table"></table>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label layui-required is-required">备注:</label>
<div class="col-sm-8">
<label class="col-sm-2 control-label layui-required is-required">备注:</label>
<div class="col-sm-10">
<textarea name="reason" maxlength="500" class="form-control layui-required" rows="3"></textarea>
</div>
</div>
......@@ -63,29 +69,93 @@
$("#orderTicketsId").val(result.orderTicketVo.orderTicketsId);
$('input[name="RefundPriceExpress"]').val(result.orderTicketVo.priceExpress);
$('input[name="RefundPriceExpress"]').attr("max", result.orderTicketVo.priceExpress);
$("#performanceTitle").text(result.kylinPerformanceVo.title);
var options = {
data: result.orderTicketEntitiesVo,
data: result.kylinOrderTicketEntitiesDao,
pagination: false,
columns: [{
checkbox: true
},
{
field: 'orderTicketEntitiesId',
title: '入场人id'
title: '入场人表id',
ignore: false
},
{
field: 'title',
title: '票种名称'
},
{
field: '',
title: '适用时间',
formatter: function (value, row, index) {
return row.useStart + "<br>" + row.useEnd;
}
},
{
field: 'enterName',
title: '入场人'
},
{
field: '',
title: '票状态',
formatter: function (value, row, index) {
var isPayment = "";
switch (row.isPayment) {
case 0:
isPayment = "未支付";
break;
case 1:
isPayment = "已支付";
break;
case 2:
isPayment = "退款中";
break;
case 3:
isPayment = "已退款";
break;
}
return isPayment;
}
},
{
field: 'price',
title: '价格'
},
{
field: '',
title: '取票方式',
formatter: function (value, row, index) {
if (row.getTicketType == "electronic") {
return "电子票";
} else {
return "快递票";
}
}
},
{
field: '',
title: '是否出票',
formatter: function (value, row, index) {
if (row.isOut == 1) {
return "已出票";
} else {
return "未出票";
}
}
},
{
field: '',
title: '退款金额',
formatter: function (value, row, index) {
var price = result.orderTicketVo.price;
var html = '<input class="form-control" type="number" min="0.01" max="'+price+'" name="entitiesPrice" value="'+price+'">';
var html = '<input class="form-control entitiesPrice" type="number" min="0.01" max="'+price+'" name="entitiesPrice" value="'+price+'">';
return html;
}
},
]
};
$.table.init(options);
// $('#bootstrap-table').
}
$.modal.closeLoading();
}
......@@ -108,7 +178,10 @@
if ($.validate.form()) {
var data = $('#form-post-add').serializeArray();
data.push({"name":"ticketEntityIds","value":rows});
$.operate.save(prefix + "/apply", data);
var entitiesPrice = $.table.selectColumns("price");
data.push({"name":"entitiesPrice","value":entitiesPrice});
console.log(data)
// $.operate.save(prefix + "/apply", data);
}
}
</script>
......
package com.liquidnet.client.admin.zhengzai.kylin.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
......@@ -9,19 +8,18 @@ import com.liquidnet.commons.lang.util.BeanUtil;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.constant.KylinTableStatusConst;
import com.liquidnet.service.kylin.dao.KylinOrderRefundsEntitiesDao;
import com.liquidnet.service.kylin.dao.KylinOrderTicketEntitiesDao;
import com.liquidnet.service.kylin.dao.OrderRefundDao;
import com.liquidnet.service.kylin.dto.param.RefundApplyParam;
import com.liquidnet.service.kylin.dto.param.RefundSearchParam;
import com.liquidnet.service.kylin.dto.vo.admin.OrderDetailsAdminVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderRefundsVo;
import com.liquidnet.service.kylin.entity.KylinOrderRefunds;
import com.liquidnet.service.kylin.entity.KylinOrderTicketEntities;
import com.liquidnet.service.kylin.entity.KylinOrderTicketStatus;
import com.liquidnet.service.kylin.entity.KylinOrderTickets;
import com.liquidnet.service.kylin.mapper.KylinOrderRefundsMapper;
import com.liquidnet.service.kylin.mapper.KylinOrderTicketEntitiesMapper;
import com.liquidnet.service.kylin.mapper.KylinOrderTicketStatusMapper;
import com.liquidnet.service.kylin.mapper.KylinOrderTicketsMapper;
import com.liquidnet.service.kylin.dto.vo.returns.RefundOrderDetailsVo;
import com.liquidnet.service.kylin.entity.*;
import com.liquidnet.service.kylin.mapper.*;
import com.liquidnet.service.kylin.service.IKylinOrderRefundsService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
......@@ -29,6 +27,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
......@@ -58,7 +57,10 @@ public class KylinOrderRefundsServiceImpl extends ServiceImpl<KylinOrderRefundsM
private KylinOrderTicketEntitiesMapper kylinOrderTicketEntitiesMapper;
@Autowired
private KylinOrderTicketsAdminServiceImpl kylinOrderTicketsAdminServiceImpl;
private KylinOrderTicketRelationsMapper kylinOrderTicketRelationsMapper;
@Autowired
private KylinPerformancesMapper kylinPerformancesMapper;
@Autowired
MongoTemplate mongoTemplate;
......@@ -241,11 +243,43 @@ public class KylinOrderRefundsServiceImpl extends ServiceImpl<KylinOrderRefundsM
return pageInfoTmp;
}
public OrderDetailsAdminVo orderDetails(String orderCode) {
LambdaQueryWrapper<KylinOrderTickets> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(KylinOrderTickets::getOrderCode, orderCode);
KylinOrderTickets kylinOrderTickets = kylinOrderTicketsMapper.selectOne(wrapper);
public RefundOrderDetailsVo orderDetails(String orderCode) {
// 订单
KylinOrderTickets kylinOrderTickets = kylinOrderTicketsMapper.selectOne(
new QueryWrapper<KylinOrderTickets>().eq("order_code", orderCode)
);
// 订单关联 获取演出id
KylinOrderTicketRelations kylinOrderTicketRelations = kylinOrderTicketRelationsMapper.selectOne(
new QueryWrapper<KylinOrderTicketRelations>().eq("order_id", kylinOrderTickets.getOrderTicketsId())
);
// 演出
KylinPerformances kylinPerformances = kylinPerformancesMapper.selectOne(
new QueryWrapper<KylinPerformances>().eq("performances_id", kylinOrderTicketRelations.getPerformanceId())
);
List<KylinOrderTicketEntitiesDao> entitiesList = kylinOrderTicketEntitiesMapper.getRefundEntitiesList(kylinOrderTickets.getOrderTicketsId());
KylinOrderTicketVo kylinOrderTicketVo = new KylinOrderTicketVo();
BeanUtil.copy(kylinOrderTickets,kylinOrderTicketVo);
KylinPerformanceVo performanceVo = new KylinPerformanceVo();
BeanUtil.copy(kylinPerformances,performanceVo);
/*List<KylinOrderTicketEntitiesDao> entitiesListDao = new ArrayList();
KylinOrderTicketEntitiesDao kylinOrderTicketEntitiesDao = new KylinOrderTicketEntitiesDao();
for (KylinOrderTicketEntitiesDao entities : entitiesList) {
BeanUtil.copy(entities, kylinOrderTicketEntitiesDao);
entitiesListDao.add(entities);
}
BeanUtil.copy(entitiesList,kylinOrderTicketEntitiesDao);*/
RefundOrderDetailsVo refundOrderDetailsVo = new RefundOrderDetailsVo();
refundOrderDetailsVo.setOrderTicketVo(kylinOrderTicketVo);
refundOrderDetailsVo.setKylinPerformanceVo(performanceVo);
refundOrderDetailsVo.setKylinOrderTicketEntitiesDao(entitiesList);
return kylinOrderTicketsAdminServiceImpl.orderDetails(kylinOrderTickets.getOrderTicketsId());
return refundOrderDetailsVo;
}
}
......@@ -126,6 +126,7 @@ global-auth:
- ${liquidnet.info.context}/performance/exclusiveList
- ${liquidnet.info.context}/performance/search
- ${liquidnet.info.context}/performance/list
- ${liquidnet.info.context}/performance/partner/**
- ${liquidnet.info.context}/performance/calendar
- ${liquidnet.info.context}/performance/calendarPerformances
- ${liquidnet.info.context}/performance/*
......
package com.liquidnet.service.kylin.dao;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class KylinOrderTicketEntitiesDao {
/**
* 入场人
*/
private String orderTicketEntitiesId;
private String enterName;
private Integer isOut;
private Integer isPayment;
/**
* 票种
*/
private String title;
private BigDecimal price;
private String useStart;
private String useEnd;
/**
* 订单
*/
private String getTicketType;
}
package com.liquidnet.service.kylin.mapper;
import com.liquidnet.service.kylin.dao.KylinOrderRefundsEntitiesDao;
import com.liquidnet.service.kylin.dao.KylinOrderTicketEntitiesDao;
import com.liquidnet.service.kylin.entity.KylinOrderTicketEntities;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
......@@ -18,4 +19,6 @@ import java.util.List;
public interface KylinOrderTicketEntitiesMapper extends BaseMapper<KylinOrderTicketEntities> {
List<KylinOrderRefundsEntitiesDao> selectEntitiesList(@Param("orderTicketEntitiesIdS") String[] orderTicketEntitiesIdS);
List<KylinOrderTicketEntitiesDao> getRefundEntitiesList(String orderTicketsId);
}
......@@ -13,4 +13,15 @@
</foreach>
</where>
</select>
<select id="getRefundEntitiesList" resultType="com.liquidnet.service.kylin.dao.KylinOrderTicketEntitiesDao">
SELECT a.order_ticket_entities_id, a.enter_name, a.status AS is_out, a.is_payment,
b.title, b.price, b.use_start, b.use_end,
c.get_ticket_type
FROM kylin_order_ticket_entities AS a
JOIN kylin_tickets AS b ON a.ticket_id = b.tickets_id
JOIN kylin_order_tickets AS c ON c.order_tickets_id = a.order_id
<where>
a.order_id = #{orderTicketsId}
</where>
</select>
</mapper>
......@@ -72,7 +72,7 @@ create table adam_user_info
mid int unsigned auto_increment primary key,
uid varchar(64) not null,
nickname varchar(32) comment '昵称',
sex varchar(32) comment '性别',
sex varchar(50) comment '性别',
birthday date comment '生日YYYY-MM-DD',
area varchar(100) comment '常住地/区域',
signature varchar(255) comment '个性签名',
......@@ -80,7 +80,7 @@ create table adam_user_info
background varchar(255) comment '背景图',
qr_code varchar(255) comment '身份二维码',
qr_pic varchar(255) comment '身份二维码',
tag_me varchar(500) comment '音乐标签',
tag_me json comment '音乐标签',
comment text
) engine = InnoDB comment '用户信息';
......
......@@ -16,14 +16,11 @@ import org.bson.Document;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.convert.MongoConverter;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;
/**
* <p>
......@@ -35,8 +32,6 @@ import java.util.List;
*/
@Service
public class AdamUserInfoServiceImpl extends ServiceImpl<AdamUserInfoMapper, AdamUserInfo> implements IAdamUserInfoService {
@Autowired
MongoConverter mongoConverter;
@Autowired
MongoTemplate mongoTemplate;
@Autowired
......@@ -52,25 +47,28 @@ public class AdamUserInfoServiceImpl extends ServiceImpl<AdamUserInfoMapper, Ada
new Document("$set", Document.parse(JsonUtils.toJson(userInfoVo))),
new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)
);
userInfoVo = BsonUtil.toBean(doc, AdamUserInfoVo.class);
if (null != doc) {
userInfoVo = BsonUtil.toBean(doc, AdamUserInfoVo.class);
List<Object> paramList = Arrays.asList(
userInfoVo.getNickname(),
userInfoVo.getSex(),
userInfoVo.getBirthday(),
userInfoVo.getArea(),
userInfoVo.getSignature(),
userInfoVo.getAvatar(),
userInfoVo.getBackground(),
userInfoVo.getQrCode(),
null,// qr_pic
userInfoVo.getTagMe(),
userInfoVo.getUid()
);
rabbitTemplate.convertSendAndReceive(MQConst.EX_LNS_SQL_UCENTER, MQConst.RK_SQL_UCENTER,
SqlMapping.get(userInfoVo.getIsComplete() == 0 ? "adam_user_info.add" : "adam_user_info.edit", paramList.toArray()));
adamRdmService.setUserInfoVoByUid(userInfoVo.getUid(), userInfoVo);
adamRdmService.setUserInfoVoByUid(userInfoVo.getUid(), userInfoVo);
rabbitTemplate.convertSendAndReceive(MQConst.EX_LNS_SQL_UCENTER, MQConst.RK_SQL_UCENTER,
SqlMapping.get(
userInfoVo.getIsComplete() == 0 ? "adam_user_info.add" : "adam_user_info.edit",
userInfoVo.getNickname(),
JsonUtils.toJson(userInfoVo.getSex()),
userInfoVo.getBirthday(),
userInfoVo.getArea(),
userInfoVo.getSignature(),
userInfoVo.getAvatar(),
userInfoVo.getBackground(),
userInfoVo.getQrCode(),
null,// qr_pic
JsonUtils.toJson(userInfoVo.getTagMe()),
userInfoVo.getUid()
)
);
}
}
@Override
......
......@@ -79,7 +79,11 @@ public class BaseDao implements IBaseDao {
TransactionTemplate tt = new TransactionTemplate(transactionManager);
return tt.execute(callback);
} catch (Exception ex) {
log.error("###SQL.Preparing:{}\nParameters:{}", JsonUtils.toJson(sql), JsonUtils.toJson(values), ex);
if (ex instanceof LiquidnetServiceException) {
log.error("###Error.Code:{} - {}", ((LiquidnetServiceException) ex).getCode(), ex.getMessage());
} else {
log.error("###Error.Sqls:{}\nParameters:{}", JsonUtils.toJson(sql), JsonUtils.toJson(values), ex);
}
return false;
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment