package cc.mrbird.febs.mall.service.impl;
|
|
import cc.mrbird.febs.common.entity.FebsResponse;
|
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.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.*;
|
import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
|
import cc.mrbird.febs.mall.service.IApiMallTeamLeaderService;
|
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.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.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;
|
|
@Override
|
@Transactional
|
public FebsResponse applyLeader(ApiApplayLeaderDto apiApplayLeaderDto) {
|
MallMember member = LoginUserUtil.getLoginUser();
|
Long memberId = member.getId();
|
List<MallTeamLeader> mallTeamLeaders = this.baseMapper.selectListByMemberIdAndState(memberId, MallTeamLeader.STATE_ING);
|
if(CollUtil.isNotEmpty(mallTeamLeaders)){
|
return new FebsResponse().fail().message("正在申请中");
|
}
|
List<MallTeamLeader> mallTeamLeaderCancel = this.baseMapper.selectListByMemberIdAndState(memberId, MallTeamLeader.STATE_CANCEL);
|
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);
|
return new FebsResponse().success().message("申请成功");
|
}
|
|
|
@Override
|
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
|
public FebsResponse leaderState() {
|
MallMember member = LoginUserUtil.getLoginUser();
|
Long memberId = member.getId();
|
ApiMallleaderStateVo apiMallleaderStateVo = new ApiMallleaderStateVo();
|
List<MallTeamLeader> mallTeamLeadersIng = this.baseMapper.selectListByMemberIdAndState(memberId, MallTeamLeader.STATE_ING);
|
List<MallTeamLeader> mallTeamLeadersNo = this.baseMapper.selectListByMemberIdAndState(memberId, MallTeamLeader.STATE_NO);
|
List<MallTeamLeader> mallTeamLeadersYes = this.baseMapper.selectListByMemberIdAndState(memberId, MallTeamLeader.STATE_YES);
|
List<MallTeamLeader> mallTeamLeadersCancel = this.baseMapper.selectListByMemberIdAndState(memberId, MallTeamLeader.STATE_CANCEL);
|
if(CollUtil.isNotEmpty(mallTeamLeadersIng) ||CollUtil.isNotEmpty(mallTeamLeadersYes)){
|
apiMallleaderStateVo.setState(2);
|
}else if(CollUtil.isNotEmpty(mallTeamLeadersNo)){
|
apiMallleaderStateVo.setState(1);
|
}else if(CollUtil.isNotEmpty(mallTeamLeadersCancel)){
|
apiMallleaderStateVo.setState(2);
|
}else{
|
apiMallleaderStateVo.setState(1);
|
}
|
return new FebsResponse().success().data(apiMallleaderStateVo);
|
}
|
|
@Override
|
public FebsResponse getApiLeaderInfoVoById(Long id) {
|
MallTeamLeader mallTeamLeader = this.baseMapper.selectById(id);
|
ApiLeaderInfoVo apiLeaderInfoVo = new ApiLeaderInfoVo();
|
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());
|
String longLatStr = mallElectronicFence.getLonglatiarr();
|
apiLeaderInfoVo.setLonglatiarr(longLatStr);
|
return new FebsResponse().success().data(apiLeaderInfoVo);
|
}
|
|
@Override
|
public List<OrderListVo> findLeaderOrderListInPage(ApiLeaderOrderListDto apiLeaderOrderListDto) {
|
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);
|
return MallOrderInfoConversion.INSTANCE.entitysToVos(mallOrderInfos.getRecords());
|
}
|
|
@Override
|
@Transactional
|
public FebsResponse leaderOrderConfirm(ApiLeaderOrderConfirmDto apiLeaderOrderConfirmDto) {
|
log.info("确认到达"+apiLeaderOrderConfirmDto.getIds());
|
List<String> idsStr = StrUtil.splitTrim(apiLeaderOrderConfirmDto.getIds(),",");
|
if(CollUtil.isEmpty(idsStr)){
|
return new FebsResponse().fail().message("请选择订单");
|
}
|
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() == 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("订单不是待确认到货状态");
|
}
|
mallOrderInfo.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_FINISH.getValue());
|
mallOrderInfoMapper.updateById(mallOrderInfo);
|
|
OrderStateDto orderStateDto = new OrderStateDto();
|
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(StrUtil.sub(mallTeamLeader.getAddressArea(),0,20)+"...");
|
orderStateDto.setDetailAddress(StrUtil.sub(mallTeamLeader.getDetailAddress(),0,20)+"...");
|
orderStateDto.setLeaderPhone(mallTeamLeader.getPhone());
|
orderStateDto.setOpenId(mallMemberMapper.selectById(mallOrderInfo.getMemberId()).getOpenId());
|
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("确认成功");
|
}
|
|
/**
|
* 根据用户ID和订单ID获取所购买商品名称
|
* @return 所含商品名称(多个以","隔开)
|
*/
|
public String getProductNames(Long memberId, Long orderId) {
|
MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectOrderByMemberIdAndId(memberId, orderId);
|
List<MallOrderItem> details = mallOrderInfo.getItems();
|
if (CollectionUtils.isEmpty(details)) {
|
return "";
|
}
|
StringBuffer productNameBuffer = new StringBuffer();
|
Integer maxLength = 30;
|
for (int i = 0; i< details.size(); i++) {
|
MallOrderItem mallOrderItem = details.get(i);
|
String goodsName = mallOrderItem.getGoodsName();
|
if (goodsName == null) {
|
continue;
|
}
|
if (i == 0 && goodsName.length() > maxLength) {
|
productNameBuffer.append(goodsName.substring(0, maxLength) + "...");
|
break;
|
}
|
if ((productNameBuffer.length() + goodsName.length()) > maxLength) {
|
productNameBuffer.append("等");
|
break;
|
}
|
productNameBuffer.append(goodsName + ",");
|
}
|
String productNames = productNameBuffer.toString();
|
if (productNames.endsWith(",")) {
|
productNames = productNames.substring(0, productNames.length() - 1);
|
}
|
if (productNames.endsWith(",等")) {
|
productNames = productNames.substring(0, productNames.length() - 2) + "等";
|
}
|
return productNames;
|
}
|
|
@Override
|
public FebsResponse leaderTitle(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());
|
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);
|
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();
|
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 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.REFUND.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue());
|
|
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.REFUND.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue());
|
|
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);
|
}
|
|
}
|