Commit 19b13468 authored by shiyu's avatar shiyu

后台新增寄售退回功能

parent 2308b6ef
......@@ -118,6 +118,7 @@ public class ShiroConfig {
filterChainDefinitionMap.put("/admin/sysAiAssistant/**", "anon");
filterChainDefinitionMap.put("/admin/sysIMRecord/**", "anon");
filterChainDefinitionMap.put("/admin/consignSaleManage/**", "anon");
filterChainDefinitionMap.put("/admin/returnOrderManage/**", "anon");
filterChainDefinitionMap.put("/admin/invitationCode/**", "anon");
// filterChainDefinitionMap.put("/admin/**", "anon");
......
package com.wwdz.ch.admin.controller;
import com.alibaba.fastjson.JSON;
import com.wwdz.ch.admin.service.ConsignSaleService;
import com.wwdz.ch.admin.service.ReturnOrderService;
import com.wwdz.ch.core.consts.ResultCode;
import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.db.dto.request.ConsignSaleRecordRequestDto;
import com.wwdz.ch.db.dto.request.ConsignSaleRequestDto;
import com.wwdz.ch.db.dto.request.ReturnOrderRequestDto;
import com.xxdxxs.service.FormHandler;
import com.xxdxxs.utils.StringUtils;
import com.xxdxxs.validation.Validator;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 退货单
*/
@RestController
@RequestMapping("/admin/returnOrderManage")
public class ReturnOrderController {
private static final Logger logger = LoggerFactory.getLogger(ReturnOrderController.class);
@Autowired
ReturnOrderService returnOrderService;
@ApiOperation(value = "查询退货单")
@PostMapping("/findList")
public Result findList(@RequestBody ReturnOrderRequestDto dto) {
logger.info("【请求开始】查询退货单,请求参数:{}", JSON.toJSONString(dto));
return returnOrderService.findList(dto);
}
@ApiOperation(value = "查询退货单详情")
@PostMapping("/findDetail")
public Result findDetail(@RequestBody ReturnOrderRequestDto dto) {
logger.info("【请求开始】查询退货单详情,请求参数:{}", JSON.toJSONString(dto));
Validator validator = new Validator(FormHandler.ofEntity(dto));
validator.set("returnOrderId", "退货单号").must().string()
.end();
if (!validator.isValid()) {
return Result.failed(ResultCode.PARAM_ERROR.getCode(), validator.getErrorInfo());
}
return returnOrderService.findDetail(dto);
}
@ApiOperation(value = "平台寄出商品")
@PostMapping("/send")
public Result send(@RequestBody ReturnOrderRequestDto dto) {
logger.info("【请求开始】平台寄出商品,请求参数:{}", JSON.toJSONString(dto));
Validator validator = new Validator(FormHandler.ofEntity(dto));
validator.set("logisticsCode", "快递公司编码").must().string()
.set("waybill", "运单号").must().string()
.set("returnOrderId", "退货单号").must().string()
.end();
if (!validator.isValid()) {
return Result.failed(ResultCode.PARAM_ERROR.getCode(), validator.getErrorInfo());
}
return returnOrderService.send(dto);
}
}
package com.wwdz.ch.admin.entity.vo;
import com.wwdz.ch.db.domain.UserVo;
import com.xxdxxs.entity.Entity;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
public class ReturnOrderDetailVo implements Entity {
/**
* 退货单号
*/
private String returnOrderId;
/**
* 对应寄售单号
*/
private String consignSaledId;
/**
* 退货单状态
*/
private Integer state;
/**
* 退货单状态
*/
private String stateName;
/**
* 取消寄售的时间
*/
private Date cancelTime;
/**
* 取消寄售类型
*/
private Integer cancelType;
/**
* 取消寄售类型
*/
private String cancelTypeName;
/**
* 取消寄售原因
*/
private String remark;
/**
* 货品信息
*/
private CoinVo itemVo;
/**
* 是否已经寄回
*/
private Boolean isSended;
/**
* 退货单时间线信息
*/
private List<ReturnOrderRecordVo> returnOrderRecordVoList;
/**
* 发布人信息
*/
private UserVo userVo;
}
package com.wwdz.ch.admin.entity.vo;
import com.xxdxxs.entity.Entity;
import lombok.Data;
import java.util.Date;
@Data
public class ReturnOrderRecordVo implements Entity {
/**
* 退货单
*/
private String saleId;
/**
* 操作时间
*/
private Date createTime;
/**
* 操作内容
*/
private String content;
/**
* 操作理由或成交平台
*/
private String remark;
/**
* 操作类型
*/
private Integer type;
private String typeName;
}
......@@ -326,7 +326,7 @@ public class ConsignSaleServiceImpl implements ConsignSaleService {
consignSaleRecordDao.insert(dto.getSaleId(), "", ConsignSaleEnum.OperateTypeEnum.CONFIRM_RECEIVE.getCode(), null);
return Result.success();
} catch (Exception e) {
logger.info("用户寄出商品 error : {}", e);
logger.info("平台确认签收用户寄出商品 error : {}", e);
}
return Result.failed();
}
......
package com.wwdz.ch.admin.service;
import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.db.dto.request.ConsignSaleRecordRequestDto;
import com.wwdz.ch.db.dto.request.ConsignSaleRequestDto;
import com.wwdz.ch.db.dto.request.ReturnOrderRequestDto;
public interface ReturnOrderService {
/**
* 查询退货单
* @param dto
* @return
*/
Result findList(ReturnOrderRequestDto dto);
/**
* 查询退货单详情
* @param dto
* @return
*/
Result findDetail(ReturnOrderRequestDto dto);
/**
/**
* 寄出退货商品
* @param dto
* @return
*/
Result send(ReturnOrderRequestDto dto);
}
......@@ -7,7 +7,7 @@ public class ReturnOrderEnum {
*/
public enum StateEnum {
WAIT_RETURN(10, "待退回"),
OUTBOUND(20, "已出库"),
SENDED(20, "已寄出"),
FINISH(30, "完成退货"),
;
......@@ -20,10 +20,9 @@ public class ReturnOrderEnum {
}
public static String getNameByCode(int code) {
for (ConsignSaleEnum.SaleForUserStateEnum saleForUserStateEnum : ConsignSaleEnum.SaleForUserStateEnum.values()) {
if (code == saleForUserStateEnum.getCode()) {
return saleForUserStateEnum.getDes();
for (ReturnOrderEnum.StateEnum stateEnum : ReturnOrderEnum.StateEnum.values()) {
if (code == stateEnum.getCode()) {
return stateEnum.getDes();
}
}
return null;
......@@ -61,7 +60,7 @@ public class ReturnOrderEnum {
}
public static String getNameByCode(int code) {
for (ConsignSaleEnum.OperateTypeEnum operateTypeEnum : ConsignSaleEnum.OperateTypeEnum.values()) {
for (ReturnOrderEnum.OperateTypeEnum operateTypeEnum : ReturnOrderEnum.OperateTypeEnum.values()) {
if (code == operateTypeEnum.getCode()) {
return operateTypeEnum.getDes();
}
......
......@@ -58,6 +58,11 @@ public class ReturnOrderVo implements Entity {
*/
private Date createTime;
/**
* 取消寄售的时间
*/
private Date cancelTime;
/**
* 原因
......@@ -78,4 +83,24 @@ public class ReturnOrderVo implements Entity {
* 快递单号
*/
private String waybill;
/**
* 是否已经寄出快递
*/
private Boolean isSended;
/**
* 退货地址
*/
private String returnAddress;
/**
* 签收类型
*/
private Integer signedType;
/**
* 签收类型
*/
private String signedTypeName;
}
......@@ -52,4 +52,5 @@ public interface ReturnOrderDao {
*/
long countByState(long userId, List<Integer> filterStates);
}
......@@ -8,5 +8,6 @@ public class UserVo implements Entity {
private String nickname;
private String avatar;
private String phone;
private String address;
}
......@@ -41,7 +41,8 @@ public class WebMvcConfiguration implements WebMvcConfigurer {
, "/wx/user/loginByWx", "/wx/user/finishLogin", "/wx/user/loginByMobile", "/wx/user/loginRegCaptcha", "/wx/user/updateRegCaptcha", "/wx/user/login", "/wx/user/fillCode",
"/officialAccountCallback/**",
"/imCallback/**", "/wx/category/**",
"/wx/consignSale/**", "/wx/item/**"
"/wx/consignSale/**", "/wx/item/**",
"/wx/returnOrder/**"
/* "/wx/officialAccount/**",
"/wx/item/**",
"/wx/aiAssistant/**",
......
......@@ -82,6 +82,11 @@ public class ReturnOrderAppletVo implements Entity {
*/
private Date finishTime;
/**
* 退货地址
*/
private String returnAddress;
/**
* 寄售单状态时间线
*/
......
......@@ -13,19 +13,14 @@ import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.core.util.IdUtils;
import com.wwdz.ch.core.util.MediaUtil;
import com.wwdz.ch.core.util.RegexUtil;
import com.wwdz.ch.db.dao.ConsignSaleDao;
import com.wwdz.ch.db.dao.ConsignSaleRecordDao;
import com.wwdz.ch.db.dao.ItemDao;
import com.wwdz.ch.db.dao.UserDao;
import com.wwdz.ch.db.domain.ConsignSale;
import com.wwdz.ch.db.domain.ConsignSaleRecord;
import com.wwdz.ch.db.domain.Item;
import com.wwdz.ch.db.domain.User;
import com.wwdz.ch.db.dao.*;
import com.wwdz.ch.db.domain.*;
import com.wwdz.ch.db.dto.request.CoinRequestDto;
import com.wwdz.ch.db.dto.request.ConsignSaleRequestDto;
import com.wwdz.ch.wx.entity.vo.AppletStateNodeVo;
import com.wwdz.ch.wx.entity.vo.ConsignSaleAppletVo;
import com.wwdz.ch.wx.service.ConsignSaleService;
import com.wwdz.ch.wx.service.ReturnOrderService;
import com.wwdz.user.api.service.user.UserReadService;
import com.xxdxxs.utils.DateUtils;
import com.xxdxxs.utils.EntityMapper;
......@@ -65,6 +60,12 @@ public class ConsignSaleServiceImpl implements ConsignSaleService {
@Autowired
UserDao userDao;
@Autowired
ReturnOrderService returnOrderService;
@Autowired
ReturnOrderRecordDao returnOrderRecordDao;
@Override
public Result createConsignSaleOrder(ConsignSaleRequestDto dto) {
......@@ -166,6 +167,13 @@ public class ConsignSaleServiceImpl implements ConsignSaleService {
//超时未确认取消
timeOutForCancel(dto);
logger.info(">>>>>> 查询寄售单列表,检测到寄售单号:{} 实物鉴定超时未确认,更改寄售单状态为已取消,并记录操作节点 <<<<<<<", consignSale.getSaleId());
//创建退货单
ReturnOrder returnOrder = new ReturnOrder();
returnOrder.setUserId(consignSale.getUserId());
returnOrder.setItemId(consignSale.getItemId());
returnOrder.setAddressId(consignSale.getAddressId());
returnOrder.setSaleId(consignSale.getSaleId());
returnOrderService.create(returnOrder);
}
}
if (StringUtils.hasLength(dto.getSearchParam())) {
......@@ -436,6 +444,14 @@ public class ConsignSaleServiceImpl implements ConsignSaleService {
timeOutForCancel(dto);
consignSaleRecordVo.setCustomState(ConsignSaleEnum.SaleForUserStateEnum.CANCEL.getCode());
logger.info(">>>>>> 寄售单实物鉴定超时未确认,更改寄售单状态为已取消,并记录操作节点 <<<<<<<");
//创建退货单
ReturnOrder returnOrder = new ReturnOrder();
returnOrder.setUserId(consignSale.getUserId());
returnOrder.setItemId(consignSale.getItemId());
returnOrder.setAddressId(consignSale.getAddressId());
returnOrder.setSaleId(consignSale.getSaleId());
returnOrderService.create(returnOrder);
logger.info(">>>>>> 寄售单实物鉴定超时未确认,取消寄售创建退货单 <<<<<<<");
} else {
logger.info(">>>>>> 寄售单号:{} , 查看实物鉴定详情,已是取消状态 <<<<<<<", saleId);
}
......@@ -570,6 +586,13 @@ public class ConsignSaleServiceImpl implements ConsignSaleService {
//插入操作记录,用户不满意建议零售价
consignSaleRecordDao.insert(dto.getSaleId(), "取消类型:用户主动取消", ConsignSaleEnum.OperateTypeEnum.CUSTOM_CANCEL.getCode(), "理由:不满意建议寄售价");
//创建退货单
ReturnOrder returnOrder = new ReturnOrder();
returnOrder.setUserId(consignSaleInfo.getUserId());
returnOrder.setItemId(consignSaleInfo.getItemId());
returnOrder.setAddressId(consignSaleInfo.getAddressId());
returnOrder.setSaleId(consignSaleInfo.getSaleId());
returnOrderService.create(returnOrder);
}
return Result.success();
} catch (Exception e) {
......
package com.wwdz.ch.wx.service;
import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.db.domain.ReturnOrder;
import com.wwdz.ch.db.dto.request.ReturnOrderRequestDto;
public interface ReturnOrderService {
/**
* 查询退货单
* @param returnOrder
* @return
*/
Result create(ReturnOrder returnOrder);
/**
* 查询退货单
* @param dto
......@@ -19,5 +29,12 @@ public interface ReturnOrderService {
*/
Result findDetail(ReturnOrderRequestDto dto);
/**
* 用户确认签收退货商品
* @param dto
* @return
*/
Result userConfirmSigned(ReturnOrderRequestDto dto);
}
......@@ -5,9 +5,12 @@ import com.wwdz.ch.core.consts.LogisticsEnum;
import com.wwdz.ch.core.consts.ResultCode;
import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.db.dto.request.ConsignSaleRequestDto;
import com.wwdz.ch.db.dto.request.ReturnOrderRequestDto;
import com.wwdz.ch.wx.entity.request.ItemRequestDto;
import com.wwdz.ch.wx.impl.ReturnOrderServiceImpl;
import com.wwdz.ch.wx.service.ConsignSaleService;
import com.wwdz.ch.wx.service.ItemService;
import com.wwdz.ch.wx.service.ReturnOrderService;
import com.xxdxxs.service.FormHandler;
import com.xxdxxs.utils.StringUtils;
import com.xxdxxs.validation.Validator;
......@@ -33,7 +36,7 @@ public class ReturnOrderController {
private static final Logger logger = LoggerFactory.getLogger(ReturnOrderController.class);
@Autowired
ConsignSaleService consignSaleService;
ReturnOrderService returnOrderService;
@Autowired
ItemService itemService;
......@@ -41,29 +44,43 @@ public class ReturnOrderController {
@ApiOperation(value = "用户查询退货单")
@PostMapping("/findList")
public Result findList(@RequestBody ConsignSaleRequestDto dto) {
logger.info("【请求开始】用户查询寄售单,请求参数:{}", JSON.toJSONString(dto));
public Result findList(@RequestBody ReturnOrderRequestDto dto) {
logger.info("【请求开始】用户查询退货单,请求参数:{}", JSON.toJSONString(dto));
Validator validator = new Validator(FormHandler.ofEntity(dto));
validator.set("userId", "用户id").must().number()
.end();
if (!validator.isValid()) {
return Result.failed(ResultCode.PARAM_ERROR.getCode(), validator.getErrorInfo());
}
return consignSaleService.findList(dto);
return returnOrderService.findList(dto);
}
@ApiOperation(value = "用户查询退货单详情")
@PostMapping("/findDetail")
public Result findDetail(@RequestBody ConsignSaleRequestDto dto) {
logger.info("【请求开始】用户查询寄售单详情,请求参数:{}", JSON.toJSONString(dto));
public Result findDetail(@RequestBody ReturnOrderRequestDto dto) {
logger.info("【请求开始】用户查询退货单,请求参数:{}", JSON.toJSONString(dto));
Validator validator = new Validator(FormHandler.ofEntity(dto));
validator.set("saleId", "寄售单号").must().string()
validator.set("returnOrderId", "退货单号").must().string()
.end();
if (!validator.isValid()) {
return Result.failed(ResultCode.PARAM_ERROR.getCode(), validator.getErrorInfo());
}
return consignSaleService.findDetail(dto);
return returnOrderService.findDetail(dto);
}
@ApiOperation(value = "用户确认签收退货商品")
@PostMapping("/userConfirmSigned")
public Result userConfirmSigned(@RequestBody ReturnOrderRequestDto dto) {
logger.info("【请求开始】用户确认签收退货商品,请求参数:{}", JSON.toJSONString(dto));
Validator validator = new Validator(FormHandler.ofEntity(dto));
validator.set("returnOrderId", "退货单号").must().string()
.end();
if (!validator.isValid()) {
return Result.failed(ResultCode.PARAM_ERROR.getCode(), validator.getErrorInfo());
}
return returnOrderService.userConfirmSigned(dto);
}
......
......@@ -32,5 +32,10 @@ public class UserAddressServiceTest {
CloudServerResponse<UserAddressDTO> cloudServerResponse = userAddressReadService.getDefaultByType(userId, UserAddressTypeEnum.RECEIVE_ADDRESS.getType());
logger.info("cloudServerResponse = {}", cloudServerResponse);
logger.info("result = {}", JsonUtils.from(cloudServerResponse.getResult()));
long addressId = 1231000111;
CloudServerResponse<UserAddressDTO> addressDTOCloudServerResponse = userAddressReadService.getAddressByAddressId(addressId);
logger.info("addressDTOCloudServerResponse = {}", addressDTOCloudServerResponse);
logger.info("addressDTOCloudServerResponse result = {}", JsonUtils.from(addressDTOCloudServerResponse.getResult()));
}
}
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