This commit is contained in:
tangzh 2025-03-19 18:45:59 +08:00
parent 4c452e05c9
commit 517ade2842
26 changed files with 191 additions and 76 deletions

View File

@ -18,7 +18,9 @@ import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* 订单表 前端控制器
@ -85,6 +87,20 @@ public class StoreOrderController {
}
}
/**
* 订单备货
*/
@ApiOperation(value = "备货")
@RequestMapping(value = "/prepare", method = RequestMethod.POST)
@PreAuthorize("hasAuthority('admin:order:delete')")
public CommonResult<String> prepare(@RequestParam(value = "ids") String ids) {
List<Integer> idList = Arrays.stream(ids.split(",")).map(Integer::parseInt).collect(Collectors.toList());
if (storeOrderService.prepare(idList)) {
return CommonResult.success();
}
return CommonResult.failed();
}
/**
* 备注订单
*/
@ -92,7 +108,7 @@ public class StoreOrderController {
@ApiOperation(value = "备注")
@RequestMapping(value = "/mark", method = RequestMethod.POST)
public CommonResult<String> mark(@RequestParam String orderNo, @RequestParam String mark) {
if (storeOrderService.mark(orderNo, mark)) {
if (storeOrderService.mark(orderNo, mark, null)) {
return CommonResult.success();
} else {
return CommonResult.failed();

View File

@ -14,7 +14,6 @@ import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
@Slf4j

View File

@ -1,6 +1,6 @@
# CRMEB 相关配置
crmeb:
version: CRMEB-JAVA-KY-v1.3.4 # 当前代码版本
version: food-v1.0.0 # 当前代码版本
domain: #配合swagger使用 # 待部署域名
wechat-api-url: #请求微信接口中专服务器
wechat-js-api-debug: false #微信js api系列是否开启调试模式

View File

@ -357,7 +357,7 @@ public class Constants {
//订单状态
public static final String ORDER_STATUS_ALL = "all"; //所有
public static final String ORDER_STATUS_UNPAID = "unPaid"; //未支付
public static final String ORDER_STATUS_NOT_SHIPPED = "notShipped"; //未发货
public static final String ORDER_STATUS_NOT_SHIPPED = "notShipped"; //未发货待备货
public static final String ORDER_STATUS_PREPARE_ING = "prepareIng"; //备货中
public static final String ORDER_STATUS_SPIKE = "spike"; //待收货
public static final String ORDER_STATUS_BARGAIN = "bargain"; //已收货待评价
@ -373,7 +373,7 @@ public class Constants {
public static final String ORDER_STATUS_STR_PREPARE_ING = "备货中"; //未发货
public static final String ORDER_STATUS_STR_SPIKE = "待收货"; //待收货
public static final String ORDER_STATUS_STR_BARGAIN = "待评价"; //已收货待评价
public static final String ORDER_STATUS_STR_TAKE = "用户已收货"; //用户已收货
public static final String ORDER_STATUS_STR_TAKE = "订单已收货"; //用户已收货
public static final String ORDER_STATUS_STR_COMPLETE = "交易完成"; //交易完成
public static final String ORDER_STATUS_STR_TOBE_WRITTEN_OFF = "待核销"; //待核销
public static final String ORDER_STATUS_STR_APPLY_REFUNDING = "申请退款"; //申请退款
@ -411,7 +411,6 @@ public class Constants {
public static final String PAY_TYPE_YUE = "yue"; //余额支付
public static final String PAY_TYPE_OFFLINE = "offline"; //线下支付
public static final String PAY_TYPE_ALI_PAY = "alipay"; //支付宝
public static final String PAY_TYPE_TEA_FRUIT = "fruit"; //茶果支付
//支付客户端类型
public static final String PAY_TYPE_WE_CHAT_FROM_H5 = "weixinh5"; //H5唤起微信支付
@ -426,7 +425,6 @@ public class Constants {
public static final String PAY_TYPE_STR_YUE = "余额支付"; //余额支付
public static final String PAY_TYPE_STR_OFFLINE = "线下支付"; //线下支付
public static final String PAY_TYPE_STR_ALI_PAY = "支付宝支付"; //支付宝
public static final String PAY_TYPE_STR_TEA_FRUIT = "茶果兑换"; //支付宝
public static final String PAY_TYPE_STR_OTHER = "其他支付"; //其他支付
//需要支付的业务类型
@ -438,6 +436,7 @@ public class Constants {
public static final String ORDER_LOG_REFUND_PRICE = "refund_price"; //退款
public static final String ORDER_LOG_EXPRESS = "express"; //快递
public static final String ORDER_LOG_DELIVERY = "delivery"; //送货
public static final String ORDER_LOG_PREPARE = "prepare"; //备货
public static final String ORDER_LOG_DELIVERY_GOODS = "delivery_goods"; //送货
public static final String ORDER_LOG_REFUND_REFUSE = "refund_refuse"; //不退款
public static final String ORDER_LOG_REFUND_APPLY = "apply_refund"; //

View File

@ -48,7 +48,7 @@ public class CreateOrderRequest implements Serializable {
@ApiModelProperty(value = "是否使用积分")
// @NotNull(message = "是否使用积分不能为空")
private Boolean useIntegral;
private Boolean useIntegral = false;
@ApiModelProperty(value = "订单备注")
private String mark;
@ -57,7 +57,6 @@ public class CreateOrderRequest implements Serializable {
private String deliveryTime;
// 以下为到店自提参数
@ApiModelProperty(value = "自提点id")
private Integer storeId;

View File

@ -1,6 +1,5 @@
package com.zbkj.common.request;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -8,16 +7,9 @@ import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* 添加购物车参数Request对象
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ -37,8 +29,8 @@ public class OrderRefundApplyRequest {
@Length(max = 255, message = "退款原因不能超过255个字符")
private String returnReason;
@ApiModelProperty(value = "退款凭证图片(多个图片请用,(英文逗号)隔开)")
@JsonProperty("return_image")
@ApiModelProperty(value = "退款凭证图片(多个图片请用,(英文逗号)隔开)", required = true)
@NotNull(message = "请上传图片")
private String returnImage;
@ApiModelProperty(value = "联系人电话", required = true)

View File

@ -13,7 +13,7 @@ import lombok.experimental.Accessors;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="PreOrderRequest对象", description="预下单详情请求对象")
@ApiModel(value="PreOrderDetailRequest对象", description="PreOrderDetailRequest对象")
public class PreOrderDetailRequest {
@ApiModelProperty(value = "购物车编号,购物车预下单时必填")

View File

@ -16,7 +16,7 @@ import java.util.List;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="PreOrderRequest对象", description="预下单请求对象")
@ApiModel(value="PreOrderRequest对象", description="PreOrderRequest对象")
public class PreOrderRequest {
@ApiModelProperty(value = "预下单类型“shoppingCart”购物车下单“buyNow”立即购买”again“ 再次购买”video“: 视频号商品下单)")

View File

@ -51,7 +51,7 @@ public class OrderDetailResponse implements Serializable {
@ApiModelProperty(value = "优惠金额")
private BigDecimal couponPrice;
@ApiModelProperty(value = "订单状态0待发货1待收货2已收货待评价3已完成")
@ApiModelProperty(value = "订单状态0待发货(待备货)1待收货2已收货待评价3已完成4备货中")
private Integer status;
@ApiModelProperty(value = "订单状态")
@ -87,7 +87,7 @@ public class OrderDetailResponse implements Serializable {
@ApiModelProperty(value = "门店id")
private Integer storeId;
@ApiModelProperty(value = "配送方式 1=快递 2=门店自提")
@ApiModelProperty(value = "配送方式 1=快递 2=门店自提3=骑手配送")
private Integer shippingType;
@ApiModelProperty(value = "活动类型")

View File

@ -81,7 +81,7 @@ public class StoreOrderDetailInfoResponse implements Serializable {
@ApiModelProperty(value = "创建时间")
private Date createTime;
@ApiModelProperty(value = "订单状态0待发货1待收货2已收货待评价3已完成")
@ApiModelProperty(value = "订单状态0待发货(待备货)1待收货2已收货待评价3已完成4备货中")
private Integer status;
@ApiModelProperty(value = "0 未退款 1 申请中 2 已退款")
@ -162,7 +162,7 @@ public class StoreOrderDetailInfoResponse implements Serializable {
@ApiModelProperty(value = "门店id")
private Integer storeId;
@ApiModelProperty(value = "配送方式 1=快递 2=门店自提")
@ApiModelProperty(value = "配送方式 1=快递 2=门店自提3=骑手配送")
private Integer shippingType;
// @ApiModelProperty(value = "店员id")

View File

@ -26,6 +26,9 @@ public class StoreOrderDetailResponse implements Serializable {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "订单编号")
private Integer id;
@ApiModelProperty(value = "订单号")
private String orderId;

View File

@ -68,12 +68,15 @@ public class StoreOrderInfoResponse implements Serializable {
@ApiModelProperty(value = "创建时间")
private Date createTime;
@ApiModelProperty(value = "订单状态(-1 : 申请退款 -2 : 退货成功 0待发货1待收货2已收货3待评价-1已退款")
@ApiModelProperty(value = "订单状态(-1 : 申请退款 -2 : 退货成功 0待发货(待备货)1待收货2已收货3待评价4备货中-1已退款")
private Integer status;
@ApiModelProperty(value = "0 未退款 1 申请中 2 已退款")
private Integer refundStatus;
@ApiModelProperty(value = "退款图片")
private String refundReasonWapImg;
@ApiModelProperty(value = "快递名称/送货人姓名")
private String deliveryName;
@ -104,7 +107,7 @@ public class StoreOrderInfoResponse implements Serializable {
@ApiModelProperty(value = "核销码")
private String verifyCode;
@ApiModelProperty(value = "配送方式 1=快递 2=门店自提")
@ApiModelProperty(value = "配送方式 1=快递 2=门店自提3=骑手配送")
private Integer shippingType;
@ApiModelProperty(value = "订单状态")
@ -122,6 +125,9 @@ public class StoreOrderInfoResponse implements Serializable {
@ApiModelProperty(value = "订单商品详情")
List<StoreOrderInfoOldVo> orderInfo;
@ApiModelProperty(value = "售后信息")
ApplyRecordsResponse returnInfo;
@ApiModelProperty(value = "提货点")
private SystemStore systemStore;

View File

@ -128,7 +128,7 @@ public class DeliveryUtil {
}
String start = startDateTime.format(formatter);
String end = endDateTime.format(formatter);
intervals.add(start + "-" + end);
intervals.add(start + "~" + end);
if (end.equals(endTime.toString())) {
break;

View File

@ -37,8 +37,8 @@ public class UploadFrontController {
@ApiOperation(value = "图片上传")
@RequestMapping(value = "/image", method = RequestMethod.POST)
@ApiImplicitParams({
@ApiImplicitParam(name = "model", value = "模块 用户user,商品product,微信wechat,news文章"),
@ApiImplicitParam(name = "pid", value = "分类ID 0编辑器,1商品图片,2拼团图片,3砍价图片,4秒杀图片,5文章图片,6组合数据图,7前台用户,8微信系列 ", allowableValues = "range[0,1,2,3,4,5,6,7,8]")
@ApiImplicitParam(name = "model", value = "模块 用户user,商品product,微信wechat"),
@ApiImplicitParam(name = "pid", value = "分类ID 0编辑器,1商品图片,6组合数据图,7前台用户,8微信系列 ", allowableValues = "range[0,1,2,6,7,8]")
})
public CommonResult<FileResultVo> image(MultipartFile multipart,@RequestParam(value = "model") String model,
@RequestParam(value = "pid") Integer pid) throws IOException {

View File

@ -1,3 +1,14 @@
# 相关配置
crmeb:
version: food-v1.0.0 # 当前代码版本
domain: #配合swagger使用 # 待部署域名
wechat-api-url: #请求微信接口中专服务器
wechat-js-api-debug: false #微信js api系列是否开启调试模式
wechat-js-api-beta: true #微信js api是否是beta版本
asyncConfig: false #是否同步config表数据到redis
asyncWeChatProgramTempList: false #是否同步小程序公共模板库
imagePath: F:\idea_projects\my\prepare_food\foodimage\ # 服务器图片路径配置 斜杠结尾
server:
port: 20011

View File

@ -1,6 +1,6 @@
# 相关配置
crmeb:
version: front-1.0.0 # 当前代码版本
version: front-v1.0.0 # 当前代码版本
# 配置端口
server:

View File

@ -74,4 +74,10 @@ public interface StoreOrderDao extends BaseMapper<StoreOrder> {
*/
List<CanApplyOrderResponse> canApplyOrderList(Integer userId);
/**
* 退款拒绝清空字段
* @param storeOrder
*/
void refundRefuseUpdateById(StoreOrder storeOrder);
}

View File

@ -109,9 +109,6 @@ public class OrderUtils {
case Constants.PAY_TYPE_ALI_PAY:
payTypeStr = "支付宝支付";
break;
case Constants.PAY_TYPE_TEA_FRUIT:
payTypeStr = "茶叶兑换商品";
break;
default:
payTypeStr = "其他支付方式";
break;

View File

@ -21,6 +21,13 @@ public interface StoreOrderReturnService extends IService<StoreOrderReturn> {
*/
CommonPage<ApplyRecordsResponse> applyRecordsList(PageParamRequest pageRequest);
/**
* 售后信息
* @param orderId
* @return
*/
ApplyRecordsResponse getApplyByOrderId(Integer orderId);
/**
* 售后详情
* @param id

View File

@ -386,4 +386,12 @@ public interface StoreOrderService extends IService<StoreOrder> {
* @return
*/
List<CanApplyOrderResponse> canApplyOrderList(Integer userId);
/**
* 订单备货
* @param idList
* @return
*/
Boolean prepare(List<Integer> idList);
}

View File

@ -567,7 +567,8 @@ public class OrderServiceImpl implements OrderService {
// 订单详情对象列表
List<OrderInfoResponse> infoResponseList = CollUtil.newArrayList();
List<StoreOrderInfo> infoList = storeOrderInfoService.getListByOrderNo(storeOrder.getOrderId());
infoList.forEach(e -> {
BigDecimal proTotalPrice = BigDecimal.ZERO;
for (StoreOrderInfo e : infoList) {
OrderInfoResponse orderInfoResponse = new OrderInfoResponse();
orderInfoResponse.setStoreName(e.getProductName());
orderInfoResponse.setImage(e.getImage());
@ -577,8 +578,10 @@ public class OrderServiceImpl implements OrderService {
orderInfoResponse.setIsReply(e.getIsReply() ? 1 : 0);
orderInfoResponse.setAttrId(e.getAttrValueId());
orderInfoResponse.setSku(e.getSku());
orderInfoResponse.setCouponPrice(e.getCouponPrice());
infoResponseList.add(orderInfoResponse);
});
proTotalPrice = proTotalPrice.add(orderInfoResponse.getPrice().multiply(new BigDecimal(e.getPayNum())));
}
storeOrderDetailResponse.setOrderInfoList(infoResponseList);
// 系统门店信息
@ -587,11 +590,9 @@ public class OrderServiceImpl implements OrderService {
storeOrderDetailResponse.setSystemStore(systemStoreService.getByCondition(systemStorePram));
// 腾讯云地图key
storeOrderDetailResponse.setMapKey(systemConfigService.getValueByKey(SysConfigConstants.CONFIG_SITE_TENG_XUN_MAP_KEY));
BeanUtils.copyProperties(storeOrder, storeOrderDetailResponse);
storeOrderDetailResponse.setStatusPic(orderStatusVo.getStr("statusPic"));
storeOrderDetailResponse.setOrderStatusMsg(orderStatusVo.getStr("msg"));
storeOrderDetailResponse.setPayTypeStr(orderStatusVo.getStr("payTypeStr"));
BigDecimal proTotalPrice = storeOrderDetailResponse.getPayPrice().add(storeOrderDetailResponse.getCouponPrice()).add(storeOrderDetailResponse.getDeductionPrice()).subtract(storeOrderDetailResponse.getPayPostage());
storeOrderDetailResponse.setProTotalPrice(proTotalPrice);
return storeOrderDetailResponse;
}
@ -630,8 +631,8 @@ public class OrderServiceImpl implements OrderService {
record.set("msg", "正在为您退款,感谢您的支持");
} else if (storeOrder.getStatus() == 0) {
record.set("type", 1);
record.set("title", "发货");
record.set("msg", "商家发货,请耐心等待");
record.set("title", "发货");
record.set("msg", "商家发货,请耐心等待");
} else if (storeOrder.getStatus() == 1) { // 待收货处理
// 待收货
if (null != storeOrder.getDeliveryType() && storeOrder.getDeliveryType().equals(Constants.ORDER_STATUS_STR_SPIKE_KEY)) { // 送货
@ -651,8 +652,8 @@ public class OrderServiceImpl implements OrderService {
List<StoreOrderStatus> sOrderStatusResults = storeOrderStatusService.getByEntity(storeOrderStatus);
if (sOrderStatusResults.size()>0) {
record.set("type", 2);
record.set("title", "待收货");
record.set("msg", "商家已发货,请耐心等待");
record.set("title", "配送中");
record.set("msg", "商家正在配送中,请耐心等待");
}
}else {
StoreOrderStatus storeOrderStatus = new StoreOrderStatus();
@ -677,6 +678,10 @@ public class OrderServiceImpl implements OrderService {
record.set("type", 4);
record.set("title", "交易完成");
record.set("msg", "交易完成,感谢您的支持");
}else if (storeOrder.getStatus() == 4) {
record.set("type", 5);
record.set("title", "备货中");
record.set("msg", "正在备货中,请耐心等待");
}
// 支付方式
@ -843,6 +848,10 @@ public class OrderServiceImpl implements OrderService {
orderInfoResponse.setCartNum(e.getInfo().getPayNum());
orderInfoResponse.setPrice(e.getInfo().getPrice());
orderInfoResponse.setProductId(e.getProductId());
orderInfoResponse.setCouponPrice(e.getInfo().getCouponPrice());
orderInfoResponse.setAttrId(e.getInfo().getAttrValueId());
orderInfoResponse.setSku(e.getInfo().getSku());
orderInfoResponse.setIsReply(e.getInfo().getIsReply());
infoResponseList.add(orderInfoResponse);
});
response.setOrderInfoList(infoResponseList);
@ -897,6 +906,8 @@ public class OrderServiceImpl implements OrderService {
orderInfoResponse.setProductId(e.getProductId());
orderInfoResponse.setCouponPrice(e.getCouponPrice());
orderInfoResponse.setAttrId(e.getAttrValueId());
orderInfoResponse.setSku(e.getSku());
orderInfoResponse.setIsReply(e.getIsReply() ? 1 : 0);
infoResponseList.add(orderInfoResponse);
});
storeOrder.setOrderInfoList(infoResponseList);
@ -1230,7 +1241,7 @@ public class OrderServiceImpl implements OrderService {
verifyCode = CrmebUtil.randomCount(1000000000L, 9999999999L) + "";
userAddressStr = systemStore.getName();
} else if (request.getShippingType() == 3) { // 骑手配送
String deliveryTime = request.getDeliveryTime().split("-")[0];
String deliveryTime = request.getDeliveryTime().split("~")[0];
if (request.getAddressId() <= 0) throw new CrmebException("请选择配送地址");
if (StringUtils.isEmpty(deliveryTime)) throw new CrmebException("请选择配送时间");
@ -1248,7 +1259,7 @@ public class OrderServiceImpl implements OrderService {
Integer isNowDay = DeliveryUtil.isNowDay(dTime);
// 配送时间不是今天 (是今天下午 && 当前时间是上午) 通过
if (!(isNowDay == 0 || (isNowDay == 1 && DeliveryUtil.isAmOrPm(dTime) == 1 && DeliveryUtil.isAmOrPm(now) == 0))) {
throw new CrmebException("请重新选择配送时间");
throw new CrmebException("配送时间有误");
}
}
@ -1782,6 +1793,7 @@ public class OrderServiceImpl implements OrderService {
detailVo.setIsSub(storeProduct.getIsSub());
detailVo.setProductType(Constants.PRODUCT_TYPE_NORMAL);
detailVo.setVipPrice(detailVo.getPrice());
detailVo.setCouponPrice(BigDecimal.ZERO);
if (ObjectUtil.isNotNull(finalUserLevel)) {
BigDecimal vipPrice = detailVo.getPrice().multiply(new BigDecimal(finalUserLevel.getDiscount())).divide(new BigDecimal("100"), 2, BigDecimal.ROUND_HALF_UP);
detailVo.setVipPrice(vipPrice);

View File

@ -40,6 +40,8 @@ public class StoreOrderReturnServiceImpl extends ServiceImpl<StoreOrderReturnDao
public void refundErr(Integer orderId, String verifyFailReason) {
LambdaQueryWrapper<StoreOrderReturn> lw = new LambdaQueryWrapper<>();
lw.eq(StoreOrderReturn::getOrderId, orderId);
lw.orderByDesc(StoreOrderReturn::getId);
lw.last(" limit 1");
StoreOrderReturn one = getOne(lw);
StoreOrderReturn upd = new StoreOrderReturn();
upd.setId(one.getId());
@ -53,6 +55,8 @@ public class StoreOrderReturnServiceImpl extends ServiceImpl<StoreOrderReturnDao
public void refundOk(Integer orderId) {
LambdaQueryWrapper<StoreOrderReturn> lw = new LambdaQueryWrapper<>();
lw.eq(StoreOrderReturn::getOrderId, orderId);
lw.orderByDesc(StoreOrderReturn::getId);
lw.last(" limit 1");
StoreOrderReturn one = getOne(lw);
StoreOrderReturn upd = new StoreOrderReturn();
upd.setId(one.getId());
@ -68,21 +72,36 @@ public class StoreOrderReturnServiceImpl extends ServiceImpl<StoreOrderReturnDao
List<ApplyRecordsResponse> list = dao.applyRecordsList(userId, null);
PageHelper.clearPage();
for (ApplyRecordsResponse ar : list) {
ar.setReturnInfoList(storeOrderReturnInfoService.selectByReturnId(ar.getId()));
List<StoreOrderReturnInfo> returnInfoList = storeOrderReturnInfoService.selectByReturnId(ar.getId());
ar.setReturnInfoList(returnInfoList);
ar.setReturnNum(returnInfoList.stream().map(StoreOrderReturnInfo::getReturnNum).reduce(0, Integer::sum));
}
return CommonPage.restPage(list);
}
@Override
public ApplyRecordsResponse getApplyRecord(String id) {
Integer userId = userService.getUserIdException();
List<ApplyRecordsResponse> list = dao.applyRecordsList(userId, Integer.parseInt(id));
if (list.isEmpty()) { throw new CrmebException("未找到信息"); }
public ApplyRecordsResponse getApplyByOrderId(Integer orderId) {
LambdaQueryWrapper<StoreOrderReturn> lw = new LambdaQueryWrapper<>();
lw.eq(StoreOrderReturn::getOrderId, orderId);
lw.orderByDesc(StoreOrderReturn::getId);
lw.last(" limit 1");
StoreOrderReturn oReturn = dao.selectOne(lw);
return getReturn(null, oReturn.getId());
}
private ApplyRecordsResponse getReturn(Integer userId, Integer returnId) {
List<ApplyRecordsResponse> list = dao.applyRecordsList(userId, returnId);
if (list.isEmpty()) { throw new CrmebException("未找到信息"); }
ApplyRecordsResponse response = list.get(0);
List<StoreOrderReturnInfo> returnInfoList = storeOrderReturnInfoService.selectByReturnId(response.getId());
response.setReturnInfoList(returnInfoList);
response.setReturnNum(returnInfoList.stream().map(StoreOrderReturnInfo::getReturnNum).reduce(0, Integer::sum));
return response;
}
@Override
public ApplyRecordsResponse getApplyRecord(String id) {
Integer userId = userService.getUserIdException();
return getReturn(userId, Integer.parseInt(id));
}
}

View File

@ -133,7 +133,7 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderDao, StoreOrder
Page<Object> startPage = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit());
QueryWrapper<StoreOrder> queryWrapper = new QueryWrapper<>();
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"
, "refund_reason_wap_img", "refund_reason_wap_explain", "refund_reason_wap", "refund_reason", "refund_reason_time", "refund_price"
, "is_del", "combination_id", "pink_id", "seckill_id", "bargain_id", "verify_code", "remark", "paid", "is_system_del", "shipping_type", "type", "is_alter_price");
if (StrUtil.isNotBlank(request.getOrderNo())) {
queryWrapper.eq("order_id", request.getOrderNo());
@ -522,7 +522,7 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderDao, StoreOrder
//退款
if (storeOrder.getPayType().equals(Constants.PAY_TYPE_WE_CHAT) && request.getAmount().compareTo(BigDecimal.ZERO) > 0) {
try {
storeOrderRefundService.refund(request, storeOrder);
//storeOrderRefundService.refund(request, storeOrder);
} catch (Exception e) {
e.printStackTrace();
throw new CrmebException("微信申请退款失败!");
@ -592,8 +592,12 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderDao, StoreOrder
// User spread = userService.getById(brokerageRecord.getUid());
// storeOrderInfoResponse.setSpreadName(spread.getNickname());
// }
// 售后信息
storeOrderInfoResponse.setProTotalPrice(storeOrder.getTotalPrice().subtract(storeOrder.getTotalPostage()));
if (storeOrderInfoResponse.getRefundStatus() > 0) {
ApplyRecordsResponse returnInfo = storeOrderReturnService.getApplyByOrderId(storeOrderInfoResponse.getId());
storeOrderInfoResponse.setReturnInfo(returnInfo);
}
return storeOrderInfoResponse;
}
@ -608,7 +612,7 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderDao, StoreOrder
//订单信息
StoreOrder storeOrder = getInfoException(request.getOrderNo());
if (storeOrder.getIsDel()) throw new CrmebException("订单已删除,不能发货!");
if (storeOrder.getStatus() > 0) throw new CrmebException("订单已发货请勿重复操作!");
if (!(storeOrder.getStatus() == 0 || storeOrder.getStatus() == 4)) throw new CrmebException("订单已发货请勿重复操作!");
request.setId(storeOrder.getId());
switch (request.getType()) {
case "1":// 发货
@ -635,6 +639,7 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderDao, StoreOrder
@Override
public Boolean mark(String orderNo, String mark, String deliveryTime) {
StoreOrder storeOrder = getInfoException(orderNo);
if (StringUtils.isEmpty(mark) && StringUtils.isEmpty(deliveryTime)) { return true; }
storeOrder.setRemark(mark);
storeOrder.setDeliveryTime(deliveryTime);
return updateById(storeOrder);
@ -652,11 +657,13 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderDao, StoreOrder
throw new CrmebException("请填写拒绝退款原因");
}
StoreOrder storeOrder = getInfoException(orderNo);
storeOrder.setRefundReason(reason);
storeOrder.setRefundStatus(0);
StoreOrder update = new StoreOrder();
update.setId(storeOrder.getId());
update.setRefundReason(reason);
update.setRefundStatus(0);
Boolean execute = transactionTemplate.execute(e -> {
updateById(storeOrder);
dao.refundRefuseUpdateById(update);
storeOrderReturnService.refundErr(storeOrder.getId(), reason);
storeOrderStatusService.createLog(storeOrder.getId(), Constants.ORDER_LOG_REFUND_REFUSE, Constants.ORDER_LOG_MESSAGE_REFUND_REFUSE.replace("{reason}", reason));
return Boolean.TRUE;
@ -1424,6 +1431,27 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderDao, StoreOrder
///////////////////////////////////////////////////////////////////////////////////////////////////// 以下为自定义方法
@Override
public Boolean prepare(List<Integer> idList) {
List<StoreOrder> storeOrders = dao.selectBatchIds(idList);
// 未发货订单
List<StoreOrder> notShippeds = storeOrders.stream().filter(i ->
(i.getPaid() && i.getStatus() == 0 && i.getRefundStatus() == 0 && !i.getIsDel() && !i.getIsSystemDel())
).collect(Collectors.toList());
if (storeOrders.size() != notShippeds.size()) { throw new CrmebException("选中的订单中含有不是未发货订单!"); }
for (StoreOrder storeOrder : notShippeds) {
Boolean execute = transactionTemplate.execute(i -> {
storeOrder.setStatus(4); // 改备货中
updateById(storeOrder);
//订单记录增加
storeOrderStatusService.createLog(storeOrder.getId(), Constants.ORDER_LOG_PREPARE, "订单已备货");
return Boolean.TRUE;
});
if (!execute) throw new CrmebException("订单备货失败!");
}
return true;
}
/**
* 根据时间参数获取有效订单
* @return 有效订单列表
@ -1925,14 +1953,14 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderDao, StoreOrder
queryWrapper.eq("paid", 1);
queryWrapper.eq("status", 0);
queryWrapper.eq("refund_status", 0);
queryWrapper.eq("shipping_type", 1);//配送方式
queryWrapper.in("shipping_type", 1, 3);//配送方式
queryWrapper.eq("is_del", 0);
break;
case Constants.ORDER_STATUS_PREPARE_ING: //备货中
queryWrapper.eq("paid", 1);
queryWrapper.eq("status", 4);
queryWrapper.eq("refund_status", 0);
queryWrapper.eq("shipping_type", 1);//配送方式
queryWrapper.in("shipping_type", 1, 3);//配送方式
queryWrapper.eq("is_del", 0);
break;
case Constants.ORDER_STATUS_SPIKE: //待收货
@ -2008,7 +2036,7 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderDao, StoreOrder
if (storeOrder.getPaid()
&& storeOrder.getStatus() == 0
&& storeOrder.getRefundStatus() == 0
&& storeOrder.getShippingType() == 1
&& (storeOrder.getShippingType() == 1 || storeOrder.getShippingType() == 3)
&& !storeOrder.getIsDel()
&& !storeOrder.getIsSystemDel()) {
map.put("key", Constants.ORDER_STATUS_NOT_SHIPPED);
@ -2019,7 +2047,7 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderDao, StoreOrder
if (storeOrder.getPaid()
&& storeOrder.getStatus() == 4
&& storeOrder.getRefundStatus() == 0
&& storeOrder.getShippingType() == 1
&&(storeOrder.getShippingType() == 1 || storeOrder.getShippingType() == 3)
&& !storeOrder.getIsDel()
&& !storeOrder.getIsSystemDel()) {
map.put("key", Constants.ORDER_STATUS_PREPARE_ING);
@ -2030,7 +2058,7 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderDao, StoreOrder
if (storeOrder.getPaid()
&& storeOrder.getStatus() == 1
&& storeOrder.getRefundStatus() == 0
&& storeOrder.getShippingType() == 1
&& (storeOrder.getShippingType() == 1 || storeOrder.getShippingType() == 3)
&& !storeOrder.getIsDel()
&& !storeOrder.getIsSystemDel()) {
map.put("key", Constants.ORDER_STATUS_SPIKE);
@ -2118,8 +2146,6 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderDao, StoreOrder
return Constants.PAY_TYPE_STR_YUE;
case Constants.PAY_TYPE_ALI_PAY:
return Constants.PAY_TYPE_STR_ALI_PAY;
case Constants.PAY_TYPE_TEA_FRUIT:
return Constants.PAY_TYPE_STR_TEA_FRUIT;
default:
return Constants.PAY_TYPE_STR_OTHER;
}

View File

@ -257,17 +257,17 @@ public class StoreOrderTaskServiceImpl implements StoreOrderTaskService {
}
// 回滚经验
UserExperienceRecord userExperienceRecord = userExperienceRecordService.getByOrderNoAndUid(storeOrder.getOrderId(), storeOrder.getUid());
user.setExperience(user.getExperience() - userExperienceRecord.getExperience());
//UserExperienceRecord userExperienceRecord = userExperienceRecordService.getByOrderNoAndUid(storeOrder.getOrderId(), storeOrder.getUid());
//user.setExperience(user.getExperience() - userExperienceRecord.getExperience());
UserExperienceRecord experienceRecord = new UserExperienceRecord();
BeanUtils.copyProperties(userExperienceRecord, experienceRecord);
experienceRecord.setId(null);
experienceRecord.setTitle(ExperienceRecordConstants.EXPERIENCE_RECORD_TITLE_REFUND);
experienceRecord.setType(ExperienceRecordConstants.EXPERIENCE_RECORD_TYPE_SUB);
experienceRecord.setBalance(user.getExperience());
experienceRecord.setMark(StrUtil.format("订单退款,扣除{}赠送经验", userExperienceRecord.getExperience()));
experienceRecord.setCreateTime(cn.hutool.core.date.DateUtil.date());
// UserExperienceRecord experienceRecord = new UserExperienceRecord();
// BeanUtils.copyProperties(userExperienceRecord, experienceRecord);
// experienceRecord.setId(null);
// experienceRecord.setTitle(ExperienceRecordConstants.EXPERIENCE_RECORD_TITLE_REFUND);
// experienceRecord.setType(ExperienceRecordConstants.EXPERIENCE_RECORD_TYPE_SUB);
// experienceRecord.setBalance(user.getExperience());
// experienceRecord.setMark(StrUtil.format("订单退款,扣除{}赠送经验", userExperienceRecord.getExperience()));
// experienceRecord.setCreateTime(cn.hutool.core.date.DateUtil.date());
// 回滚积分
List<UserIntegralRecord> integralRecordList = userIntegralRecordService.findListByOrderIdAndUid(storeOrder.getOrderId(), storeOrder.getUid());
@ -327,8 +327,8 @@ public class StoreOrderTaskServiceImpl implements StoreOrderTaskService {
// }
// 经验处理
userExperienceRecordService.save(experienceRecord);
userLevelService.downLevel(user);
//userExperienceRecordService.save(experienceRecord);
//userLevelService.downLevel(user);
// 回滚库存
rollbackStock(storeOrder);

View File

@ -2,6 +2,20 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zbkj.service.dao.StoreOrderDao">
<update id="refundRefuseUpdateById" parameterType="com.zbkj.common.model.order.StoreOrder">
update eb_store_order
<set>
refund_status = 0,
refund_reason = #{refundReason},
refund_reason_wap_img = null,
refund_reason_wap_explain = null,
refund_reason_wap = null,
refund_reason_time = null,
refund_price = 0
</set>
where id = #{ id, jdbcType=INTEGER}
</update>
<select id="canApplyOrderList" resultType="com.zbkj.common.response.CanApplyOrderResponse">
SELECT o.id, o.order_id orderId, o.create_time createTime, o.pay_price payPrice
FROM eb_store_order o

View File

@ -7,7 +7,8 @@
r.return_amount returnAmount, r.create_time createTime, return_verify_date returnVerifyDate,
r.return_reason returnReason, r.return_image returnImage, refund_verify_fail_reason refundVerifyFailReason
FROM eb_store_order_return r
WHERE r.uid = #{uid}
WHERE 1=1
<if test="uid != null"> and r.uid = #{uid} </if>
<if test="returnId != null"> and r.id = #{returnId} </if>
ORDER BY id DESC
</select>