puzhibing
2023-08-08 05e13dc68b3db44868d9e02a10ccc330366a49c6
修改bug
5个文件已修改
6个文件已添加
389 ■■■■■ 已修改文件
user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/AppUserController.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/dao/BranchOfficeMapper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/dao/mapping/BranchOfficeMapper.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/BranchOffice.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Driver.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/IBranchOfficeService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/IDriverService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/BranchOfficeServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/DriverServiceImpl.java 163 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/warpper/DriverRegisterWarpper.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/AppUserController.java
@@ -561,4 +561,27 @@
        }
    }
    @ResponseBody
    @PostMapping("/api/user/driverRegister")
//    @ServiceLog(name = "注册司机", url = "/api/user/driverRegister")
    @ApiOperation(value = "注册司机", tags = {"用户端-登录注册"}, notes = "")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResponseWarpper driverRegister(DriverRegisterWarpper driverRegisterWarpper){
        try {
            Integer uid = appUserService.getUserByRequest();
            if(null == uid){
                return ResponseWarpper.success(ResultUtil.tokenErr());
            }
            ResultUtil resultUtil = driverService.driverRegister(uid, driverRegisterWarpper);
            return ResponseWarpper.success(resultUtil);
        }catch (Exception e){
            e.printStackTrace();
            return new ResponseWarpper(500, e.getMessage());
        }
    }
}
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/dao/BranchOfficeMapper.java
New file
@@ -0,0 +1,11 @@
package com.supersavedriving.user.modular.system.dao;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.supersavedriving.user.modular.system.model.BranchOffice;
/**
 * @author zhibing.pu
 * @date 2023/8/3 14:20
 */
public interface BranchOfficeMapper extends BaseMapper<BranchOffice> {
}
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/dao/mapping/BranchOfficeMapper.xml
New file
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.supersavedriving.user.modular.system.dao.BranchOfficeMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.supersavedriving.user.modular.system.model.BranchOffice">
        <id column="id" property="id"/>
        <result column="agentId" property="agentId"/>
        <result column="principal" property="principal"/>
        <result column="principalPhone" property="principalPhone"/>
        <result column="email" property="email"/>
        <result column="provinceCode" property="provinceCode"/>
        <result column="provinceName" property="provinceName"/>
        <result column="cityCode" property="cityCode"/>
        <result column="cityName" property="cityName"/>
        <result column="districtCode" property="districtCode"/>
        <result column="districtName" property="districtName"/>
        <result column="status" property="status"/>
        <result column="createTime" property="createTime"/>
    </resultMap>
</mapper>
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/BranchOffice.java
New file
@@ -0,0 +1,85 @@
package com.supersavedriving.user.modular.system.model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import lombok.Data;
import java.util.Date;
/**
* 分公司实体
* @author pzb
* @Date 2023/2/3 14:13
*/
@Data
@TableName("t_branch_office")
public class BranchOffice {
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    @TableField("id")
    private Integer id;
    /**
     * 代理商id
     */
    @TableField("agentId")
    private Integer agentId;
    /**
     * 负责人姓名
     */
    @TableField("principal")
    private String principal;
    /**
     * 负责人电话
     */
    @TableField("principalPhone")
    private String principalPhone;
    /**
     * 邮箱
     */
    @TableField("email")
    private String email;
    /**
     * 代理区域省编号
     */
    @TableField("provinceCode")
    private String provinceCode;
    /**
     * 代理区域省名称
     */
    @TableField("provinceName")
    private String provinceName;
    /**
     * 代理区域市编号
     */
    @TableField("cityCode")
    private String cityCode;
    /**
     * 代理区域市名称
     */
    @TableField("cityName")
    private String cityName;
    /**
     * 代理区域区编号
     */
    @TableField("districtCode")
    private String districtCode;
    /**
     * 代理区域区名称
     */
    @TableField("districtName")
    private String districtName;
    /**
     * 状态(1=正常,2=冻结,3=删除)
     */
    @TableField("status")
    private Integer status;
    /**
     * 添加时间
     */
    @TableField("createTime")
    private Date createTime;
}
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Driver.java
@@ -252,4 +252,9 @@
     */
    @TableField("openOrderQRCode")
    private Integer openOrderQRCode;
    /**
     * 司机推荐二维码
     */
    @TableField("referralCode")
    private String referralCode;
}
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/IBranchOfficeService.java
New file
@@ -0,0 +1,11 @@
package com.supersavedriving.user.modular.system.service;
import com.baomidou.mybatisplus.service.IService;
import com.supersavedriving.user.modular.system.model.BranchOffice;
/**
 * @author zhibing.pu
 * @date 2023/8/3 14:22
 */
public interface IBranchOfficeService extends IService<BranchOffice> {
}
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/IDriverService.java
@@ -2,6 +2,8 @@
import com.baomidou.mybatisplus.service.IService;
import com.supersavedriving.user.modular.system.model.Driver;
import com.supersavedriving.user.modular.system.util.ResultUtil;
import com.supersavedriving.user.modular.system.warpper.DriverRegisterWarpper;
import com.supersavedriving.user.modular.system.warpper.NearbyDriverWarpper;
import java.util.List;
@@ -20,4 +22,14 @@
     * @throws Exception
     */
    List<NearbyDriverWarpper> queryDriverPosition(String lon, String lat, Double scope) throws Exception;
    /**
     * 司机注册
     * @param driverRegisterWarpper
     * @return
     * @throws Exception
     */
    ResultUtil driverRegister(Integer uid, DriverRegisterWarpper driverRegisterWarpper) throws Exception;
}
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/BranchOfficeServiceImpl.java
New file
@@ -0,0 +1,15 @@
package com.supersavedriving.user.modular.system.service.impl;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.supersavedriving.user.modular.system.dao.BranchOfficeMapper;
import com.supersavedriving.user.modular.system.model.BranchOffice;
import com.supersavedriving.user.modular.system.service.IBranchOfficeService;
import org.springframework.stereotype.Service;
/**
 * @author zhibing.pu
 * @date 2023/8/3 14:22
 */
@Service
public class BranchOfficeServiceImpl extends ServiceImpl<BranchOfficeMapper, BranchOffice> implements IBranchOfficeService {
}
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/DriverServiceImpl.java
@@ -5,13 +5,16 @@
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.supersavedriving.user.core.util.ToolUtil;
import com.supersavedriving.user.modular.system.dao.DriverMapper;
import com.supersavedriving.user.modular.system.model.Driver;
import com.supersavedriving.user.modular.system.model.DriverWork;
import com.supersavedriving.user.modular.system.service.IDriverService;
import com.supersavedriving.user.modular.system.service.IDriverWorkService;
import com.supersavedriving.user.modular.system.model.*;
import com.supersavedriving.user.modular.system.service.*;
import com.supersavedriving.user.modular.system.util.GeodesyUtil;
import com.supersavedriving.user.modular.system.util.RedisUtil;
import com.supersavedriving.user.modular.system.util.ResultUtil;
import com.supersavedriving.user.modular.system.util.UUIDUtil;
import com.supersavedriving.user.modular.system.util.huawei.OBSUtil;
import com.supersavedriving.user.modular.system.util.mongodb.model.Location;
import com.supersavedriving.user.modular.system.util.weChat.WeChatUtil;
import com.supersavedriving.user.modular.system.warpper.DriverRegisterWarpper;
import com.supersavedriving.user.modular.system.warpper.NearbyDriverWarpper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.geo.Circle;
@@ -23,7 +26,10 @@
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -44,6 +50,25 @@
    @Autowired
    private RedisUtil redisUtil;
    @Autowired
    private IAppUserService appUserService;
    @Autowired
    private WeChatUtil weChatUtil;
    @Autowired
    private IBranchOfficeService branchOfficeService;
    @Autowired
    private ISystemConfigService systemConfigService;
    @Autowired
    private IAccountChangeDetailService accountChangeDetailService;
    /**
@@ -91,9 +116,139 @@
    }
    /**
     * 注册司机
     * @param uid
     * @param driverRegisterWarpper
     * @return
     * @throws Exception
     */
    @Override
    public ResultUtil driverRegister(Integer uid, DriverRegisterWarpper driverRegisterWarpper) throws Exception {
        Driver driver = this.selectOne(new EntityWrapper<Driver>().eq("phone", driverRegisterWarpper.getPhone()).ne("status", 3));
        if(null != driver && driver.getStatus() == 2){
            return ResultUtil.error("该手机账号已被冻结,请联系管理员。");
        }
        if(null != driver && driver.getApprovalStatus() == 1){
            return ResultUtil.error("该手机账号正在审核中。");
        }
        if(null != driver && driver.getApprovalStatus() == 2){
            return ResultUtil.error("该手机账号已审核通过,请直接登录。");
        }
        //账号审核拒绝后的处理
        if(null != driver && driver.getApprovalStatus() == 3){
            try {
                driver = setDriverParamete(driver, driverRegisterWarpper);
            }catch (Exception e){
                return ResultUtil.error(e.getMessage());
            }
            this.updateAllColumnById(driver);
        }
        AppUser appUser = appUserService.selectById(uid);
        //新账号
        if(null == driver){
            driver = new Driver();
            driver.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
            try {
                driver = setDriverParamete(driver, driverRegisterWarpper);
            }catch (Exception e){
                return ResultUtil.error(e.getMessage());
            }
            driver.setCreateTime(new Date());
            driver.setInviterId(appUser.getInviterId());
            driver.setInviterType(appUser.getInviterType());
            this.insert(driver);
            String s = wechatMiniProgramORCode(driver.getId());
            driver.setReferralCode(s);
            this.updateById(driver);
            //司机邀请注册奖励
            if(null != driver.getInviterId()){
                Driver driver1 = this.selectById(driver.getInviterId());
                SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 4));
                if(null != systemConfig){
                    Integer num7 = JSON.parseObject(systemConfig.getContent()).getInteger("num7");
                    if(num7 > 0){
                        AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                        accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                        accountChangeDetail.setUserType(2);
                        accountChangeDetail.setUserId(driver1.getId());
                        accountChangeDetail.setType(2);
                        accountChangeDetail.setChangeType(5);
                        accountChangeDetail.setOldData(driver1.getIntegral().doubleValue());
                        driver1.setIntegral(driver1.getIntegral() + num7);
                        accountChangeDetail.setNewData(driver1.getIntegral().doubleValue());
                        accountChangeDetail.setExplain("邀请司机注册奖励");
                        accountChangeDetailService.saveData(accountChangeDetail);
                        this.updateById(driver1);
                    }
                }
            }
        }
        return ResultUtil.success();
    }
    /**
     * 组装个人信息
     * @param driver
     * @param driverRegisterWarpper
     * @return
     */
    public Driver setDriverParamete(Driver driver, DriverRegisterWarpper driverRegisterWarpper) throws Exception{
        driver.setAvatar(driverRegisterWarpper.getAvatar());
        driver.setName(driverRegisterWarpper.getName());
        driver.setPhone(driverRegisterWarpper.getPhone());
        driver.setEmergencyContact(driverRegisterWarpper.getEmergencyContact());
        driver.setEmergencyPhone(driverRegisterWarpper.getEmergencyPhone());
        driver.setIdcardBack(driverRegisterWarpper.getIdcardBack());
        driver.setIdcardFront(driverRegisterWarpper.getIdcardFront());
        driver.setDriverLicense(driverRegisterWarpper.getDriverLicense());
        if(ToolUtil.isNotEmpty(driverRegisterWarpper.getFirstCertificateTime())){
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            driver.setFirstCertificateTime(sdf.parse(driverRegisterWarpper.getFirstCertificateTime()));
        }
        //注册地
        String code = driverRegisterWarpper.getCode();
        BranchOffice branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("districtCode", code).eq("status", 1));
        if(null == branchOffice){
            branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("cityCode", code).eq("status", 1));
            if(null == branchOffice){
                throw new Exception("该区域无服务商");
            }
        }
        driver.setBranchOfficeId(branchOffice.getId());
        driver.setAgentId(branchOffice.getAgentId());
        driver.setProvinceCode(branchOffice.getProvinceCode());
        driver.setProvinceName(branchOffice.getProvinceName());
        driver.setCityName(branchOffice.getCityName());
        driver.setCityCode(branchOffice.getCityCode());
        driver.setAreaCode(branchOffice.getDistrictCode());
        driver.setAreaName(branchOffice.getDistrictName());
        if(null != driverRegisterWarpper.getInviterId()){
            driver.setInviterType(driverRegisterWarpper.getInviterType());
            driver.setInviterId(driverRegisterWarpper.getInviterId());
        }
        driver.setApprovalStatus(1);
        driver.setApprovalNotes("");
        driver.setApprovalTime(null);
        driver.setApprovalUserId(null);
        driver.setStatus(1);
        driver.setSource(driverRegisterWarpper.getSource());
        return driver;
    }
    //生成小程序二维码
    public String wechatMiniProgramORCode(Integer driverId) throws Exception{
        InputStream release = weChatUtil.getwxacodeunlimit("pages/index/index", "driverId=" + driverId, "release");
        String s = OBSUtil.putObjectToBucket(release, "driver_" + driverId);
        return s;
    }
}
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java
@@ -170,7 +170,7 @@
        int i = 0;
        Double scope = 5D;
        while (true){
            List<NearbyDriverWarpper> nearbyDriverWarppers = driverService.queryDriverPosition(estimatedCosts.getLng().toString(), estimatedCosts.getLat().toString(), scope);
            List<NearbyDriverWarpper> nearbyDriverWarppers = driverService.queryDriverPosition(estimatedCosts.getStartLng().toString(), estimatedCosts.getStartLat().toString(), scope);
            if(nearbyDriverWarppers.size() == 0){
                scope += 5;
                i++;
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/warpper/DriverRegisterWarpper.java
New file
@@ -0,0 +1,41 @@
package com.supersavedriving.user.modular.system.warpper;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 司机注册
* @author pzb
* @Date 2023/2/6 9:15
*/
@Data
@ApiModel
public class DriverRegisterWarpper {
    @ApiModelProperty(value = "注册区域code", required = true, dataType = "string")
    private String code;
    @ApiModelProperty(value = "头像", required = false, dataType = "string")
    private String avatar;
    @ApiModelProperty(value = "姓名", required = false, dataType = "string")
    private String name;
    @ApiModelProperty(value = "手机号码", required = true, dataType = "string")
    private String phone;
    @ApiModelProperty(value = "紧急联系人", required = true, dataType = "string")
    private String emergencyContact;
    @ApiModelProperty(value = "紧急联系人电话", required = true, dataType = "string")
    private String emergencyPhone;
    @ApiModelProperty(value = "身份证正面照", required = true, dataType = "string")
    private String idcardFront;
    @ApiModelProperty(value = "身份证背面照", required = true, dataType = "string")
    private String idcardBack;
    @ApiModelProperty(value = "驾驶证领证时间(2023-01-01)", required = true, dataType = "string")
    private String firstCertificateTime;
    @ApiModelProperty(value = "驾驶证照片", required = true, dataType = "string")
    private String driverLicense;
    @ApiModelProperty(value = "邀约人类型(1=用户,2=司机)", required = false, dataType = "int")
    private Integer inviterType;
    @ApiModelProperty(value = "邀约人Id", required = false, dataType = "int")
    private Integer inviterId;
    @ApiModelProperty(value = "注册来源(1=司机端注册,2=其他端注册)", required = true, dataType = "int")
    private Integer source;
}