111
k94314517
2023-10-08 b5d33341519df18767e88189b28c87238bd07358
111
已添加2个文件
已修改8个文件
272 ■■■■■ 文件已修改
server/services/src/main/java/com/doumee/core/Jwt/WebMvcConfig.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/core/constants/Constants.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/dao/business/GoodsorderMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/dao/business/web/response/AccountResponse.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/dao/business/web/response/HomeResponse.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/MemberService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java 86 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/web/src/main/java/com/doumee/api/web/AccountApi.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/web/src/main/java/com/doumee/api/web/HomeApi.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/core/Jwt/WebMvcConfig.java
@@ -82,12 +82,12 @@
            }
            //获取账号ID
            Integer memberId = JwtTokenUtil.getJwtPayLoad(token).getMemberId();
            Integer isDeleted = dao.queryForObject(" select COALESCE(ISDELETED,1)  from `member` where id  = ?", Integer.class, memberId);
            if(isDeleted== Constants.ONE){
            Integer isDeleted = dao.queryForObject(" select COALESCE(isdeleted,1)  from member where id  = ?", Integer.class, memberId);
            if(isDeleted.equals(Constants.ONE)){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"用户已删除,请联系管理员");
            }
            Integer isForbidden = dao.queryForObject(" select COALESCE(STATUS,1)  from `member` where id  = ?", Integer.class, memberId);
            if(isForbidden== Constants.ONE){
            Integer isForbidden = dao.queryForObject(" select COALESCE(STATUS,1)  from member where id  = ?", Integer.class, memberId);
            if(isForbidden.equals(Constants.ONE)){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"用户已禁用,请联系管理员");
            }
            Integer count = dao.queryForObject("select count(1) from `member` where id  = ?", Integer.class, memberId);
server/services/src/main/java/com/doumee/core/constants/Constants.java
@@ -23,10 +23,10 @@
  public static final String FALSE = "f";
  public static final String TOKEN ="TOKEN" ;
    public static final String SYSTEM ="SYSTEM" ;
    public static final String MINI_PROGRAMME ="MINI_PROGRAMME" ;
    public static final String IMG_DIR = "IMG_DIR";
    public static final String FILE_DIR ="FILE_DIR" ;
    public static final String PRIVATE_KEY = "PRIVATE_KEY";
    public static final String MINI_PROGRAMME ="MINI_PROGRAMME" ;
    public static String REDIS_DEBUG_STR="test_";
  /**
@@ -38,6 +38,13 @@
    int all =2;
    int partful = 3;
  }
    public interface goodsorderStatus{
        int waitPay =0;
        int pay =1;
        int cancel =2;
        int fail = 3;
        int over = 4;
    }
  public interface RedisKeys {
        public static final String submission_period_key = "sp_";
@@ -61,6 +68,29 @@
  public static final String RESOURCE_PATH = "RESOURCE_PATH";
  public static final String UPLOAD_FILE = "UPLOAD_FILE";
  public static final String AVATAR_FILE = "AVATAR_FILE";
  //用户协议
  public static final String AGREEMENT = "AGREEMENT";
  //计价规则
  public static final String PRICING_RULE = "PRICING_RULE";
    //小程序主题名称
    public static final String PROJECT_NAME = "PROJECT_NAME";
    //小程序服务端电话
    public static final String SERVER_PHONE = "SERVER_PHONE";
    //小程序租赁流程视频
    public static final String RENT_TIPS_VIDEO = "RENT_TIPS_VIDEO";
    //租赁须知
    public static final String LEASE_NOTICE = "LEASE_NOTICE";
    //租赁须知图片
    public static final String LEASE_NOTICE_URL = "LEASE_NOTICE_URL";
    //押金
    public static final String RENT_DEPOSIT = "RENT_DEPOSIT";
    //温馨提示
    public static final String TIPS = "TIPS";
  public static final String FILES_DIR = "FILES_DIR";
  public static final String SCRATCH_REDIRECT_URL = "SCRATCH_REDIRECT_URL";
server/services/src/main/java/com/doumee/dao/business/GoodsorderMapper.java
@@ -8,4 +8,9 @@
 * @author T14
 */
public interface GoodsorderMapper extends BaseMapper<Goodsorder> {
}
server/services/src/main/java/com/doumee/dao/business/web/response/AccountResponse.java
@@ -23,4 +23,6 @@
    @ApiModelProperty(value = "用户信息")
    private UserResponse userResponse;
    @ApiModelProperty(value = "返回状态:0=登录成功;1=未维护手机号,请维护手机号;2=登录失败")
    private Integer status;
}
server/services/src/main/java/com/doumee/dao/business/web/response/HomeResponse.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,49 @@
package com.doumee.dao.business.web.response;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2023/10/7 14:45
 */
@Data
public class HomeResponse {
    @ApiModelProperty(value = "公园名称")
    private String parkName;
    @ApiModelProperty(value = "公园服务电话")
    private String serverPhone;
    @ApiModelProperty(value = "租赁须知(图片地址)")
    private String leaseNoticeUrl;
    @ApiModelProperty(value = "租赁流程视频介绍")
    private String leaseVideoUrl;
    @ApiModelProperty(value = "押金金额")
    private BigDecimal deposit;
    @ApiModelProperty(value = "温馨提示")
    private String tips;
    @ApiModelProperty(value = "租赁须知")
    private String leaseNotice;
    @ApiModelProperty(value = "计价规则")
    private String pricingRules;
    @ApiModelProperty(value = "押金状态:0=未支付押金;1=已支付押金;")
    private Integer depositStatus;
    @ApiModelProperty(value = "骑行状态:2=骑行中;3=已还车;;")
    private String rideStatus;
}
server/services/src/main/java/com/doumee/service/business/MemberService.java
@@ -106,9 +106,18 @@
    /**
     * æ‹‰å–登录
     * @param code
     * @param userId
     */
    AccountResponse wxLogin(String code);
    /**
     * è§£æžæ‰‹æœºå·
     * @param memberId
     * @param encryptedData
     * @param iv
     * @param sessionKey
     * @return
     */
    AccountResponse wxPhone(String memberId,String encryptedData, String iv,String sessionKey);
    UserResponse getUserInfo(String memberId);
}
server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -4,21 +4,30 @@
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.Constants;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.GoodsorderMapper;
import com.doumee.dao.business.MemberRidesMapper;
import com.doumee.dao.business.join.GoodsorderJoinMapper;
import com.doumee.dao.business.model.Bikes;
import com.doumee.dao.business.model.Goodsorder;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.MemberRides;
import com.doumee.dao.business.web.response.HomeResponse;
import com.doumee.service.business.GoodsorderService;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang3.StringUtils;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.List;
import java.util.Objects;
@Service
public class GoodsorderServiceImpl implements GoodsorderService {
@@ -30,6 +39,12 @@
    @Autowired
    GoodsorderJoinMapper goodsorderJoinMapper;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private MemberRidesMapper memberRidesMapper;
    @Override
    public String create(Goodsorder goodsorder) {
@@ -127,4 +142,38 @@
        QueryWrapper<Goodsorder> wrapper = new QueryWrapper<>(goodsorder);
        return goodsorderMapper.selectCount(wrapper);
    }
    public HomeResponse getHome(String memberId){
        HomeResponse homeResponse = new HomeResponse();
        homeResponse.setParkName(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.PROJECT_NAME).getCode());
        homeResponse.setServerPhone(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.SERVER_PHONE).getCode());
        homeResponse.setLeaseNoticeUrl(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.LEASE_NOTICE_URL).getCode());
        homeResponse.setLeaseNotice(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.LEASE_NOTICE).getCode());
        homeResponse.setDeposit(new BigDecimal(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.RENT_DEPOSIT).getCode()));
        homeResponse.setTips(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.TIPS).getCode());
        homeResponse.setLeaseVideoUrl(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.RENT_TIPS_VIDEO).getCode());
        homeResponse.setPricingRules(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PRICING_RULE).getCode());
        //查询是否存在 å·²æ”¯ä»˜çš„ æŠ¼é‡‘è®¢å•
        Integer status = this.goodsorderMapper.selectCount(new QueryWrapper<Goodsorder>()
                .eq("member_id",memberId)
                .eq("status",Constants.goodsorderStatus.pay));
        homeResponse.setDepositStatus(status);
        if(homeResponse.getDepositStatus()==Constants.goodsorderStatus.pay) {
            //查询当前骑行状态
            MemberRides memberRides = memberRidesMapper.selectOne(new QueryWrapper<MemberRides>().eq("member_id", memberId)
                    .orderByDesc(" create_date ")
                    .last(" limit 1  "));
            if (Objects.isNull(memberRides)) {
            }
        }
        return homeResponse;
    }
}
server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -1,10 +1,12 @@
package com.doumee.service.business.impl;
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.Jwt.JwtPayLoad;
import com.doumee.core.Jwt.JwtTokenUtil;
import com.doumee.core.constants.Constants;
@@ -18,14 +20,20 @@
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.web.request.RegisterRequest;
import com.doumee.dao.business.web.response.AccountResponse;
import com.doumee.dao.business.web.response.HomeResponse;
import com.doumee.dao.business.web.response.UserResponse;
import com.doumee.service.business.MemberService;
import me.chanjar.weixin.common.error.WxErrorException;
import org.apache.commons.lang3.StringUtils;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.RequestParam;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@@ -39,6 +47,7 @@
    @Autowired
    private MemberMapper memberMapper;
    @Override
    public String create(Member member) {
@@ -210,7 +219,7 @@
            //获取微信敏感数据
            WxMaJscode2SessionResult session = WxMiniConfig.wxMaService.getUserService().getSessionInfo(code);
            String openId = session.getOpenid();
            if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isBlank(openId)) {
            if (StringUtils.isBlank(openId)) {
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"获取openid失败!请联系管理员");
            }
            member.setOpenid(openId);
@@ -226,26 +235,46 @@
    }
    /**
     * å¾®ä¿¡å°ç¨‹åºç™»å½•
     * @param code
     * @return
     */
    @Override
    public AccountResponse wxLogin(String code) {
        try {
            //获取微信敏感数据
            WxMaJscode2SessionResult session = WxMiniConfig.wxMaService.getUserService().getSessionInfo(code);
            String openId = session.getOpenid();
            if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isBlank(openId)) {
            String unionId = session.getUnionid();
            if (StringUtils.isBlank(openId)) {
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "获取openid失败!请联系管理员");
            }
            Member member = memberMapper.selectOne(new QueryWrapper<Member>().eq("OPENID", openId).eq("ISDELETED", Constants.ZERO).last("limit 1"));
            Member member = memberMapper.selectOne(new QueryWrapper<Member>().eq("openid", openId).eq("isdeleted", Constants.ZERO).last("limit 1"));
            AccountResponse accountResponse = new AccountResponse();
            if (Objects.isNull(member)) {
                return accountResponse;
            if(Objects.isNull(member)){
                //新增用户 éœ€è¦è¿›è¡Œç”¨æˆ·ç»‘定手机号
                member = new Member();
                member.setCreateDate(new Date());
                member.setIsdeleted(Constants.ZERO);
                member.setOpenid(openId);
                member.setUnionid(unionId);
                member.setType(Constants.ZERO);
                member.setOrigin(Constants.ZERO.toString());
                member.setStatus(Constants.ZERO);
                memberMapper.insert(member);
                accountResponse.setStatus(Constants.ONE);
            }else{
                UserResponse userResponse = getUserInfo(member.getId());
                if(StringUtils.isBlank(member.getPhone())){
                    accountResponse.setStatus(Constants.ONE);
                }else{
                    JwtPayLoad payLoad = new JwtPayLoad(userResponse.getId());
                    accountResponse.setToken(JwtTokenUtil.generateToken(payLoad));
                }
                accountResponse.setUserResponse(userResponse);
            }
            memberMapper.updateById(member);
            UserResponse userResponse = getUserInfo(member.getId());
            JwtPayLoad payLoad = new JwtPayLoad(userResponse.getId());
            accountResponse.setToken(JwtTokenUtil.generateToken(payLoad));
            accountResponse.setUserResponse(userResponse);
            return accountResponse;
        } catch (WxErrorException e) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "微信登录异常!请联系管理员");
@@ -253,15 +282,50 @@
    }
    /**
     * è§£æžå¾®ä¿¡æ‰‹æœºå·
     * @param memberId
     * @param encryptedData
     * @param iv
     * @param sessionKey
     * @return
     */
    @Override
    public AccountResponse wxPhone(String memberId,String encryptedData, String iv,String sessionKey) {
        try {
            Member member =  memberMapper.selectById(memberId);
            WxMaPhoneNumberInfo userPhoneInfo = WxMiniConfig.wxMaService.getUserService().getPhoneNoInfo(sessionKey, encryptedData, iv);
            //获取手机号
            String mobile= userPhoneInfo.getPurePhoneNumber();
            if(Objects.isNull(mobile)){
               throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未解析到手机号");
            }
            member.setPhone(mobile);
            memberMapper.updateById(member);
            AccountResponse accountResponse = new AccountResponse();
            UserResponse userResponse = getUserInfo(member.getId());
            JwtPayLoad payLoad = new JwtPayLoad(userResponse.getId());
            accountResponse.setToken(JwtTokenUtil.generateToken(payLoad));
            accountResponse.setUserResponse(userResponse);
            accountResponse.setStatus(Constants.ZERO);
            return accountResponse;
        } catch (Exception e) {
            e.printStackTrace();
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未解析到手机号");
        }
    }
    @Override
    public UserResponse getUserInfo(String id) {
        Member member = memberMapper.selectById(id);
        UserResponse userResponse = new UserResponse();
        BeanUtils.copyProperties(member,userResponse);
        userResponse.setMobile(member.getPhone());
        return userResponse;
    }
}
server/web/src/main/java/com/doumee/api/web/AccountApi.java
@@ -52,8 +52,6 @@
    }
    @Trace
    @ApiOperation(value = "微信授权", notes = "小程序端")
    @GetMapping("/wxLogin")
server/web/src/main/java/com/doumee/api/web/HomeApi.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.doumee.api.web;
import com.doumee.core.annotation.trace.Trace;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2023/10/7 14:43
 */
@Api(tags = "2、首页业务")
@Trace(exclude = true)
@RestController
@RequestMapping("/web/home")
@Slf4j
public class HomeApi extends ApiController{
}