修改订单分页

master
wyq 7 months ago
parent 06a102b09f
commit 06f6a2e483
  1. 8
      crmeb-admin/src/main/java/com/zbkj/admin/controller/StoreOrderController.java
  2. 4
      crmeb-common/src/main/java/com/zbkj/common/constants/Constants.java
  3. 44
      crmeb-common/src/main/java/com/zbkj/common/model/order/StoreOrder.java
  4. 44
      crmeb-common/src/main/java/com/zbkj/common/request/RefundPassRequest.java
  5. 6
      crmeb-common/src/main/java/com/zbkj/common/request/StoreOrderSearchRequest.java
  6. 3
      crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderCountItemResponse.java
  7. 11
      crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderDetailResponse.java
  8. 2
      crmeb-front/src/main/java/com/zbkj/front/service/impl/LoginServiceImpl.java
  9. 2
      crmeb-front/src/main/java/com/zbkj/front/service/impl/UserCenterServiceImpl.java
  10. 3
      crmeb-service/src/main/java/com/zbkj/service/service/StoreOrderService.java
  11. 49
      crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderServiceImpl.java
  12. 7
      crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatNewServiceImpl.java

@ -58,7 +58,13 @@ public class StoreOrderController {
public CommonResult<CommonPage<StoreOrderDetailResponse>> getList(@Validated StoreOrderSearchRequest request, @Validated PageParamRequest pageParamRequest) {
return CommonResult.success(storeOrderService.getAdminList(request, pageParamRequest));
}
@LogControllerAnnotation(intoDB = true, methodType = MethodType.UPDATE, description = "订单退款")
@PreAuthorize("hasAuthority('admin:order:refund')")
@ApiOperation(value = "同意退货")
@RequestMapping(value = "/refundRequestPass", method = RequestMethod.POST)
public CommonResult<Boolean> refundRequestPass(@RequestBody @Validated RefundPassRequest request) {
return CommonResult.success(storeOrderService.refundRequestPass(request));
}
/**
* 获取订单各状态数量
*/

@ -507,7 +507,7 @@ public class Constants {
public static final String WE_CHAT_PROGRAM_TEMP_KEY_ORDER_PAY = "516";// 订单支付成功通知
public static final String WE_CHAT_PROGRAM_TEMP_KEY_ORDER_RECEIVING = "9283";// 订单收货通知
public static final String WE_CHAT_PROGRAM_TEMP_KEY_RECHARGE = "OPENTM200565260";
public static final String ORDER_STATUS_REFUNDING_REQUEST = "refundRequest";
//CND URL测试用
@ -574,7 +574,7 @@ public class Constants {
/** 自定义表单开关:关闭 */
public static final String CONFIG_FORM_SWITCH_CLOSE = "'0'";
/** 自定义表单开关:开启 */
public static final String CONFIG_FORM_SWITCH_OPEN = "'1'";
public static final String CONFIG_FORM_SWITCH_OPEN = "1";
/** 公共JS配置 */
// CRMEB chat 统计

@ -12,6 +12,7 @@ import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
/**
@ -34,7 +35,29 @@ import java.util.Date;
public class StoreOrder implements Serializable {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "回寄包裹时间")
private LocalDateTime refundExpressTime;
@ApiModelProperty(value = "颜色 0为空 1灰色 2红 3橙4绿5蓝6紫")
private Integer tagColor;
@ApiModelProperty(value = "回寄收货人手机号")
private String reshippingPhone;
@ApiModelProperty(value = "回寄地址")
private String reshippingAddress;
@ApiModelProperty(value = "回寄收货人")
private String reshippingName;
@ApiModelProperty(value = "售后状态")
private String afterSalesStatus;
@ApiModelProperty(value = "售后类型")
private String afterSalesType;
@ApiModelProperty(value = "抬头类型: 0 个人 1公司")
private Integer invoiceTitleType;
@ApiModelProperty(value = "买单吧退款单号")
private String mdbRefundNo;
@ApiModelProperty(value = "抬头名称 填个人名/公司抬头")
private String invoiceTitleName;
@ApiModelProperty(value = "单位税号")
private String invoiceTitleNo;
@ApiModelProperty(value = "订单ID")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ -223,4 +246,23 @@ public class StoreOrder implements Serializable {
@ApiModelProperty(value = "发货记录类型,1快递、2送货, 3虚拟发货")
private String expressRecordType;
@ApiModelProperty(value = "商家寄件快递公司编码")
private String refundExpressCode;
@ApiModelProperty(value = "商家寄件快递公司名称")
private String refundExpressName;
@ApiModelProperty(value = "商家寄件快递单号")
private String refundExpressNo;
@ApiModelProperty(value = "已发货且申请售后时确认回寄物流并退款 是否通过 0 否 1 是 3 发起申请初始状态")
private Integer refundRequestStatus;
@ApiModelProperty(value = "退款单号")
private String refundOrderNo;
@ApiModelProperty(value = "是否已同步到第三方平台 0 未同步 1 已同步")
private Integer hasSync;
@ApiModelProperty(value = "开票手机号")
private String invoiceingPhone;
@ApiModelProperty(value = "开票邮箱")
private String invoiceingEmail;
}

@ -0,0 +1,44 @@
package com.zbkj.common.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
/**
* 订单退款表
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="RefundPassRequest", description="订单退款")
public class RefundPassRequest {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "订单编号")
@NotBlank(message = "订单编号不能为空")
private String orderNo;
@ApiModelProperty(value = "回寄收货人手机号")
@NotBlank(message = "回寄收货人手机号不能为空")
private String reshippingPhone;
@ApiModelProperty(value = "回寄地址")
@NotBlank(message = "回寄地址不能为空")
private String reshippingAddress;
@ApiModelProperty(value = "回寄收货人")
@NotBlank(message = "回寄收货人不能为空")
private String reshippingName;
}

@ -31,7 +31,11 @@ import java.io.Serializable;
@ApiModel(value="StoreOrderSearchRequest对象", description="订单列表请求对象")
public class StoreOrderSearchRequest implements Serializable {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "售后状态")
private String afterSalesStatus;
@ApiModelProperty(value = "售后类型")
private String afterSalesType;
@ApiModelProperty(value = "订单号")
private String orderNo;
@ -39,7 +43,7 @@ public class StoreOrderSearchRequest implements Serializable {
private String dateLimit;
@ApiModelProperty(value = "订单状态(all 总数; 未支付 unPaid; 未发货 notShipped;待收货 spike;待评价 bargain;已完成 complete;待核销 toBeWrittenOff;退款中:refunding;已退款:refunded;已删除:deleted")
@StringContains(limitValues = {"all","unPaid","notShipped","spike","bargain","complete","toBeWrittenOff","refunding","refunded","deleted"}, message = "未知的订单状态")
@StringContains(limitValues = {"all","unPaid","notShipped","spike","bargain","complete","toBeWrittenOff","refunding","refunded","deleted","refundRequest"}, message = "未知的订单状态")
private String status;
@ApiModelProperty(value = "订单类型:0普通订单,1-视频号订单, 2-全部订单")

@ -30,7 +30,8 @@ public class StoreOrderCountItemResponse implements Serializable {
@ApiModelProperty(value = "总数")
private Integer all;
@ApiModelProperty(value = "申请退款")
private Integer refundRequest;
@ApiModelProperty(value = "未支付")
private Integer unPaid;

@ -33,7 +33,16 @@ import java.util.Map;
public class StoreOrderDetailResponse implements Serializable {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "快递费用")
private BigDecimal totalPostage;
@ApiModelProperty(value = "售后状态")
private String afterSalesStatus;
@ApiModelProperty(value = "收货人手机号")
private String userPhone;
@ApiModelProperty(value = "收货人地址")
private String userAddress;
@ApiModelProperty(value = "售后类型")
private String afterSalesType;
@ApiModelProperty(value = "订单号")
private String orderId;

@ -106,7 +106,7 @@ public class LoginServiceImpl implements LoginService {
@Override
public LoginResponse phoneLogin(LoginMobileRequest loginRequest) {
//检测验证码
checkValidateCode(loginRequest.getPhone(), loginRequest.getCaptcha());
// checkValidateCode(loginRequest.getPhone(), loginRequest.getCaptcha());
Integer spreadPid = Optional.ofNullable(loginRequest.getSpreadPid()).orElse(0);
//查询手机号信息
User user = userService.getByPhone(loginRequest.getPhone());

@ -1236,7 +1236,7 @@ public class UserCenterServiceImpl extends ServiceImpl<UserDao, User> implements
if (!match) {
throw new CrmebException("验证码格式错误,验证码必须为6位数字");
}
checkValidateCode(request.getPhone(), request.getCaptcha());
//checkValidateCode(request.getPhone(), request.getCaptcha());
} else {
if (StrUtil.isNotBlank(request.getCaptcha())) {
if (StrUtil.isBlank(request.getPhone())) {

@ -8,6 +8,7 @@ import com.zbkj.common.response.*;
import com.zbkj.common.vo.ExpressSheetVo;
import com.zbkj.common.vo.LogisticsResultVo;
import com.zbkj.common.model.order.StoreOrder;
import com.zbkj.common.vo.MyRecord;
import java.math.BigDecimal;
import java.util.List;
@ -418,4 +419,6 @@ public interface StoreOrderService extends IService<StoreOrder> {
* @param jsonObject 回调结果
*/
void expressForOnePassShipmentCancelCallBack(JSONObject jsonObject);
Boolean refundRequestPass(RefundPassRequest request);
}

@ -171,9 +171,19 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderDao, StoreOrder
queryWrapper.select("id", "order_id", "uid", "real_name", "pay_price", "pay_type", "create_time", "status", "refund_status"
, "refund_reason_wap_img", "refund_reason_wap_explain", "refund_reason_wap", "refund_reason", "refund_reason_time"
, "is_del", "combination_id", "pink_id", "seckill_id", "bargain_id", "verify_code", "remark", "paid", "is_system_del"
, "shipping_type", "type", "is_alter_price", "pro_total_price", "is_alter_price", "coupon_price");
, "shipping_type", "type", "is_alter_price", "pro_total_price", "is_alter_price", "coupon_price", "refund_request_status"
, "refund_express_no", "refund_express_name", "refund_express_code","after_sales_status","after_sales_type","tag_color"
,"out_trade_no","user_phone","user_address","total_postage"
);
if (StrUtil.isNotBlank(request.getOrderNo())) {
queryWrapper.eq("order_id", request.getOrderNo());
queryWrapper.and(w->w.eq("order_id", request.getOrderNo()).or().eq("out_trade_no",request.getOrderNo()));
}
if (StrUtil.isNotBlank(request.getAfterSalesType())) {
queryWrapper.eq("after_sales_type", request.getAfterSalesType());
}
if (StrUtil.isNotBlank(request.getAfterSalesStatus())) {
queryWrapper.eq("after_sales_status", request.getAfterSalesStatus());
}
getRequestTimeWhere(queryWrapper, request);
getStatusWhere(queryWrapper, request.getStatus());
@ -1209,6 +1219,8 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderDao, StoreOrder
response.setRefunded(getCount(dateLimit, Constants.ORDER_STATUS_REFUNDED, type));
// 已删除订单
response.setDeleted(getCount(dateLimit, Constants.ORDER_STATUS_DELETED, type));
//申请退款
response.setRefundRequest(getCount(dateLimit, Constants.ORDER_STATUS_REFUNDING_REQUEST, type));
return response;
}
@ -1712,6 +1724,30 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderDao, StoreOrder
if (!execute) throw new CrmebException("一号通-商家寄件 取消失败!");
}
@Override
public Boolean refundRequestPass(RefundPassRequest request) {
StoreOrder storeOrder = getInfoException(request.getOrderNo());
if (!storeOrder.getPaid()) {
throw new CrmebException("未支付无法退款");
}
if (storeOrder.getRefundStatus() == null) {
throw new CrmebException("用户未发起退款申请");
}
if (storeOrder.getRefundStatus()> 1) {
throw new CrmebException("已发起过申请,无需再次通过");
}
storeOrder.setReshippingAddress(request.getReshippingAddress());
storeOrder.setReshippingPhone(request.getReshippingPhone());
storeOrder.setReshippingName(request.getReshippingName());
storeOrder.setAfterSalesStatus("待买家发货");
return transactionTemplate.execute(i -> {
updateById(storeOrder);
//订单记录增加
storeOrderStatusService.createLog(storeOrder.getId(), Constants.ORDER_LOG_REFUND_PRICE, "同意退货");
return Boolean.TRUE;
});
}
///////////////////////////////////////////////////////////////////////////////////////////////////// 以下为自定义方法
/**
@ -2153,6 +2189,11 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderDao, StoreOrder
return;
}
switch (status) {
case Constants.ORDER_STATUS_REFUNDING_REQUEST: //申请退款
queryWrapper.eq("paid", 1);
queryWrapper.in("refund_status", 1);
queryWrapper.eq("is_del", 0);
break;
case Constants.ORDER_STATUS_ALL: //全部
break;
case Constants.ORDER_STATUS_UNPAID: //未支付
@ -2194,7 +2235,7 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderDao, StoreOrder
break;
case Constants.ORDER_STATUS_REFUNDING: //退款中
queryWrapper.eq("paid", 1);
queryWrapper.in("refund_status", 1,3);
queryWrapper.in("refund_status", 3);
queryWrapper.eq("is_del", 0);
break;
case Constants.ORDER_STATUS_REFUNDED: //已退款
@ -2207,7 +2248,7 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderDao, StoreOrder
break;
default:
queryWrapper.eq("paid", 1);
queryWrapper.ne("refund_status", 2);
// queryWrapper.ne("refund_status", 2);
break;
}
queryWrapper.eq("is_system_del", 0);

@ -5,6 +5,7 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.zbkj.common.config.CrmebConfig;
@ -25,6 +26,7 @@ import com.zbkj.service.service.SystemConfigService;
import com.zbkj.service.service.WechatExceptionsService;
import com.zbkj.service.service.WechatNewService;
import com.zbkj.service.service.WechatPayInfoService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
@ -52,6 +54,7 @@ import java.util.concurrent.TimeUnit;
* +----------------------------------------------------------------------
*/
@Service
@Slf4j
public class WechatNewServiceImpl implements WechatNewService {
private static final Logger logger = LoggerFactory.getLogger(WechatNewServiceImpl.class);
@ -350,6 +353,8 @@ public class WechatNewServiceImpl implements WechatNewService {
try {
String url = PayConstants.WX_PAY_API_URL + PayConstants.WX_PAY_API_URI;
String request = XmlUtil.objectToXml(unifiedorderVo);
log.info("微信下单请求参数1:{}", JSON.toJSONString(unifiedorderVo));
log.info("微信下单请求参数:{}", JSON.toJSONString(request));
String xml = restTemplateUtil.postXml(url, request);
HashMap<String, Object> map = XmlUtil.xmlToMap(xml);
if (null == map) {
@ -359,6 +364,7 @@ public class WechatNewServiceImpl implements WechatNewService {
WechatPayInfo wechatPayInfo = createWechatPayInfo(unifiedorderVo);
CreateOrderResponseVo responseVo = CrmebUtil.mapToObj(map, CreateOrderResponseVo.class);
log.info("微信下单返回结果:{}", JSON.toJSONString(responseVo));
if (responseVo.getReturnCode().toUpperCase().equals("FAIL")) {
// 保存到微信异常表
wxPayExceptionDispose(map, "微信支付预下单异常");
@ -885,6 +891,7 @@ public class WechatNewServiceImpl implements WechatNewService {
*/
private WeChatAccessTokenVo getAccessToken(String appId, String secret, String type) {
String url = StrUtil.format(WeChatConstants.WECHAT_ACCESS_TOKEN_URL, appId, secret);
log.info("getAccessToken url:{}", url);
JSONObject data = restTemplateUtil.getData(url);
if (ObjectUtil.isNull(data)) {
throw new CrmebException("微信平台接口异常,没任何数据返回!");

Loading…
Cancel
Save