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{ }