From 86f2368f146af23c9e16507f790752e79858a29f Mon Sep 17 00:00:00 2001
From: Hentua <wangdoubleone@gmail.com>
Date: Thu, 22 Feb 2024 22:34:31 +0800
Subject: [PATCH] fix
---
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java | 504 +++++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 448 insertions(+), 56 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 edcce8a..a979b39 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
@@ -1,51 +1,77 @@
package cc.mrbird.febs.mall.service.impl;
import cc.mrbird.febs.common.entity.FebsResponse;
-import cc.mrbird.febs.common.enumerates.OrderDeliveryStateEnum;
-import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
+import cc.mrbird.febs.common.enumerates.*;
+import cc.mrbird.febs.common.exception.FebsException;
+import cc.mrbird.febs.common.properties.XcxProperties;
import cc.mrbird.febs.common.utils.LoginUserUtil;
-import cc.mrbird.febs.common.utils.ShareCodeUtil;
+import cc.mrbird.febs.common.utils.SpringContextHolder;
+import cc.mrbird.febs.mall.conversion.MallLeaderAchieveConversion;
import cc.mrbird.febs.mall.conversion.MallOrderInfoConversion;
import cc.mrbird.febs.mall.conversion.MallTeamLeaderConversion;
import cc.mrbird.febs.mall.dto.*;
import cc.mrbird.febs.mall.entity.*;
-import cc.mrbird.febs.mall.mapper.MallMemberMapper;
-import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
-import cc.mrbird.febs.mall.mapper.MallTeamLeaderMapper;
-import cc.mrbird.febs.mall.service.IAdminMallOrderService;
+import cc.mrbird.febs.mall.mapper.*;
+import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
import cc.mrbird.febs.mall.service.IApiMallTeamLeaderService;
-import cc.mrbird.febs.mall.vo.ApiLeaderInfoVo;
-import cc.mrbird.febs.mall.vo.ApiLeaderListVo;
-import cc.mrbird.febs.mall.vo.ApiMallleaderStateVo;
-import cc.mrbird.febs.mall.vo.OrderListVo;
+import cc.mrbird.febs.mall.service.IMallMoneyFlowService;
+import cc.mrbird.febs.mall.vo.*;
import cc.mrbird.febs.pay.model.OrderStateDto;
import cc.mrbird.febs.pay.service.IXcxPayService;
-import cc.mrbird.febs.pay.util.WechatConfigure;
+import cc.mrbird.febs.pay.util.WeixinServiceUtil;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import java.util.Arrays;
-import java.util.List;
+import java.math.BigDecimal;
+import java.util.*;
@Slf4j
@Service
@RequiredArgsConstructor
public class ApiMallTeamLeaderServiceImpl extends ServiceImpl<MallTeamLeaderMapper, MallTeamLeader> implements IApiMallTeamLeaderService {
+
+ private final MallOrderInfoMapper mallOrderInfoMapper;
+ private final MallTeamLeaderMapper mallTeamLeaderMapper;
+ private final MallMemberMapper mallMemberMapper;
+ private final IXcxPayService iXcxPayService;
+ private final SpringContextHolder springContextHolder;
+ private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
+ private final MallOrderItemMapper mallOrderItemMapper;
+ private final MallRefundMapper mallRefundMapper;
+ @Autowired
+ private WeixinServiceUtil weixinServiceUtil;
+ private final XcxProperties xcxProperties = SpringContextHolder.getBean(XcxProperties.class);
+ private final IMallMoneyFlowService mallMoneyFlowService;
+ private final IApiMallMemberWalletService memberWalletService;
+ private final MallLeaderAchieveMapper mallLeaderAchieveMapper;
+ private final MallMoneyFlowMapper mallMoneyFlowMapper;
+ private final MallGoodsMapper mallGoodsMapper;
+ private final MallGoodsSkuMapper mallGoodsSkuMapper;
+ private final MallElectronicFenceMapper mallElectronicFenceMapper;
+ private final IMallElectronicFenceServiceImpl iMallElectronicFenceService;
+ private final MallLeaderDefaultMapper mallLeaderDefaultMapper;
+
@Override
@Transactional
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("正在申请中");
@@ -54,19 +80,76 @@
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());
- 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("申请成功");
}
+
@Override
- public List<ApiLeaderListVo> findLeaderListInPage(ApiLeaderListDto apiLeaderListDto) {
- Page<MallTeamLeader> page = new Page<>(apiLeaderListDto.getPageNum(), apiLeaderListDto.getPageSize());
- IPage<MallTeamLeader> mallTeamLeaderIPage = this.baseMapper.selectApiLeaderListInPage(page, apiLeaderListDto);
- return MallTeamLeaderConversion.INSTANCE.entitysToVos(mallTeamLeaderIPage.getRecords());
+ public FebsResponse findLeaderListInPage(ApiLeaderListDto apiLeaderListDto) {
+ //根据当前位置的经纬度查询在所属配送区域内的团长
+ List<MallElectronicFence> mallElectronicFences = mallElectronicFenceMapper.selectAllOnlineLeader();
+ List<ApiLeaderListVo> apiLeaderListVos = new ArrayList<>();
+ if(CollUtil.isEmpty(mallElectronicFences)){
+ return new FebsResponse().success().data(apiLeaderListVos);
+ }
+ StringBuffer fenceIdStringBuffer = new StringBuffer();
+ for(MallElectronicFence mallElectronicFence : mallElectronicFences){
+ fenceIdStringBuffer.append(mallElectronicFence.getGid()).append(",");
+ }
+ String fenceIdStr = fenceIdStringBuffer.substring(0, fenceIdStringBuffer.length() - 1);
+ //{"data":{"count":1,"results":[{"gfid":800899,"gfname":"87053658_fence","in":0}]},"errcode":10000,"errdetail":null,"errmsg":"OK"}
+ String resultsStr = iMallElectronicFenceService.fenceToLocation(mallElectronicFences.get(0).getGKey(),
+ mallElectronicFences.get(0).getServiceId(),
+ apiLeaderListDto.getLongitude() + "," + apiLeaderListDto.getLatitude(),
+ fenceIdStr);
+ if("fail".equals(resultsStr)){
+ return new FebsResponse().success().data(apiLeaderListVos);
+ }
+
+ JSONArray objects = JSONUtil.parseArray(resultsStr);
+ for(Object obj : objects){
+ //{"gfid":800899,"gfname":"87053658_fence","in":0}
+ JSONObject jsonObject = JSONUtil.parseObj(obj);
+ String gfid = jsonObject.get("gfid").toString();
+ String in = jsonObject.get("in").toString();
+ String gfname = jsonObject.get("gfname").toString();
+ //指定坐标是否在围栏中
+ //1:在,
+ //0:不在;
+ if("1".equals(in)){
+ MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectByFenceIdAndFenceNameAndLonAndLat(apiLeaderListDto.getLongitude(), apiLeaderListDto.getLatitude(),gfid,gfname);
+ ApiLeaderListVo apiLeaderListVo = MallTeamLeaderConversion.INSTANCE.entityToApiVo(mallTeamLeader);
+ apiLeaderListVos.add(apiLeaderListVo);
+ }
+ }
+ return new FebsResponse().success().data(apiLeaderListVos);
}
@Override
@@ -92,6 +175,7 @@
@Override
public FebsResponse getApiLeaderInfoVoById(Long id) {
+ MallMember member = LoginUserUtil.getLoginUser();
MallTeamLeader mallTeamLeader = this.baseMapper.selectById(id);
ApiLeaderInfoVo apiLeaderInfoVo = new ApiLeaderInfoVo();
apiLeaderInfoVo.setId(mallTeamLeader.getId());
@@ -104,6 +188,19 @@
apiLeaderInfoVo.setTownship(mallTeamLeader.getTownship());
apiLeaderInfoVo.setDetailAddress(mallTeamLeader.getDetailAddress());
apiLeaderInfoVo.setAddressArea(mallTeamLeader.getAddressArea());
+ MallElectronicFence mallElectronicFence = mallElectronicFenceMapper.selectByTeamLeaderCode(mallTeamLeader.getUniqueCode());
+ if(ObjectUtil.isNotEmpty(mallElectronicFence)){
+ String longLatStr = mallElectronicFence.getLonglatiarr();
+ apiLeaderInfoVo.setLonglatiarr(longLatStr);
+ }
+ MallLeaderDefault mallLeaderDefault1 = mallLeaderDefaultMapper.selectByMemberId(member.getId());
+ if(ObjectUtil.isNotEmpty(mallLeaderDefault1)){
+ mallLeaderDefaultMapper.deleteById(mallLeaderDefaultMapper.selectByMemberId(member.getId()).getId());
+ }
+ MallLeaderDefault mallLeaderDefault = new MallLeaderDefault();
+ mallLeaderDefault.setMemberId(member.getId());
+ mallLeaderDefault.setUniqueCode(mallTeamLeader.getUniqueCode());
+ mallLeaderDefaultMapper.insert(mallLeaderDefault);
return new FebsResponse().success().data(apiLeaderInfoVo);
}
@@ -112,32 +209,38 @@
MallMember member = LoginUserUtil.getLoginUser();
IPage<MallOrderInfo> page = new Page<>(apiLeaderOrderListDto.getPageNum(), apiLeaderOrderListDto.getPageSize());
apiLeaderOrderListDto.setMemberId(member.getId());
- IPage<MallOrderInfo> mallOrderInfos = this.baseMapper.selectApiLeaderOrderListInPage(page, apiLeaderOrderListDto);
+// IPage<MallOrderInfo> mallOrderInfos = this.baseMapper.selectApiLeaderOrderListInPage(page, apiLeaderOrderListDto);
+ IPage<MallOrderInfo> mallOrderInfos = this.baseMapper.selectNewApiLeaderOrderListInPage(page, apiLeaderOrderListDto);
+ if(CollUtil.isNotEmpty(mallOrderInfos.getRecords())){
+ for(MallOrderInfo mallOrderInfo : mallOrderInfos.getRecords()){
+ Long orderInfoId = mallOrderInfo.getId();
+ List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(orderInfoId);
+ if(CollUtil.isNotEmpty(mallOrderItemList)){
+ mallOrderInfo.setItems(mallOrderItemList);
+ }
+ }
+ }
return MallOrderInfoConversion.INSTANCE.entitysToVos(mallOrderInfos.getRecords());
}
-
- private final MallOrderInfoMapper mallOrderInfoMapper;
- private final MallTeamLeaderMapper mallTeamLeaderMapper;
- private final MallMemberMapper mallMemberMapper;
- private final IXcxPayService iXcxPayService;
@Override
@Transactional
public FebsResponse leaderOrderConfirm(ApiLeaderOrderConfirmDto apiLeaderOrderConfirmDto) {
- String ids = apiLeaderOrderConfirmDto.getIds();
- if(StrUtil.isEmpty(ids)){
+ log.info("确认到达"+apiLeaderOrderConfirmDto.getIds());
+ List<String> idsStr = StrUtil.splitTrim(apiLeaderOrderConfirmDto.getIds(),",");
+ if(CollUtil.isEmpty(idsStr)){
return new FebsResponse().fail().message("请选择订单");
}
- List<String> orderIds = StrUtil.splitTrim(ids, ",");
- for(String id : orderIds){
- long orderId = Long.parseLong(id);
+ for(String orderIdStr : idsStr){
+ long orderId = Long.parseLong(orderIdStr);
MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(orderId);
if(ObjectUtil.isEmpty(mallOrderInfo)){
continue;
// return new FebsResponse().fail().message("订单不存在");
}
- Integer status = mallOrderInfo.getStatus();
- if(OrderStatusEnum.WAIT_FINISH.getValue() != status){
+ Integer status = mallOrderInfo.getStatus() == null ? 0 : mallOrderInfo.getStatus();
+ Integer deliveryState = mallOrderInfo.getDeliveryState() == null ? 0 : mallOrderInfo.getDeliveryState();
+ if(OrderStatusEnum.WAIT_FINISH.getValue() != status || 2 != deliveryState){
continue;
// return new FebsResponse().fail().message("订单不是待确认到货状态");
}
@@ -145,18 +248,17 @@
mallOrderInfoMapper.updateById(mallOrderInfo);
OrderStateDto orderStateDto = new OrderStateDto();
- orderStateDto.setOrderNo(mallOrderInfo.getOrderNo());
- orderStateDto.setGoodsName(getProductNames(mallOrderInfo.getMemberId(),mallOrderInfo.getId()));
- if(2 == mallOrderInfo.getIsHome()){
- orderStateDto.setOrderState("已送达自提点");
- }else{
- orderStateDto.setOrderState("已送达自提点");
- }
+ String productNames = getProductNames(mallOrderInfo.getMemberId(), mallOrderInfo.getId());
+ orderStateDto.setGoodsName(StrUtil.sub(productNames,0,20)+"...");
String takeUniqueCode = mallOrderInfo.getTakeUniqueCode();
MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(takeUniqueCode);
orderStateDto.setAddressArea(mallTeamLeader.getAddressArea());
+ orderStateDto.setDetailAddress(StrUtil.sub(mallTeamLeader.getDetailAddress(),0,20)+"...");
+ orderStateDto.setLeaderPhone(mallTeamLeader.getPhone());
orderStateDto.setOpenId(mallMemberMapper.selectById(mallOrderInfo.getMemberId()).getOpenId());
- orderStateDto.setTemplateId(WechatConfigure.WX_ORDER_STATEMSG_TEMPLATE_ID);
+ DataDictionaryCustom dataDictionaryCustom = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.WX_TEMPLATE_ID_THREE.getType(), DataDictionaryEnum.WX_TEMPLATE_ID_THREE.getCode());
+ orderStateDto.setTemplateId(dataDictionaryCustom.getValue());
+ orderStateDto.setRemark("果蔬等生鲜,请尽快取货");
iXcxPayService.pushOrderToAddress(orderStateDto);
}
return new FebsResponse().success().message("确认成功");
@@ -207,21 +309,27 @@
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);
-
- //直接进入,默认选择列表第一个
+ MallMember member = LoginUserUtil.getLoginUser();
+ 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());
@@ -233,6 +341,290 @@
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 findTeamOrderMarkCnt() {
+ MallMember loginUser = LoginUserUtil.getLoginUser();
+ Long memberId = loginUser.getId();
+ MallMember mallMember = mallMemberMapper.selectById(memberId);
+ if(ObjectUtil.isEmpty(mallMember)){
+ return new FebsResponse().success();
+ }
+ log.info(mallMember.getInviteId());
+ MallTeamLeader mallTeamLeader = this.baseMapper.selectLeaderByUniqueCode(mallMember.getInviteId());
+ if(ObjectUtil.isEmpty(mallTeamLeader)){
+ return new FebsResponse().success();
+ }
+ String uniqueCode = mallTeamLeader.getUniqueCode();
+ List<Map<String, Integer>> maps = mallOrderInfoMapper.selectMemberOrderStatusCntByUniquecode(uniqueCode);
+ Map<Integer, Integer> orderCnt = new HashMap<>();
+ if (CollUtil.isNotEmpty(maps)) {
+ for (Map<String, Integer> map : maps) {
+ orderCnt.put(map.get("status"), map.get("cnt"));
+ }
+ }
+ Map<String, Object> result = new HashMap<>();
+ result.put("order", orderCnt);
+ return new FebsResponse().success().data(result);
+ }
+
+ @Override
+ @Transactional
+ public FebsResponse leaderRefundOrder(ApiLeaderRefundOrderDto apiLeaderRefundOrderDto) {
+ //获取退款订单信息
+ Long orderId = apiLeaderRefundOrderDto.getOrderId();
+ Long itemId = apiLeaderRefundOrderDto.getItemId();
+
+ 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("退款失败,请联系客服人员");
+ }
+ MallRefundEntity mallRefundEntity = mallRefundEntities.get(0);
+
+ Integer agreeState = apiLeaderRefundOrderDto.getAgreeState() == null? 2:apiLeaderRefundOrderDto.getAgreeState();
+ if(2 == agreeState){
+ //更新订单详情
+ mallOrderItem.setState(1);
+ mallOrderItemMapper.updateById(mallOrderItem);
+ //更新退款订单
+ mallRefundEntity.setState(2);
+ mallRefundEntity.setUpdatedTime(DateUtil.date());
+ mallRefundMapper.updateById(mallRefundEntity);
+ return new FebsResponse().success().message("操作成功");
+ }else{//退款订单编号
+ String orderNo = mallOrderInfo.getOrderNo();
+ //退款退款编号
+ String refundNo = mallRefundEntity.getRefundNo();
+ //退款订单金额
+ BigDecimal orderAmount = mallOrderInfo.getAmount();
+ BigDecimal aa = new BigDecimal(100);
+ int orderMoney = orderAmount.multiply(aa).intValue();
+
+ //退款退款金额
+ BigDecimal refundAmount = mallRefundEntity.getAmount();
+ refundAmount = refundAmount.add(mallOrderInfo.getCarriage());
+ BigDecimal bb = new BigDecimal(100);
+ int refundMoney = refundAmount.multiply(bb).intValue();
+
+ //余额支付退款
+ if(mallRefundEntity.getType() == 3){
+ //更新订单详情
+ mallOrderItem.setState(3);
+ mallOrderItemMapper.updateById(mallOrderItem);
+ //更新库存信息
+ MallGoods mallGoods = mallGoodsMapper.selectById(mallOrderItem.getGoodsId());
+ mallGoods.setStock(mallGoods.getStock() + mallOrderItem.getCnt());
+ mallGoods.setVolume(mallGoods.getVolume() - mallOrderItem.getCnt());
+ mallGoodsMapper.updateById(mallGoods);
+ mallGoodsSku.setStock(mallGoodsSku.getStock() + mallOrderItem.getCnt());
+ mallGoodsSku.setSkuVolume(mallGoodsSku.getSkuVolume() - mallOrderItem.getCnt());
+ mallGoodsSkuMapper.updateById(mallGoodsSku);
+ //更新退款订单
+ mallRefundEntity.setState(1);
+ mallRefundEntity.setUpdatedTime(DateUtil.date());
+ mallRefundMapper.updateById(mallRefundEntity);
+ mallMoneyFlowService.addMoneyFlow(mallOrderInfo.getMemberId(), refundAmount, MoneyFlowTypeEnum.REFUND.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue(),"余额退款",2);
+
+ List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByNotInStateAndOrderId(3,orderId);
+ if(CollUtil.isEmpty(mallOrderItemList)){
+ MallOrderInfo mallOrderRefund = mallOrderInfoMapper.selectById(orderId);
+ mallOrderRefund.setStatus(6);
+ mallOrderInfoMapper.updateById(mallOrderRefund);
+ }
+ memberWalletService.add(refundAmount, mallOrderInfo.getMemberId(), "balance");
+ 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;
+ } else {
+ log.info("开始调用退款接口。。。退款编号为{}", refundNo);
+ boolean b = weixinServiceUtil.comRefund(orderNo, refundNo, orderMoney, refundMoney, null);
+ flag = b;
+ }
+
+ if(flag){
+ //更新订单详情
+ mallOrderItem.setState(3);
+ mallOrderItemMapper.updateById(mallOrderItem);
+ //更新库存信息
+ MallGoods mallGoods = mallGoodsMapper.selectById(mallOrderItem.getGoodsId());
+ 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);
+
+ //更新退款订单
+ mallRefundEntity.setState(1);
+ mallRefundEntity.setUpdatedTime(DateUtil.date());
+ mallRefundMapper.updateById(mallRefundEntity);
+ mallMoneyFlowService.addMoneyFlow(mallOrderInfo.getMemberId(), refundAmount, MoneyFlowTypeEnum.WECHAT_REFUND.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.WECHAT.getValue(),"微信退款",2);
+
+ List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByNotInStateAndOrderId(3,orderId);
+ if(CollUtil.isEmpty(mallOrderItemList)){
+ MallOrderInfo mallOrderRefund = mallOrderInfoMapper.selectById(orderId);
+ mallOrderRefund.setStatus(6);
+ mallOrderInfoMapper.updateById(mallOrderRefund);
+ }
+ }else{
+
+ //更新订单详情
+ mallOrderItem.setState(1);
+ mallOrderItemMapper.updateById(mallOrderItem);
+
+ mallRefundEntity.setState(2);
+ mallRefundMapper.updateById(mallRefundEntity);
+ return new FebsResponse().fail().message("退款失败,请联系客服人员");
+ }
+ return new FebsResponse().success().message("退款成功");
+ }
+ }
+
+ @Override
+ public FebsResponse refundOrderInfo(ApiRefundOrderInfoDto apiRefundOrderInfoDto) {
+ Long orderId = apiRefundOrderInfoDto.getOrderId();
+ Long itemId = apiRefundOrderInfoDto.getItemId();
+
+ List<MallRefundEntity> mallRefundEntities = mallRefundMapper.selectByItemIdAndOrderIdAndState(itemId, orderId, null);
+ if(CollUtil.isEmpty(mallRefundEntities)){
+ return new FebsResponse().fail().message("退款信息不存在");
+ }
+ return new FebsResponse().success().data(mallRefundEntities.get(0));
+ }
+
+ @Override
+ public FebsResponse leaderProfit() {
+ MallMember loginUser = LoginUserUtil.getLoginUser();
+ ApiLeaderProfitVo apiLeaderProfitVo = new ApiLeaderProfitVo();
+
+ BigDecimal totalProfit = mallMoneyFlowMapper.selectAmountByFlowtypeAndType(loginUser.getId(),FlowTypeEnum.BALANCE.getValue(),MoneyFlowTypeEnum.LEADERACHIEVE.getValue(),null,null,null);
+ apiLeaderProfitVo.setTotalProfit(totalProfit);
+ BigDecimal todayProfit = mallMoneyFlowMapper.selectAmountByFlowtypeAndType(loginUser.getId(),FlowTypeEnum.BALANCE.getValue(),
+ MoneyFlowTypeEnum.LEADERACHIEVE.getValue(),
+ null,DateUtil.date(),
+ null);
+ apiLeaderProfitVo.setTodayProfit(todayProfit);
+
+ BigDecimal monthProfit = mallMoneyFlowMapper.selectAmountByFlowtypeAndType(loginUser.getId(),FlowTypeEnum.BALANCE.getValue(),
+ MoneyFlowTypeEnum.LEADERACHIEVE.getValue(),
+ null,null,
+ DateUtil.date());
+ apiLeaderProfitVo.setMonthProfit(monthProfit);
+ String inviteId = loginUser.getInviteId();
+ MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(inviteId);
+ Integer profitSwitch = mallTeamLeader.getProfitSwitch() == null ? 2:mallTeamLeader.getProfitSwitch();
+ if(2 == profitSwitch){
+ apiLeaderProfitVo.setWaitProfit(BigDecimal.ZERO);
+ }else{
+ BigDecimal waitProfit = mallLeaderAchieveMapper.selectProfitByStateAndDateTimeAndUniqueCode(1,null,loginUser.getInviteId()).setScale(2,BigDecimal.ROUND_DOWN);
+ apiLeaderProfitVo.setWaitProfit(waitProfit);
+ }
+
+ return new FebsResponse().success().data(apiLeaderProfitVo);
+ }
+
+ @Override
+ public List<ApiOrderProfitVo> findLeaderProfitListInPage(ApiOrderProfitDto apiOrderProfitDto) {
+ MallMember member = LoginUserUtil.getLoginUser();
+ IPage<MallLeaderAchieve> page = new Page<>(apiOrderProfitDto.getPageNum(), apiOrderProfitDto.getPageSize());
+ apiOrderProfitDto.setInvitedId(member.getInviteId());
+ IPage<MallLeaderAchieve> mallLeaderAchieves = mallLeaderAchieveMapper.selectApiLeaderProfitListInPage(page, apiOrderProfitDto);
+ return MallLeaderAchieveConversion.INSTANCE.entitysToVos(mallLeaderAchieves.getRecords());
+ }
+
+ @Override
+ public FebsResponse findSomeLeaderListInPage(ApiLeaderListDto apiLeaderListDto) {
+ Page<MallTeamLeader> page = new Page<>(apiLeaderListDto.getPageNum(), apiLeaderListDto.getPageSize());
+ IPage<MallTeamLeader> mallTeamLeaderIPage = this.baseMapper.selectApiLeaderListInPage(page, apiLeaderListDto);
+ List<ApiLeaderListVo> apiLeaderListVos = new ArrayList<>();
+
+ DataDictionaryCustom rangeSwitchDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.RANGE_SWITCH.getType(), DataDictionaryEnum.RANGE_SWITCH.getCode());
+ if (ObjectUtil.isNotNull(rangeSwitchDic)) {
+ int rangeSwitch = Integer.parseInt(rangeSwitchDic.getValue());
+ if(1 == rangeSwitch){
+ DataDictionaryCustom rangeSizeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.RANGE_SIZE.getType(), DataDictionaryEnum.RANGE_SIZE.getCode());
+ double rangeSize = Double.parseDouble(rangeSizeDic.getValue())*1000;
+ for(MallTeamLeader mallTeamLeader : mallTeamLeaderIPage.getRecords()){
+ Double distance = mallTeamLeader.getDistance();
+ if(distance <= rangeSize){
+ ApiLeaderListVo apiLeaderListVo = MallTeamLeaderConversion.INSTANCE.entityToApiVo(mallTeamLeader);
+ apiLeaderListVos.add(apiLeaderListVo);
+ }
+ }
+ }else{
+ apiLeaderListVos = MallTeamLeaderConversion.INSTANCE.entitysToVos(mallTeamLeaderIPage.getRecords());
+ }
+ }
+ 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);
}
--
Gitblit v1.9.1