feat:app第三方支付

This commit is contained in:
dzc committed 2026-04-22 10:37:22 +08:00
1 parent 3aac5ab513
commit 13d912f0cb
54 files changed
+3034 -77

No files matched your search

@@ -20,6 +20,8 @@ package com.bsd.pjcloud.app.controller;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bsd.pjcloud.app.api.dto.AppAdminSyncDto;
import com.bsd.pjcloud.app.api.dto.AppUserInfo;
import com.bsd.pjcloud.app.api.entity.AppSocialDetails;
import com.bsd.pjcloud.app.service.AppSocialDetailsService;
import com.bsd.pjcloud.common.core.util.R;
@@ -49,6 +51,19 @@ public class AppSocialDetailsController {
private final AppSocialDetailsService appSocialDetailsService;
/* ************************************* start 设备端 start ************************************* */
/**
* 同步admin账户信息为app账户
*/
@Inner(value = true)
@PostMapping("/sync-admin-account-info")
public R<AppUserInfo> syncAdminAccountInfo(@RequestBody AppAdminSyncDto dto) {
return R.ok(appSocialDetailsService.syncAdminAccountInfo(dto));
}
/* ************************************* end 设备端 end ************************************* */
/**
* 社交登录账户简单分页查询
*/
@@ -18,30 +18,28 @@
package com.bsd.pjcloud.app.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bsd.pjcloud.app.api.dto.AppAdminSyncDto;
import com.bsd.pjcloud.app.api.dto.AppUserInfo;
import com.bsd.pjcloud.app.api.entity.AppSocialDetails;
/**
* 系统社交登录账号表
*
* @author pjcloud
* @date 2018-08-16 21:30:41
*/
public interface AppSocialDetailsService extends IService<AppSocialDetails> {
/**
* 绑定社交账号
* @param state 类型
* @param code code
* @return
*/
Boolean bindSocial(String state, String code);
/**
* 同步admin账户信息为app账户
*/
AppUserInfo syncAdminAccountInfo(AppAdminSyncDto dto);
/**
* 根据入参查询用户信息
* @param inStr
* @return
*/
AppUserInfo getUserInfo(String inStr);
/**
* 绑定社交账号
*/
Boolean bindSocial(String state, String code);
/**
* 根据入参查询用户信息
*/
AppUserInfo getUserInfo(String inStr);
}
@@ -17,8 +17,12 @@
package com.bsd.pjcloud.app.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bsd.pjcloud.app.api.constant.AppUserTypeEnum;
import com.bsd.pjcloud.app.api.dto.AppAdminSyncDto;
import com.bsd.pjcloud.app.api.dto.AppUserInfo;
import com.bsd.pjcloud.app.api.entity.AppSocialDetails;
import com.bsd.pjcloud.app.api.entity.AppUser;
@@ -26,6 +30,7 @@ import com.bsd.pjcloud.app.handler.LoginHandler;
import com.bsd.pjcloud.app.mapper.AppSocialDetailsMapper;
import com.bsd.pjcloud.app.mapper.AppUserMapper;
import com.bsd.pjcloud.app.service.AppSocialDetailsService;
import com.bsd.pjcloud.app.service.AppUserService;
import com.bsd.pjcloud.common.core.constant.CacheConstants;
import com.bsd.pjcloud.common.security.util.SecurityUtils;
import lombok.AllArgsConstructor;
@@ -35,52 +40,67 @@ import org.springframework.stereotype.Service;
import java.util.Map;
/**
* @author pjcloud
* @date 2018年08月16日
*/
@Slf4j
@AllArgsConstructor
@Service("appSocialDetailsService")
public class AppSocialDetailsServiceImpl extends ServiceImpl<AppSocialDetailsMapper, AppSocialDetails>
implements AppSocialDetailsService {
public class AppSocialDetailsServiceImpl extends ServiceImpl<AppSocialDetailsMapper, AppSocialDetails> implements AppSocialDetailsService {
private final Map<String, LoginHandler> loginHandlerMap;
private final Map<String, LoginHandler> loginHandlerMap;
private final CacheManager cacheManager;
private final CacheManager cacheManager;
private final AppUserMapper appUserMapper;
private final AppUserMapper appUserMapper;
/**
* 绑定社交账号
* @param type type
* @param code code
* @return
*/
@Override
public Boolean bindSocial(String type, String code) {
LoginHandler loginHandler = loginHandlerMap.get(type);
// 绑定逻辑
String identify = loginHandler.identify(code);
AppUser user = appUserMapper.selectById(SecurityUtils.getUser().getId());
loginHandler.bind(user, identify);
private final AppUserService appUserService;
// 更新緩存
cacheManager.getCache(CacheConstants.USER_DETAILS_MINI).evict(user.getUsername());
return Boolean.TRUE;
}
/**
* 根据入参查询用户信息
* @param inStr TYPE@code
* @return
*/
@Override
public AppUserInfo getUserInfo(String inStr) {
String[] inStrs = inStr.split(StringPool.AT);
String type = inStrs[0];
String loginStr = inStr.substring(type.length() + 1);
return loginHandlerMap.get(type).handle(loginStr);
}
@Override
public AppUserInfo syncAdminAccountInfo(AppAdminSyncDto dto) {
AppUser user = appUserService.getOne(Wrappers.<AppUser>query().lambda()
.eq(AppUser::getOpenid, dto.getUniqueCode())
.eq(AppUser::getUserType, dto.getUserTypeEnum().getType())
);
if (ObjectUtil.isNotEmpty(user)) {
return appUserService.findUserInfo(user);
}
AppUser appUser = new AppUser();
appUser.setOpenid(dto.getUniqueCode());
appUser.setUserType(AppUserTypeEnum.MINI_ALIPAY.getType());
appUser.setUsername(dto.getUsername());
appUser.setName(dto.getUsername());
appUser.setAvatar(dto.getAvatarImage());
appUser.setCreateBy(dto.getUniqueCode());
appUser.setUpdateBy(dto.getUniqueCode());
appUserService.saveOrUpdate(appUser);
return appUserService.findUserInfo(appUser);
}
/**
* 绑定社交账号
*/
@Override
public Boolean bindSocial(String type, String code) {
LoginHandler loginHandler = loginHandlerMap.get(type);
// 绑定逻辑
String identify = loginHandler.identify(code);
AppUser user = appUserMapper.selectById(SecurityUtils.getUser().getId());
loginHandler.bind(user, identify);
// 更新緩存
cacheManager.getCache(CacheConstants.USER_DETAILS_MINI).evict(user.getUsername());
return Boolean.TRUE;
}
/**
* 根据入参查询用户信息
*/
@Override
public AppUserInfo getUserInfo(String inStr) {
String[] inStrs = inStr.split(StringPool.AT);
String type = inStrs[0];
String loginStr = inStr.substring(type.length() + 1);
return loginHandlerMap.get(type).handle(loginStr);
}
}