xiaoyong931011
2022-09-09 c2a2a7f123eb1ac950d51da5033ddc3d23567765
20220902
13 files modified
369 ■■■■ changed files
src/main/java/cc/mrbird/febs/mall/controller/AdminMallTeamLeaderController.java 22 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/ViewMallTeamLeaderController.java 6 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/AdminLeaderAddDto.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/AdminLeaderUpdateDto.java 35 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/entity/MallTeamLeader.java 8 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/IAdminMallTeamLeaderService.java 6 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallTeamLeaderServiceImpl.java 58 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/vo/AdminMallTeamLeaderVo.java 5 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/leader/addLeader.html 65 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/leader/leaderList.html 34 ●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/leader/leaderUpdate.html 119 ●●●● patch | view | raw | blame | history
src/main/resources/templates/index.html 2 ●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/AdminMallTeamLeaderController.java
@@ -49,8 +49,26 @@
     */
    @PostMapping("leaderUpdate")
    @ControllerEndpoint(operation = "团长信息--审核", exceptionMessage = "审核失败")
    public FebsResponse leaderUpdate(@Valid AdminLeaderUpdateDto adminLeaderUpdateDto) {
        return iAdminMallTeamLeaderService.leaderUpdate(adminLeaderUpdateDto);
    public FebsResponse leaderUpdate(@Valid MallTeamLeader mallTeamLeader) {
        return iAdminMallTeamLeaderService.leaderUpdate(mallTeamLeader);
    }
    /**
     * 团长-开启返利
     */
    @GetMapping("startProfit/{id}")
    @ControllerEndpoint(operation = "团长-开启返利", exceptionMessage = "操作失败")
    public FebsResponse startProfit(@NotNull(message = "{required}") @PathVariable Long id) {
        return iAdminMallTeamLeaderService.startProfit(id);
    }
    /**
     * 团长-关闭返利
     */
    @GetMapping("closeProfit/{id}")
    @ControllerEndpoint(operation = "团长-关闭返利", exceptionMessage = "操作失败")
    public FebsResponse closeProfit(@NotNull(message = "{required}") @PathVariable Long id) {
        return iAdminMallTeamLeaderService.closeProfit(id);
    }
src/main/java/cc/mrbird/febs/mall/controller/ViewMallTeamLeaderController.java
@@ -5,7 +5,9 @@
import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
import cc.mrbird.febs.common.utils.FebsUtil;
import cc.mrbird.febs.mall.entity.DataDictionaryCustom;
import cc.mrbird.febs.mall.entity.MallMember;
import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper;
import cc.mrbird.febs.mall.mapper.MallMemberMapper;
import cc.mrbird.febs.mall.service.IAdminMallTeamLeaderService;
import cc.mrbird.febs.mall.vo.AdminLeaderBonusSettingVo;
import cc.mrbird.febs.mall.vo.AdminMallTeamLeaderVo;
@@ -25,6 +27,7 @@
    private final IAdminMallTeamLeaderService iAdminMallTeamLeaderService;
    private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
    private final MallMemberMapper mallMemberMapper;
    /**
     * 团长信息--列表
@@ -59,7 +62,8 @@
    @GetMapping("addLeader/{id}")
    public String addLeader(@PathVariable long id, Model model) {
        model.addAttribute("memberId", id);
        MallMember mallMember = mallMemberMapper.selectById(id);
        model.addAttribute("mallMember", mallMember);
        return FebsUtil.view("modules/leader/addLeader");
    }
src/main/java/cc/mrbird/febs/mall/dto/AdminLeaderAddDto.java
@@ -18,9 +18,9 @@
    //团长姓名
    private String name;
    //手机号码
//    private String phone;
    private String phone;
    //团长特征码
//    private String uniqueCode;
    private String uniqueCode;
    //自提点照片
    private String addressPic;
    //省
@@ -37,4 +37,6 @@
    private Double longitude;
    //纬度
    private Double latitude;
    //团长返利百分比如0.15表示15%
    private String bonusPercent;
}
src/main/java/cc/mrbird/febs/mall/dto/AdminLeaderUpdateDto.java
@@ -1,5 +1,6 @@
package cc.mrbird.febs.mall.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@@ -7,9 +8,41 @@
@Data
@ApiModel(value = "AdminLeaderUpdateDto", description = "接收参数类")
public class AdminLeaderUpdateDto {
    @NotNull(message = "ID不能为空")
    private Long id;
    //用户ID
    private Long memberId;
    //申请状态 1:审核通过 2:审核不通过 3:申请中 4:已取消
    private Integer state;
    public static final Integer STATE_YES = 1;
    public static final Integer STATE_NO = 2;
    public static final Integer STATE_ING = 3;
    public static final Integer STATE_CANCEL = 4;
    //团长姓名
    private String name;
    //手机号码
    private String phone;
    //团长特征码
    private String uniqueCode;
    //自提点照片
    private String addressPic;
    //小区名称
    private String addressArea;
    //详细地址
    private String detailAddress;
    //经度
    private Double longitude;
    //纬度
    private Double latitude;
    @TableField(exist = false)
    private Double distance;
    private String wxCodeImg;
    //团长返利开关 1:开启 2:关闭
    private Integer profitSwitch;
    //团长返利百分比如0.15表示15%
    private String bonusPercent;
    @NotNull(message = "审核结果不能为空")
    private int isOk;
src/main/java/cc/mrbird/febs/mall/entity/MallTeamLeader.java
@@ -6,6 +6,7 @@
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.Date;
//团长信息表
@@ -48,5 +49,12 @@
    private Double distance;
    private String wxCodeImg;
    //团长返利开关 1:开启 2:关闭
    private Integer profitSwitch;
    //团长返利百分比如0.15表示15%
    private String bonusPercent;
    @TableField(exist = false)
    private int isOk;
}
src/main/java/cc/mrbird/febs/mall/service/IAdminMallTeamLeaderService.java
@@ -19,7 +19,7 @@
    AdminMallTeamLeaderVo getMallTeamLederInfoById(long id);
    FebsResponse leaderUpdate(AdminLeaderUpdateDto adminLeaderUpdateDto);
    FebsResponse leaderUpdate(MallTeamLeader mallTeamLeader);
    List<AdminSelectListLeaderVo> selectList(MallTeamLeader mallTeamLeader);
@@ -28,4 +28,8 @@
    IPage<MallLeaderStock> leaderGoodsUpdate(QueryRequest request, MallLeaderStock mallLeaderStock);
    FebsResponse addLeader(AdminLeaderAddDto adminLeaderAddDto);
    FebsResponse startProfit(Long id);
    FebsResponse closeProfit(Long id);
}
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallTeamLeaderServiceImpl.java
@@ -71,20 +71,30 @@
    }
    @Override
    public FebsResponse leaderUpdate(AdminLeaderUpdateDto adminLeaderUpdateDto) {
        Long id = adminLeaderUpdateDto.getId();
        MallTeamLeader mallTeamLeader = this.baseMapper.selectById(id);
        Integer state = mallTeamLeader.getState();
        if(MallTeamLeader.STATE_ING != state){
            return new FebsResponse().fail().message("只有【待审核】状态才能提交!");
    public FebsResponse leaderUpdate(MallTeamLeader mallTeamLeader) {
        Long id = mallTeamLeader.getId();
        MallTeamLeader mallTeamLeaders = this.baseMapper.selectById(id);
        if(ObjectUtil.isEmpty(mallTeamLeaders)){
            return new FebsResponse().fail().message("团长信息不存在,刷新重试");
        }
        int isOk = adminLeaderUpdateDto.getIsOk();
//        Integer state = mallTeamLeader.getState();
//        if(MallTeamLeader.STATE_ING != state){
//            return new FebsResponse().fail().message("只有【待审核】状态才能提交!");
//        }
        Double bonusPercent = Double.parseDouble(mallTeamLeader.getBonusPercent());
        if(1 <= bonusPercent || 0 > bonusPercent){
            return new FebsResponse().fail().message("请输入合适的百分比小数");
        }
        int isOk = mallTeamLeader.getIsOk();
        if(MallTeamLeader.STATE_YES == isOk){
            mallTeamLeader.setState(MallTeamLeader.STATE_YES);
            mallTeamLeader.setProfitSwitch(2);
            this.baseMapper.updateById(mallTeamLeader);
        }
        if(MallTeamLeader.STATE_NO == isOk){
            mallTeamLeader.setState(MallTeamLeader.STATE_NO);
            mallTeamLeader.setProfitSwitch(2);
            this.baseMapper.updateById(mallTeamLeader);
        }
        return new FebsResponse().success().message("审核成功");
@@ -145,6 +155,10 @@
        if(CollUtil.isNotEmpty(mallTeamLeaderCancel)){
            return new FebsResponse().fail().message("当前用户无法申请");
        }
        Double bonusPercent = Double.parseDouble(adminLeaderAddDto.getBonusPercent());
        if(1 <= bonusPercent || 0 > bonusPercent){
            return new FebsResponse().fail().message("请输入合适的百分比小数");
        }
        MallTeamLeader mallTeamLeader = MallTeamLeaderConversion.INSTANCE.adminDtoToEntity(adminLeaderAddDto);
        mallTeamLeader.setUniqueCode(mallMember.getInviteId());
        mallTeamLeader.setMemberId(memberId);
@@ -154,4 +168,34 @@
        this.baseMapper.insert(mallTeamLeader);
        return new FebsResponse().success();
    }
    @Override
    public FebsResponse startProfit(Long id) {
        MallTeamLeader mallTeamLeader = this.baseMapper.selectById(id);
        if(ObjectUtil.isEmpty(mallTeamLeader)){
            return new FebsResponse().fail().message("团长信息不存在,刷新重试");
        }
        Integer state = mallTeamLeader.getState();
        if(1!=state){
            return new FebsResponse().fail().message("目前还不是团长,无法操作");
        }
        mallTeamLeader.setProfitSwitch(1);
        this.baseMapper.updateById(mallTeamLeader);
        return new FebsResponse().success();
    }
    @Override
    public FebsResponse closeProfit(Long id) {
        MallTeamLeader mallTeamLeader = this.baseMapper.selectById(id);
        if(ObjectUtil.isEmpty(mallTeamLeader)){
            return new FebsResponse().fail().message("团长信息不存在,刷新重试");
        }
        Integer state = mallTeamLeader.getState();
        if(1!=state){
            return new FebsResponse().fail().message("目前还不是团长,无法操作");
        }
        mallTeamLeader.setProfitSwitch(2);
        this.baseMapper.updateById(mallTeamLeader);
        return new FebsResponse().success();
    }
}
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java
@@ -80,6 +80,9 @@
        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("申请成功");
    }
src/main/java/cc/mrbird/febs/mall/vo/AdminMallTeamLeaderVo.java
@@ -40,4 +40,9 @@
    private Date createdTime;
    //团战提成收益
    private BigDecimal totalProfit;
    //团长返利开关 1:开启 2:关闭
    private Integer profitSwitch;
    //团长返利百分比如0.15表示15%
    private String bonusPercent;
}
src/main/resources/templates/febs/views/modules/leader/addLeader.html
@@ -29,33 +29,29 @@
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">姓名:</label>
            <div class="layui-input-block">
                <input type="text" name="name" lay-verify="required" placeholder="" autocomplete="off" class="layui-input" readonly>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">手机号码:</label>
            <div class="layui-input-block">
                <input type="text" name="phone" lay-verify="required" placeholder="" autocomplete="off" class="layui-input" >
                <input type="text" name="phone" lay-verify="required" placeholder="" autocomplete="off" class="layui-input" readonly>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">省:</label>
            <label class="layui-form-label febs-form-item-require">团长码:</label>
            <div class="layui-input-block">
                <input type="text" id="province" name="province" placeholder="" lay-verify="required" autocomplete="off" class="layui-input" >
                <input type="text" name="uniqueCode" lay-verify="required" placeholder="" autocomplete="off" class="layui-input" readonly>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">市:</label>
            <label class="layui-form-label febs-form-item-require">收益率:</label>
            <div class="layui-input-block">
                <input type="text" name="city" lay-verify="required" placeholder="" autocomplete="off" class="layui-input" >
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">区:</label>
            <div class="layui-input-block">
                <input type="text" name="township" lay-verify="required" placeholder="" autocomplete="off" class="layui-input" >
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">详细地址:</label>
            <div class="layui-input-block">
                <input type="text" name="detailAddress" lay-verify="required" placeholder="" autocomplete="off" class="layui-input" >
                <input type="text" name="bonusPercent"
                       lay-verify="text" autocomplete="off" class="layui-input" >
                <div class="layui-form-mid layui-word-aux">请输入0到1之间的小数,团长收益百分比如0.15表示15%</div>
            </div>
        </div>
        <div class="layui-form-item">
@@ -68,7 +64,6 @@
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">自提点照片:</label>
            <div class="layui-input-block">
<!--                <img alt="头像" data-th-src="${leaderInfo.addressPic}" readonly>-->
                <button type="button" class="layui-btn" id="imageUpload" style="background-color: #009688; margin-bottom: 2px">图片上传</button>
                <blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;">
                    <div class=" layui-upload-list view-images" id="addressPicImage">
@@ -77,6 +72,13 @@
                <div>
                    <input type="text" id="addressPic"  name="addressPic" lay-verify="required" placeholder="" autocomplete="off" class="layui-input" readonly>
                </div>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">详细地址:</label>
            <div class="layui-input-block">
                <input type="text" id="detailAddress" name="detailAddress" class="layui-input">
                <div class="layui-form-mid layui-word-aux">地图选择后,可以继续填写楼栋单元号</div>
            </div>
        </div>
        <div class="layui-form-item">
@@ -118,7 +120,7 @@
            febs = layui.febs,
            layer = layui.layer,
            form = layui.form,
            memberId = [[${memberId}]],
            mallMember = [[${mallMember}]],
            upload = layui.upload,
            $view = $('#user-addLeader'),
            $viewMap = $('#febs-map-demo'),
@@ -136,7 +138,27 @@
            febs.alert.success('经度:' + e.lnglat.getLng() + ',纬度:' + e.lnglat.getLat()+e.province);
            $("#longitude").val(e.lnglat.getLng());
            $("#latitude").val(e.lnglat.getLat());
            //这边是数组
            var lnglatXY=[e.lnglat.getLng(),e.lnglat.getLat()];
            regeocoder(lnglatXY);
        });
        //坐标-地址
        function regeocoder(lnglatXY) {  //逆地理编码
            var geocoder = new AMap.Geocoder({
                radius: 1000,
                extensions: "all"
            });
            geocoder.getAddress(lnglatXY, function(status, result) {
                if (status === 'complete' && result.info === 'OK') {
                    geocoder_CallBack(result);
                }
            });
        }
        function geocoder_CallBack(data) {
            var address = data.regeocode.formattedAddress; //返回地址描述
            document.getElementById("detailAddress").value=address;
        }
        form.render();
        upload.render({
@@ -158,7 +180,10 @@
        function initUserValue() {
            form.val("user-addLeader-form", {
                "memberId": memberId,
                "memberId": mallMember.id,
                "name": mallMember.name,
                "phone": mallMember.phone,
                "uniqueCode": mallMember.inviteId,
            });
        }
src/main/resources/templates/febs/views/modules/leader/leaderList.html
@@ -62,6 +62,13 @@
    <a lay-event="edit" shiro:hasPermission="user:update"><i
            class="layui-icon febs-edit-area febs-blue">&#xe7a5;</i></a>
</script>
<script type="text/html" id="upOrDownSwitch">
    {{# if(d.profitSwitch === 1) { }}
    <input type="checkbox" value={{d.id}} lay-text="开启|关闭" checked lay-skin="switch" lay-filter="upOrDownSwitch">
    {{# } else { }}
    <input type="checkbox" value={{d.id}} lay-text="开启|关闭" lay-skin="switch" lay-filter="upOrDownSwitch">
    {{# } }}
</script>
<!-- 表格操作栏 end -->
<script data-th-inline="none" type="text/javascript">
    // 引入组件并初始化
@@ -111,7 +118,7 @@
                });
            }
            if (layEvent === 'leaderCancel') {
                febs.modal.confirm('取消', '用户被取消团长资格将无法再次申请', function () {
                febs.modal.confirm('拉黑', '团长被拉黑,将无法再次申请团长', function () {
                    leaderCancel(data.id);
                });
            }
@@ -168,6 +175,8 @@
                    {field: 'addressArea', title: '自提点名称', minWidth: 150,align:'left'},
                    {field: 'detailAddress', title: '自提点地址', minWidth: 150,align:'left'},
                    {field: 'totalProfit', title: '收益', minWidth: 150,align:'left'},
                    {field: 'profitSwitch', title: '是否返利', templet: '#upOrDownSwitch', minWidth: 100,align:'center'},
                    {field: 'bonusPercent', title: '返利比例', minWidth: 150,align:'left'},
                    // {field: 'phone', title: '电话', minWidth: 150,align:'left'},
                    {field: 'state', title: '状态',
                        templet: function (d) {
@@ -190,7 +199,8 @@
                                    + '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="leaderUpdate" shiro:hasPermission="user:update">审核</button>'
                            }else if(d.state === 1) {
                                return ''
                                    + '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="leaderCancel" shiro:hasPermission="user:update">取消</button>'
                                    + '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="leaderUpdate" shiro:hasPermission="user:update">修改</button>'
                                    + '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="leaderCancel" shiro:hasPermission="user:update">拉黑</button>'
                                    // + '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="leaderGoodsUpdate" shiro:hasPermission="user:update">团长商品设置</button>'
                            }else{
                                return '';
@@ -200,14 +210,28 @@
            });
        }
        form.on('switch(startOrCloseSwitch)', function (data) {
        form.on('switch(upOrDownSwitch)', function (data) {
            if (data.elem.checked) {
                startAct(data.value);
                startProfit(data.value);
            } else {
                closeAct(data.value);
                closeProfit(data.value);
            }
        })
        function startProfit(id) {
            febs.get(ctx + 'admin/leader/startProfit/' + id, null, function () {
                febs.alert.success('开启成功');
                $query.click();
            });
        }
        function closeProfit(id) {
            febs.get(ctx + 'admin/leader/closeProfit/' + id, null, function () {
                febs.alert.success('关闭成功');
                $query.click();
            });
        }
        // 获取查询参数
        function getQueryParams() {
            return {
src/main/resources/templates/febs/views/modules/leader/leaderUpdate.html
@@ -31,62 +31,75 @@
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">姓名:</label>
            <div class="layui-input-block">
                <input type="text" name="name" class="layui-input" readonly>
                <input type="text" name="name" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">手机号码:</label>
            <div class="layui-input-block">
                <input type="text" name="phone" class="layui-input" readonly>
                <input type="text" name="phone" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">省:</label>
            <label class="layui-form-label febs-form-item-require">收益率:</label>
            <div class="layui-input-block">
                <input type="text" name="province" class="layui-input" readonly>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">市:</label>
            <div class="layui-input-block">
                <input type="text" name="city" class="layui-input" readonly>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">区:</label>
            <div class="layui-input-block">
                <input type="text" name="township" class="layui-input" readonly>
                <input type="text" name="bonusPercent"
                       lay-verify="text" autocomplete="off" class="layui-input" >
                <div class="layui-form-mid layui-word-aux">请输入0到1之间的小数,团长收益百分比如0.15表示15%</div>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">详细地址:</label>
            <div class="layui-input-block">
                <input type="text" name="detailAddress" class="layui-input" readonly>
                <input type="text" id="detailAddress" name="detailAddress" class="layui-input">
                <div class="layui-form-mid layui-word-aux">地图选择后,可以继续填写楼栋单元号</div>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">自提点名称:</label>
            <div class="layui-input-block">
                <input type="text" name="addressArea" class="layui-input" readonly>
                <input type="text" name="addressArea" class="layui-input">
                <div class="layui-form-mid layui-word-aux">小区名称(自提点名称)</div>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">自提点照片:</label>
            <div class="layui-input-block">
                <img alt="头像" data-th-src="${leaderInfo.addressPic}" readonly>
                <button type="button" class="layui-btn" id="imageUpload" style="background-color: #009688; margin-bottom: 2px">图片上传</button>
                <blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;">
                    <div class=" layui-upload-list view-images" id="addressPicImage">
                    </div>
                </blockquote>
                <div>
                    <input type="text" id="addressPic"  name="addressPic" lay-verify="required" placeholder="" autocomplete="off" class="layui-input" readonly>
                </div>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">地图选择:</label>
            <div class="layui-input-block">
                <div class="layui-fluid layui-anim febs-anim" id="febs-map-demo" lay-title="高德地图">
                    <div class="layui-row febs-container">
                        <div class="layui-card">
                            <div style="padding: .1rem;">
                                <div id="container" class="map"></div>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="layui-form-mid layui-word-aux">自提点位置</div>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">经度:</label>
            <div class="layui-input-block">
                <input type="text" name="longitude" class="layui-input" readonly>
                <input type="text" id="longitude"  name="longitude" class="layui-input" readonly>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">纬度:</label>
            <div class="layui-input-block">
                <input type="text" name="latitude" class="layui-input" readonly>
                <input type="text" id="latitude"  name="latitude" class="layui-input" readonly>
            </div>
        </div>
        <div class="layui-form-item">
@@ -103,30 +116,86 @@
</div>
<script data-th-inline="javascript">
    layui.use(['febs', 'form', 'formSelects',  'treeSelect', 'eleTree'], function () {
    layui.use(['febs', 'form', 'formSelects',  'treeSelect', 'eleTree', 'upload'], function () {
        var $ = layui.$,
            febs = layui.febs,
            layer = layui.layer,
            form = layui.form,
            leaderInfo = [[${leaderInfo}]],
            $view = $('#febs-leader-update'),
            $viewMap = $('#febs-map-demo'),
            upload = layui.upload,
            _deptTree;
        $viewMap.find('#container').css({"height": document.documentElement.clientHeight - 97 + 'px'});
        var map = new AMap.Map("container", {
            center: [leaderInfo.longitude, leaderInfo.latitude],
            resizeEnable: true,
            zoom: 14 //初始地图级别
        });
        //为地图注册click事件获取鼠标点击出的经纬度坐标
        map.on('click', function (e) {
            console.log(e);
            febs.alert.success('经度:' + e.lnglat.getLng() + ',纬度:' + e.lnglat.getLat());
            $("#longitude").val(e.lnglat.getLng());
            $("#latitude").val(e.lnglat.getLat());
            //这边是数组
            var lnglatXY=[e.lnglat.getLng(),e.lnglat.getLat()];
            regeocoder(lnglatXY);
        });
        //坐标-地址
        function regeocoder(lnglatXY) {  //逆地理编码
            var geocoder = new AMap.Geocoder({
                radius: 1000,
                extensions: "all"
            });
            geocoder.getAddress(lnglatXY, function(status, result) {
                if (status === 'complete' && result.info === 'OK') {
                    geocoder_CallBack(result);
                }
            });
        }
        function geocoder_CallBack(data) {
            var address = data.regeocode.formattedAddress; //返回地址描述
            document.getElementById("detailAddress").value=address;
        }
        upload.render({
            elem: '#imageUpload'
            ,url: ctx + 'admin/goods/uploadFileBase64' //改成您自己的上传接口
            ,multiple: false
            ,before: function(obj){
                //预读本地文件示例,不支持ie8
                obj.preview(function(index, file, result){
                    $('#addressPicImage').html('<img src="'+ result +'" alt="'+ file.name +'" class="layui-upload-img" style="width: 100px">')
                });
            }
            ,done: function(res){
                $("#addressPic").val(res.data.src);
            }
        });
        form.render();
        initUserValue();
        function initUserValue() {
            //图片回显
            if(leaderInfo.addressPic != null || leaderInfo.addressPic != ''){
                $('#addressPicImage').append('<img src="'+ leaderInfo.addressPic +'" class="layui-upload-img" style="width: 100px">')
            }
            form.val("febs-leader-update-form", {
                "id": leaderInfo.id,
                "name": leaderInfo.name,
                "phone": leaderInfo.phone,
                "addressPic": leaderInfo.addressPic,
                "province": leaderInfo.province,
                "city": leaderInfo.city,
                "township": leaderInfo.township,
                // "province": leaderInfo.province,
                // "city": leaderInfo.city,
                // "township": leaderInfo.township,
                "addressArea": leaderInfo.addressArea,
                "detailAddress": leaderInfo.detailAddress,
                "longitude": leaderInfo.longitude,
                "bonusPercent": leaderInfo.bonusPercent,
                "latitude": leaderInfo.latitude
            });
        }
src/main/resources/templates/index.html
@@ -20,7 +20,7 @@
            securityJsCode:'8fd9b92f6e07b1f18d3ae39b42ff71bc',
        }
    </script>
    <script src="https://webapi.amap.com/maps?v=1.4.15&key=04934a2cf5cfa8a29ffcf0fdcfaabb5f&plugin=AMap.Autocomplete,AMap.PolyEditor"></script>
    <script src="https://webapi.amap.com/maps?v=1.4.15&key=04934a2cf5cfa8a29ffcf0fdcfaabb5f&plugin=AMap.Autocomplete,AMap.PolyEditor,AMap.Geocoder"></script>
    <link href="https://unpkg.com/@wangeditor/editor@5.0.1/dist/css/style.css" rel="stylesheet">
    <script src="https://unpkg.com/@wangeditor/editor@latest/dist/index.js"></script>
    <link rel="icon" th:href="@{febs/images/favicon.ico}" type="image/x-icon"/>