This commit is contained in:
gzlv
2021-07-16 18:27:44 +08:00
parent 538abaa5d5
commit 4bb0b522dc
4 changed files with 89 additions and 17 deletions

View File

@ -132,7 +132,8 @@ public class StoreCombinationController {
if(StrUtil.isEmpty(siteUrl)){ if(StrUtil.isEmpty(siteUrl)){
throw new YshopException("未配置h5地址"); throw new YshopException("未配置h5地址");
} }
String apiUrl = systemConfigService.getData(SystemConfigConstants.API_URL); // String apiUrl = systemConfigService.getData(SystemConfigConstants.API_URL);
String apiUrl = "http://itxzz.top";
if(StrUtil.isEmpty(apiUrl)){ if(StrUtil.isEmpty(apiUrl)){
throw new YshopException("未配置api地址"); throw new YshopException("未配置api地址");
} }

View File

@ -101,6 +101,14 @@ public class AuthController {
} }
@PostMapping("/wxapp/loginAuth")
@ApiOperation(value = "小程序获取用户信息", notes = "小程序获取用户信息")
public ApiResult<YxUser> loginAuth(@Validated @RequestBody LoginParam loginParam,
HttpServletRequest request) {
YxUser yxUser = authService.loginAuth(loginParam);
return ApiResult.ok(yxUser).setMsg("获取成功");
}
/** /**
* 微信公众号授权 * 微信公众号授权
*/ */

View File

@ -9,7 +9,9 @@
package co.yixiang.modules.services; package co.yixiang.modules.services;
import cn.binarywang.wx.miniapp.api.WxMaService; import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.api.WxMaUserService;
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
import cn.binarywang.wx.miniapp.bean.WxMaUserInfo; import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
@ -28,10 +30,7 @@ import co.yixiang.modules.user.domain.YxUser;
import co.yixiang.modules.user.service.YxUserService; import co.yixiang.modules.user.service.YxUserService;
import co.yixiang.modules.user.service.dto.WechatUserDto; import co.yixiang.modules.user.service.dto.WechatUserDto;
import co.yixiang.modules.user.vo.OnlineUser; import co.yixiang.modules.user.vo.OnlineUser;
import co.yixiang.utils.EncryptUtils; import co.yixiang.utils.*;
import co.yixiang.utils.RedisUtils;
import co.yixiang.utils.ShopKeyUtils;
import co.yixiang.utils.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -79,7 +78,7 @@ public class AuthService {
* @return long * @return long
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public YxUser wxappLogin(LoginParam loginParam) { public YxUser loginAuth(LoginParam loginParam) {
String code = loginParam.getCode(); String code = loginParam.getCode();
String encryptedData = loginParam.getEncryptedData(); String encryptedData = loginParam.getEncryptedData();
String iv = loginParam.getIv(); String iv = loginParam.getIv();
@ -102,10 +101,10 @@ public class AuthService {
openid = session.getUnionid(); openid = session.getUnionid();
} }
YxUser yxUser = userService.getOne(Wrappers.<YxUser>lambdaQuery() YxUser yxUser = this.userService.getOne(Wrappers.<YxUser>lambdaQuery()
.eq(YxUser::getUsername, openid), false); .eq(YxUser::getUid, SecurityUtils.getUserId()), false);
if (ObjectUtil.isNull(yxUser)) { if (ObjectUtil.isNotEmpty(yxUser)) {
//过滤掉表情 //过滤掉表情
@ -116,7 +115,6 @@ public class AuthService {
.avatar(wxMpUser.getAvatarUrl()) .avatar(wxMpUser.getAvatarUrl())
.addIp(ip) .addIp(ip)
.lastIp(ip) .lastIp(ip)
.userType(AppFromEnum.ROUNTINE.getValue())
.build(); .build();
//构建微信用户 //构建微信用户
@ -134,7 +132,75 @@ public class AuthService {
yxUser.setWxProfile(wechatUserDTO); yxUser.setWxProfile(wechatUserDTO);
userService.save(yxUser); this.userService.update(yxUser,Wrappers.<YxUser>lambdaQuery()
.eq(YxUser::getUid, SecurityUtils.getUserId()));
}
return yxUser;
} catch (WxErrorException e) {
e.printStackTrace();
log.error(e.getMessage());
throw new YshopException(e.toString());
}
}
/**
* 小程序登陆
*
* @param loginParam loginParam
* @return long
*/
@Transactional(rollbackFor = Exception.class)
public YxUser wxappLogin(LoginParam loginParam) {
String code = loginParam.getCode();
String encryptedData = loginParam.getEncryptedData();
String iv = loginParam.getIv();
String spread = loginParam.getSpread();
try {
//读取redis配置
String appId = redisUtils.getY(ShopKeyUtils.getWxAppAppId());
String secret = redisUtils.getY(ShopKeyUtils.getWxAppSecret());
if (StrUtil.isBlank(appId) || StrUtil.isBlank(secret)) {
throw new YshopException("请先配置小程序");
}
WxMaService wxMaService = WxMaConfiguration.getWxMaService();
WxMaJscode2SessionResult session = wxMaService.getUserService().getSessionInfo(code);
WxMaPhoneNumberInfo phoneNoInfo = wxMaService.getUserService()
.getPhoneNoInfo(session.getSessionKey(), encryptedData, iv);
String openid = session.getOpenid();
//如果开启了UnionId
if (StrUtil.isNotBlank(session.getUnionid())) {
openid = session.getUnionid();
}
YxUser yxUser = this.userService.getOne(Wrappers.<YxUser>lambdaQuery()
.eq(YxUser::getPhone, phoneNoInfo.getPhoneNumber()), false);
if (ObjectUtil.isNull(yxUser)) {
//过滤掉表情
String ip = IpUtil.getRequestIp();
yxUser = YxUser.builder()
.username(phoneNoInfo.getPhoneNumber())
.phone(phoneNoInfo.getPhoneNumber())
.addIp(ip)
.lastIp(ip)
.userType(AppFromEnum.ROUNTINE.getValue())
.build();
//构建微信用户
WechatUserDto wechatUserDTO = WechatUserDto.builder()
.routineOpenid(session.getOpenid())
.unionId(session.getUnionid())
.build();
yxUser.setWxProfile(wechatUserDTO);
this.userService.save(yxUser);
} else { } else {
WechatUserDto wechatUser = yxUser.getWxProfile(); WechatUserDto wechatUser = yxUser.getWxProfile();
@ -147,9 +213,9 @@ public class AuthService {
} }
yxUser.setUserType(AppFromEnum.ROUNTINE.getValue()); yxUser.setUserType(AppFromEnum.ROUNTINE.getValue());
userService.updateById(yxUser); this.userService.updateById(yxUser);
} }
userService.setSpread(spread, yxUser.getUid()); this.userService.setSpread(spread, yxUser.getUid());
redisUtils.set(ShopConstants.YSHOP_MINI_SESSION_KET + yxUser.getUid(), session.getSessionKey()); redisUtils.set(ShopConstants.YSHOP_MINI_SESSION_KET + yxUser.getUid(), session.getSessionKey());
return yxUser; return yxUser;
} catch (WxErrorException e) { } catch (WxErrorException e) {
@ -157,8 +223,6 @@ public class AuthService {
log.error(e.getMessage()); log.error(e.getMessage());
throw new YshopException(e.toString()); throw new YshopException(e.toString());
} }
} }
/** /**
@ -372,5 +436,4 @@ public class AuthService {
return onlineUsers; return onlineUsers;
} }
} }

View File

@ -272,10 +272,10 @@ public class YxStoreProductServiceImpl extends BaseServiceImpl<StoreProductMappe
wrapper.orderByAsc(YxStoreProduct::getPrice); wrapper.orderByAsc(YxStoreProduct::getPrice);
} }
wrapper.orderByDesc(YxStoreProduct::getSort);
//无其他排序条件时,防止因为商品排序导致商品重复 //无其他排序条件时,防止因为商品排序导致商品重复
if (StringUtils.isNullOrEmpty(productQueryParam.getPriceOrder()) && StringUtils.isNullOrEmpty(productQueryParam.getSalesOrder())) { if (StringUtils.isNullOrEmpty(productQueryParam.getPriceOrder()) && StringUtils.isNullOrEmpty(productQueryParam.getSalesOrder())) {
wrapper.orderByDesc(YxStoreProduct::getId); wrapper.orderByDesc(YxStoreProduct::getId);
wrapper.orderByDesc(YxStoreProduct::getSort);
} }
Page<YxStoreProduct> pageModel = new Page<>(productQueryParam.getPage(), Page<YxStoreProduct> pageModel = new Page<>(productQueryParam.getPage(),
productQueryParam.getLimit()); productQueryParam.getLimit());