Commit 393a1eef authored by Allen Chen's avatar Allen Chen

Merge branch 'master' of http://gitlab.tradeany.com/zhouzongshun/multiplesourcesecurity

# Conflicts:
#	PddServer/src/main/resources/application.yaml
#	PddServer/src/test/java/org/ta/pddserver/CommonTest.java
parents b0e8ef95 b8ae944f
......@@ -3,25 +3,25 @@ package org.ta.pddserver.config;
public class PddAPIConfig {
// 临沂海际韩国集运 生产环境参数
// 应用基础参数
public static final String CLIENT_ID = "8f5f3f9c92e847b2894fc9c0afce3d61";
public static final String CLIENT_SECRET = "281d79ad5117d20a51efb9e7b0d5f7ee336399b0";
// 基础API地址
public static final String URL = "https://ark-api.pinduoduo.com/ark/router";
// 工单API地址
public static final String URL_GD = "https://gw-api.pinduoduo.com/api/router";
// public static final String CLIENT_ID = "8f5f3f9c92e847b2894fc9c0afce3d61";
// public static final String CLIENT_SECRET = "281d79ad5117d20a51efb9e7b0d5f7ee336399b0";
// // 基础API地址
// public static final String URL = "https://ark-api.pinduoduo.com/ark/router";
// // 工单API地址
// public static final String URL_GD = "https://gw-api.pinduoduo.com/api/router";
//
// 基础API地址
public static final String BASE_URL = "https://gw-api.pinduoduo.com/api/router";
// 临沂海际韩国集运 测试环境参数
// 应用基础参数
// public static final String CLIENT_ID = "d0217707e1194c46b57e696ac7619a06";
// public static final String CLIENT_SECRET = "a5aba84483d8387030899f01276b06a194942470";
// // 基础API地址
// public static final String URL = "https://opengw-api.hutaojie.com/ark/router";
// // 工单API地址
// public static final String URL_GD = "https://opengw-api.hutaojie.com/api/router";
public static final String CLIENT_ID = "d0217707e1194c46b57e696ac7619a06";
public static final String CLIENT_SECRET = "a5aba84483d8387030899f01276b06a194942470";
// 基础API地址
public static final String URL = "https://opengw-api.hutaojie.com/ark/router";
// 工单API地址
public static final String URL_GD = "https://opengw-api.hutaojie.com/api/router";
......
......@@ -119,7 +119,7 @@ public class DataGetController {
/*待拣货列表*/
@PostMapping("/outboundList")
public JSONObject outboundList(HttpServletRequest request, @RequestBody CollectOrderListRequest collectOrderListRequest) {
collectOrderListRequest.setStatus(StatusEnum.FINISHOUTBOUND.getCode());
collectOrderListRequest.setStatus("" + StatusEnum.FINISHOUTBOUND.getCode());
if (collectOrderListRequest.getSize() > 100) {
collectOrderListRequest.setSize(100);
}
......
......@@ -9,9 +9,7 @@ import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import org.ta.pddserver.config.PddAPIConfig;
import org.ta.pddserver.entity.*;
import org.ta.pddserver.lotto.ImagePdfCollectGenerator;
......@@ -94,6 +92,8 @@ public class PddLocalController {
@Resource
private TempStorageImpl tempStorageImpl;
@Autowired
private UserImpl userImpl;
/*集运单列表*/
@Operation(
......@@ -839,6 +839,8 @@ public class PddLocalController {
return JsonResponse.generateLocalCommonSuccessResponse(true, "");
}
/*收到出库通知后 开始拣货 拣货完成 */
/**
* 拣货异常
*/
......@@ -980,6 +982,7 @@ public class PddLocalController {
return JsonResponse.generateLocalCommonSuccessResponse(true, "");
}
/*拣货完成后出库*/
@Operation(
summary = "拣货完成后出库",
......@@ -1340,6 +1343,7 @@ public class PddLocalController {
}
/* 问题件反馈 */
@Operation(
summary = "问题件反馈",
......@@ -1396,6 +1400,7 @@ public class PddLocalController {
}
/*区域列表*/
@PostMapping("/areaList")
public JSONObject areaList(HttpServletRequest request, @RequestBody AreaListRequest areaListRequest) {
......@@ -1447,6 +1452,7 @@ public class PddLocalController {
return JsonResponse.generateLocalCommonSuccessResponse(true, "上架成功");
}
/*待拆包列表*/
@PostMapping("/unpackNoticeList")
public JSONObject unpackNoticeList(HttpServletRequest request, @RequestBody UnpackNoticeListRequest unpackNoticeListRequest) {
......@@ -1515,6 +1521,7 @@ public class PddLocalController {
return JsonResponse.generateLocalCommonSuccessResponse(true, "");
}
// 发往韩国的面单打印
@PostMapping("/mailLabel")
public JSONObject mailLabel(HttpServletRequest request, HttpServletResponse response, @RequestBody MailNoRequest mailNoRequest) {
......@@ -1550,6 +1557,7 @@ public class PddLocalController {
return JsonResponse.generateLocalCommonSuccessResponse(result, "");
}
// 拆包的临时面单打印
/*拆包PDF*/
@PostMapping("/unpackLabel")
......@@ -1580,6 +1588,7 @@ public class PddLocalController {
return JsonResponse.generateLocalCommonSuccessResponse(result, "");
}
// 合包的临时面单打印
/*出库PDF*/
@PostMapping("/collectLabel")
......@@ -1633,6 +1642,7 @@ public class PddLocalController {
return JsonResponse.generateLocalCommonSuccessResponse(map, "");
}
// 打包后的临时面单打印
/*出库PDF*/
@PostMapping("/packageMailLabel")
......@@ -1666,6 +1676,7 @@ public class PddLocalController {
return JsonResponse.generateLocalCommonSuccessResponse(result, "请打印");
}
@PostMapping("/packageComplete")
public JSONObject packageComplete(HttpServletRequest request, @RequestBody PackageCompleteRequest completeRequest) {
List<String> mailList = new ArrayList<>();
......@@ -1681,6 +1692,8 @@ public class PddLocalController {
// 存储需要删除的元素
List<CollectMailDetailEntity> toRemoveList = new ArrayList<>();
List<String> toRemoveOutBound = new ArrayList<>();
for (CollectMailDetailEntity lists : list) {
for (String mainNo : mailList) {
if (lists.getMailNo().equals(mainNo)) {
......@@ -1689,6 +1702,7 @@ public class PddLocalController {
}
}
}
list.removeAll(toRemoveList);
mailList.removeAll(toRemoveOutBound);
......@@ -1910,4 +1924,171 @@ public class PddLocalController {
return JsonResponse.generateLocalCommonSuccessResponse(receiverDetailEntity, "修改成功");
}
/* 出库包裹查询 */
@PostMapping("/MailDetailIoSelect")
public JSONObject MailDetailIoSelect(HttpServletRequest request, @RequestBody MailNoRequest mailDetailIoSelectRequest) {
String action = "FINISHOUTBOUND";
MailDetailIoSelectResponse mailDetailIoSelectResponse = logOrderMailDetailIoImpl.findInfoByMailNoAction(mailDetailIoSelectRequest.getMailNo(), action);
if(mailDetailIoSelectResponse == null){
return JsonResponse.generateLocalCommonFailedResponse("-1", "集运单信息不存在");
}
List<PackageDetailEntity> packageDetailList = packageDetailImpl.getByOrderCode(mailDetailIoSelectResponse.getLogisticsOrderCode());
CollectOrderEntity collectOrderEntity = collectOrderImpl.getAllInfoByOrderCode(mailDetailIoSelectResponse.getLogisticsOrderCode());
List<CollectMailDetailEntity> collectMailDetailEntityList = collectMailDetailImpl.getListByOrderCode(mailDetailIoSelectResponse.getLogisticsOrderCode());
LogOrderEntity logOrderEntity = logOrderImpl.getByOrderCode(mailDetailIoSelectResponse.getLogisticsOrderCode());
List<LogOrderMailDetailEntity> logOrderMailDetailEntityList = logOrderMailDetailImpl.getListByCode(mailDetailIoSelectResponse.getLogisticsOrderCode());
Map<String, Object> map = new HashMap<>();
map.put("mailDetail", mailDetailIoSelectResponse);
map.put("collectMailDetail", collectMailDetailEntityList);
map.put("packageDetail", packageDetailList);
map.put("collectOrder", collectOrderEntity);
map.put("logOrder", logOrderEntity);
map.put("logOrderMailDetail", logOrderMailDetailEntityList);
return JsonResponse.generateLocalCommonSuccessResponse(map, "");
}
/* 拆包查询 */
@PostMapping("/unpackNoticeSelect")
public JSONObject unpackNoticeSelect(HttpServletRequest request, @RequestBody UnpackNoticeSelectRequest unpackNoticeSelectRequest) {
UnpackNoticeEntity unpackNoticeSelectResponse = unpackNoticeImpl.getByCode(unpackNoticeSelectRequest.getOrderCode());
if(unpackNoticeSelectResponse == null){
return JsonResponse.generateLocalCommonFailedResponse("-1", "集运单信息不存在");
}
List<UnpackMailDetailEntity> unpackMailDetailEntityList = unpackMailDetailImpl.getListByCode(unpackNoticeSelectRequest.getOrderCode());
LogOrderEntity logOrderEntity = logOrderImpl.getByOrderCode(unpackNoticeSelectRequest.getOrderCode());
List<LogOrderMailDetailEntity> logOrderMailDetailEntityList = logOrderMailDetailImpl.getListByCode(unpackNoticeSelectRequest.getOrderCode());
Map<String, Object> map = new HashMap<>();
map.put("unpackNotice", unpackNoticeSelectResponse);
map.put("unpackMailDetail", unpackMailDetailEntityList);
map.put("logOrder", logOrderEntity);
map.put("logOrderMailDetail", logOrderMailDetailEntityList);
return JsonResponse.generateLocalCommonSuccessResponse(map, "");
}
/* 包裹查询 */
@PostMapping("/logOrderMailSelect")
public JSONObject logOrderMailSelect(HttpServletRequest request, @RequestBody MailNoRequest mailNoRequest) {
LogOrderMailDetailEntity logOrderMailDetailEntity = logOrderMailDetailImpl.getByMailNo(mailNoRequest.getMailNo());
if(logOrderMailDetailEntity == null){
return JsonResponse.generateLocalCommonFailedResponse("-1", "集运单信息不存在");
}
LogOrderEntity logOrderEntity = logOrderImpl.getByOrderCode(logOrderMailDetailEntity.getLogisticsOrderCode());
UnpackNoticeEntity unpackNoticeEntity = unpackNoticeImpl.getByCode(logOrderMailDetailEntity.getLogisticsOrderCode());
UnpackMailDetailEntity unpackMailDetailEntity = unpackMailDetailImpl.getByMailNo(mailNoRequest.getMailNo());
CollectOrderEntity collectOrderEntity = collectOrderImpl.getAllInfoByOrderCode(logOrderMailDetailEntity.getLogisticsOrderCode());
CollectMailDetailEntity collectMailDetail = collectMailDetailImpl.getByMailNo(mailNoRequest.getMailNo());
Map<String, Object> map = new HashMap<>();
map.put("logOrderMailDetail", logOrderMailDetailEntity);
map.put("logOrder", logOrderEntity);
map.put("unpackNotice", unpackNoticeEntity);
map.put("unpackMailDetail", unpackMailDetailEntity);
map.put("collectOrder", collectOrderEntity);
map.put("collectMailDetail", collectMailDetail);
return JsonResponse.generateLocalCommonSuccessResponse(map, "");
}
/* 登录 */
@PostMapping("/userLogo")
public JSONObject userLogo(HttpServletRequest request, @RequestBody UserRequest userRequest) {
if(userRequest.getAccount() == null || userRequest.getPassword() == null){
return JsonResponse.generateLocalCommonFailedResponse("-1", "账号或密码为空");
}
UserEntity userEntity = userImpl.getInfoByAccount(userRequest.getAccount());
if(userEntity == null){
return JsonResponse.generateLocalCommonFailedResponse("-1", "账号不存在");
}
if(userEntity.getStatus() != 1){
return JsonResponse.generateLocalCommonFailedResponse("-1", "账号状态异常无法登录");
}
if(!userEntity.getPassword().equals(userRequest.getPassword())){
return JsonResponse.generateLocalCommonFailedResponse("-1", "密码错误");
}
Map<String, Object> result = new HashMap<>();
result.put("user", userEntity);
OnlineUserData onlineUserData = new OnlineUserData();
onlineUserData.setUserId(userEntity.getUid());
onlineUserData.setAccount(userEntity.getAccount());
onlineUserData.setName(userEntity.getName());
request.getSession().setAttribute(OnlineUserData.ONLINE_CLIENT_DATA,onlineUserData);
request.getSession().setAttribute(userEntity.getUid(),userEntity);
return JsonResponse.generateLocalCommonSuccessResponse(result, "");
}
/* 账号列表 */
@PostMapping("/userList")
public JSONObject userList(HttpServletRequest request, @RequestBody UserRequest userRequest) {
return JsonResponse.generateLocalCommonSuccessResponse(userImpl.getListByRequest(userRequest),"");
}
/* 账号新增 */
@PostMapping("/userAdd")
public JSONObject userAdd(HttpServletRequest request, @RequestBody UserEntity userEntity) {
UserEntity userEntityInfo = userImpl.getInfoByAccount(userEntity.getAccount());
if(userEntityInfo != null){
return JsonResponse.generateLocalCommonFailedResponse("-1", "账号已存在");
}
userImpl.save(userEntity);
return JsonResponse.generateLocalCommonSuccessResponse(userEntity,"新增成功");
}
/* 账号修改 */
@PostMapping("/userEdit")
public JSONObject userEdit(HttpServletRequest request, @RequestBody UserEntity userEntity) {
UserEntity userEntityInfo = userImpl.getInfoByAccount(userEntity.getAccount());
if(userEntityInfo != null){
if(userEntity.getUid().equals(userEntityInfo.getUid())){
userImpl.updateById(userEntity);
}else {
return JsonResponse.generateLocalCommonFailedResponse("-1", "账号已存在");
}
}
userImpl.updateById(userEntity);
return JsonResponse.generateLocalCommonSuccessResponse(userEntity,"修改成功");
}
/* 账号 */
@PostMapping("/userDel")
public JSONObject userDel(HttpServletRequest request, @RequestBody UserEntity userEntity) {
UserEntity userEntityInfo = userImpl.getById(userEntity.getUid());
if(userEntityInfo.getStatus() == 1){
userEntityInfo.setStatus(-1);
userImpl.updateById(userEntity);
}else {
userEntity.setStatus(1);
userImpl.updateById(userEntity);
}
return JsonResponse.generateLocalCommonSuccessResponse(userEntity,"修改成功");
}
@RequestMapping(value = "checkUser", method = RequestMethod.POST)
public JSONObject checkUser(HttpServletRequest request) {
return userImpl.checkUser(request);
}
}
package org.ta.pddserver.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@TableName("user")
@Data
public class UserEntity {
@TableId(value = "uid")
private String uid;
@TableField(value = "created")
private String created;
@TableField(value = "updated")
private String updated;
@TableField(value = "state")
private Integer state;
@TableField(value = "remarks")
private String remarks;
@TableField(value = "status")
private Integer status;
@TableField(value = "name")
private String name;
@TableField(value = "account")
private String account;
@TableField(value = "password")
private String password;
}
......@@ -2,10 +2,12 @@ package org.ta.pddserver.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.ta.pddserver.entity.LogOrderMailDetailIoEntity;
import org.ta.pddserver.model.api.request.LogOrderMailDetailIoRequest;
import org.ta.pddserver.model.api.response.LogOrderMailDetailIoListResponse;
import org.ta.pddserver.model.api.response.MailDetailIoSelectResponse;
import java.util.List;
......@@ -23,4 +25,7 @@ public interface LogOrderMailDetailIoMapper extends BaseMapper<LogOrderMailDetai
@Select("SELECT `uid`, `created`,`status`, `logisticsOrderCode`, `expressCode`, `mailNo`, `action` FROM `log_order_mail_detail_io` WHERE `mailNo` = #{mailNo} AND `status` = 60 AND `action` = 'FINISHOUTBOUND';")
LogOrderMailDetailIoEntity findOutboundByMailNo(String mailNo);
@Select("SELECT `uid`, `created`, `updated`, `logisticsOrderCode`, `expressCode`, `action` FROM `log_order_mail_detail_io` WHERE `mailNo` = #{mailNo} AND `action` = #{action}")
MailDetailIoSelectResponse findInfoByMailNoAction(@Param("mailNo") String mailNo, @Param("action") String action);
}
package org.ta.pddserver.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.ta.pddserver.entity.AreaEntity;
import org.ta.pddserver.entity.UserEntity;
import org.ta.pddserver.model.api.request.AreaListRequest;
import org.ta.pddserver.model.api.request.UserRequest;
import org.ta.pddserver.model.api.response.LogOrderListResponse;
import org.ta.pddserver.model.api.response.UserListResponse;
import java.util.List;
@Mapper
public interface UserMapper extends BaseMapper<UserEntity> {
@Select("SELECT * FROM `user` WHERE `account` = #{account}")
UserEntity getInfoByAccount(String account);
@Select("SELECT `uid` , `name` ,`status`, `account`, `created` FROM `user` WHERE `state` > 0 AND `account` LIKE '%${account}%' AND `status` LIKE '%${status}%' ORDER BY uid DESC LIMIT #{offset}, #{size};")
List<UserListResponse> getListByRequest(UserRequest param);
@Select("SELECT COUNT(`uid`) FROM `user` WHERE `state` > 0 AND `account` LIKE '%${account}%' AND `status` LIKE '%${status}%' ")
Integer countUsable(UserRequest param);
}
......@@ -24,7 +24,7 @@ public class CollectOrderListRequest extends PageTool {
defaultValue = "",
requiredMode = Schema.RequiredMode.REQUIRED // 必填
)
private int status;
private String status;
private int num;
......
package org.ta.pddserver.model.api.request;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class MailDetailIoSelectRequest {
@Schema(
description = "搜索运单号,模糊搜索",
example = "PC123456",
defaultValue = "",
requiredMode = Schema.RequiredMode.REQUIRED // 必填
)
private String mailNo;
}
package org.ta.pddserver.model.api.request;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.ta.pddserver.model.common.PageTool;
@Data
public class UnpackNoticeSelectRequest{
private String orderCode;
}
package org.ta.pddserver.model.api.request;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.ta.pddserver.model.common.PageTool;
@Data
public class UserListRequest extends PageTool {
private String name;
private String status;
}
package org.ta.pddserver.model.api.request;
import lombok.Data;
import org.ta.pddserver.model.common.PageTool;
@Data
public class UserRequest extends PageTool {
private String account;
private String password;
private String name;
}
package org.ta.pddserver.model.api.response;
import lombok.Data;
@Data
public class MailDetailIoSelectResponse {
private String uid;
private String created;
private String updated;
private String logisticsOrderCode;
private String expressCode;
private String mailNo;
private String action;
}
package org.ta.pddserver.model.api.response;
import lombok.Data;
@Data
public class UnpackNoticeSelectResponse {
private String uid;
private String created;
private String updated;
private String buyerCode;
private String consoType;
private String consoWarehouseCode;
private String deliveryType;
private String providerCode;
private String orderCode;
}
package org.ta.pddserver.model.api.response;
import lombok.Data;
@Data
public class UserListResponse {
private String uid;
private String orderCode;
private String orderSn;
private String logisticsOrderCode;
private String itemId;
private String itemName;
private String categoryName;
private int itemQuantity;
private int weightTotal;
private int actualAmount;
private String productName;
private int exportDecAmount;
}
package org.ta.pddserver.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.ta.pddserver.entity.AreaEntity;
import org.ta.pddserver.entity.UserEntity;
public interface UserService extends IService<UserEntity> {
}
......@@ -6,7 +6,9 @@ import org.springframework.stereotype.Service;
import org.ta.pddserver.entity.LogOrderMailDetailIoEntity;
import org.ta.pddserver.mapper.LogOrderMailDetailIoMapper;
import org.ta.pddserver.model.api.request.LogOrderMailDetailIoRequest;
import org.ta.pddserver.model.api.request.MailDetailIoSelectRequest;
import org.ta.pddserver.model.api.response.LogOrderMailDetailIoListResponse;
import org.ta.pddserver.model.api.response.MailDetailIoSelectResponse;
import org.ta.pddserver.service.LogOrderMailDetailIoService;
import java.util.HashMap;
......@@ -36,4 +38,8 @@ public class LogOrderMailDetailIoImpl extends ServiceImpl<LogOrderMailDetailIoMa
public LogOrderMailDetailIoEntity getOutboundByMailNo(String mailNo) {
return this.baseMapper.findOutboundByMailNo(mailNo);
}
public MailDetailIoSelectResponse findInfoByMailNoAction(String mailNo, String action) {
return baseMapper.findInfoByMailNoAction(mailNo, action);
}
}
\ No newline at end of file
package org.ta.pddserver.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Service;
import org.ta.commoncore.model.User;
import org.ta.pddserver.entity.UserEntity;
import org.ta.pddserver.mapper.UserMapper;
import org.ta.pddserver.model.api.request.LogOrderListRequest;
import org.ta.pddserver.model.api.request.UserRequest;
import org.ta.pddserver.model.api.response.LogOrderListResponse;
import org.ta.pddserver.model.api.response.UserListResponse;
import org.ta.pddserver.service.UserService;
import org.ta.pddserver.utils.JsonResponse;
import org.ta.pddserver.utils.OnlineUserData;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class UserImpl extends ServiceImpl<UserMapper, UserEntity> implements UserService {
public UserEntity getInfoByAccount(String account) {
return baseMapper.getInfoByAccount(account);
}
public Map<String, Object> getListByRequest(UserRequest param) {
Integer count = baseMapper.countUsable(param);
param.checkPage(count,20);
List<UserListResponse> list = baseMapper.getListByRequest(param);
Map<String, Object> map = new HashMap<>();
map.put("total", count);
map.put("list", list);
map.put("page", param.getPage());
return map;
}
public JSONObject checkUser(HttpServletRequest request) {
UserEntity userEntity=baseMapper.selectById(this.getUserIDFromOnlineData(request));
Map<String, Object> result = new HashMap<>();
result.put("user",userEntity);
return JsonResponse.generateLocalCommonSuccessResponse(result,"");
}
protected String getUserIDFromOnlineData(HttpServletRequest request) {
OnlineUserData onlineUserData = (OnlineUserData) request.getSession().getAttribute(OnlineUserData.ONLINE_CLIENT_DATA);
if (onlineUserData == null) {
return null;
}
return onlineUserData.getUserId();
}
}
\ No newline at end of file
package org.ta.pddserver.utils;
import java.io.Serializable;
public class OnlineUserData implements Serializable {
public static final String ONLINE_CLIENT_DATA = "REGISTER-COMPANY-DATA";
private String userId; // 操作用户父级id
private String account; // 操作用户父级id
private String name; // 操作用户父级id
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
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