Commit 7fd1f6a4 authored by yaobaizheng's avatar yaobaizheng

园区字典开发区新增保存、提交

parent 5e43ba6c
package com.lyy.admin.VO; package com.lyy.admin.VO;
import com.lyy.admin.domain.carrierinfo.CarrierInfo;
import com.lyy.admin.domain.parkinfo.*; import com.lyy.admin.domain.parkinfo.*;
import com.lyy.admin.domain.system.SysCarouselInfo; import com.lyy.admin.domain.system.SysCarouselInfo;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList;
import java.util.List; import java.util.List;
@Data @Data
public class ParkInfoAllSaveVO implements Serializable { public class ParkInfoAllSaveVO implements Serializable {
private ParkInfoVO parkInfoVO; private ParkInfoSaveVO parkInfo = new ParkInfoSaveVO();
private List<ParkTrafficInfo> parkTrafficInfos; private List<String> carouselUrls = new ArrayList<>();
private List<SysCarouselInfoVO> sysCarouselInfos; private List<String> policyUrls = new ArrayList<>();
private List<ParkCarrierInfo> parkCarrierInfos; private List<ParkInvestmentDirectionInfo> parkInvestmentDirectionInfos = new ArrayList<>();
private List<ParkResourcesInfo> parkResourcesInfos; private List<ParkPolicyInfo> parkPolicyInfos = new ArrayList<>();
private List<ParkSewageInfo> parkSewageInfos;
private List<ParkInvestmentDirectionInfo> parkInvestmentDirectionInfos;
private List<CarrierInfoAllVO> carrierInfoAllVOs;
private List<CarrierInfo> carrierInfos = new ArrayList<>();
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
} }
\ No newline at end of file
package com.lyy.admin.VO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@Data
@ApiModel(value = "园区基本信息", description = "园区基本信息")
public class ParkInfoSaveVO implements Serializable {
/**
* 主键id
*/
@ApiModelProperty(value = "主键id")
private Integer id;
/**
* 园区名称
*/
@ApiModelProperty(value = "园区名称")
@NotNull
private String name;
/**
* 园区级别
*/
@ApiModelProperty(value = "园区级别名称")
private String levelName;
/**
* 园区简介
*/
@ApiModelProperty(value = "园区简介")
private String description;
/**
* 省份
*/
@ApiModelProperty(value = "省份")
private String provinceName;
/**
* 城市
*/
@ApiModelProperty(value = "城市")
private String cityName;
/**
* 区/县
*/
@ApiModelProperty(value = "区/县")
private String regionName;
/**
* 详细地址
*/
@ApiModelProperty(value = "详细地址")
private String address;
/**
* 占地面积(单位:亩)
*/
@ApiModelProperty(value = "占地面积(单位:亩)")
private Double coverArea;
/**
* 建筑面积(单位:㎡)
*/
@ApiModelProperty(value = "建筑面积(单位:亩)")
private BigDecimal floorArea;
/**
* 产权性质
*/
@ApiModelProperty(value = "产权归属")
private String ownershipProperty;
/**
* 出租率(单位:%)
*/
@ApiModelProperty(value = "出租率(单位:%)")
private BigDecimal rentalRate;
/**
* 产业园亮点
*/
@ApiModelProperty(value = "产业园亮点")
private String highlights;
/**
* 联系人(区域负责人姓名)
*/
@ApiModelProperty(value = "联系人(区域负责人姓名)")
private String contactPerson;
/**
* 联系电话(区域负责人电话)
*/
@ApiModelProperty(value = "联系电话(区域负责人电话)")
private String phone;
/**
* 所属机构
*/
@ApiModelProperty(value = "所属机构")
private String organization;
/**
* 主导产业
*/
@ApiModelProperty(value = "主导产业")
private String primaryIndustry;
/**
* 代表企业
*/
@ApiModelProperty(value = "代表企业")
private String enterprise;
/**
* 总投资额(亿元)
*/
@ApiModelProperty(value = "总投资额(亿元)")
private BigDecimal investmentAmountTotal;
/**
* 亩均投资强度(单位:万/亩)
*/
@ApiModelProperty(value = "亩均投资强度(单位:万/亩)")
private String investmentStrength;
/**
* 亩均税收(单位:万/亩)
*/
@ApiModelProperty(value = "亩均税收(单位:万/亩)")
private String taxationStrength;
/**
* 亩均年产值(单位:万/亩)
*/
@ApiModelProperty(value = "亩均年产值(单位:万/亩)")
private String averageOutputValue;
/**
* 投资周期(月)
*/
@ApiModelProperty(value = "投资周期(月)")
private Integer buildingPeriod;
/**
* 其他要求
*/
@ApiModelProperty(value = "其他要求")
private Integer isOtherRequirements;
/**
* 其他入驻要求
*/
@ApiModelProperty(value = "其他入驻要求")
private String accessOther;
/**
* 租售类型
*/
@ApiModelProperty(value = "租售类型")
private String rentSaleType;
/**
* 出售单价(元/天/㎡)
*/
@ApiModelProperty(value = "出售单价(元/天/㎡)")
private BigDecimal salePrice;
/**
* 出租单价(元/天/㎡)
*/
@ApiModelProperty(value = "出租单价(元/天/㎡)")
private String rentPrice;
/**
* 物业费单价(单位:元/㎡/月)
*/
@ApiModelProperty(value = "物业费单价(单位:元/㎡/月)")
private BigDecimal propertyPrice;
/**
* 工业用电(单位:元/度)
*/
@ApiModelProperty(value = "工业用电(单位:元/度)")
private BigDecimal electricityPrice;
/**
* 供电类型
*/
@ApiModelProperty(value = "供电类型")
private String powerSupplyType;
/**
* 变电站级别
*/
@ApiModelProperty(value = "变电站级别")
private String substationLevel;
/**
* 工业用水单价(单位:元/吨)
*/
@ApiModelProperty(value = "工业用水单价(单位:元/吨)")
private BigDecimal industrialWater;
/**
* 天然气(单位:元/m³)
*/
@ApiModelProperty(value = "天然气(单位:元/m³)")
private String gas;
/**
* 蒸汽(单位:元/m³)
*/
@ApiModelProperty(value = "蒸汽(单位:元/m³)")
private BigDecimal steam;
/**
* 非居民用暖价格(单位:元/㎡)
*/
@ApiModelProperty(value = "非居民用暖价格(单位:元/㎡)")
private BigDecimal nresidentsHeating;
@ApiModelProperty(value = "是否有供暖(0-无;1-有)")
private Integer isHeating;
@ApiModelProperty(value = "是否有蒸汽(0-无;1-有)")
private Integer isSteam;
@ApiModelProperty(value = "是否有天然气(0-无;1-有)")
private Integer isNaturalGas;
@ApiModelProperty(value = "产业资源")
private String industryResources;
@ApiModelProperty(value = "特殊指标")
private String specialIndicators;
/**
* 餐厅(0-无;1-有)
*/
@ApiModelProperty(value = "餐厅(0-无;1-有)")
private Integer restaurant;
/**
* 公寓(0-无;1-有)
*/
@ApiModelProperty(value = "公寓(0-无;1-有)")
private Integer apartment;
/**
* 便利店(0-无;1-有)
*/
@ApiModelProperty(value = "便利店(0-无;1-有)")
private Integer convenienceStore;
/**
* 公共空间(0-无;1-有)
*/
@ApiModelProperty(value = "公共空间(0-无;1-有)")
private Integer publicSpace;
/**
* 公共交通(0-无;1-有)
*/
@ApiModelProperty(value = "公共交通(0-无;1-有)")
private Integer publicTransit;
/**
* 车位(0-无;1-有)
*/
@ApiModelProperty(value = "车位(0-无;1-有)")
private Integer parkingSpace;
/**
* 充电桩(0-无;1-有)
*/
@ApiModelProperty(value = "充电桩(0-无;1-有)")
private Integer chargingStation;
@ApiModelProperty(value = "公共会议室(0-无;1-有)")
private Integer guildMeetingRoom;
@ApiModelProperty(value = "报告厅(0-无;1-有)")
private Integer lectureHall;
@ApiModelProperty(value = "污水处理类别")
private String sewageWaterType;
@ApiModelProperty(value = "污水处理价格(元/吨)")
private BigDecimal sewageWaterPrice;
@NotNull
@ApiModelProperty(value = "认证状态(1-未认证;2-认证中;3-已认证;4-已拒绝;9-作废)")
private Integer status;
@ApiModelProperty(value = "是否为系统提前预录入(0-否;1-是;)")
private Integer isSystem;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
...@@ -80,7 +80,7 @@ public class DevelopmentInfoController extends BaseController { ...@@ -80,7 +80,7 @@ public class DevelopmentInfoController extends BaseController {
return developmentInfoSerivce.saveOrUpdateDevelopmentInfo(developmentInfoSaveVO, getUserInfo().getUserId(), getUserInfo().getUserName()); return developmentInfoSerivce.saveOrUpdateDevelopmentInfo(developmentInfoSaveVO, getUserInfo().getUserId(), getUserInfo().getUserName());
} }
@PostMapping("/isAlreadyAuthentication") @PostMapping("/isAlreadyAuthDevelopment")
@ResponseBody @ResponseBody
@ApiOperation(value = "草稿箱点击编辑时判断是否已认证", notes = "true-已认证;false-未认证") @ApiOperation(value = "草稿箱点击编辑时判断是否已认证", notes = "true-已认证;false-未认证")
@ApiImplicitParam(name = "id", value = "开发区id", type = "Integer") @ApiImplicitParam(name = "id", value = "开发区id", type = "Integer")
......
...@@ -89,8 +89,16 @@ public class ParkInfoController extends BaseController { ...@@ -89,8 +89,16 @@ public class ParkInfoController extends BaseController {
@ResponseBody @ResponseBody
@ApiOperation(value = "保存或者更新园区信息", notes = "") @ApiOperation(value = "保存或者更新园区信息", notes = "")
@ApiOperationSupport(ignoreParameters = {"parkTrafficInfo", "carrierInfoVO", "id"}) @ApiOperationSupport(ignoreParameters = {"parkTrafficInfo", "carrierInfoVO", "id"})
public ParkInfoAllSaveVO saveOrUpdateParkInfo(@Valid @RequestBody ParkInfoAllSaveVO parkInfoAllVO) { public boolean saveOrUpdateParkInfo(@Valid @RequestBody ParkInfoAllSaveVO parkInfoAllVO) {
return parkInfoService.saveOrUpdateParkInfo(parkInfoAllVO, getUserInfo().getUserId(), getUserInfo().getUserName()); return parkInfoService.saveOrUpdateParkInfo(parkInfoAllVO, getUserInfo().getUserId(), getUserInfo().getUserName());
} }
@PostMapping("/isAlreadyAuthPark")
@ResponseBody
@ApiOperation(value = "草稿箱点击编辑时判断是否已认证", notes = "true-已认证;false-未认证")
@ApiImplicitParam(name = "id", value = "园区id", type = "Integer")
public boolean isAlreadyAuthentication(Integer id){
return parkInfoService.isAlreadyAuthentication(id);
}
} }
...@@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.Date; import java.util.Date;
/** /**
...@@ -30,19 +31,21 @@ public class SysFileController { ...@@ -30,19 +31,21 @@ public class SysFileController {
@Autowired @Autowired
UploadService uploadService; UploadService uploadService;
@PostMapping("/uploadFile") @PostMapping(value = "/uploadFile", produces="application/json")
@ResponseBody @ResponseBody
@ApiOperation(value = "华为OBS文件上传",notes = "") @ApiOperation(value = "华为OBS文件上传",notes = "")
public String uploadFile(MultipartFile file) throws Exception { public String uploadFile(MultipartFile file, HttpServletResponse response) throws Exception {
response.setContentType("application/json;charset=GBK");
return lyyConfig.getObsPath() + "/" + uploadService.uploadFile(file,"lyy/file"); return lyyConfig.getObsPath() + "/" + uploadService.uploadFile(file,"lyy/file");
} }
@PostMapping("/uploadImg") @PostMapping(value ="/uploadImg", produces="application/json")
@ResponseBody @ResponseBody
@ApiOperation(value = "华为OBS图片上传",notes = "") @ApiOperation(value = "华为OBS图片上传",notes = "")
public String uploadImg(MultipartFile file) throws Exception { public String uploadImg(MultipartFile file, HttpServletResponse response) throws Exception {
response.setContentType("application/json;charset=GBK");
return lyyConfig.getObsPath() + "/" + uploadService.uploadFile(file,"lyy/img"); return lyyConfig.getObsPath() + "/" + uploadService.uploadFile(file,"lyy/img");
} }
......
...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType; ...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
...@@ -469,6 +470,12 @@ public class DevelopmentInfo implements Serializable { ...@@ -469,6 +470,12 @@ public class DevelopmentInfo implements Serializable {
//系统预录入数据id //系统预录入数据id
private Integer mirrorId; private Integer mirrorId;
//污水处理类别
private String sewageWaterType;
//污水处理价格(元/吨)
private String sewageWaterPrice;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date submitTime; private Date submitTime;
......
...@@ -427,9 +427,54 @@ public class ParkInfo implements Serializable { ...@@ -427,9 +427,54 @@ public class ParkInfo implements Serializable {
@ApiModelProperty(value = "图片链接") @ApiModelProperty(value = "图片链接")
private String imgUrl; private String imgUrl;
@ApiModelProperty(value = "镜像id")
private Integer mirrorId; private Integer mirrorId;
@ApiModelProperty(value = "产业园亮点")
private String highlights;
@ApiModelProperty(value = "所属机构")
private String organization;
@ApiModelProperty(value = "总投资额(亿元)")
private BigDecimal investmentAmountTotal;
@ApiModelProperty(value = "投资周期(月)")
private Integer buildingPeriod;
@ApiModelProperty(value = "其他要求")
private Integer isOtherRequirements;
@ApiModelProperty(value = "租售类型")
private String rentSaleType;
@ApiModelProperty(value = "出售单价(元/天/㎡)")
private BigDecimal salePrice;
@ApiModelProperty(value = "变电站级别")
private String substationLevel;
@ApiModelProperty(value = "是否有供暖(0-无;1-有)")
private Integer isHeating;
@ApiModelProperty(value = "是否有蒸汽(0-无;1-有)")
private Integer isSteam;
@ApiModelProperty(value = "是否有天然气(0-无;1-有)")
private Integer isNaturalGas;
@ApiModelProperty(value = "产业资源")
private String industryResources;
@ApiModelProperty(value = "特殊指标")
private String specialIndicators;
@ApiModelProperty(value = "公共会议室(0-无;1-有)")
private Integer guildMeetingRoom;
@ApiModelProperty(value = "报告厅(0-无;1-有)")
private Integer lectureHall;
@TableField(exist = false) @TableField(exist = false)
@ApiModelProperty(hidden = true)
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
} }
\ No newline at end of file
...@@ -320,7 +320,9 @@ public class DevelopmentInfoServiceImpl extends ServiceImpl<DevelopmentInfoMappe ...@@ -320,7 +320,9 @@ public class DevelopmentInfoServiceImpl extends ServiceImpl<DevelopmentInfoMappe
// } // }
// } // }
//校验是否已认证 //校验是否已认证
isAlreadyAuthentication(developmentInfo); if(isAlreadyAuthentication(developmentInfo)){
throw new APIException(APIExceptionEnum.ALREADY_AUTH);
}
this.saveOrUpdate(developmentInfo); this.saveOrUpdate(developmentInfo);
Integer id = developmentInfo.getId(); Integer id = developmentInfo.getId();
...@@ -353,7 +355,7 @@ public class DevelopmentInfoServiceImpl extends ServiceImpl<DevelopmentInfoMappe ...@@ -353,7 +355,7 @@ public class DevelopmentInfoServiceImpl extends ServiceImpl<DevelopmentInfoMappe
sciQW.eq("association_id", id); sciQW.eq("association_id", id);
sciQW.eq("type", CarouselTypeEnum.KAIFAQU.getType()); sciQW.eq("type", CarouselTypeEnum.KAIFAQU.getType());
sysCarouselInfoService.remove(sciQW); sysCarouselInfoService.remove(sciQW);
//政策文件上传 //政策文件
QueryWrapper<FileSource> fsQW = new QueryWrapper<>(); QueryWrapper<FileSource> fsQW = new QueryWrapper<>();
fsQW.eq("object_id", id); fsQW.eq("object_id", id);
fsQW.eq("object_type", FileSourceObjectTypeEnum.DEVELOPMENT.getCode()); fsQW.eq("object_type", FileSourceObjectTypeEnum.DEVELOPMENT.getCode());
...@@ -376,7 +378,7 @@ public class DevelopmentInfoServiceImpl extends ServiceImpl<DevelopmentInfoMappe ...@@ -376,7 +378,7 @@ public class DevelopmentInfoServiceImpl extends ServiceImpl<DevelopmentInfoMappe
developmentIndustrialLandInfoService.saveBatch(developmentInfoSaveVO.getIndustryLandInfos()); developmentIndustrialLandInfoService.saveBatch(developmentInfoSaveVO.getIndustryLandInfos());
//开发区图片 //开发区图片
sysCarouselInfoService.saveCarouselInfo(id,developmentInfoSaveVO.getCarouselUrls(), SysCarouselTypeEnum.DEVELOPMENT); sysCarouselInfoService.saveCarouselInfo(id,developmentInfoSaveVO.getCarouselUrls(), CarouselTypeEnum.KAIFAQU);
//政策文件上传 //政策文件上传
fileSourceService.saveFileSource(id,developmentInfoSaveVO.getPolicyUrls(), FileSourceObjectTypeEnum.DEVELOPMENT); fileSourceService.saveFileSource(id,developmentInfoSaveVO.getPolicyUrls(), FileSourceObjectTypeEnum.DEVELOPMENT);
......
...@@ -21,7 +21,8 @@ public interface ParkInfoService extends IService<ParkInfo> { ...@@ -21,7 +21,8 @@ public interface ParkInfoService extends IService<ParkInfo> {
public ParkInfoAllVO getParkInfo(Integer id, Integer userId, Boolean isMemberShip); public ParkInfoAllVO getParkInfo(Integer id, Integer userId, Boolean isMemberShip);
public List<ParkInfoListVO> selectParkInfoAuthenticationList(ParkInfoAuthenticationParam parkInfoAuthenticationParam); public List<ParkInfoListVO> selectParkInfoAuthenticationList(ParkInfoAuthenticationParam parkInfoAuthenticationParam);
public List<ParkInfoListVO> selectParkInfoCollectionList(ParkInfoCollectionParam parkInfoParam); public List<ParkInfoListVO> selectParkInfoCollectionList(ParkInfoCollectionParam parkInfoParam);
public ParkInfoAllSaveVO saveOrUpdateParkInfo(ParkInfoAllSaveVO parkInfoAllVO, Integer userId,String userName); public boolean saveOrUpdateParkInfo(ParkInfoAllSaveVO parkInfoAllVO, Integer userId,String userName);
public boolean isExistInfo(Integer userId, Integer collectionId); public boolean isExistInfo(Integer userId, Integer collectionId);
public boolean isAlreadyAuthentication(Integer id);
} }
...@@ -2,6 +2,7 @@ package com.lyy.admin.service.system; ...@@ -2,6 +2,7 @@ package com.lyy.admin.service.system;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.lyy.admin.domain.system.SysCarouselInfo; import com.lyy.admin.domain.system.SysCarouselInfo;
import com.lyy.admin.enumerate.CarouselTypeEnum;
import com.lyy.admin.enumerate.SysCarouselTypeEnum; import com.lyy.admin.enumerate.SysCarouselTypeEnum;
import java.util.List; import java.util.List;
...@@ -13,6 +14,6 @@ import java.util.List; ...@@ -13,6 +14,6 @@ import java.util.List;
*/ */
public interface SysCarouselInfoService extends IService<SysCarouselInfo> { public interface SysCarouselInfoService extends IService<SysCarouselInfo> {
public void saveCarouselInfo(Integer id, List<String> imgUrls, SysCarouselTypeEnum sysCarouselTypeEnum); public void saveCarouselInfo(Integer id, List<String> imgUrls, CarouselTypeEnum carouselTypeEnum);
} }
...@@ -2,6 +2,7 @@ package com.lyy.admin.service.system.impl; ...@@ -2,6 +2,7 @@ package com.lyy.admin.service.system.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lyy.admin.domain.system.SysCarouselInfo; import com.lyy.admin.domain.system.SysCarouselInfo;
import com.lyy.admin.enumerate.CarouselTypeEnum;
import com.lyy.admin.enumerate.StatusEnum; import com.lyy.admin.enumerate.StatusEnum;
import com.lyy.admin.enumerate.SysCarouselTypeEnum; import com.lyy.admin.enumerate.SysCarouselTypeEnum;
import com.lyy.admin.mapper.system.SysCarouselInfoMapper; import com.lyy.admin.mapper.system.SysCarouselInfoMapper;
...@@ -27,7 +28,7 @@ public class SysCarouselInfoServiceImpl extends ServiceImpl<SysCarouselInfoMappe ...@@ -27,7 +28,7 @@ public class SysCarouselInfoServiceImpl extends ServiceImpl<SysCarouselInfoMappe
@Override @Override
@Transactional @Transactional
public void saveCarouselInfo(Integer id,List<String> imgUrls, SysCarouselTypeEnum sysCarouselTypeEnum) { public void saveCarouselInfo(Integer id,List<String> imgUrls, CarouselTypeEnum carouselTypeEnum) {
if(imgUrls == null){ if(imgUrls == null){
return; return;
} }
...@@ -35,7 +36,7 @@ public class SysCarouselInfoServiceImpl extends ServiceImpl<SysCarouselInfoMappe ...@@ -35,7 +36,7 @@ public class SysCarouselInfoServiceImpl extends ServiceImpl<SysCarouselInfoMappe
SysCarouselInfo sysCarouselInfo = new SysCarouselInfo(); SysCarouselInfo sysCarouselInfo = new SysCarouselInfo();
sysCarouselInfo.setAssociationId(id); sysCarouselInfo.setAssociationId(id);
sysCarouselInfo.setStatus(StatusEnum.ENABLE.getCode()); sysCarouselInfo.setStatus(StatusEnum.ENABLE.getCode());
sysCarouselInfo.setType(sysCarouselTypeEnum.getCode()); sysCarouselInfo.setType(carouselTypeEnum.getType());
sysCarouselInfo.setImgUrl(url); sysCarouselInfo.setImgUrl(url);
sysCarouselInfoMapper.insert(sysCarouselInfo); sysCarouselInfoMapper.insert(sysCarouselInfo);
} }
......
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