Commit 9b7b5fdf authored by 刘帅's avatar 刘帅

1.微信支付接入

parent 77354c90
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<LoginResult<LoginWxUser>> codeLogin(@RequestBody CodeLoginBo bo) {
// // 生成令牌
// LoginResult loginResult = wxUserLoginService.codeLogin(bo);
// return R.ok(loginResult);
// }
@Operation(summary = "小程序静默授权登录")
@Anonymous
@PostMapping("/code")
public R<LoginResult<LoginWxUser>> codeLogin(@RequestBody CodeLoginBo bo) {
// 生成令牌
LoginResult loginResult = wxUserLoginService.codeLogin(bo);
return R.ok(loginResult);
}
/**
* 小程序手机号授权登录
......@@ -134,6 +140,8 @@ public class ApiLoginController {
@GetMapping("/userInfo")
public R<LoginWxUser> 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);
......
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<Void> update(@Validated(AddGroup.class) @RequestBody WxFamilyMemberBo bo) {
return toAjax(iWxFamilyMemberService.updateByBo(bo));
}
/**
* 删除家庭成员
*/
@PostMapping("/delete/{id}")
public R<Void> delete(@Validated(AddGroup.class) @PathVariable("id") Long id) {
return toAjax(iWxFamilyMemberService.deleteWithValidById(id));
}
}
......@@ -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");
}
}
-----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-----
-----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-----
欢迎使用微信支付!
附件中的三份文件(证书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
......@@ -42,6 +42,11 @@ public interface IWxFamilyMemberService {
*/
Boolean updateByBo(WxFamilyMemberBo bo);
/**
* 校验并删除家庭成员信息
*/
Boolean deleteWithValidById(Long id);
/**
* 校验并批量删除家庭成员信息
*/
......
......@@ -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);
/**
* 新增缴费记录
......
......@@ -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<WxUserCommunityLedger> 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;
}
/**
* 保存前的数据校验
*/
......
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;
}
......
......@@ -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;
......
......@@ -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
......
......@@ -140,7 +140,7 @@
<el-table-column label="物业预存余额" align="center" prop="propertyPrepaidMoney" />
<el-table-column label="车位管理预存余额" align="center" prop="carportManagePrestoreMoney" />
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
......@@ -261,43 +261,43 @@
<el-row>
<el-col :span="12">
<el-form-item label="水费预存余额" prop="waterPrepaidMoney">
<el-input-number v-model="form.waterPrepaidMoney" :min="0" precision="2" style="width: 100%;" placeholder="请输入水费预存余额" />
<el-input-number v-model="form.waterPrepaidMoney" :min="0" precision="2" :disabled="form.proprietorId !== undefined" style="width: 100%;" placeholder="请输入水费预存余额" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="电费预存余额" prop="electricityPrepaidMoney">
<el-input-number v-model="form.electricityPrepaidMoney" :min="0" precision="2" style="width: 100%;" placeholder="请输入电费预存余额" />
<el-input-number v-model="form.electricityPrepaidMoney" :min="0" precision="2" :disabled="form.proprietorId !== undefined" style="width: 100%;" placeholder="请输入电费预存余额" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="物业预存余额" prop="propertyPrepaidMoney">
<el-input-number v-model="form.propertyPrepaidMoney" :min="0" precision="2" style="width: 100%;" placeholder="请输入物业预存余额" />
<el-input-number v-model="form.propertyPrepaidMoney" :min="0" precision="2" :disabled="form.proprietorId !== undefined" style="width: 100%;" placeholder="请输入物业预存余额" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="车位管理预存余额" prop="carportManagePrestoreMoney">
<el-input-number v-model="form.carportManagePrestoreMoney" :min="0" precision="2" style="width: 100%;" placeholder="请输入车位管理预存余额" />
<el-input-number v-model="form.carportManagePrestoreMoney" :min="0" precision="2" :disabled="form.proprietorId !== undefined" style="width: 100%;" placeholder="请输入车位管理预存余额" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="车位租赁预存余额" prop="carportLeasePrestoreMoney">
<el-input-number v-model="form.carportLeasePrestoreMoney" :min="0" precision="2" style="width: 100%;" placeholder="请输入车位租赁预存余额" />
<el-input-number v-model="form.carportLeasePrestoreMoney" :min="0" precision="2" :disabled="form.proprietorId !== undefined" style="width: 100%;" placeholder="请输入车位租赁预存余额" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="储藏室租赁预存金额" prop="storeroomLeasePrestoreMoney">
<el-input-number v-model="form.storeroomLeasePrestoreMoney" :min="0" precision="2" style="width: 100%;" placeholder="请输入储藏室租赁预存金额" />
<el-input-number v-model="form.storeroomLeasePrestoreMoney" :min="0" precision="2" :disabled="form.proprietorId !== undefined" style="width: 100%;" placeholder="请输入储藏室租赁预存金额" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="其他项目预存金额" prop="otherPrestoreMoney">
<el-input-number v-model="form.otherPrestoreMoney" :min="0" precision="2" style="width: 100%;" placeholder="请输入其他项目预存金额" />
<el-input-number v-model="form.otherPrestoreMoney" :min="0" precision="2" :disabled="form.proprietorId !== undefined" style="width: 100%;" placeholder="请输入其他项目预存金额" />
</el-form-item>
</el-col>
</el-row>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment