feat:微信支付

This commit is contained in:
dzc committed 2026-03-10 16:42:51 +08:00
1 parent f2b185b731
commit bce4bf9ee3
27 files changed
+1224 -68

No files matched your search

@@ -0,0 +1,19 @@
package com.bsd.pjcloud.app.api.dto;
import com.bsd.pjcloud.app.api.constant.AppUserTypeEnum;
import lombok.Data;
@Data
public class AppAdminSyncDto {
private String uniqueCode;
private AppUserTypeEnum userTypeEnum;
private Long adminUserId;
private String username;
private String avatarImage;
}
@@ -19,6 +19,7 @@
package com.bsd.pjcloud.app.api.feign;
import com.bsd.pjcloud.app.api.dto.AppAdminSyncDto;
import com.bsd.pjcloud.app.api.dto.AppUserInfo;
import com.bsd.pjcloud.common.core.constant.ServiceNameConstants;
import com.bsd.pjcloud.common.core.util.R;
@@ -26,6 +27,8 @@ import com.bsd.pjcloud.common.feign.annotation.NoToken;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@FeignClient(contextId = "remoteAppUserService", value = ServiceNameConstants.APP_SERVER)
@@ -49,5 +52,10 @@ public interface RemoteAppUserService {
@GetMapping("/appsocial/info/{inStr}")
R<AppUserInfo> social(@PathVariable("inStr") String inStr);
/**
* 同步admin账户信息为app账户
*/
@NoToken
@PostMapping("/appsocial/info/sync-admin-account-info")
R<AppUserInfo> syncAdminAccountInfo(@RequestBody AppAdminSyncDto appAdminSyncDto);
}
@@ -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账户
*/
@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);
/**
* 根据入参查询用户信息
* @param inStr
* @return
*/
AppUserInfo getUserInfo(String inStr);
/**
* 同步admin账户信息为app账户
*/
AppUserInfo syncAdminAccountInfo(AppAdminSyncDto dto);
/**
* 绑定社交账号
*/
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;
@@ -42,45 +47,62 @@ import java.util.Map;
@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;
}
@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(user);
}
/**
* 根据入参查询用户信息
* @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 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);
}
}