From d448834784e996a3c35c90097c4e7b110899bed2 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Fri, 04 Jul 2025 14:02:02 +0800
Subject: [PATCH] feat(clothes): 添加订单管理功能
---
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java | 291 ++++++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 254 insertions(+), 37 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java
index b489cc7..8c2676e 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java
@@ -16,6 +16,7 @@
import cc.mrbird.febs.mall.service.IApiMallTeamLeaderService;
import cc.mrbird.febs.mall.service.IMallMoneyFlowService;
import cc.mrbird.febs.mall.vo.*;
+import cc.mrbird.febs.mall.vo.activity.ApiCheckOrderVo;
import cc.mrbird.febs.pay.model.OrderStateDto;
import cc.mrbird.febs.pay.service.IXcxPayService;
import cc.mrbird.febs.pay.util.WeixinServiceUtil;
@@ -26,6 +27,7 @@
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -71,6 +73,7 @@
public FebsResponse applyLeader(ApiApplayLeaderDto apiApplayLeaderDto) {
MallMember member = LoginUserUtil.getLoginUser();
Long memberId = member.getId();
+ MallTeamLeader mallTeamLeaderAdd = new MallTeamLeader();
List<MallTeamLeader> mallTeamLeaders = this.baseMapper.selectListByMemberIdAndState(memberId, MallTeamLeader.STATE_ING);
if(CollUtil.isNotEmpty(mallTeamLeaders)){
return new FebsResponse().fail().message("正在申请中");
@@ -79,14 +82,33 @@
if(CollUtil.isNotEmpty(mallTeamLeaderCancel)){
return new FebsResponse().fail().message("当前用户无法申请");
}
- MallTeamLeader mallTeamLeader = MallTeamLeaderConversion.INSTANCE.dtoToEntity(apiApplayLeaderDto);
- mallTeamLeader.setMemberId(memberId);
- mallTeamLeader.setState(MallTeamLeader.STATE_ING);
- mallTeamLeader.setUniqueCode(member.getInviteId());
- //申请团长默认关闭返利,返利比例为0
- mallTeamLeader.setProfitSwitch(2);
- mallTeamLeader.setBonusPercent("0");
- this.baseMapper.insert(mallTeamLeader);
+ List<MallTeamLeader> mallTeamLeaderNo = this.baseMapper.selectListByMemberIdAndState(memberId, MallTeamLeader.STATE_NO);
+ if(CollUtil.isNotEmpty(mallTeamLeaderNo)){
+ mallTeamLeaderAdd = mallTeamLeaderNo.get(0);
+ if(ObjectUtil.isNotEmpty(mallTeamLeaderAdd)){
+ mallTeamLeaderAdd.setName(apiApplayLeaderDto.getName());
+ mallTeamLeaderAdd.setPhone(apiApplayLeaderDto.getPhone());
+ mallTeamLeaderAdd.setAddressPic(apiApplayLeaderDto.getAddressPic());
+ mallTeamLeaderAdd.setAddressArea(apiApplayLeaderDto.getAddressArea());
+ mallTeamLeaderAdd.setDetailAddress(apiApplayLeaderDto.getDetailAddress());
+ mallTeamLeaderAdd.setLongitude(apiApplayLeaderDto.getLongitude());
+ mallTeamLeaderAdd.setLatitude(apiApplayLeaderDto.getLatitude());
+ mallTeamLeaderAdd.setState(MallTeamLeader.STATE_ING);
+ //申请团长默认关闭返利,返利比例为0
+ mallTeamLeaderAdd.setProfitSwitch(2);
+ mallTeamLeaderAdd.setBonusPercent("0");
+ this.baseMapper.updateById(mallTeamLeaderAdd);
+ }
+ }else{
+ MallTeamLeader mallTeamLeader = MallTeamLeaderConversion.INSTANCE.dtoToEntity(apiApplayLeaderDto);
+ mallTeamLeader.setMemberId(memberId);
+ mallTeamLeader.setState(MallTeamLeader.STATE_ING);
+ mallTeamLeader.setUniqueCode(member.getInviteId());
+ //申请团长默认关闭返利,返利比例为0
+ mallTeamLeader.setProfitSwitch(2);
+ mallTeamLeader.setBonusPercent("0");
+ this.baseMapper.insert(mallTeamLeader);
+ }
return new FebsResponse().success().message("申请成功");
}
@@ -232,7 +254,7 @@
orderStateDto.setGoodsName(StrUtil.sub(productNames,0,20)+"...");
String takeUniqueCode = mallOrderInfo.getTakeUniqueCode();
MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(takeUniqueCode);
- orderStateDto.setAddressArea(StrUtil.sub(mallTeamLeader.getAddressArea(),0,20)+"...");
+ orderStateDto.setAddressArea(mallTeamLeader.getAddressArea());
orderStateDto.setDetailAddress(StrUtil.sub(mallTeamLeader.getDetailAddress(),0,20)+"...");
orderStateDto.setLeaderPhone(mallTeamLeader.getPhone());
orderStateDto.setOpenId(mallMemberMapper.selectById(mallOrderInfo.getMemberId()).getOpenId());
@@ -290,26 +312,26 @@
ApiLeaderInfoVo apiLeaderInfoVo = new ApiLeaderInfoVo();
MallTeamLeader mallTeamLeader = new MallTeamLeader();
MallMember member = LoginUserUtil.getLoginUser();
- if(ObjectUtil.isNotEmpty(member)){
- MallLeaderDefault mallLeaderDefault = mallLeaderDefaultMapper.selectByMemberId(member.getId());
- if(ObjectUtil.isNotEmpty(mallLeaderDefault)){
- mallTeamLeader = this.baseMapper.selectLeaderByUniqueCode(mallLeaderDefault.getUniqueCode());
- }
- }
- //特征码扫码
- if(StrUtil.isNotEmpty(uniqueCode)){
- mallTeamLeader = this.baseMapper.selectLeaderByUniqueCode(uniqueCode);
-
- //经纬度定位
- }else if(longitude != 0 && latitude != 0){
- mallTeamLeader = this.baseMapper.selectLeaderByLonAndLat(longitude,latitude);
- //直接进入,默认选择列表第一个
+ MallLeaderDefault mallLeaderDefault = mallLeaderDefaultMapper.selectByMemberId(member.getId());
+ if(ObjectUtil.isNotEmpty(mallLeaderDefault)){
+ mallTeamLeader = this.baseMapper.selectLeaderByUniqueCode(mallLeaderDefault.getUniqueCode());
}else{
- List<MallTeamLeader> mallTeamLeaderList = this.baseMapper.getMallTeamLeaderList();
- if(CollUtil.isNotEmpty(mallTeamLeaderList)){
- mallTeamLeader = mallTeamLeaderList.get(0);
+ //特征码扫码
+ if(StrUtil.isNotEmpty(uniqueCode)){
+ mallTeamLeader = this.baseMapper.selectLeaderByUniqueCode(uniqueCode);
+
+ //经纬度定位
+ }else if(longitude != 0 && latitude != 0){
+ mallTeamLeader = this.baseMapper.selectLeaderByLonAndLat(longitude,latitude);
+ //直接进入,默认选择列表第一个
+ }else{
+ List<MallTeamLeader> mallTeamLeaderList = this.baseMapper.getMallTeamLeaderList();
+ if(CollUtil.isNotEmpty(mallTeamLeaderList)){
+ mallTeamLeader = mallTeamLeaderList.get(0);
+ }
}
}
+
if(ObjectUtil.isNotEmpty(mallTeamLeader)){
apiLeaderInfoVo.setId(mallTeamLeader.getId());
apiLeaderInfoVo.setName(mallTeamLeader.getName());
@@ -369,6 +391,10 @@
MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(orderId);
MallOrderItem mallOrderItem = mallOrderItemMapper.selectById(itemId);
+ MallGoodsSku mallGoodsSku = mallGoodsSkuMapper.selectById(mallOrderItem.getSkuId());
+ if(ObjectUtil.isEmpty(mallGoodsSku)){
+ return new FebsResponse().fail().message("退款失败,请联系客服人员");
+ }
List<MallRefundEntity> mallRefundEntities = mallRefundMapper.selectByItemIdAndOrderIdAndState(itemId, orderId, 3);
if(CollUtil.isEmpty(mallRefundEntities)){
return new FebsResponse().fail().message("退款失败,请联系客服人员");
@@ -396,11 +422,13 @@
//退款退款金额
BigDecimal refundAmount = mallRefundEntity.getAmount();
+// refundAmount = refundAmount.add(mallOrderInfo.getCarriage());
BigDecimal bb = new BigDecimal(100);
int refundMoney = refundAmount.multiply(bb).intValue();
//余额支付退款
if(mallRefundEntity.getType() == 3){
+ log.info("余额支付退款");
//更新订单详情
mallOrderItem.setState(3);
mallOrderItemMapper.updateById(mallOrderItem);
@@ -409,8 +437,6 @@
mallGoods.setStock(mallGoods.getStock() + mallOrderItem.getCnt());
mallGoods.setVolume(mallGoods.getVolume() - mallOrderItem.getCnt());
mallGoodsMapper.updateById(mallGoods);
-
- MallGoodsSku mallGoodsSku = mallGoodsSkuMapper.selectById(mallOrderItem.getSkuId());
mallGoodsSku.setStock(mallGoodsSku.getStock() + mallOrderItem.getCnt());
mallGoodsSku.setSkuVolume(mallGoodsSku.getSkuVolume() - mallOrderItem.getCnt());
mallGoodsSkuMapper.updateById(mallGoodsSku);
@@ -418,7 +444,6 @@
mallRefundEntity.setState(1);
mallRefundEntity.setUpdatedTime(DateUtil.date());
mallRefundMapper.updateById(mallRefundEntity);
- mallMoneyFlowService.addMoneyFlow(mallOrderInfo.getMemberId(), refundAmount, MoneyFlowTypeEnum.REFUND.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue());
List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByNotInStateAndOrderId(3,orderId);
if(CollUtil.isEmpty(mallOrderItemList)){
@@ -426,19 +451,38 @@
mallOrderRefund.setStatus(6);
mallOrderInfoMapper.updateById(mallOrderRefund);
}
- memberWalletService.add(refundAmount, mallOrderInfo.getMemberId(), "balance");
+ if(refundAmount.compareTo(BigDecimal.ZERO) > 0){
+ memberWalletService.add(refundAmount, mallOrderInfo.getMemberId(), "balance");
+ mallMoneyFlowService.addMoneyFlow(
+ mallOrderInfo.getMemberId(),
+ refundAmount,
+ ScoreFlowTypeEnum.REFUND.getValue(),
+ mallOrderInfo.getOrderNo(),
+ FlowTypeEnum.BALANCE.getValue(),
+ StrUtil.format(ScoreFlowTypeEnum.REFUND.getDesc(),refundAmount),
+ 2
+ );
+ }
return new FebsResponse().success().message("退款成功");
}
Boolean flag = false;
Boolean debug = xcxProperties.getDebug();
if (debug) {
- boolean b = weixinServiceUtil.comRefund(orderNo, refundNo, 1, 1, null);
- flag = b;
+ if(refundAmount.compareTo(BigDecimal.ZERO) > 0){
+ boolean b = weixinServiceUtil.comRefund(orderNo, refundNo, 1, 1, null);
+ flag = b;
+ }else{
+ flag = true;
+ }
} else {
- log.info("开始调用退款接口。。。退款编号为{}", refundNo);
- boolean b = weixinServiceUtil.comRefund(orderNo, refundNo, orderMoney, refundMoney, null);
- flag = b;
+ if(refundAmount.compareTo(BigDecimal.ZERO) > 0){
+ log.info("开始调用退款接口。。。退款编号为{}", refundNo);
+ boolean b = weixinServiceUtil.comRefund(orderNo, refundNo, orderMoney, refundMoney, null);
+ flag = b;
+ }else{
+ flag = true;
+ }
}
if(flag){
@@ -451,7 +495,7 @@
mallGoods.setVolume(mallGoods.getVolume() - mallOrderItem.getCnt());
mallGoodsMapper.updateById(mallGoods);
- MallGoodsSku mallGoodsSku = mallGoodsSkuMapper.selectById(mallOrderItem.getSkuId());
+// MallGoodsSku mallGoodsSku = mallGoodsSkuMapper.selectById(mallOrderItem.getSkuId());
mallGoodsSku.setStock(mallGoodsSku.getStock() + mallOrderItem.getCnt());
mallGoodsSku.setSkuVolume(mallGoodsSku.getSkuVolume() - mallOrderItem.getCnt());
mallGoodsSkuMapper.updateById(mallGoodsSku);
@@ -460,7 +504,17 @@
mallRefundEntity.setState(1);
mallRefundEntity.setUpdatedTime(DateUtil.date());
mallRefundMapper.updateById(mallRefundEntity);
- mallMoneyFlowService.addMoneyFlow(mallOrderInfo.getMemberId(), refundAmount, MoneyFlowTypeEnum.REFUND.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue());
+ if(refundAmount.compareTo(BigDecimal.ZERO) > 0){
+ mallMoneyFlowService.addMoneyFlow(
+ mallOrderInfo.getMemberId(),
+ refundAmount,
+ ScoreFlowTypeEnum.WECHAT_REFUND.getValue(),
+ mallOrderInfo.getOrderNo(),
+ FlowTypeEnum.BALANCE.getValue(),
+ StrUtil.format(ScoreFlowTypeEnum.WECHAT_REFUND.getDesc(),refundAmount),
+ 2
+ );
+ }
List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByNotInStateAndOrderId(3,orderId);
if(CollUtil.isEmpty(mallOrderItemList)){
@@ -560,4 +614,167 @@
return new FebsResponse().success().data(apiLeaderListVos);
}
+ @Override
+ public FebsResponse noLoginLeaderTitle(ApiLeaderTitleDto apiLeaderTitleDto) {
+ String uniqueCode = apiLeaderTitleDto.getUniqueCode();
+ Double longitude = apiLeaderTitleDto.getLongitude() == null ? 0 : apiLeaderTitleDto.getLongitude();
+ Double latitude = apiLeaderTitleDto.getLatitude() == null ? 0 : apiLeaderTitleDto.getLatitude();
+ ApiLeaderInfoVo apiLeaderInfoVo = new ApiLeaderInfoVo();
+ MallTeamLeader mallTeamLeader = new MallTeamLeader();
+ //特征码扫码
+ if(StrUtil.isNotEmpty(uniqueCode)){
+ mallTeamLeader = this.baseMapper.selectLeaderByUniqueCode(uniqueCode);
+
+ //经纬度定位
+ }else if(longitude != 0 && latitude != 0){
+ mallTeamLeader = this.baseMapper.selectLeaderByLonAndLat(longitude,latitude);
+ //直接进入,默认选择列表第一个
+ }else{
+ List<MallTeamLeader> mallTeamLeaderList = this.baseMapper.getMallTeamLeaderList();
+ if(CollUtil.isNotEmpty(mallTeamLeaderList)){
+ mallTeamLeader = mallTeamLeaderList.get(0);
+ }
+ }
+
+ if(ObjectUtil.isNotEmpty(mallTeamLeader)){
+ apiLeaderInfoVo.setId(mallTeamLeader.getId());
+ apiLeaderInfoVo.setName(mallTeamLeader.getName());
+ apiLeaderInfoVo.setPhone(mallTeamLeader.getPhone());
+ apiLeaderInfoVo.setAddressPic(mallTeamLeader.getAddressPic());
+ apiLeaderInfoVo.setUniqueCode(mallTeamLeader.getUniqueCode());
+ apiLeaderInfoVo.setProvince(mallTeamLeader.getProvince());
+ apiLeaderInfoVo.setCity(mallTeamLeader.getCity());
+ apiLeaderInfoVo.setTownship(mallTeamLeader.getTownship());
+ apiLeaderInfoVo.setDetailAddress(mallTeamLeader.getDetailAddress());
+ apiLeaderInfoVo.setAddressArea(mallTeamLeader.getAddressArea());
+ MallElectronicFence mallElectronicFence = mallElectronicFenceMapper.selectByTeamLeaderCode(mallTeamLeader.getUniqueCode());
+ if(ObjectUtil.isNotEmpty(mallElectronicFence)){
+ apiLeaderInfoVo.setLonglatiarr(mallElectronicFence.getLonglatiarr());
+ }
+ apiLeaderInfoVo.setLongitude(mallTeamLeader.getLongitude());
+ apiLeaderInfoVo.setLatitude(mallTeamLeader.getLatitude());
+ }
+ if(ObjectUtil.isEmpty(apiLeaderInfoVo)){
+ return new FebsResponse().success();
+ }
+ return new FebsResponse().success().data(apiLeaderInfoVo);
+ }
+
+ @Override
+ public FebsResponse happyLeaderList(ApiHappyLeaderInfoDto dto) {
+
+ // 创建分页对象,传入当前页和每页大小
+ Page<ApiHappyLeaderInfoVo> page = new Page<>(dto.getPageNow(), dto.getPageSize());
+ // 调用Mapper方法获取活动分页数据
+ Page<ApiHappyLeaderInfoVo> mallTeamLeaderPage = this.baseMapper.selectApiLeaderInfoInPage(page, dto);
+ return new FebsResponse().success().data(mallTeamLeaderPage);
+ }
+
+ @Override
+ public FebsResponse checkOrder(ApiHappyOrderLeaderDto dto) {
+ // 获取当前登录用户的ID
+ Long memberId = LoginUserUtil.getLoginUser().getId();
+
+ MallMember mallMember = mallMemberMapper.selectById(memberId);
+
+ if(StateUpDownEnum.UP.getCode() != mallMember.getCheckLeader()){
+ throw new FebsException("您不是订单核销员!");
+ }
+
+ String takeCode = dto.getTakeCode();
+
+ List<Integer> orderStates = Arrays.asList(
+ OrderStatusEnum.WAIT_SHIPPING.getValue(),
+ OrderStatusEnum.WAIT_FINISH.getValue(),
+ OrderStatusEnum.FINISH.getValue()
+ );
+
+ MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectOne(
+ new LambdaQueryWrapper<MallOrderInfo>()
+ .eq(MallOrderInfo::getTakeCode, takeCode)
+ .in(MallOrderInfo::getStatus, orderStates)
+ .last("limit 1")
+ );
+
+ if(mallOrderInfo == null){
+ throw new FebsException("自提码不存在!");
+ }
+
+ MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(mallOrderInfo.getTakeUniqueCode());
+ if(mallTeamLeader==null){
+ throw new FebsException("自提点不存在!");
+ }
+
+ ArrayList<ApiHappyOrderLeaderVo> apiHappyOrderLeaderVos = new ArrayList<>();
+
+ List<MallOrderItem> mallOrderItems = mallOrderItemMapper.selectList(
+ new LambdaQueryWrapper<MallOrderItem>()
+ .eq(MallOrderItem::getOrderId, mallOrderInfo.getId())
+// .eq(MallOrderItem::getLeaderState, StateUpDownEnum.DOWN.getCode())
+ );
+ if(CollUtil.isNotEmpty(mallOrderItems)){
+ for(MallOrderItem item : mallOrderItems){
+ ApiHappyOrderLeaderVo apiHappyOrderLeaderVo = new ApiHappyOrderLeaderVo();
+ apiHappyOrderLeaderVo.setAddressArea(mallTeamLeader.getAddressArea());
+ apiHappyOrderLeaderVo.setName(mallTeamLeader.getName());
+ apiHappyOrderLeaderVo.setPhone(mallTeamLeader.getPhone());
+ apiHappyOrderLeaderVo.setOrderId(mallOrderInfo.getId());
+ apiHappyOrderLeaderVo.setOrderState(mallOrderInfo.getStatus());
+ apiHappyOrderLeaderVo.setTakeCode(takeCode);
+ apiHappyOrderLeaderVo.setItemId(item.getId());
+ apiHappyOrderLeaderVo.setGoodsName(item.getGoodsName());
+ apiHappyOrderLeaderVo.setGoodsSku(item.getSkuName());
+ apiHappyOrderLeaderVo.setGoodsCnt(item.getCnt());
+ apiHappyOrderLeaderVo.setGoodsPrice(item.getPrice());
+ apiHappyOrderLeaderVo.setLeaderState(item.getLeaderState());
+
+ apiHappyOrderLeaderVos.add(apiHappyOrderLeaderVo);
+ }
+ }
+
+ return new FebsResponse().success().data(apiHappyOrderLeaderVos);
+ }
+
+ @Override
+ public FebsResponse insureOrder(ApiHappyOrderLeaderInsureDto dto) {
+
+ // 获取当前登录用户的ID
+ Long memberId = LoginUserUtil.getLoginUser().getId();
+
+ MallMember mallMember = mallMemberMapper.selectById(memberId);
+
+ if(StateUpDownEnum.UP.getCode() != mallMember.getCheckLeader()){
+ throw new FebsException("您不是订单核销员!");
+ }
+
+ MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(dto.getOrderId());
+
+ if(mallOrderInfo == null){
+ throw new FebsException("订单不存在!");
+ }
+ if(mallOrderInfo.getStatus() != OrderStatusEnum.WAIT_FINISH.getValue()){
+ throw new FebsException("订单不是待收货状态!");
+ }
+
+
+ MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(mallOrderInfo.getTakeUniqueCode());
+ if(mallTeamLeader==null){
+ throw new FebsException("自提点不存在!");
+ }
+
+ MallOrderItem mallOrderItem = mallOrderItemMapper.selectById(dto.getItemId());
+ if(mallOrderItem==null){
+ throw new FebsException("订单不存在!");
+ }
+
+ if(mallOrderItem.getLeaderState()==1){
+ throw new FebsException("订单已自提!");
+ }
+
+ mallOrderItem.setLeaderState(1);
+ mallOrderItemMapper.updateById(mallOrderItem);
+
+ return new FebsResponse().success().message("操作成功");
+ }
+
}
--
Gitblit v1.9.1