xiaoyong931011
2022-09-16 7f2d3e9bcb89311a5cbfaa617fde71ea412f9bc3
20220902
11 files modified
139 ■■■■ changed files
src/main/java/cc/mrbird/febs/mall/controller/ApiMallTeamLeaderController.java 2 ●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/conversion/MallTeamLeaderConversion.java 2 ●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/mapper/MallElectronicFenceMapper.java 4 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/mapper/MallTeamLeaderMapper.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/IApiMallTeamLeaderService.java 2 ●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/IMallElectronicFenceService.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java 16 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java 59 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/IMallElectronicFenceServiceImpl.java 20 ●●●● patch | view | raw | blame | history
src/main/resources/mapper/modules/MallElectronicFenceMapper.xml 11 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/modules/MallTeamLeaderMapper.xml 18 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/ApiMallTeamLeaderController.java
@@ -44,7 +44,7 @@
    })
    @PostMapping(value = "/leaderList")
    public FebsResponse leaderList(@RequestBody @Valid ApiLeaderListDto apiLeaderListDto) {
        return new FebsResponse().success().data(iApiMallTeamLeaderService.findLeaderListInPage(apiLeaderListDto));
        return iApiMallTeamLeaderService.findLeaderListInPage(apiLeaderListDto);
    }
    /**
src/main/java/cc/mrbird/febs/mall/conversion/MallTeamLeaderConversion.java
@@ -25,5 +25,5 @@
    public abstract MallTeamLeader adminDtoToEntity(AdminLeaderAddDto adminLeaderAddDto);
    public abstract ApiLeaderListVo entityToApiVo(MallTeamLeader mallTeamLeader);
}
src/main/java/cc/mrbird/febs/mall/mapper/MallElectronicFenceMapper.java
@@ -4,7 +4,11 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface MallElectronicFenceMapper extends BaseMapper<MallElectronicFence> {
    MallElectronicFence selectByTeamLeaderCode(@Param("teamLeaderCode")String uniqueCode);
    List<MallElectronicFence> selectAllOnlineLeader();
}
src/main/java/cc/mrbird/febs/mall/mapper/MallTeamLeaderMapper.java
@@ -32,4 +32,6 @@
    IPage<MallLeaderStock> selectleaderGoodsStockListInPage(Page<MallLeaderStock> page, @Param("record")MallLeaderStock mallLeaderStock);
    MallTeamLeader selectLeaderByUniqueCodeAndOrderBycreateTime(@Param("uniqueCode")String inviteId);
    MallTeamLeader selectByFenceIdAndFenceNameAndLonAndLat(@Param("longitude")Double longitude, @Param("latitude")Double latitude,@Param("fenceId")String gfid, @Param("fenceName")String gfname);
}
src/main/java/cc/mrbird/febs/mall/service/IApiMallTeamLeaderService.java
@@ -14,7 +14,7 @@
    FebsResponse applyLeader(ApiApplayLeaderDto apiApplayLeaderDto);
    List<ApiLeaderListVo> findLeaderListInPage(ApiLeaderListDto apiLeaderListDto);
    FebsResponse findLeaderListInPage(ApiLeaderListDto apiLeaderListDto);
    FebsResponse leaderState();
src/main/java/cc/mrbird/febs/mall/service/IMallElectronicFenceService.java
@@ -16,5 +16,8 @@
    String fenceDelete(String gaodeKey,String serviceId,String fenceId);
    /*
    {"data":{"count":1,"results":[{"gfid":800899,"gfname":"87053658_fence","in":0}]},"errcode":10000,"errdetail":null,"errmsg":"OK"}
     */
    String fenceToLocation(String gaodeKey,String serviceId,String locationLonglat,String fenceId);
}
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -96,14 +96,14 @@
        //订单范围内才允许下单
        MallAddressInfo address = mallAddressInfoMapper.selectAddressInfoByMemberIdAndId(member.getId(), addOrderDto.getAddressId());
        MallElectronicFence mallElectronicFence = mallElectronicFenceMapper.selectByTeamLeaderCode(mallTeamLeader.getUniqueCode());
        if(ObjectUtil.isNotEmpty(mallElectronicFence)){
            String inStr = iMallElectronicFenceService.fenceToLocation(mallElectronicFence.getGKey(),
                    mallElectronicFence.getServiceId(), address.getLongitude() + "," + address.getLatitude(), mallElectronicFence.getGid());
            if("1".equals(inStr)){
                throw new FebsException("不在当前团长的配送范围内");
            }
        }
//        MallElectronicFence mallElectronicFence = mallElectronicFenceMapper.selectByTeamLeaderCode(mallTeamLeader.getUniqueCode());
//        if(ObjectUtil.isNotEmpty(mallElectronicFence)){
//            String inStr = iMallElectronicFenceService.fenceToLocation(mallElectronicFence.getGKey(),
//                    mallElectronicFence.getServiceId(), address.getLongitude() + "," + address.getLatitude(), mallElectronicFence.getGid());
//            if("1".equals(inStr)){
//                throw new FebsException("不在当前团长的配送范围内");
//            }
//        }
        String orderNo = MallUtils.getOrderNum();
        MallOrderInfo orderInfo = new MallOrderInfo();
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java
@@ -2,9 +2,9 @@
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;
@@ -12,19 +12,20 @@
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.*;
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;
@@ -36,10 +37,7 @@
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
@@ -64,6 +62,8 @@
    private final MallMoneyFlowMapper mallMoneyFlowMapper;
    private final MallGoodsMapper mallGoodsMapper;
    private final MallGoodsSkuMapper mallGoodsSkuMapper;
    private final MallElectronicFenceMapper mallElectronicFenceMapper;
    private final IMallElectronicFenceServiceImpl iMallElectronicFenceService;
    @Override
    @Transactional
@@ -89,11 +89,47 @@
        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
@@ -237,7 +273,6 @@
        //经纬度定位
        }else if(longitude != 0 && latitude != 0){
            mallTeamLeader = this.baseMapper.selectLeaderByLonAndLat(longitude,latitude);
        //直接进入,默认选择列表第一个
        }else{
            List<MallTeamLeader> mallTeamLeaderList = this.baseMapper.getMallTeamLeaderList();
src/main/java/cc/mrbird/febs/mall/service/impl/IMallElectronicFenceServiceImpl.java
@@ -4,6 +4,8 @@
import cc.mrbird.febs.mall.entity.MallElectronicFence;
import cc.mrbird.febs.mall.mapper.MallElectronicFenceMapper;
import cc.mrbird.febs.mall.service.IMallElectronicFenceService;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -274,11 +276,23 @@
            String dataStr = maps.get("data").toString();
            cn.hutool.json.JSONObject dataResults = JSONUtil.parseObj(dataStr);
            String resultsStr = dataResults.get("results").toString();
            cn.hutool.json.JSONObject resultsStrJson = JSONUtil.parseObj(resultsStr);
            String in = resultsStrJson.get("in").toString();
            return in;
            return resultsStr;
        }else{
            return "fail";
        }
    }
    public static void main(String[] args) {
        String result = "{\"data\":{\"count\":1,\"results\":[{\"gfid\":800899,\"gfname\":\"87053658_fence\",\"in\":0}]},\"errcode\":10000,\"errdetail\":null,\"errmsg\":\"OK\"}";
        cn.hutool.json.JSONObject maps = JSONUtil.parseObj(result);
        String dataStr = maps.get("data").toString();
        cn.hutool.json.JSONObject dataResults = JSONUtil.parseObj(dataStr);
        String resultsStr = dataResults.get("results").toString();
        JSONArray jsonArray = JSONUtil.parseArray(resultsStr);
        System.out.print(jsonArray);
        Object o = jsonArray.get(0);
        JSONObject jsonObject1 = JSONUtil.parseObj(jsonArray.get(0));
        String in = jsonObject1.get("in").toString();
        System.out.print(in);
    }
}
src/main/resources/mapper/modules/MallElectronicFenceMapper.xml
@@ -5,4 +5,15 @@
    <select id="selectByTeamLeaderCode" resultType="cc.mrbird.febs.mall.entity.MallElectronicFence">
        select * from mall_electronic_fence where team_leader_code=#{teamLeaderCode}
    </select>
    <select id="selectAllOnlineLeader" resultType="cc.mrbird.febs.mall.entity.MallElectronicFence">
        SELECT
            a.*
        FROM
            mall_electronic_fence a
                INNER JOIN mall_team_leader b ON a.team_leader_code = b.unique_code
        WHERE
            b.state = 1
          AND b.online_state = 1
    </select>
</mapper>
src/main/resources/mapper/modules/MallTeamLeaderMapper.xml
@@ -186,4 +186,22 @@
        limit 1
    </select>
    <select id="selectByFenceIdAndFenceNameAndLonAndLat" resultType="cc.mrbird.febs.mall.entity.MallTeamLeader">
        select
            a.*,
            ROUND(
                        6378.138 * 2 * ASIN(
                            SQRT(
                                        POW(SIN((#{latitude} * PI() / 180 - a.latitude * PI() / 180) / 2),2)
                                        + COS(40.0497810000 * PI() / 180) * COS(a.latitude * PI() / 180)
                                            * POW(SIN((#{longitude}  * PI() / 180 - a.longitude * PI() / 180) / 2),2)
                                )
                        ) * 1000
                ) AS distance
        from mall_team_leader a
        inner join mall_electronic_fence b on b.team_leader_code = a.unique_code
        where b.gid = #{fenceId}
        and b.fence_name = #{fenceName}
    </select>
</mapper>