diff --git a/propertyManagement-admin/src/main/java/com/propertyManagement/web/controller/business/api/ApiLoginController.java b/propertyManagement-admin/src/main/java/com/propertyManagement/web/controller/business/api/ApiLoginController.java index 73601861714d707c30164647c43ea3469256cd84..267356c3de4a6c4ac7c5853e2a52844527f04c04 100644 --- a/propertyManagement-admin/src/main/java/com/propertyManagement/web/controller/business/api/ApiLoginController.java +++ b/propertyManagement-admin/src/main/java/com/propertyManagement/web/controller/business/api/ApiLoginController.java @@ -1,11 +1,14 @@ package com.propertyManagement.web.controller.business.api; +import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.propertyManagement.business.domain.WxAccount; +import com.propertyManagement.business.domain.WxUser; import com.propertyManagement.business.domain.bo.CodeLoginBo; import com.propertyManagement.business.domain.vo.LoginWxUser; import com.propertyManagement.business.mapper.WxAccountMapper; +import com.propertyManagement.business.mapper.WxUserMapper; import com.propertyManagement.business.service.WxUserLoginService; import com.propertyManagement.business.service.WxUserTokenService; import com.propertyManagement.business.support.util.AuthUtil; @@ -20,6 +23,7 @@ import com.tencentcloudapi.sms.v20210111.models.SendStatus; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -48,6 +52,8 @@ public class ApiLoginController { private final WxUserTokenService wxUserTokenService; + private final WxUserMapper userMapper; + private final SendSms sendSms; /** @@ -56,14 +62,14 @@ public class ApiLoginController { * @param bo 登录信息 * @return 结果 */ -// @Operation(summary = "小程序静默授权登录") -// @Anonymous -// @PostMapping("/code") -// public R> codeLogin(@RequestBody CodeLoginBo bo) { -// // 生成令牌 -// LoginResult loginResult = wxUserLoginService.codeLogin(bo); -// return R.ok(loginResult); -// } + @Operation(summary = "小程序静默授权登录") + @Anonymous + @PostMapping("/code") + public R> codeLogin(@RequestBody CodeLoginBo bo) { + // 生成令牌 + LoginResult loginResult = wxUserLoginService.codeLogin(bo); + return R.ok(loginResult); + } /** * 小程序手机号授权登录 @@ -134,6 +140,8 @@ public class ApiLoginController { @GetMapping("/userInfo") public R userInfo() { LoginWxUser wxUser = AuthUtil.getWxUser(); + WxUser user = userMapper.selectById(AuthUtil.getWxUser().getId()); + BeanUtil.copyProperties(user, wxUser); wxUserTokenService.refreshToken(wxUser); LoginWxUser loginWxUser = RedisUtils.getCacheObject(CacheConstants.LOGIN_MERCHANT_TOKEN_KEY + wxUser.getToken()); return R.ok(loginWxUser); diff --git a/propertyManagement-admin/src/main/java/com/propertyManagement/web/controller/business/api/ApiWxFamilyMemberController.java b/propertyManagement-admin/src/main/java/com/propertyManagement/web/controller/business/api/ApiWxFamilyMemberController.java index 4e93d55261a99b111487b1985582f0a1e9f77ec1..13cd72fe21576e5ce65cb8027d6d71096f1dd20f 100644 --- a/propertyManagement-admin/src/main/java/com/propertyManagement/web/controller/business/api/ApiWxFamilyMemberController.java +++ b/propertyManagement-admin/src/main/java/com/propertyManagement/web/controller/business/api/ApiWxFamilyMemberController.java @@ -1,6 +1,7 @@ package com.propertyManagement.web.controller.business.api; import cn.dev33.satoken.annotation.SaCheckPermission; +import com.dtflys.forest.annotation.NotNull; import com.propertyManagement.business.domain.bo.WxFamilyMemberBo; import com.propertyManagement.business.domain.vo.LoginWxUser; import com.propertyManagement.business.domain.vo.WxFamilyMemberVo; @@ -52,4 +53,20 @@ public class ApiWxFamilyMemberController extends BaseController { return toAjax(iWxFamilyMemberService.insertByBo(bo)); } + /** + * 修改家庭成员 + */ + @PostMapping("/update") + public R update(@Validated(AddGroup.class) @RequestBody WxFamilyMemberBo bo) { + return toAjax(iWxFamilyMemberService.updateByBo(bo)); + } + + /** + * 删除家庭成员 + */ + @PostMapping("/delete/{id}") + public R delete(@Validated(AddGroup.class) @PathVariable("id") Long id) { + return toAjax(iWxFamilyMemberService.deleteWithValidById(id)); + } + } diff --git a/propertyManagement-admin/src/main/java/com/propertyManagement/web/controller/business/api/ApiWxPayRecordController.java b/propertyManagement-admin/src/main/java/com/propertyManagement/web/controller/business/api/ApiWxPayRecordController.java index 1bc5e6c13ec47f2eaa8660841f98f29d2f56c299..656884989e99f3d23b707731c0a209723a8c9574 100644 --- a/propertyManagement-admin/src/main/java/com/propertyManagement/web/controller/business/api/ApiWxPayRecordController.java +++ b/propertyManagement-admin/src/main/java/com/propertyManagement/web/controller/business/api/ApiWxPayRecordController.java @@ -13,6 +13,7 @@ import com.propertyManagement.common.enums.PayState; import com.propertyManagement.pay.support.pay.PayReqModel; import com.siashan.unipay4j.core.Result; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -27,6 +28,7 @@ import java.util.List; * @author liushuai * @date 2025-05-14 */ +@Slf4j @Validated @RequiredArgsConstructor @RestController @@ -57,18 +59,35 @@ public class ApiWxPayRecordController extends BaseController { } /** - * 支付回调 + * 维修单支付回调 * * @return 结果 */ @Anonymous - @PostMapping("/notify/{orderId}/{payChannelCode}/{payMchCode}/{payAppCode}") + @PostMapping("/maintain-notify/{orderId}/{payChannelCode}/{payMchCode}/{payAppCode}") + public void maintainCallback(HttpServletRequest request, HttpServletResponse response, + @PathVariable String orderId, + @PathVariable String payChannelCode, + @PathVariable String payMchCode, + @PathVariable String payAppCode) { + log.info("===================>维修单支付回调成功"); + iWxPayRecordService.payCallback(orderId, payChannelCode, payMchCode, payAppCode ,"MAINTAIN"); + } + + /** + * 预存支付回调 + * + * @return 结果 + */ + @Anonymous + @PostMapping("/prestore-notify/{orderId}/{payChannelCode}/{payMchCode}/{payAppCode}") public void callback(HttpServletRequest request, HttpServletResponse response, @PathVariable String orderId, @PathVariable String payChannelCode, @PathVariable String payMchCode, @PathVariable String payAppCode) { - iWxPayRecordService.payCallback(orderId, payChannelCode, payMchCode, payAppCode); + log.info("===================>预存支付回调成功"); + iWxPayRecordService.payCallback(orderId, payChannelCode, payMchCode, payAppCode, "PRESTORE"); } } diff --git a/propertyManagement-admin/src/main/resources/cert/apiclient_cert.p12 b/propertyManagement-admin/src/main/resources/cert/apiclient_cert.p12 new file mode 100644 index 0000000000000000000000000000000000000000..5839572a179d203e7bfc4ee5dd2db38165a63d96 Binary files /dev/null and b/propertyManagement-admin/src/main/resources/cert/apiclient_cert.p12 differ diff --git a/propertyManagement-admin/src/main/resources/cert/apiclient_cert.pem b/propertyManagement-admin/src/main/resources/cert/apiclient_cert.pem new file mode 100644 index 0000000000000000000000000000000000000000..d594c4a1f768e0c4002423ec87c11f16e931dc7b --- /dev/null +++ b/propertyManagement-admin/src/main/resources/cert/apiclient_cert.pem @@ -0,0 +1,25 @@ +-----BEGIN CERTIFICATE----- +MIIEKDCCAxCgAwIBAgIUNx7MpNko0hSraJpQmr+t+wxEoWowDQYJKoZIhvcNAQEL +BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT +FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg +Q0EwHhcNMjUwNTI4MDM0MDU4WhcNMzAwNTI3MDM0MDU4WjCBgTETMBEGA1UEAwwK +MTcxNzgxNDc3NzEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMS0wKwYDVQQL +DCTmsrPljZfliKnpvpnniankuJrnrqHnkIbmnInpmZDlhazlj7gxCzAJBgNVBAYT +AkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBAO8lplhBUA/rOiXc0mEInbt+iVkLplFIGGdpP85vb72AiGCRUJGg2Toc +yicpZRaZHSluy8borcEbp35+62rHD/RK6IG8ZYC+O/xjUtVR05Tp5mMmP2qOg72I +/to8Gw+8v1vOzc6g6MSpkL8ktUQHXsOlMmk1S3W4FV/O3OU7xQAWcVxC6kc33j2T +UclPFNBL3EZKhLrRskkwaHOz6jDsKjHnhONYyu5jb5F1+6tyTwYNsQm82Cyd7oOb +JhN6ZJibHSnF54t9qA51MeWzAQwOUl8ii44qvvQ1IR6WIyAbWTndJGNfe1rvD5pr +wsM3eByWnogvD42kdpH4Emd4UkcH85UCAwEAAaOBuTCBtjAJBgNVHRMEAjAAMAsG +A1UdDwQEAwID+DCBmwYDVR0fBIGTMIGQMIGNoIGKoIGHhoGEaHR0cDovL2V2Y2Eu +aXRydXMuY29tLmNuL3B1YmxpYy9pdHJ1c2NybD9DQT0xQkQ0MjIwRTUwREJDMDRC +MDZBRDM5NzU0OTg0NkMwMUMzRThFQkQyJnNnPUhBQ0M0NzFCNjU0MjJFMTJCMjdB +OUQzM0E4N0FEMUNERjU5MjZFMTQwMzcxMA0GCSqGSIb3DQEBCwUAA4IBAQBaQ3i/ +yq70oYKyzTJzppZ1aG7TB6cEOjrZ7XM6zpGN1pDNzNxv9TmaJT0os7D4o+vZCSYa +WwLGYWlD3G1YV74oY/0EQ9mtfJKg5mFz1lz0bE3hO3YFK1wpVjFHrL8luMZHWhhQ +7fEJOo9TbAFLDg2F0qYK+GuO3fzLLW9yu1ifIX2m7jZYhRvlr47vo1rwHc24nUAg +5WVXLADF1j7JjOhIA38uEP2VB7+n7399CJCPoCho2tAbg2UqfVDEtG7ipppEC2Mr +0GFrXeb/T4VLBHu1hkvaIQx6Dazs/JW6akqelS8ruU2kSqq10epitgsdAZqm1T7m +aWNyIhq4pVLHnm5h +-----END CERTIFICATE----- diff --git a/propertyManagement-admin/src/main/resources/cert/apiclient_key.pem b/propertyManagement-admin/src/main/resources/cert/apiclient_key.pem new file mode 100644 index 0000000000000000000000000000000000000000..f41988ec81a4422d310bacbc6f2ec825bf7e3043 --- /dev/null +++ b/propertyManagement-admin/src/main/resources/cert/apiclient_key.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDvJaZYQVAP6zol +3NJhCJ27folZC6ZRSBhnaT/Ob2+9gIhgkVCRoNk6HMonKWUWmR0pbsvG6K3BG6d+ +futqxw/0SuiBvGWAvjv8Y1LVUdOU6eZjJj9qjoO9iP7aPBsPvL9bzs3OoOjEqZC/ +JLVEB17DpTJpNUt1uBVfztzlO8UAFnFcQupHN949k1HJTxTQS9xGSoS60bJJMGhz +s+ow7Cox54TjWMruY2+Rdfurck8GDbEJvNgsne6DmyYTemSYmx0pxeeLfagOdTHl +swEMDlJfIouOKr70NSEeliMgG1k53SRjX3ta7w+aa8LDN3gclp6ILw+NpHaR+BJn +eFJHB/OVAgMBAAECggEASrxoZNJcc+0eKfD9qidoK80anUJfwq0WO1MQBrKaqA1A +EXW4SRqMaHXQ0zZDijFlhKpEcrAKhPvgd06wwZjeKokyakD3M6m/01sy6sl8puAG +CNxOGz3Ye+YRRyBbkKp63vUdKkLtG3CmdKXDJDRtcBTzUR+/qlVSELP0IotwQFso +eowkTIlHbJ3uTFEZfP7++N6WYGyGK3Hxb/3cwSboGTrnlSUz/GmiWpnbKqCz6gsC +GeJQHNRkcC5JnEFj7m1DWCVJ8khjRAEUe21MyK3rwhTEirBbkMrwtHE2KRRcNqoL +QQITadu61/BzReyydu8+4ERt6X9rkD2+3qK5zn24oQKBgQD8EOeB7ztl52SwUQoc +CXIWjz28vbSmn7LMdbROvvIY3tcnA0ugm+iVXbQiFNTlBHJcvEKONHo4RGXz3ent +W8Ksu2q7gy9zlyYWAc9lEILgJ3pttG3ecEqdekNB7ZGNe7RKe/39CQYVCzSrdSwA +h1P9rLFJ4pgCnYf/eOwAjyAdGQKBgQDy4SEmXQqOr9X5P/rNhxXR3bqB1FqsMS7A +jcANDU+cQOPIocHUcZVHaz1IyhOWy3Xatb4PiGnkgzIGHfpbt1/iq57HsVSfblFQ +tM5+xZN3Hf0nmCeeXdySOVFI44K3sYgvX77vALZVvyJaFZxEhxO7plCo26Rh3CXJ +59dMKnsd3QKBgGEJ6PY+sTFD6aFvMWMlx8QjlPLqXXegF2dbEPUX0X/9mfqs7BqC +qwGFt2k/d85K7fQBjeXNEhhDTLSbhAkawFFbPXW+xS/Myp7CR6Nyvc+poxpE0d9G +f5MslGP3H4fGTdw268rUBIFpdPdk/nGdp5oLN51oHHk1SDvzw3dbolNRAoGBAKMy +apfghKuDsv8b4mYfkqXFmwCJs7NoCMYReS5L92ZCo8u4BQm+mFO41yEFx0vXwoUH +AYJmYuDM1twNYKAoAyHHt5TurrHB6pmUI/xCveeYGvZz4osi/oayRM/5L2hGvf83 +EpB9pgbPu0FUq//P046PHjuX+khXKH0WbzAai0dxAoGAMhOnfP+0EPMSYxppDkbl +wuzNPm1Q4+UV2kFWOpKxFMfy3JJPN7ES/ZzGgUbX9rboeXpNhLzXUDbXXSio48eT +yKhNUyZaBADvBeoH5Ov+t643UnW1d6OpOD8p/r5RifNm3kbkVEaFCLrK9/a4tmWF +nxNfnxslMO905bbSvVv4aUU= +-----END PRIVATE KEY----- diff --git "a/propertyManagement-admin/src/main/resources/cert/\350\257\201\344\271\246\344\275\277\347\224\250\350\257\264\346\230\216.txt" "b/propertyManagement-admin/src/main/resources/cert/\350\257\201\344\271\246\344\275\277\347\224\250\350\257\264\346\230\216.txt" new file mode 100644 index 0000000000000000000000000000000000000000..9a0aab112c6c828596f4f2783af9f6958e1e3be7 --- /dev/null +++ "b/propertyManagement-admin/src/main/resources/cert/\350\257\201\344\271\246\344\275\277\347\224\250\350\257\264\346\230\216.txt" @@ -0,0 +1,18 @@ +欢迎使用微信支付! +附件中的三份文件(证书pkcs12格式、证书pem格式、证书密钥pem格式),为接口中强制要求时需携带的证书文件。 +证书属于敏感信息,请妥善保管不要泄露和被他人复制。 +不同开发语言下的证书格式不同,以下为说明指引: + 证书pkcs12格式(apiclient_cert.p12) + 包含了私钥信息的证书文件,为p12(pfx)格式,由微信支付签发给您用来标识和界定您的身份 + 部分安全性要求较高的API需要使用该证书来确认您的调用身份 + windows上可以直接双击导入系统,导入过程中会提示输入证书密码,证书密码默认为您的商户号(如:1900006031) + 证书pem格式(apiclient_cert.pem) + 从apiclient_cert.p12中导出证书部分的文件,为pem格式,请妥善保管不要泄漏和被他人复制 + 部分开发语言和环境,不能直接使用p12文件,而需要使用pem,所以为了方便您使用,已为您直接提供 + 您也可以使用openssl命令来自己导出:openssl pkcs12 -clcerts -nokeys -in apiclient_cert.p12 -out apiclient_cert.pem + 证书密钥pem格式(apiclient_key.pem) + 从apiclient_cert.p12中导出密钥部分的文件,为pem格式 + 部分开发语言和环境,不能直接使用p12文件,而需要使用pem,所以为了方便您使用,已为您直接提供 + 您也可以使用openssl命令来自己导出:openssl pkcs12 -nocerts -in apiclient_cert.p12 -out apiclient_key.pem +备注说明: + 由于绝大部分操作系统已内置了微信支付服务器证书的根CA证书, 2018年3月6日后, 不再提供CA证书文件(rootca.pem)下载 \ No newline at end of file diff --git a/propertyManagement-business/src/main/java/com/propertyManagement/business/service/IWxFamilyMemberService.java b/propertyManagement-business/src/main/java/com/propertyManagement/business/service/IWxFamilyMemberService.java index 1106f50dc2519ca94854fbf12b0f94003d845726..27e669d4c72630ed9b7f50a8faadd718b95ed48a 100644 --- a/propertyManagement-business/src/main/java/com/propertyManagement/business/service/IWxFamilyMemberService.java +++ b/propertyManagement-business/src/main/java/com/propertyManagement/business/service/IWxFamilyMemberService.java @@ -42,6 +42,11 @@ public interface IWxFamilyMemberService { */ Boolean updateByBo(WxFamilyMemberBo bo); + /** + * 校验并删除家庭成员信息 + */ + Boolean deleteWithValidById(Long id); + /** * 校验并批量删除家庭成员信息 */ diff --git a/propertyManagement-business/src/main/java/com/propertyManagement/business/service/IWxPayRecordService.java b/propertyManagement-business/src/main/java/com/propertyManagement/business/service/IWxPayRecordService.java index aeac8d13052b47f4d88ac509c57af234f73a3138..cc4d5351af1df745788c5f34b6984163c4ff830e 100644 --- a/propertyManagement-business/src/main/java/com/propertyManagement/business/service/IWxPayRecordService.java +++ b/propertyManagement-business/src/main/java/com/propertyManagement/business/service/IWxPayRecordService.java @@ -46,7 +46,7 @@ public interface IWxPayRecordService { * @param payMchCode * @param payAppCode */ - void payCallback(String orderId, String payChannelCode, String payMchCode, String payAppCode); + void payCallback(String orderId, String payChannelCode, String payMchCode, String payAppCode, String type); /** * 新增缴费记录 diff --git a/propertyManagement-business/src/main/java/com/propertyManagement/business/service/impl/WxFamilyMemberServiceImpl.java b/propertyManagement-business/src/main/java/com/propertyManagement/business/service/impl/WxFamilyMemberServiceImpl.java index 53d24e62095b3b86aa507d90c9b478a34e5e0b48..3dc42cda41c5a263b9857c042173596143957b4f 100644 --- a/propertyManagement-business/src/main/java/com/propertyManagement/business/service/impl/WxFamilyMemberServiceImpl.java +++ b/propertyManagement-business/src/main/java/com/propertyManagement/business/service/impl/WxFamilyMemberServiceImpl.java @@ -6,10 +6,12 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.propertyManagement.business.domain.WxFamilyMember; import com.propertyManagement.business.domain.WxProprietorLedger; +import com.propertyManagement.business.domain.WxUserCommunityLedger; import com.propertyManagement.business.domain.bo.WxFamilyMemberBo; import com.propertyManagement.business.domain.vo.WxFamilyMemberVo; import com.propertyManagement.business.mapper.WxFamilyMemberMapper; import com.propertyManagement.business.mapper.WxProprietorLedgerMapper; +import com.propertyManagement.business.mapper.WxUserCommunityLedgerMapper; import com.propertyManagement.business.service.IWxFamilyMemberService; import com.propertyManagement.common.core.domain.PageQuery; import com.propertyManagement.common.core.page.TableDataInfo; @@ -33,6 +35,7 @@ public class WxFamilyMemberServiceImpl implements IWxFamilyMemberService { private final WxFamilyMemberMapper baseMapper; private final WxProprietorLedgerMapper proprietorLedgerMapper; + private final WxUserCommunityLedgerMapper userCommunityLedgerMapper; /** * 查询家庭成员 @@ -113,6 +116,22 @@ public class WxFamilyMemberServiceImpl implements IWxFamilyMemberService { return baseMapper.updateById(update) > 0; } + /** + * 校验并删除家庭成员信息 + * + * @param id + */ + @Override + public Boolean deleteWithValidById(Long id) { + WxFamilyMember familyMember = baseMapper.selectById(id); + LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.eq(WxUserCommunityLedger::getUserId, familyMember.getUserId()) + .eq(WxUserCommunityLedger::getCommunityId, familyMember.getCommunityId()) + .eq(WxUserCommunityLedger::getProprietorId, familyMember.getProprietorId()); + userCommunityLedgerMapper.delete(lambdaQueryWrapper); + return baseMapper.deleteById(id) > 0; + } + /** * 保存前的数据校验 */ diff --git a/propertyManagement-business/src/main/java/com/propertyManagement/business/service/impl/WxPayRecordServiceImpl.java b/propertyManagement-business/src/main/java/com/propertyManagement/business/service/impl/WxPayRecordServiceImpl.java index 00efb2de1241ee666e960745faf2bb68a0614a4b..a8b73a17b4e4e31cfc3dd4512c965f431eb370ce 100644 --- a/propertyManagement-business/src/main/java/com/propertyManagement/business/service/impl/WxPayRecordServiceImpl.java +++ b/propertyManagement-business/src/main/java/com/propertyManagement/business/service/impl/WxPayRecordServiceImpl.java @@ -1,11 +1,16 @@ package com.propertyManagement.business.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.RandomUtil; import com.propertyManagement.business.domain.WxLiveBill; +import com.propertyManagement.business.domain.WxProprietorLedger; import com.propertyManagement.business.domain.WxRepairs; import com.propertyManagement.business.domain.vo.LoginWxUser; import com.propertyManagement.business.enums.PayBizEnum; import com.propertyManagement.business.mapper.WxLiveBillMapper; +import com.propertyManagement.business.mapper.WxProprietorLedgerMapper; import com.propertyManagement.business.mapper.WxRepairsMapper; import com.propertyManagement.business.support.util.AuthUtil; import com.propertyManagement.common.enums.LiveBillState; @@ -54,6 +59,7 @@ public class WxPayRecordServiceImpl implements IWxPayRecordService { private final WxPayRecordMapper baseMapper; private final WxLiveBillMapper liveBillMapper; private final WxRepairsMapper repairsMapper; + private final WxProprietorLedgerMapper proprietorLedgerMapper; /** * 查询缴费记录 @@ -83,7 +89,7 @@ public class WxPayRecordServiceImpl implements IWxPayRecordService { } /** - * 新增缴费记录 + * 支付 * * @param reqModel */ @@ -93,7 +99,6 @@ public class WxPayRecordServiceImpl implements IWxPayRecordService { Long orderId = null; BigDecimal payAmount = BigDecimal.ZERO; Integer orderType = null; - String outTradeNo = null; switch (payBiz) { case PRESTORE: WxLiveBill wxLiveBill = liveBillMapper.selectById(reqModel.getOrderId()); @@ -115,7 +120,7 @@ public class WxPayRecordServiceImpl implements IWxPayRecordService { if (null == wxRepairs) { throw new RuntimeException("订单信息不存在,请刷新后重试"); } - if (RepairsState.TWO.getCode().equals(wxRepairs.getState())) { + if (!RepairsState.TWO.getCode().equals(wxRepairs.getState())) { throw new RuntimeException("订单状态错误,请刷新后重试!"); } if (reqModel.getAmount().doubleValue() != wxRepairs.getMoney().doubleValue()) { @@ -129,7 +134,7 @@ public class WxPayRecordServiceImpl implements IWxPayRecordService { throw new RuntimeException("支付失败,类型错误"); } WxPayRecord record = createPayRecord(orderId, payAmount, orderType); - IPayment payment = CmsUnipayProvider.getPayment(orderId, reqModel.getPayChannelCode(), reqModel.getPayMchCode(), reqModel.getPayAppCode(), reqModel.getPayBizCode()); + IPayment payment = CmsUnipayProvider.getPayment(orderId, "WX", "1717814777", "LILONG", reqModel.getPayBizCode()); PayModel payModel = getPayModel(record); return payment.pay(payModel); } @@ -139,9 +144,10 @@ public class WxPayRecordServiceImpl implements IWxPayRecordService { * @param payChannelCode * @param payMchCode * @param payAppCode + * @param type 1报修支付 2预存支付 */ @Override - public void payCallback(String orderId, String payChannelCode, String payMchCode, String payAppCode) { + public void payCallback(String orderId, String payChannelCode, String payMchCode, String payAppCode, String type) { /** * 更新支付记录状态 */ @@ -153,7 +159,7 @@ public class WxPayRecordServiceImpl implements IWxPayRecordService { /** * 更新订单状态 */ - if (record.getOrderType().equals(LiveBillType.maintain.getCode())) { + if (type.equals(PayBizEnum.MAINTAIN.getCode())) { WxRepairs wxRepairs = repairsMapper.selectById(orderId); wxRepairs.setState(RepairsState.THREE.getCode()); wxRepairs.setCompleteTime(new Date()); @@ -162,6 +168,34 @@ public class WxPayRecordServiceImpl implements IWxPayRecordService { WxLiveBill wxLiveBill = liveBillMapper.selectById(orderId); wxLiveBill.setState(LiveBillState.YES.getCode()); liveBillMapper.updateById(wxLiveBill); + + WxProprietorLedger proprietorLedger = proprietorLedgerMapper.selectById(wxLiveBill.getProprietorId()); + switch (record.getOrderType()){ + case 1: + proprietorLedger.setWaterPrepaidMoney(proprietorLedger.getWaterPrepaidMoney().add(record.getPayAmount())); + break; + case 2: + proprietorLedger.setElectricityPrepaidMoney(proprietorLedger.getElectricityPrepaidMoney().add(record.getPayAmount())); + break; + case 3: + proprietorLedger.setPropertyPrepaidMoney(proprietorLedger.getPropertyPrepaidMoney().add(record.getPayAmount())); + break; + case 4: + proprietorLedger.setCarportManagePrestoreMoney(proprietorLedger.getCarportManagePrestoreMoney().add(record.getPayAmount())); + break; + case 5: + proprietorLedger.setCarportLeasePrestoreMoney(proprietorLedger.getCarportLeasePrestoreMoney().add(record.getPayAmount())); + break; + case 6: + proprietorLedger.setStoreroomLeasePrestoreMoney(proprietorLedger.getStoreroomLeasePrestoreMoney().add(record.getPayAmount())); + break; + case 7: + proprietorLedger.setOtherPrestoreMoney(proprietorLedger.getOtherPrestoreMoney().add(record.getPayAmount())); + break; + default: + throw new RuntimeException("支付回调异常===========================================>"); + } + proprietorLedgerMapper.updateById(proprietorLedger); } } @@ -179,6 +213,16 @@ public class WxPayRecordServiceImpl implements IWxPayRecordService { record.setCommunityId(wxUser.getCommunityId()); record.setCommunityName(wxUser.getCommunityName()); record.setOrderType(orderType); + /** + * 生成外部订单号 + */ + String memStr = String.valueOf(wxUser.getId()); + if (memStr.length() < 4) { + memStr = String.format("%04d", wxUser.getId()); + } else { + memStr = memStr.substring(memStr.length() - 4); + } + record.setOutTradeNo("OR" + DateUtil.format(new Date(), DatePattern.PURE_DATETIME_PATTERN) + memStr + RandomUtil.randomString("123456789", 4)); baseMapper.insert(record); return record; } diff --git a/propertyManagement-pay/src/main/java/com/propertyManagement/pay/domain/bo/CmsPayAppBo.java b/propertyManagement-pay/src/main/java/com/propertyManagement/pay/domain/bo/CmsPayAppBo.java index 5a8444c035d8f4f9d1fb941a248edc5fcfd8fd33..8c474a8fd2abf991feccc438167953d66eb34951 100644 --- a/propertyManagement-pay/src/main/java/com/propertyManagement/pay/domain/bo/CmsPayAppBo.java +++ b/propertyManagement-pay/src/main/java/com/propertyManagement/pay/domain/bo/CmsPayAppBo.java @@ -24,7 +24,6 @@ public class CmsPayAppBo extends BaseEntity { /** * 编号 */ - @NotNull(message = "编号不能为空", groups = { EditGroup.class }) private Long id; /** @@ -48,7 +47,6 @@ public class CmsPayAppBo extends BaseEntity { /** * 交易支付类型 */ - @NotBlank(message = "交易支付类型不能为空", groups = { AddGroup.class, EditGroup.class }) private String tradeType; /** @@ -60,31 +58,26 @@ public class CmsPayAppBo extends BaseEntity { /** * 服务商编码 */ - @NotBlank(message = "服务商编码不能为空", groups = { AddGroup.class, EditGroup.class }) private String providerCode; /** * 应用配置(json) */ - @NotBlank(message = "应用配置(json)不能为空", groups = { AddGroup.class, EditGroup.class }) private String appConfig; /** * 状态 0 禁用 1 启用 */ - @NotNull(message = "状态 0 禁用 1 启用不能为空", groups = { AddGroup.class, EditGroup.class }) private Integer isEnable; /** * 是否锁定 0 否 1 是 */ - @NotNull(message = "是否锁定 0 否 1 是不能为空", groups = { AddGroup.class, EditGroup.class }) private Integer isLock; /** * 备注 */ - @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class }) private String remark; diff --git a/propertyManagement-pay/src/main/java/com/propertyManagement/pay/support/pay/PayReqModel.java b/propertyManagement-pay/src/main/java/com/propertyManagement/pay/support/pay/PayReqModel.java index 6f5f429c84c243ed0749db8a66d534b4b19b6d34..0842ede392724d8fc1c0c6f5273b29d49e93b64e 100644 --- a/propertyManagement-pay/src/main/java/com/propertyManagement/pay/support/pay/PayReqModel.java +++ b/propertyManagement-pay/src/main/java/com/propertyManagement/pay/support/pay/PayReqModel.java @@ -28,22 +28,18 @@ public class PayReqModel { /** * 支付渠道 WX 微信支付 ALI 支付宝 */ - @NotNull(message = "支付渠道不能为空") private String payChannelCode; /** * 支付商户 */ - @NotNull(message = "支付商户不能为空") private String payMchCode; /** * 支付类型 */ - @NotNull(message = "支付类型不能为空") private String payTradeType; /** * 应用code */ - @NotNull(message = "应用code不能为空") private String payAppCode; /** * 支付业务code diff --git a/propertyManagement-ui/src/views/business/proprietorLedger/index.vue b/propertyManagement-ui/src/views/business/proprietorLedger/index.vue index 2104b502fbf01773eb849a184455f53d1892176a..e8be4e42ebc26739791e2573ff54000f28bedc9a 100644 --- a/propertyManagement-ui/src/views/business/proprietorLedger/index.vue +++ b/propertyManagement-ui/src/views/business/proprietorLedger/index.vue @@ -140,7 +140,7 @@ - +