Commit 7597afb2 authored by shiyu's avatar shiyu

钱币设置

parent 8d828fab
...@@ -41,6 +41,8 @@ public class ShiroConfig { ...@@ -41,6 +41,8 @@ public class ShiroConfig {
filterChainDefinitionMap.put("/admin/auth/403", "anon"); filterChainDefinitionMap.put("/admin/auth/403", "anon");
filterChainDefinitionMap.put("/actuator/health", "anon"); filterChainDefinitionMap.put("/actuator/health", "anon");
// filterChainDefinitionMap.put("/admin/**", "anon");
filterChainDefinitionMap.put("/admin/**", "authc"); filterChainDefinitionMap.put("/admin/**", "authc");
shiroFilterFactoryBean.setLoginUrl("/admin/auth/401"); shiroFilterFactoryBean.setLoginUrl("/admin/auth/401");
shiroFilterFactoryBean.setSuccessUrl("/admin/auth/index"); shiroFilterFactoryBean.setSuccessUrl("/admin/auth/index");
......
package com.wwdz.ch.admin.controller; package com.wwdz.ch.admin.controller;
import com.wwdz.ch.admin.entity.vo.BidRecordVo; import com.wwdz.ch.admin.entity.vo.BidRecordRequestDto;
import com.wwdz.ch.admin.service.BidRecordService;
import com.wwdz.ch.admin.util.AuthSupport; import com.wwdz.ch.admin.util.AuthSupport;
import com.wwdz.ch.core.type.ListResult; import com.wwdz.ch.core.type.ListResult;
import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.core.type.SimpleResult; import com.wwdz.ch.core.type.SimpleResult;
import com.wwdz.ch.db.domain.BidRecord; import com.wwdz.ch.db.domain.BidRecord;
import com.wwdz.ch.db.service.BidRecordService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@RestController @RestController
@RequestMapping("/admin/bidrecord") @RequestMapping("/admin/bidrecord")
@Validated
@Api
public class BidRecordController { public class BidRecordController {
private static final Logger logger = LoggerFactory.getLogger(BidRecordController.class); private static final Logger logger = LoggerFactory.getLogger(BidRecordController.class);
...@@ -31,24 +27,36 @@ public class BidRecordController { ...@@ -31,24 +27,36 @@ public class BidRecordController {
@Autowired @Autowired
private BidRecordService bidRecordService; private BidRecordService bidRecordService;
// @RequiresPermissions("admin:category:list")
// @RequiresPermissionsDesc(menu = { "商场管理", "成交记录管理" }, button = "查询")
@GetMapping("/list") @GetMapping("/list")
@ApiOperation(value = "成交记录列表") @ApiOperation(value = "成交记录列表")
public ListResult<BidRecordVo> list(@ApiParam("分类id") Integer cid) { public ListResult<BidRecordRequestDto> list(@ApiParam("分类id") Integer cid) {
logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商场管理->成交记录->查询,请求参数:cid:{}", cid); logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商场管理->成交记录->查询,请求参数:cid:{}", cid);
List<BidRecord> collectList = bidRecordService.queryByCid(cid); List<BidRecord> collectList = bidRecordService.queryByCid(cid);
List<BidRecordVo> data = collectList.parallelStream().map(a -> new BidRecordVo(a)).collect(Collectors.toList()); List<BidRecordRequestDto> data = collectList.parallelStream().map(a -> new BidRecordRequestDto(a)).collect(Collectors.toList());
return new ListResult<BidRecordVo>(data, data.size()); return new ListResult<BidRecordRequestDto>(data, data.size());
} }
@PostMapping("/add") @PostMapping("/add")
@ApiOperation(value = "添加成交记录") @ApiOperation(value = "添加成交记录")
public SimpleResult<Boolean> add(@ApiParam("成交记录数据") @RequestBody BidRecordVo record) { public SimpleResult<Boolean> add(@ApiParam("成交记录数据") @RequestBody BidRecordRequestDto record) {
bidRecordService.add(record.toDo()); bidRecordService.add(record.toDo());
return new SimpleResult<>(true); return new SimpleResult<>(true);
} }
@PostMapping("/findDetail")
public Result findDetail(@RequestBody BidRecordRequestDto record) {
BidRecord bidRecord = bidRecordService.queryById(record.getId());
return Result.success(bidRecord);
}
@PostMapping("/update")
@ApiOperation(value = "修改成交记录")
public Result update(@ApiParam("修改成交记录") @RequestBody BidRecordRequestDto record) {
bidRecordService.updateById(record.toDo());
return Result.success();
}
@GetMapping("/delete") @GetMapping("/delete")
@ApiOperation(value = "删除成交记录") @ApiOperation(value = "删除成交记录")
public SimpleResult<Boolean> delete(@ApiParam("成交记录ID") @NotNull Long id) { public SimpleResult<Boolean> delete(@ApiParam("成交记录ID") @NotNull Long id) {
......
...@@ -17,7 +17,7 @@ import org.springframework.web.bind.annotation.*; ...@@ -17,7 +17,7 @@ import org.springframework.web.bind.annotation.*;
* 钱币设置 * 钱币设置
*/ */
@RestController @RestController
@RequestMapping("/admin/setCoin") @RequestMapping("/admin/item")
public class ItemController { public class ItemController {
private static final Logger logger = LoggerFactory.getLogger(ItemController.class); private static final Logger logger = LoggerFactory.getLogger(ItemController.class);
...@@ -25,7 +25,7 @@ public class ItemController { ...@@ -25,7 +25,7 @@ public class ItemController {
@Autowired @Autowired
private ItemService itemService; private ItemService itemService;
@RequiresPermissions("admin:setCoin:findDetail") @RequiresPermissions("admin:item:findDetail")
@RequiresPermissionsDesc(menu = { "钱币列表", "钱币明细" }, button = "查询") @RequiresPermissionsDesc(menu = { "钱币列表", "钱币明细" }, button = "查询")
@PostMapping("/findDetail") @PostMapping("/findDetail")
public Result findDetail(@RequestBody CoinRequestDto coinRequestDto) { public Result findDetail(@RequestBody CoinRequestDto coinRequestDto) {
...@@ -36,7 +36,7 @@ public class ItemController { ...@@ -36,7 +36,7 @@ public class ItemController {
} }
@RequiresPermissions("admin:setCoin:setCoin") @RequiresPermissions("admin:item:setCoin")
@RequiresPermissionsDesc(menu = { "钱币列表", "钱币设置" }, button = "更新") @RequiresPermissionsDesc(menu = { "钱币列表", "钱币设置" }, button = "更新")
@PostMapping("/setCoin") @PostMapping("/setCoin")
public Result setCoin(@RequestBody CoinRequestDto coinRequestDto) { public Result setCoin(@RequestBody CoinRequestDto coinRequestDto) {
......
...@@ -2,15 +2,17 @@ package com.wwdz.ch.admin.entity.vo; ...@@ -2,15 +2,17 @@ package com.wwdz.ch.admin.entity.vo;
import com.qiniu.util.StringUtils; import com.qiniu.util.StringUtils;
import com.wwdz.ch.db.domain.BidRecord; import com.wwdz.ch.db.domain.BidRecord;
import com.xxdxxs.entity.Entity;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
@ApiModel(value = "BidRecordVo", description = "成交记录前端交互VO") @ApiModel(value = "BidRecordRequestDto", description = "成交记录前端交互VO")
public class BidRecordVo implements Serializable { @Data
public class BidRecordRequestDto implements Entity {
private static final long serialVersionUID = 4014894220574552837L; private static final long serialVersionUID = 4014894220574552837L;
...@@ -35,27 +37,37 @@ public class BidRecordVo implements Serializable { ...@@ -35,27 +37,37 @@ public class BidRecordVo implements Serializable {
@ApiModelProperty(value = "成交价格", name = "price") @ApiModelProperty(value = "成交价格", name = "price")
private Long price; private Long price;
/**
* 额外的成交信息
*/
private String extra;
/**
* 成交链接
*/
private String link;
public BidRecord toDo() { public BidRecord toDo() {
BidRecord record = new BidRecord(); BidRecord record = new BidRecord();
record.setBidtime(bidtime); record.setBidTime(bidtime);
record.setBuyer(buyer); record.setBuyer(buyer);
record.setIsDeleted(false); record.setIsDeleted(0);
record.setCid(cid); record.setCid(cid);
record.setImages(StringUtils.join(images, ";")); record.setImages(StringUtils.join(images, ";"));
record.setPlatform(platform); record.setPlatform(platform);
record.setPrice(price); record.setPrice(price);
record.setExtra(""); record.setExtra(extra);
record.setLink(""); record.setLink(link);
return record; return record;
} }
public BidRecordVo() {} public BidRecordRequestDto() {}
public BidRecordVo(BidRecord record) { public BidRecordRequestDto(BidRecord record) {
this.id = record.getId(); this.id = record.getId();
this.cid = record.getCid(); this.cid = record.getCid();
this.images = Arrays.asList(record.getImages().split(";")); this.images = Arrays.asList(record.getImages().split(";"));
this.bidtime = record.getBidtime(); this.bidtime = record.getBidTime();
this.price = record.getPrice(); this.price = record.getPrice();
this.buyer = record.getBuyer(); this.buyer = record.getBuyer();
this.platform = record.getPlatform(); this.platform = record.getPlatform();
......
package com.wwdz.ch.admin.impl;
import com.wwdz.ch.admin.service.BidRecordService;
import com.wwdz.ch.db.domain.BidRecord;
import com.wwdz.ch.db.manager.BidRecordManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class BidRecordServiceImpl implements BidRecordService {
@Autowired
BidRecordManager bidRecordManager;
@Override
public void add(BidRecord record) {
bidRecordManager.add(record);
}
@Override
public int updateById(BidRecord record) {
return bidRecordManager.updateById(record);
}
@Override
public BidRecord queryById(Long id) {
return bidRecordManager.queryById(id);
}
@Override
public List<BidRecord> queryByCid(Integer cid) {
return bidRecordManager.queryByCid(cid);
}
@Override
public void deleteById(Long id) {
bidRecordManager.deleteById(id);
}
}
...@@ -50,6 +50,7 @@ public class ItemServiceImpl implements ItemService { ...@@ -50,6 +50,7 @@ public class ItemServiceImpl implements ItemService {
if (ObjectUtils.isEmpty(coinRequestDto.getIsRefresh()) || coinRequestDto.getIsRefresh() != 1) { if (ObjectUtils.isEmpty(coinRequestDto.getIsRefresh()) || coinRequestDto.getIsRefresh() != 1) {
CoinVo coinVo = new CoinVo(); CoinVo coinVo = new CoinVo();
Item item = itemManager.findDetails(coinRequestDto.getId()); Item item = itemManager.findDetails(coinRequestDto.getId());
coinVo = convertEntity(item);
EntityMapper.copyAttribute(item, coinVo); EntityMapper.copyAttribute(item, coinVo);
map.put("isRefresh", 0); map.put("isRefresh", 0);
map.put("data", coinVo); map.put("data", coinVo);
......
...@@ -9,7 +9,6 @@ import org.springframework.stereotype.Service; ...@@ -9,7 +9,6 @@ import org.springframework.stereotype.Service;
@Service @Service
public class OperateLogServiceImpl implements OperateLogService { public class OperateLogServiceImpl implements OperateLogService {
@Autowired @Autowired
OperateLogManager operateLogManager; OperateLogManager operateLogManager;
......
package com.wwdz.ch.admin.service;
import com.wwdz.ch.db.domain.BidRecord;
import java.util.List;
public interface BidRecordService {
void add(BidRecord record);
int updateById(BidRecord record);
BidRecord queryById(Long id);
List<BidRecord> queryByCid (Integer cid);
void deleteById (Long id);
}
...@@ -6,46 +6,17 @@ import java.util.List; ...@@ -6,46 +6,17 @@ import java.util.List;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@Mapper @Mapper
public interface BidRecordMapper { public interface BidRecordMapper {
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table bid_record
*
* @mbg.generated
*/
long countByExample(BidRecordExample example); long countByExample(BidRecordExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table bid_record
*
* @mbg.generated
*/
int deleteByExample(BidRecordExample example); int deleteByExample(BidRecordExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table bid_record
*
* @mbg.generated
*/
int deleteByPrimaryKey(Long id); int deleteByPrimaryKey(Long id);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table bid_record
*
* @mbg.generated
*/
int insert(BidRecord record); int insert(BidRecord record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table bid_record
*
* @mbg.generated
*/
int insertSelective(BidRecord record); int insertSelective(BidRecord record);
/** /**
...@@ -75,12 +46,6 @@ public interface BidRecordMapper { ...@@ -75,12 +46,6 @@ public interface BidRecordMapper {
*/ */
List<BidRecord> selectByExampleSelective(@Param("example") BidRecordExample example, @Param("selective") BidRecord.Column ... selective); List<BidRecord> selectByExampleSelective(@Param("example") BidRecordExample example, @Param("selective") BidRecord.Column ... selective);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table bid_record
*
* @mbg.generated
*/
List<BidRecord> selectByExample(BidRecordExample example); List<BidRecord> selectByExample(BidRecordExample example);
/** /**
...@@ -92,52 +57,13 @@ public interface BidRecordMapper { ...@@ -92,52 +57,13 @@ public interface BidRecordMapper {
*/ */
BidRecord selectByPrimaryKeySelective(@Param("id") Long id, @Param("selective") BidRecord.Column ... selective); BidRecord selectByPrimaryKeySelective(@Param("id") Long id, @Param("selective") BidRecord.Column ... selective);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table bid_record
*
* @mbg.generated
*/
BidRecord selectByPrimaryKey(Long id); BidRecord selectByPrimaryKey(Long id);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table bid_record
*
* @mbg.generated
*/
int updateByExampleSelective(@Param("record") BidRecord record, @Param("example") BidRecordExample example); int updateByExampleSelective(@Param("record") BidRecord record, @Param("example") BidRecordExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table bid_record
*
* @mbg.generated
*/
int updateByExample(@Param("record") BidRecord record, @Param("example") BidRecordExample example); int updateByExample(@Param("record") BidRecord record, @Param("example") BidRecordExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table bid_record
*
* @mbg.generated
*/
int updateByPrimaryKeySelective(BidRecord record); int updateByPrimaryKeySelective(BidRecord record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table bid_record
*
* @mbg.generated
*/
int updateByPrimaryKey(BidRecord record); int updateByPrimaryKey(BidRecord record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table dts_category
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
int logicalDeleteByPrimaryKey(Long id);
} }
\ No newline at end of file
...@@ -3,9 +3,9 @@ package com.wwdz.ch.db.dao; ...@@ -3,9 +3,9 @@ package com.wwdz.ch.db.dao;
import com.wwdz.ch.db.domain.OperateLog; import com.wwdz.ch.db.domain.OperateLog;
import com.wwdz.ch.db.domain.OperateLogExample; import com.wwdz.ch.db.domain.OperateLogExample;
import java.util.List; import java.util.List;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@Mapper @Mapper
public interface OperateLogMapper { public interface OperateLogMapper {
long countByExample(OperateLogExample example); long countByExample(OperateLogExample example);
......
package com.wwdz.ch.db.manager;
import com.wwdz.ch.db.domain.BidRecord;
import java.util.List;
public interface BidRecordManager {
void add(BidRecord record);
int updateById(BidRecord record);
BidRecord queryById(Long id);
List<BidRecord> queryByCid (Integer cid);
void deleteById (Long id);
}
\ No newline at end of file
package com.wwdz.ch.db.service; package com.wwdz.ch.db.manager.impl;
import com.wwdz.ch.db.dao.BidRecordMapper; import com.wwdz.ch.db.dao.BidRecordMapper;
import com.wwdz.ch.db.domain.BidRecord; import com.wwdz.ch.db.domain.BidRecord;
import com.wwdz.ch.db.domain.BidRecordExample; import com.wwdz.ch.db.domain.BidRecordExample;
import com.wwdz.ch.db.domain.Category; import com.wwdz.ch.db.domain.FavoritesExample;
import com.wwdz.ch.db.manager.BidRecordManager;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Date;
import java.util.List; import java.util.List;
@Service @Service
public class BidRecordService { public class BidRecordManagerImpl implements BidRecordManager {
@Resource @Resource
private BidRecordMapper bidRecordMapper; private BidRecordMapper bidRecordMapper;
public void add(BidRecord record) { public void add(BidRecord record) {
record.setCreated(LocalDateTime.now()); Date now = new Date();
record.setUpdated(LocalDateTime.now()); record.setCreateTime(now);
record.setUpdateTime(now);
bidRecordMapper.insertSelective(record); bidRecordMapper.insertSelective(record);
} }
public int updateById(BidRecord record) { public int updateById(BidRecord record) {
record.setUpdated(LocalDateTime.now()); record.setUpdateTime(new Date());
return bidRecordMapper.updateByPrimaryKeySelective(record); return bidRecordMapper.updateByPrimaryKeySelective(record);
} }
public List<BidRecord> queryByCid(Integer cid) { public List<BidRecord> queryByCid(Integer cid) {
BidRecordExample example = new BidRecordExample(); BidRecordExample example = new BidRecordExample();
example.createCriteria().andCidEqualTo(cid).andIsDeletedEqualTo(false); example.createCriteria().andCidEqualTo(cid).andIsDeletedEqualTo(0);
example.setOrderByClause("created desc"); example.setOrderByClause("update_time desc");
return bidRecordMapper.selectByExample(example); return bidRecordMapper.selectByExample(example);
} }
public BidRecord queryById(Long id) {
BidRecordExample example = new BidRecordExample();
BidRecordExample.Criteria criteria = example.createCriteria();
criteria.andIdEqualTo(id);
return bidRecordMapper.selectOneByExample(example);
}
public void deleteById(Long id) { public void deleteById(Long id) {
bidRecordMapper.logicalDeleteByPrimaryKey(id); BidRecordExample example = new BidRecordExample();
example.createCriteria().andIdEqualTo(id);
BidRecord record = new BidRecord();
record.setId(id);
record.setIsDeleted(1);
bidRecordMapper.updateByExampleSelective(record, example);
} }
} }
...@@ -8,6 +8,8 @@ import com.wwdz.ch.db.manager.ItemManager; ...@@ -8,6 +8,8 @@ import com.wwdz.ch.db.manager.ItemManager;
import com.xxdxxs.db.component.JdbcHelper; import com.xxdxxs.db.component.JdbcHelper;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import org.springframework.util.CollectionUtils;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -32,7 +34,11 @@ public class ItemManagerImpl implements ItemManager { ...@@ -32,7 +34,11 @@ public class ItemManagerImpl implements ItemManager {
ItemExample example = new ItemExample(); ItemExample example = new ItemExample();
ItemExample.Criteria criteria = example.createCriteria(); ItemExample.Criteria criteria = example.createCriteria();
criteria.andIdEqualTo(id); criteria.andIdEqualTo(id);
return itemMapper.selectOneByExample(example); List<Item> items = itemMapper.selectByExampleWithBLOBs(example);
if (!CollectionUtils.isEmpty(items)) {
return items.get(0);
}
return new Item();
} }
@Override @Override
......
...@@ -4,12 +4,13 @@ import com.wwdz.ch.db.dao.OperateLogMapper; ...@@ -4,12 +4,13 @@ import com.wwdz.ch.db.dao.OperateLogMapper;
import com.wwdz.ch.db.domain.OperateLog; import com.wwdz.ch.db.domain.OperateLog;
import com.wwdz.ch.db.manager.OperateLogManager; import com.wwdz.ch.db.manager.OperateLogManager;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@Repository @Repository
public class OperateLogManagerImpl implements OperateLogManager { public class OperateLogManagerImpl implements OperateLogManager {
@Mapper @Autowired
OperateLogMapper operateLogMapper; OperateLogMapper operateLogMapper;
@Override @Override
......
package com.wwdz.ch.wx.web; package com.wwdz.ch.wx.web;
import com.alibaba.druid.support.json.JSONUtils;
import com.mysql.jdbc.StringUtils;
import com.wwdz.ch.core.type.ListResult; import com.wwdz.ch.core.type.ListResult;
import com.wwdz.ch.core.type.SimpleResult; import com.wwdz.ch.core.type.SimpleResult;
import com.wwdz.ch.core.util.PriceUtil;
import com.wwdz.ch.core.util.ResponseUtil;
import com.wwdz.ch.db.domain.*; import com.wwdz.ch.db.domain.*;
import com.wwdz.ch.db.service.BidRecordService;
import com.wwdz.ch.db.service.UgcCoinService; import com.wwdz.ch.db.service.UgcCoinService;
import com.wwdz.ch.wx.annotation.LoginUser; import com.wwdz.ch.wx.annotation.LoginUser;
import com.wwdz.ch.wx.dao.UgcCoinVo; import com.wwdz.ch.wx.dao.UgcCoinVo;
...@@ -21,11 +16,7 @@ import org.springframework.validation.annotation.Validated; ...@@ -21,11 +16,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@RestController @RestController
......
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