| | |
| | | |
| | | 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.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.*; |
| | | import cc.mrbird.febs.mall.service.IAdminMallOrderService; |
| | | 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.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.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 org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Arrays; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.*; |
| | | |
| | | @Slf4j |
| | | @Service |
| | |
| | | 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("正在申请中"); |
| | |
| | | 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 |
| | |
| | | |
| | | @Override |
| | | public FebsResponse getApiLeaderInfoVoById(Long id) { |
| | | MallMember member = LoginUserUtil.getLoginUser(); |
| | | MallTeamLeader mallTeamLeader = this.baseMapper.selectById(id); |
| | | ApiLeaderInfoVo apiLeaderInfoVo = new ApiLeaderInfoVo(); |
| | | apiLeaderInfoVo.setId(mallTeamLeader.getId()); |
| | |
| | | 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); |
| | | } |
| | | |
| | |
| | | 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()); |
| | | } |
| | | |
| | |
| | | mallOrderInfoMapper.updateById(mallOrderInfo); |
| | | |
| | | OrderStateDto orderStateDto = new OrderStateDto(); |
| | | orderStateDto.setOrderNo(mallOrderInfo.getOrderNo()); |
| | | String productNames = getProductNames(mallOrderInfo.getMemberId(), mallOrderInfo.getId()); |
| | | orderStateDto.setGoodsName(StrUtil.sub(productNames,0,10)+"..."); |
| | | orderStateDto.setOrderState("已送达"); |
| | | orderStateDto.setTakeCode(mallOrderInfo.getTakeCode()); |
| | | orderStateDto.setGoodsName(StrUtil.sub(productNames,0,20)+"..."); |
| | | String takeUniqueCode = mallOrderInfo.getTakeUniqueCode(); |
| | | MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(takeUniqueCode); |
| | | orderStateDto.setAddressArea(StrUtil.sub(mallTeamLeader.getAddressArea(),0,10)+"..."); |
| | | orderStateDto.setAddressArea(mallTeamLeader.getAddressArea()); |
| | | 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_ONE.getType(), DataDictionaryEnum.WX_TEMPLATE_ID_ONE.getCode()); |
| | | 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("确认成功"); |
| | |
| | | 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()); |
| | |
| | | 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); |
| | | } |
| | |
| | | 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().data(result); |
| | | } |
| | | |
| | | |
| | | |
| | | @Autowired |
| | | private WeixinServiceUtil weixinServiceUtil; |
| | | private final XcxProperties xcxProperties = SpringContextHolder.getBean(XcxProperties.class); |
| | | private final IMallMoneyFlowService mallMoneyFlowService; |
| | | |
| | | @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); |
| | |
| | | return new FebsResponse().fail().message("退款失败,请联系客服人员"); |
| | | } |
| | | MallRefundEntity mallRefundEntity = mallRefundEntities.get(0); |
| | | //退款订单编号 |
| | | 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(); |
| | | |
| | | 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){ |
| | | Integer agreeState = apiLeaderRefundOrderDto.getAgreeState() == null? 2:apiLeaderRefundOrderDto.getAgreeState(); |
| | | if(2 == agreeState){ |
| | | //更新订单详情 |
| | | mallOrderItem.setState(3); |
| | | mallOrderItem.setState(1); |
| | | mallOrderItemMapper.updateById(mallOrderItem); |
| | | //更新退款订单 |
| | | mallRefundEntity.setState(1); |
| | | mallRefundMapper.updateById(mallRefundEntity); |
| | | mallMoneyFlowService.addMoneyFlow(mallOrderInfo.getMemberId(), refundAmount, MoneyFlowTypeEnum.REFUND.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue()); |
| | | |
| | | List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByStateAndOrderId(1,orderId); |
| | | if(CollUtil.isEmpty(mallOrderItemList)){ |
| | | MallOrderInfo mallOrderRefund = mallOrderInfoMapper.selectById(orderId); |
| | | mallOrderRefund.setStatus(6); |
| | | mallOrderInfoMapper.updateById(mallOrderRefund); |
| | | } |
| | | }else{ |
| | | mallRefundEntity.setState(2); |
| | | mallRefundEntity.setUpdatedTime(DateUtil.date()); |
| | | mallRefundMapper.updateById(mallRefundEntity); |
| | | return new FebsResponse().fail().message("退款失败,请联系客服人员"); |
| | | 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("退款成功"); |
| | | } |
| | | return new FebsResponse().success().message("退款成功"); |
| | | } |
| | | |
| | | @Override |
| | |
| | | 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); |
| | | } |
| | | |
| | | } |