diff --git a/pjcloud-app-server/pjcloud-app-server-biz/pom.xml b/pjcloud-app-server/pjcloud-app-server-biz/pom.xml index 3a441ffb0..bbf75ad80 100644 --- a/pjcloud-app-server/pjcloud-app-server-biz/pom.xml +++ b/pjcloud-app-server/pjcloud-app-server-biz/pom.xml @@ -104,12 +104,17 @@ com.bsd pjcloud-common-swagger - + com.bsd pjcloud-common-seata - + + + com.alipay.sdk + alipay-sdk-java + 4.40.251.ALL + diff --git a/pjcloud-app-server/pjcloud-app-server-biz/src/main/java/com/bsd/pjcloud/app/config/MiniAlipayConf.java b/pjcloud-app-server/pjcloud-app-server-biz/src/main/java/com/bsd/pjcloud/app/config/MiniAlipayConf.java new file mode 100644 index 000000000..370072464 --- /dev/null +++ b/pjcloud-app-server/pjcloud-app-server-biz/src/main/java/com/bsd/pjcloud/app/config/MiniAlipayConf.java @@ -0,0 +1,40 @@ +package com.bsd.pjcloud.app.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * 支付宝支付配置 + */ +@Component +@ConfigurationProperties(prefix = "mini-ali-pay") +@Data +public class MiniAlipayConf { + + /** + * 应用ID + */ + private String appId; + + /** + * 私钥 + */ + private String privateKey; + + /** + * 公钥 + */ + private String publicKey; + + /** + * 支付宝公钥 + */ + private String alipayPublicKey; + + /** + * 回调地址 + */ + private String callbackUrl; + +} diff --git a/pjcloud-app-server/pjcloud-app-server-biz/src/main/java/com/bsd/pjcloud/app/controller/AppSocialDetailsController.java b/pjcloud-app-server/pjcloud-app-server-biz/src/main/java/com/bsd/pjcloud/app/controller/AppSocialDetailsController.java index 7cdc79950..dcd17e4e7 100644 --- a/pjcloud-app-server/pjcloud-app-server-biz/src/main/java/com/bsd/pjcloud/app/controller/AppSocialDetailsController.java +++ b/pjcloud-app-server/pjcloud-app-server-biz/src/main/java/com/bsd/pjcloud/app/controller/AppSocialDetailsController.java @@ -28,6 +28,8 @@ import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; import com.bsd.pjcloud.common.log.annotation.SysLog; import com.bsd.pjcloud.common.security.annotation.HasPermission; import com.bsd.pjcloud.common.security.annotation.Inner; +import com.bsd.pjcloud.common.security.service.PjcloudUser; +import com.bsd.pjcloud.common.security.util.SecurityUtils; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; @@ -45,95 +47,79 @@ import java.util.List; @SecurityRequirement(name = HttpHeaders.AUTHORIZATION) public class AppSocialDetailsController { - private final AppSocialDetailsService appSocialDetailsService; + private final AppSocialDetailsService appSocialDetailsService; - /** - * 社交登录账户简单分页查询 - * @param page 分页对象 - * @param appSocialDetails 社交登录 - * @return - */ - @GetMapping("/page") - public R getSocialDetailsPage(Page page, AppSocialDetails appSocialDetails) { - return R.ok(appSocialDetailsService.page(page, Wrappers.query(appSocialDetails))); - } + /** + * 社交登录账户简单分页查询 + */ + @GetMapping("/page") + public R getSocialDetailsPage(Page page, AppSocialDetails appSocialDetails) { + return R.ok(appSocialDetailsService.page(page, Wrappers.query(appSocialDetails))); + } - /** - * 信息 - * @param id id - * @return R - */ - @GetMapping("/{id}") - public R getinfo(@PathVariable("id") Long id) { - return R.ok(appSocialDetailsService.getById(id)); - } + /** + * 信息 + */ + @GetMapping("/{id}") + public R getinfo(@PathVariable("id") Long id) { + return R.ok(appSocialDetailsService.getById(id)); + } - /** - * 保存 - * @param appSocialDetails - * @return R - */ - @SysLog("保存三方信息") - @PostMapping - @HasPermission("app_social_details_add") - public R save(@Valid @RequestBody AppSocialDetails appSocialDetails) { - return R.ok(appSocialDetailsService.save(appSocialDetails)); - } + /** + * 保存 + */ + @SysLog("保存三方信息") + @PostMapping + @HasPermission("app_social_details_add") + public R save(@Valid @RequestBody AppSocialDetails appSocialDetails) { + return R.ok(appSocialDetailsService.save(appSocialDetails)); + } - /** - * 修改 - * @param appSocialDetails - * @return R - */ - @SysLog("修改三方信息") - @PutMapping - @HasPermission("app_social_details_edit") - public R updateById(@Validated({ ValidGroup.Update.class }) @RequestBody AppSocialDetails appSocialDetails) { - appSocialDetailsService.updateById(appSocialDetails); - return R.ok(Boolean.TRUE); - } + /** + * 修改 + */ + @SysLog("修改三方信息") + @PutMapping + @HasPermission("app_social_details_edit") + public R updateById(@Validated({ValidGroup.Update.class}) @RequestBody AppSocialDetails appSocialDetails) { + appSocialDetailsService.updateById(appSocialDetails); + return R.ok(Boolean.TRUE); + } - /** - * 删除 - * @param ids - * @return R - */ - @SysLog("删除三方信息") - @DeleteMapping - @HasPermission("app_social_details_del") - public R removeById(@RequestBody Long[] ids) { - return R.ok(appSocialDetailsService.removeBatchByIds(CollUtil.toList(ids))); - } + /** + * 删除 + */ + @SysLog("删除三方信息") + @DeleteMapping + @HasPermission("app_social_details_del") + public R removeById(@RequestBody Long[] ids) { + return R.ok(appSocialDetailsService.removeBatchByIds(CollUtil.toList(ids))); + } - /** - * 通过社交账号、手机号查询用户、角色信息 - * @param inStr appid@code - * @return - */ - @Inner - @GetMapping("/info/{inStr}") - public R getUserInfo(@PathVariable String inStr) { - return R.ok(appSocialDetailsService.getUserInfo(inStr)); - } + /** + * 通过社交账号、手机号查询用户、角色信息 + */ + @Inner + @GetMapping("/info/{inStr}") + public R getUserInfo(@PathVariable String inStr) { + return R.ok(appSocialDetailsService.getUserInfo(inStr)); + } - /** - * 绑定社交账号 - * @param state 类型 - * @param code code - * @return - */ - @PostMapping("/bind") - public R bindSocial(String state, String code) { - return R.ok(appSocialDetailsService.bindSocial(state, code)); - } + /** + * 绑定社交账号 + */ + @PostMapping("/bind") + public R bindSocial(String state, String code) { + return R.ok(appSocialDetailsService.bindSocial(state, code)); + } - /** - * 导出 - */ - @GetMapping("/export") - @ResponseExcel - public List export(AppSocialDetails appSocialDetails) { - return appSocialDetailsService.list(Wrappers.query(appSocialDetails)); - } + /** + * 导出 + */ + @GetMapping("/export") + @ResponseExcel + public List export(AppSocialDetails appSocialDetails) { + return appSocialDetailsService.list(Wrappers.query(appSocialDetails)); + } } diff --git a/pjcloud-app-server/pjcloud-app-server-biz/src/main/java/com/bsd/pjcloud/app/controller/AppUserController.java b/pjcloud-app-server/pjcloud-app-server-biz/src/main/java/com/bsd/pjcloud/app/controller/AppUserController.java index ef5e1426d..9815cb72c 100644 --- a/pjcloud-app-server/pjcloud-app-server-biz/src/main/java/com/bsd/pjcloud/app/controller/AppUserController.java +++ b/pjcloud-app-server/pjcloud-app-server-biz/src/main/java/com/bsd/pjcloud/app/controller/AppUserController.java @@ -22,6 +22,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.admin.api.dto.UserInfo; import com.bsd.pjcloud.admin.api.feign.RemoteUserService; import com.bsd.pjcloud.app.api.dto.AppUserDTO; +import com.bsd.pjcloud.app.api.dto.AppUserInfo; import com.bsd.pjcloud.app.api.entity.AppUser; import com.bsd.pjcloud.app.api.feign.RemoteAppUserService; import com.bsd.pjcloud.app.api.vo.AppUserExcelVO; @@ -61,155 +62,100 @@ import java.util.List; @SecurityRequirement(name = HttpHeaders.AUTHORIZATION) public class AppUserController { - private final AppUserService appUserService; - - - @Inner - @GetMapping("/info/{username}") - public R info(@PathVariable String username) { - AppUser user = appUserService.getOne(Wrappers.query() - .lambda() - .eq(AppUser::getUsername, username) - .or() - .eq(AppUser::getPhone, username)); - if (user == null) { - return R.failed(MsgUtils.getMessage(ErrorCodes.APP_USER_USERINFO_EMPTY, username)); - } - return R.ok(appUserService.findUserInfo(user)); - } - - /** - * 获取当前用户全部信息 - * @return 用户信息 - */ - @GetMapping(value = { "/info" }) - public R info() { - String username = SecurityUtils.getUser().getUsername(); - AppUser user = appUserService.getOne(Wrappers.query().lambda().eq(AppUser::getUsername, username)); - if (user == null) { - return R.failed(MsgUtils.getMessage(ErrorCodes.SYS_USER_QUERY_ERROR)); - } - return R.ok(appUserService.findUserInfo(user)); - } - - /** - * 分页查询 - * @param page 分页对象 - * @param appUserDTO app用户表 - * @return - */ - @Operation(summary = "分页查询", description = "分页查询") - @GetMapping("/page") - public R getAppUserPage(Page page, AppUserDTO appUserDTO) { - return R.ok(appUserService.getUsersWithRolePage(page, appUserDTO)); - } - - /** - * 通过id查询app用户表 - * @param userId id - * @return R - */ - @Operation(summary = "通过id查询", description = "通过id查询") - @GetMapping("/details/{userId}") - public R getById(@PathVariable("userId") Long userId) { - return R.ok(appUserService.selectUserVoById(userId)); - } - - /** - * @return R - */ - @Operation(summary = "通过userName查询", description = "通过userName查询") - @GetMapping("/details") - public R getByUserName(AppUser user) { - AppUser one = appUserService.getOne(Wrappers.query(user), false); - return R.ok(one == null ? null : CommonConstants.SUCCESS); - } - - /** - * 新增app用户表 - * @param appUser app用户表 - * @return R - */ -// @Operation(summary = "新增app用户表", description = "新增app用户表") -// @SysLog("新增app用户表") -// @PostMapping -// @HasPermission("app_appuser_add") -// public R save(@RequestBody AppUserDTO appUser) { -// appUserService.saveUser(appUser); -// return R.ok(); -// } - - /** - * 修改app用户表 - * @param appUser app用户表 - * @return R - */ - @Operation(summary = "修改app用户表", description = "修改app用户表") - @SysLog("修改app用户表") - @PutMapping - @HasPermission("app_appuser_edit") - public R updateById(@RequestBody AppUserDTO appUser) { - return R.ok(appUserService.updateUser(appUser)); - } - - /** - * 通过id删除app用户表 - * @param ids userIds - * @return R - */ - @Operation(summary = "通过ids删除app用户表", description = "通过ids删除app用户表") - @SysLog("通过id删除app用户表") - @DeleteMapping - @HasPermission("app_appuser_del") - public R removeById(@RequestBody Long[] ids) { - return R.ok(appUserService.deleteAppUserByIds(ids)); - } - - /** - * 导出excel 表格 -// * @param appUser 查询条件 - * @return excel 文件流 - */ -// @ResponseExcel -// @GetMapping("/export") -// @HasPermission("app_appuser_export") -// public List export(AppUserDTO appUser) { -// return appUserService.listUser(appUser); -// } - - @SysLog("修改个人信息") - @PutMapping("/edit") - public R updateUserInfo(@Valid @RequestBody AppUserDTO userDto) { - if (UserTypeEnum.TOC.getStatus().equals(SecurityUtils.getUser().getUserType())) { - userDto.setUserId(SecurityUtils.getUser().getId()); - // TOC 以手机号为key - userDto.setUsername(SecurityUtils.getUser().getUsername()); - } - return appUserService.updateUserInfo(userDto); - } - - /** - * 导入用户 - * @param excelVOList 用户列表 - * @param bindingResult 错误信息列表 - * @return R - */ -// @PostMapping("/import") -// @HasPermission("app_appuser_export") -// public R importUser(@RequestExcel List excelVOList, BindingResult bindingResult) { -// return appUserService.importUser(excelVOList, bindingResult); -// } - -// @Operation(summary = "注册app用户表", description = "注册app用户表") -// @SysLog("注册app用户表") -// @Inner(value = false) -// @PostMapping("/register") -// public R register(@RequestBody AppUserDTO appUser) { -// return appUserService.registerAppUser(appUser); -// } - + private final AppUserService appUserService; + + /* ************************************* start app start ************************************* */ + + /** + * 获取当前用户全部信息 + */ + @GetMapping(value = {"/info"}) + public R info() { + Long userId = SecurityUtils.getUser().getId(); + AppUser user = appUserService.getOne(Wrappers.query().lambda().eq(AppUser::getUserId, userId)); + if (user == null) { + return R.failed(MsgUtils.getMessage(ErrorCodes.SYS_USER_QUERY_ERROR)); + } + return R.ok(appUserService.findUserInfo(user)); + } + + /* ************************************* end app end ************************************* */ + + @Inner + @GetMapping("/info/{username}") + public R info(@PathVariable String username) { + AppUser user = appUserService.getOne(Wrappers.query() + .lambda() + .eq(AppUser::getUsername, username) + .or() + .eq(AppUser::getPhone, username)); + if (user == null) { + return R.failed(MsgUtils.getMessage(ErrorCodes.APP_USER_USERINFO_EMPTY, username)); + } + return R.ok(appUserService.findUserInfo(user)); + } + + /** + * 分页查询 + */ + @Operation(summary = "分页查询", description = "分页查询") + @GetMapping("/page") + public R getAppUserPage(Page page, AppUserDTO appUserDTO) { + return R.ok(appUserService.getUsersWithRolePage(page, appUserDTO)); + } + + /** + * 通过id查询app用户表 + */ + @Operation(summary = "通过id查询", description = "通过id查询") + @GetMapping("/details/{userId}") + public R getById(@PathVariable("userId") Long userId) { + return R.ok(appUserService.selectUserVoById(userId)); + } + + /** + * @return R + */ + @Operation(summary = "通过userName查询", description = "通过userName查询") + @GetMapping("/details") + public R getByUserName(AppUser user) { + AppUser one = appUserService.getOne(Wrappers.query(user), false); + return R.ok(one == null ? null : CommonConstants.SUCCESS); + } + + /** + * 修改app用户表 + */ + @Operation(summary = "修改app用户表", description = "修改app用户表") + @SysLog("修改app用户表") + @PutMapping + @HasPermission("app_appuser_edit") + public R updateById(@RequestBody AppUserDTO appUser) { + return R.ok(appUserService.updateUser(appUser)); + } + + /** + * 通过id删除app用户表 + */ + @Operation(summary = "通过ids删除app用户表", description = "通过ids删除app用户表") + @SysLog("通过id删除app用户表") + @DeleteMapping + @HasPermission("app_appuser_del") + public R removeById(@RequestBody Long[] ids) { + return R.ok(appUserService.deleteAppUserByIds(ids)); + } + @SysLog("修改个人信息") + @PutMapping("/edit") + public R updateUserInfo(@Valid @RequestBody AppUserDTO userDto) { + if (UserTypeEnum.TOC.getStatus().equals(SecurityUtils.getUser().getUserType())) { + userDto.setUserId(SecurityUtils.getUser().getId()); + // TOC 以手机号为key + userDto.setUsername(SecurityUtils.getUser().getUsername()); + } + return appUserService.updateUserInfo(userDto); + } } diff --git a/pjcloud-app-server/pjcloud-app-server-biz/src/main/java/com/bsd/pjcloud/app/handler/MiniAlipayLoginHandler.java b/pjcloud-app-server/pjcloud-app-server-biz/src/main/java/com/bsd/pjcloud/app/handler/MiniAlipayLoginHandler.java new file mode 100644 index 000000000..92b3591ca --- /dev/null +++ b/pjcloud-app-server/pjcloud-app-server-biz/src/main/java/com/bsd/pjcloud/app/handler/MiniAlipayLoginHandler.java @@ -0,0 +1,138 @@ +package com.bsd.pjcloud.app.handler; + +import cn.hutool.core.util.ObjectUtil; +import com.alipay.api.AlipayClient; +import com.alipay.api.AlipayConfig; +import com.alipay.api.DefaultAlipayClient; +import com.alipay.api.request.AlipaySystemOauthTokenRequest; +import com.alipay.api.response.AlipaySystemOauthTokenResponse; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.bsd.pjcloud.app.api.dto.AppUserInfo; +import com.bsd.pjcloud.app.api.entity.AppUser; +import com.bsd.pjcloud.app.config.MiniAlipayConf; +import com.bsd.pjcloud.app.mapper.AppSocialDetailsMapper; +import com.bsd.pjcloud.app.service.AppUserService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * 支付宝小程序 + */ +@Slf4j +@Component("MINI_ALIPAY") +@AllArgsConstructor +public class MiniAlipayLoginHandler extends AbstractLoginHandler { + + private final MiniAlipayConf miniAlipayConf; + + private final AppUserService appUserService; + + private final AppSocialDetailsMapper appSocialDetailsMapper; + + static private AlipayClient alipayClient = null; + + public AlipayClient getAlipay() { + if (ObjectUtil.isNotEmpty(miniAlipayConf)) return getAlipayClient(); + return getAlipayClient(); + } + + private synchronized AlipayClient getAlipayClient() { + if (alipayClient == null) { + try { + alipayClient = new DefaultAlipayClient(getAlipayConfig()); + } catch (Exception e) { + e.printStackTrace(); + log.error("初始化支付宝客户端失败error:{}", e.getMessage()); + } + } + return alipayClient; + } + + private AlipayConfig getAlipayConfig() { + AlipayConfig alipayConfig = new AlipayConfig(); + alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do"); + alipayConfig.setAppId(miniAlipayConf.getAppId()); + alipayConfig.setPrivateKey(miniAlipayConf.getPrivateKey()); + alipayConfig.setFormat("json"); + alipayConfig.setAlipayPublicKey(miniAlipayConf.getAlipayPublicKey()); + alipayConfig.setCharset("UTF-8"); + alipayConfig.setSignType("RSA2"); + return alipayConfig; + } + + /** + * 获取支付宝openId + */ + public AlipaySystemOauthTokenResponse getOpenId(String code, String refreshToken) { + AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest(); + // 设置刷新令牌 + if (ObjectUtil.isNotEmpty(refreshToken)) { + request.setRefreshToken(refreshToken); + request.setGrantType("refresh_token"); + } + // 设置授权码 + if (ObjectUtil.isNotEmpty(code)) { + request.setCode(code); + request.setGrantType("authorization_code"); + } + try { + AlipaySystemOauthTokenResponse response = getAlipay().execute(request); + if (!response.isSuccess()) { + log.error("|获取支付宝openId|错误error:{}", response.getSubMsg()); + } + return response; + } catch (Exception e) { + e.printStackTrace(); + log.error("|获取支付宝openId|意外的错误error:{}", e.getMessage()); + return null; + } + } + + /** + * 通过用户传入获取唯一标识 + */ + @Override + public String identify(String loginStr) { + AlipaySystemOauthTokenResponse res = getOpenId(loginStr, null); + if (ObjectUtil.isEmpty(res) || ObjectUtil.isEmpty(res.getOpenId())) { + return null; + } + return res.getOpenId(); + } + + /** + * 获取用户信息 + */ + @Override + public AppUserInfo info(String openId) { + AppUser user = appUserService.getOne(Wrappers.query().lambda().eq(AppUser::getWxOpenid, openId)); + if (ObjectUtil.isEmpty(user)) { + log.info("支付宝小程序openId:{},创建新的用户", openId); + String name = "支付宝游客-" + openId; + AppUser appUser = new AppUser(); + appUser.setWxOpenid(openId); + appUser.setUsername(name); + appUser.setName(name); + appUser.setCreateBy(openId); + appUser.setUpdateBy(openId); + appUserService.saveOrUpdate(appUser); + AppUserInfo appUserDTO = new AppUserInfo(); + appUserDTO.setAppUser(appUser); + return appUserDTO; + } + return appUserService.findUserInfo(user); + } + + /** + * 绑定逻辑 + */ + @Override + public Boolean bind(AppUser user, String identify) { + user.setWxOpenid(identify); + appUserService.updateById(user); + return true; + } + + +} diff --git a/pjcloud-app-server/pjcloud-app-server-biz/src/main/java/com/bsd/pjcloud/app/handler/MiniAppLoginHandler.java b/pjcloud-app-server/pjcloud-app-server-biz/src/main/java/com/bsd/pjcloud/app/handler/MiniWechatLoginHandler.java similarity index 96% rename from pjcloud-app-server/pjcloud-app-server-biz/src/main/java/com/bsd/pjcloud/app/handler/MiniAppLoginHandler.java rename to pjcloud-app-server/pjcloud-app-server-biz/src/main/java/com/bsd/pjcloud/app/handler/MiniWechatLoginHandler.java index e3e7c242d..e94fdfd24 100644 --- a/pjcloud-app-server/pjcloud-app-server-biz/src/main/java/com/bsd/pjcloud/app/handler/MiniAppLoginHandler.java +++ b/pjcloud-app-server/pjcloud-app-server-biz/src/main/java/com/bsd/pjcloud/app/handler/MiniWechatLoginHandler.java @@ -36,15 +36,12 @@ import org.springframework.stereotype.Component; import java.util.Objects; /** - * @author pjcloud - * @date 2019年11月02日 - *

* 微信小程序 */ @Slf4j -@Component("APP-MINI") +@Component("MINI_WECHAT") @AllArgsConstructor -public class MiniAppLoginHandler extends AbstractLoginHandler { +public class MiniWechatLoginHandler extends AbstractLoginHandler { private final AppUserService appUserService; diff --git a/pjcloud-app-server/pjcloud-app-server-biz/src/main/resources/application.yml b/pjcloud-app-server/pjcloud-app-server-biz/src/main/resources/application.yml index db8f394a9..645bbb4f6 100644 --- a/pjcloud-app-server/pjcloud-app-server-biz/src/main/resources/application.yml +++ b/pjcloud-app-server/pjcloud-app-server-biz/src/main/resources/application.yml @@ -16,3 +16,11 @@ spring: import: - optional:nacos:application-@profiles.active@.yml - optional:nacos:${spring.application.name}-@profiles.active@.yml + +mini-ali-pay: + app-id: 2021005197658445 + private-key: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCTYHY0AW2cjbHoOinD8f4CKMKasDmbRw4CEMasG5IzckmeuTqut3GmxxRRls62zlXRVOCDYgnGhzEhD/nMYx0TMBX2mYo+fH9XUMtZMKY+p2rPTXTlPnGfbQ4edUYofR0tq1ug+wHOD5/jxuwO1zPfB7t8dX3gNa4M43fTPK2mPDeo/UiRB45DPjUWvbMX59ltYYMgmAW0TAbXmRAGKFxrmX3HddJK0jSwEpTcHaRV3C6FrYV48vWHEliviVBUsLRIpwv3T3FYZm0a19LcGQtybeThXaaCYrj7Lwoffk8v8DL2g28IAeiFtjjkWbPFKKMCsSe/LVkvdQTuhncuDayTAgMBAAECggEAJvreiMbP7RZ1Nc0cet0op/2L60otEmrqw5UYVzE7rCvQWRD4+nk+sDP7pdDTf/p3LFTcxSNLHp1nWy1UjsCwUgDn7j+SFxDqxXdzMXXyoqO5VndQMcogV2CK2Xd/RPpCm2+1XpDFW3E6gw58JTi6WYU8C6Ev1/uau4H2kYJ9E3h2W0P0PyY+Q9QNHEpG2hLQdiWLHz3xzmSNSDXiknEg/Whew7IMVKNgxg5VVEBTerwCH5Grvn56CKx6acb6JlU+VFsmW3J1tMYLgxVhJWVVAK6NltmxE5apIxTkG3wEOMuuBCZHQ1Lm0rrGKJh8WmYRs6ho5wSjHYG3hyKRm/0TEQKBgQDcDDPyOWw/o9ZqB3N7qxUi63V7wU7X8QL/CmQO4tu/ng/4Drm8QESjk+ib3O3pCC7xwcte/U1Otw3AmSSj1CWvT8a0yLJM9GVOJwZFVyzy6yVFPyn6l4ndRdargyFokM2lgVTgEHo4WSMbLQsA8/KTB3anqo6bYLjqjsBgY49fpQKBgQCrdLMh5ayJOUK9UeBHXr0c/OLDzwoSUVMyNLfX3pIBC21meFxigNMiy+UKpslM2QMH1yyfwsUKv/i7y1kRFj9Go7pYU0HxglfHecllqXPunWJYuSm38x8WWAG/oqcLPGSlJjHYhU6IAkDuHHaW5DKLxr0x2DkZ/c4TcyYal9Ol1wKBgD4Lls4S0On02W1WIoLZT4FkIOE/NWsAAxdEp8fmwY17FQedp1NkT7ZL60efeNm/O/Vg7mYfSCAMz2ziAYnMNMAE34N0H4pBUxtBN6xvkzX/hafL0ptdBTuGCKydsdrZEZM8L2FqY/vlbleoULT5FAnPDe7i0YkQMbO5gpbrG68dAoGAFv+tc7OSREn5CNotwoUTywqlBG0GRdTA2zA1JPDHFvrIbwFgKxpqt/UvwREEWZmWjXuwkbGXqsx7ef1Z8i/QxxH5UhXA97trOOe+OzPSyEQ2R/52eSVUmzOs8F7KF3i/a2PHNesT0Ky0tvv8cFsl6Jf9Eu2VI0ZnWTaN+u04x7sCgYEAlhpr3RSJk2EnLPR3BxKboTxSGsK/2U4xz/WqX96B+lQ5h7NSMJC35vZJ5dm2vHtLcucHaK49YNsJdq+nzhhwxDz+Dd/5rcIp7AcdHqDsVLHYIN7JWxa9QiC3gvrnWsij1DShydOLpGMYveFz0LyRIUDW4CTs55oDFsIR4HdwtM0= + public-key: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk2B2NAFtnI2x6Dopw/H+AijCmrA5m0cOAhDGrBuSM3JJnrk6rrdxpscUUZbOts5V0VTgg2IJxocxIQ/5zGMdEzAV9pmKPnx/V1DLWTCmPqdqz0105T5xn20OHnVGKH0dLatboPsBzg+f48bsDtcz3we7fHV94DWuDON30zytpjw3qP1IkQeOQz41Fr2zF+fZbWGDIJgFtEwG15kQBihca5l9x3XSStI0sBKU3B2kVdwuha2FePL1hxJYr4lQVLC0SKcL909xWGZtGtfS3BkLcm3k4V2mgmK4+y8KH35PL/Ay9oNvCAHohbY45FmzxSijArEnvy1ZL3UE7oZ3Lg2skwIDAQAB + alipay-public-key: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqnCB+N172m5gxf1Rolfx5LErSiVwQCh0XQdDrVy6aTuVF5EtdqahSHtADyEPsBWudMBhzCfqpoZvfnvH7a+PED6uZ3DoXt7ETh8TmNM5yc+WTnD8pSphQvuHDJ3zMks489KNxiX6sXag71k9H1MXklJGPOUaljHqy/QlRn2ZLT7pFgaFH9LEcVoQBPIOurUn95078h848RFD30jZFW3fakxUGAGVVZaHH62z5OEWOmcA+CwxsEDMa1XMt02RGXgAAq4WOj+BqOGiFmhM8rnrUMchTyvx4umOzGvbF2Y9irN3aBZ5lfg+bzYcJpIOMzlM/V00LnEWzCblJzXNyH4hJQIDAQAB + callback-url: https://rj4jv5rwqs.by.takin.cc/hard/hard-ali-pay/callback + # callback-url: https://stgl.pj.gov.cn/api/hard/hard-ali-pay/callback diff --git a/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/SecurityConstants.java b/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/SecurityConstants.java index 82e90bf5c..dcf350489 100644 --- a/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/SecurityConstants.java +++ b/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/SecurityConstants.java @@ -250,6 +250,16 @@ public interface SecurityConstants { */ String APP = "mobile"; + /** + * 游客登录(微信,小程序) + */ + String VISITOR = "visitor"; + + /** + * 游客登录(微信,小程序) openId + */ + String VISITOR_OPEN_ID = "openId"; + /** * 用户信息 */ diff --git a/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/enums/UserTypeEnum.java b/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/enums/UserTypeEnum.java index c1974af7c..9eafdd097 100644 --- a/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/enums/UserTypeEnum.java +++ b/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/enums/UserTypeEnum.java @@ -1,22 +1,31 @@ package com.bsd.pjcloud.common.core.constant.enums; +import cn.hutool.core.util.ObjectUtil; import lombok.AllArgsConstructor; import lombok.Getter; +import java.util.Arrays; + @Getter @AllArgsConstructor public enum UserTypeEnum { - TOB("0", "面向后台应用"), TOC("1", "面向小程序"); + TOB("0", "面向后台应用"), + TOC("1", "面向小程序"); - /** - * 类型 - */ - private final String status; + /** + * 类型 + */ + private final String status; - /** - * 描述 - */ - private final String description; + /** + * 描述 + */ + private final String description; + + public static UserTypeEnum valueOfByStatus(String status) { + if (ObjectUtil.isEmpty(status)) return null; + return Arrays.stream(values()).filter(v -> ObjectUtil.equals(status, v.getStatus())).findFirst().orElse(null); + } } diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/HardAuthTypeEnum.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/HardAuthTypeEnum.java index 3b2ac1d89..f975002e4 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/HardAuthTypeEnum.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/HardAuthTypeEnum.java @@ -15,6 +15,7 @@ import java.util.Arrays; public enum HardAuthTypeEnum { HARD_DDOR_AUTH("10", "智能柜授权"), + HARD_DDOR_TOC_AUTH("20", "TOC用户智能柜授权"), ; private final String type; private final String description; diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderTypeEnum.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderTypeEnum.java index 88b7c7009..4f1e1fd25 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderTypeEnum.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderTypeEnum.java @@ -20,6 +20,7 @@ public enum HardOrderTypeEnum { ZY("5", "正元公务餐"), LB("6", "宁波银行(美好生活)"), FARMER("7", "共富商城(助农)"), + TOC_VISITOR("8", "toc访客购买(不记名用户)"), ; private final String type; private final String description; diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardAuthAppDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardAuthAppDto.java index 4274a461a..dba66ef4e 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardAuthAppDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardAuthAppDto.java @@ -1,5 +1,6 @@ package com.bsd.pjcloud.hard.api.dto; +import com.bsd.pjcloud.common.core.constant.enums.UserTypeEnum; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import lombok.Data; @@ -12,6 +13,11 @@ public class HardAuthAppDto { */ private Long userId; + /** + * 用户类型 + */ + private UserTypeEnum userType; + /** * 授权id */ diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardGetAuthAppDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardGetAuthAppDto.java index 151512293..91b650d2b 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardGetAuthAppDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardGetAuthAppDto.java @@ -1,5 +1,6 @@ package com.bsd.pjcloud.hard.api.dto; +import com.bsd.pjcloud.common.core.constant.enums.UserTypeEnum; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import lombok.Data; @@ -12,6 +13,11 @@ public class HardGetAuthAppDto { */ private Long userId; + /** + * 用户类型 + */ + private UserTypeEnum userType; + /** * 智能柜设备id */ diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardDoorFlowEntity.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardDoorFlowEntity.java index 8e10716c4..c1b02c357 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardDoorFlowEntity.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardDoorFlowEntity.java @@ -37,6 +37,12 @@ public class HardDoorFlowEntity extends Model { @Schema(description = "用户编号") private Long userId; + /** + * 用户类型 + */ + @Schema(description = "用户类型") + private String userType; + /** * 业务类型 */ diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/manager/HardDoorCabinetEntity.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/manager/HardDoorCabinetEntity.java index 560449077..087d074f4 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/manager/HardDoorCabinetEntity.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/manager/HardDoorCabinetEntity.java @@ -78,6 +78,18 @@ public class HardDoorCabinetEntity extends Model { @Schema(description = "url二维码") private String urlQrCode; + /** + * 支付宝小程序二维码 + */ + @Schema(description = "支付宝小程序二维码") + private String urlAlipayQrCode; + + /** + * 微信小程序二维码 + */ + @Schema(description = "微信小程序二维码") + private String urlWechatQrCode; + /** * 创建人 */ diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardAppCreateThirdDoorOrderVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardAppCreateThirdDoorOrderVo.java new file mode 100644 index 000000000..bb0826540 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardAppCreateThirdDoorOrderVo.java @@ -0,0 +1,14 @@ +package com.bsd.pjcloud.hard.api.vo.order; + +import lombok.Data; + +@Data +public class HardAppCreateThirdDoorOrderVo { + + private Long authId; + + /** + * 支付宝订单号 + */ + private String alipayOrderStr; +} diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/config/MiniAlipayConf.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/config/MiniAlipayConf.java new file mode 100644 index 000000000..09aa1ae32 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/config/MiniAlipayConf.java @@ -0,0 +1,50 @@ +package com.bsd.pjcloud.hard.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * 支付宝支付配置 + */ +@Component +@ConfigurationProperties(prefix = "mini-ali-pay") +@Data +public class MiniAlipayConf { + + /** + * 应用ID + */ + private String appId; + + /** + * 商户号 + */ + private String merchantId; + + /** + * 商户账号 + */ + private String merchantAccount; + + /** + * 冻结金额 + */ + private String freezeAmount; + + /** + * 私钥 + */ + private String privateKey; + + /** + * 公钥 + */ + private String publicKey; + + /** + * 支付宝公钥 + */ + private String alipayPublicKey; + +} diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardAuthController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardAuthController.java index 05b7fbe0b..be8b91392 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardAuthController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardAuthController.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.ArrayUtil; 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.common.core.constant.enums.UserTypeEnum; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.common.idempotent.annotation.Idempotent; @@ -14,6 +15,7 @@ import com.bsd.pjcloud.hard.api.dto.*; import com.bsd.pjcloud.hard.api.entity.HardAuthEntity; import com.bsd.pjcloud.hard.api.vo.HardAuthVo; import com.bsd.pjcloud.hard.api.vo.HardGetAuthAppVo; +import com.bsd.pjcloud.hard.api.vo.order.HardAppCreateThirdDoorOrderVo; import com.bsd.pjcloud.hard.service.HardAuthService; import jakarta.validation.Valid; import org.springframework.security.access.prepost.PreAuthorize; @@ -48,17 +50,28 @@ public class HardAuthController { public R appGetAuthHardDoor(@Valid @RequestBody HardGetAuthAppDto dto) { PjcloudUser user = SecurityUtils.getUser(); dto.setUserId(user.getId()); + dto.setUserType(UserTypeEnum.valueOfByStatus(user.getUserType())); return R.ok(hardAuthService.appGetAuthHardDoor(dto)); } @Operation(summary = "app智能柜授权", description = "app智能柜授权") @PostMapping("/app/auth-hard-door") - public R appAuthHardDoor(@Valid @RequestBody HardAuthAppDto dto) { + public R appAuthHardDoor(@Valid @RequestBody HardAuthAppDto dto) { PjcloudUser user = SecurityUtils.getUser(); dto.setUserId(user.getId()); + dto.setUserType(UserTypeEnum.valueOfByStatus(user.getUserType())); return R.ok(hardAuthService.appAuthHardDoor(dto)); } + @Operation(summary = "app创建第三方免密支付", description = "app创建第三方免密支付") + @PostMapping("/app/auth-create-third-door-order") + public R appCreateThirdDoorOrder(@Valid @RequestBody HardAuthAppDto dto) { + PjcloudUser user = SecurityUtils.getUser(); + dto.setUserId(user.getId()); + dto.setUserType(UserTypeEnum.valueOfByStatus(user.getUserType())); + return R.ok(hardAuthService.appCreateThirdDoorOrder(dto)); + } + /* ************************************* end app end ************************************* */ @Operation(summary = "流程错误手动处理", description = "流程错误手动处理") diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardAuthService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardAuthService.java index bd5b661e9..e1ec1aaa3 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardAuthService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardAuthService.java @@ -10,6 +10,7 @@ import com.bsd.pjcloud.hard.api.dto.HardGetAuthAppDto; import com.bsd.pjcloud.hard.api.entity.HardAuthEntity; import com.bsd.pjcloud.hard.api.vo.HardAuthVo; import com.bsd.pjcloud.hard.api.vo.HardGetAuthAppVo; +import com.bsd.pjcloud.hard.api.vo.order.HardAppCreateThirdDoorOrderVo; import jakarta.validation.Valid; public interface HardAuthService extends IService { @@ -26,6 +27,11 @@ public interface HardAuthService extends IService { */ Long appAuthHardDoor(HardAuthAppDto dto); + /** + * app创建第三方免密支付 + */ + HardAppCreateThirdDoorOrderVo appCreateThirdDoorOrder(@Valid HardAuthAppDto dto); + /** * 判断当前用户信誉 */ @@ -35,4 +41,5 @@ public interface HardAuthService extends IService { * 流程错误手动处理 */ void errorChange(HardAuthErrorChangeDto dto, Long userId); + } \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorFlowService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorFlowService.java index 001fff8b7..c8458ae6d 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorFlowService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorFlowService.java @@ -2,6 +2,7 @@ package com.bsd.pjcloud.hard.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.bsd.pjcloud.common.core.constant.enums.UserTypeEnum; import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.hard.api.dto.HardDoorFlowDto; import com.bsd.pjcloud.hard.api.dto.HardDoorFlowOpenDto; @@ -40,7 +41,7 @@ public interface HardDoorFlowService extends IService { /** * 购买开门 */ - void openDoorPay(HardDoorFlowOpenDto dto, HardDoorManagerVo hardDoorDetail); + void openDoorPay(HardDoorFlowOpenDto dto, HardDoorManagerVo hardDoorDetail, UserTypeEnum userType); /** * 上架开门 diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardOrderService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardOrderService.java index e80c4836f..63985dbd6 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardOrderService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardOrderService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.bsd.pjcloud.admin.api.dto.UserInfo; import com.bsd.pjcloud.admin.api.entity.SysUser; +import com.bsd.pjcloud.common.core.constant.enums.UserTypeEnum; import com.bsd.pjcloud.common.core.constant.enums.YesNoEnum; import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.common.security.service.PjcloudUser; @@ -90,7 +91,7 @@ public interface HardOrderService extends IService { /** * 创建智能柜订单 */ - Long createHardDoorOrder(Long userId, Long hardId); + Long createHardDoorOrder(Long userId, UserTypeEnum userType, Long hardId); /** * 结算智能柜订单 diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/MiniAlipayService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/MiniAlipayService.java new file mode 100644 index 000000000..aca1dcea4 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/MiniAlipayService.java @@ -0,0 +1,17 @@ +package com.bsd.pjcloud.hard.service; + + +import com.alipay.api.response.AlipayFundAuthOrderAppFreezeResponse; + +public interface MiniAlipayService { + + /** + * 获取智能柜小程序二维码 + */ + String getDoorMiniQrCode(String hardDoorId, String cabinetNo); + + /** + * 支付宝冻结金额 + */ + AlipayFundAuthOrderAppFreezeResponse freezeAmount(Long authId); +} diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java index c53ad4724..3ab15098e 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java @@ -1,12 +1,14 @@ package com.bsd.pjcloud.hard.service.impl; import cn.hutool.core.util.ObjectUtil; +import com.alipay.api.response.AlipayFundAuthOrderAppFreezeResponse; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bsd.pjcloud.admin.api.feign.RemoteUserService; import com.bsd.pjcloud.admin.api.utils.DataUtil; import com.bsd.pjcloud.admin.api.vo.UserVO; +import com.bsd.pjcloud.common.core.constant.enums.UserTypeEnum; import com.bsd.pjcloud.common.core.constant.enums.YesNoEnum; import com.bsd.pjcloud.common.core.util.CollectionUtils; import com.bsd.pjcloud.common.core.util.R; @@ -23,12 +25,11 @@ import com.bsd.pjcloud.hard.api.utils.HardUtil; import com.bsd.pjcloud.hard.api.vo.HardAuthVo; import com.bsd.pjcloud.hard.api.vo.HardGetAuthAppVo; import com.bsd.pjcloud.hard.api.vo.manager.HardDoorManagerVo; +import com.bsd.pjcloud.hard.api.vo.order.HardAppCreateThirdDoorOrderVo; import com.bsd.pjcloud.hard.mapper.HardAuthMapper; import com.bsd.pjcloud.hard.mapper.manager.HardManagerMapper; -import com.bsd.pjcloud.hard.service.HardAuthService; -import com.bsd.pjcloud.hard.service.HardDoorFlowService; -import com.bsd.pjcloud.hard.service.HardDoorManagerService; -import com.bsd.pjcloud.hard.service.HardOrderService; +import com.bsd.pjcloud.hard.service.*; +import com.bsd.pjcloud.hard.service.impl.ali.MiniAlipayServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -51,6 +52,7 @@ public class HardAuthServiceImpl extends ServiceImpl spuList = hardSpuJoinService.getSpuList(hardDoorDetail.getId(), dto.getCabinetNo()); if (ObjectUtil.isEmpty(spuList) || spuList.isEmpty()) throw new RuntimeException("货柜商品信息为空,请上架"); - getSelf().openDoor(dto, hardDoorDetail); + getSelf().openDoor(dto, hardDoorDetail, userType); } /** @@ -223,7 +226,7 @@ public class HardDoorFlowServiceImpl extends ServiceImpl ObjectUtil.equals(type, v.getType())).findFirst().get(); + } + +} diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletManageServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletManageServiceImpl.java index b9d39667c..4beac8317 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletManageServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletManageServiceImpl.java @@ -545,6 +545,9 @@ public class WalletManageServiceImpl extends ServiceImpl= 100 * 100) { return null; } diff --git a/pom.xml b/pom.xml index 32f11c842..19e0d7d7f 100644 --- a/pom.xml +++ b/pom.xml @@ -16,7 +16,9 @@ ~ this software without specific prior written permission. ~ Author: pjcloud ~ - --> + --> + 4.0.0 com.bsd @@ -116,16 +118,16 @@ pjcloud-common pjcloud-flow pjcloud-visual - + pjcloud-app-server pjcloud-thirdparty pjcloud-canteen pjcloud-integrated pjcloud-wallet pjcloud-supermarket pjcloud-hardware - pjcloud-mqtt - pjcloud-pass - + pjcloud-mqtt + pjcloud-pass +