This commit is contained in:
2025-03-11 19:09:45 +08:00
parent 163731588c
commit ec49bcfa8b
6 changed files with 887 additions and 14 deletions
@@ -0,0 +1,169 @@
package io.v.nutz.zhgh.memberCost.controller;
import cn.wizzer.framework.base.Result;
import io.v.nutz.zhgh.memberCost.model.MemberPaymentProject;
import io.v.nutz.zhgh.memberCost.service.MemberPaymentService;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.dao.Cnd;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.Static;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.util.NutMap;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import java.util.List;
import java.util.stream.Collectors;
/**
* @ClassName MemberPaymentChartSummaryController
* @Description 图表汇总
* @Author zhf
* @Date 2025/3/11 下午3:20
*/
@IocBean
@Slf4j
@Ok("json:full")
@At("/platform/member/payment/chartSummary")
public class MemberPaymentChartSummaryController {
@Inject
private MemberPaymentService memberPaymentService;
@At("")
@Ok("beetl:/platform/membercost/chartSummary/index.html")
@RequiresPermissions("member.payment.chartSummary")
public void index() {
}
@At
@RequiresPermissions("member.payment.chartSummary")
public Object getPayProjectChart(@Param(value = "startYear", required = false) Integer startYear,
@Param(value = "endYear", required = false) Integer endYear) {
Sql sql = Sqls.create("""
SELECT
mpp.projectName,
COUNT( mpi.id ) AS num
FROM
member_payment_project mpp
LEFT JOIN member_payment_info mpi ON mpi.paymentProjectId = mpp.id
AND mpi.isPayment = 1
WHERE
YEAR ( mpp.createTime ) BETWEEN @startYear
AND @endYear
GROUP BY
mpp.id
""").setParam("startYear", startYear).setParam("endYear", endYear);
return Result.success(memberPaymentService.listMap(sql));
}
@At
@RequiresPermissions("member.payment.chartSummary")
public Object getRefundProjectChart(@Param(value = "startYear", required = false) Integer startYear,
@Param(value = "endYear", required = false) Integer endYear) {
Sql sql = Sqls.create("""
SELECT
mpp.projectName,
COUNT( pt.id ) AS num
FROM
member_payment_project mpp
LEFT JOIN member_payment_info mpi ON mpi.paymentProjectId = mpp.id
LEFT JOIN payment_transaction pt ON pt.memberPaymentInfoId = mpi.id
AND pt.isRefund = 1
WHERE
YEAR ( mpp.createTime ) BETWEEN @startYear
AND @endYear
GROUP BY
mpp.id
""").setParam("startYear", startYear).setParam("endYear", endYear);
return Result.success(memberPaymentService.listMap(sql));
}
@At
@RequiresPermissions("member.payment.chartSummary")
public Object getPayMoneyChart(@Param(value = "startYear", required = false) Integer startYear,
@Param(value = "endYear", required = false) Integer endYear) {
Sql sql = Sqls.create("""
SELECT
mpp.projectName,
SUM( pt.tradingAmount * 0.01 ) AS money
FROM
member_payment_project mpp
LEFT JOIN member_payment_info mpi ON mpi.paymentProjectId = mpp.id
AND mpi.isPayment = 1
LEFT JOIN payment_transaction pt ON pt.memberPaymentInfoId = mpi.id
AND pt.isRefund = 0
AND pt.tradingState = 'PAY_SUCCESS'
WHERE
YEAR ( mpp.createTime ) BETWEEN @startYear
AND @endYear
GROUP BY
mpp.id
""").setParam("startYear", startYear).setParam("endYear", endYear);
return Result.success(memberPaymentService.listMap(sql));
}
@At
@RequiresPermissions("member.payment.chartSummary")
public Object getNumData(@Param(value = "startYear", required = false) Integer startYear,
@Param(value = "endYear", required = false) Integer endYear) {
Sql sql = Sqls.create("""
SELECT
pt.tradingAmount * 0.01 AS money,
pt.isRefund
FROM
member_payment_project mpp
LEFT JOIN member_payment_info mpi ON mpi.paymentProjectId = mpp.id
AND mpi.isPayment = 1
LEFT JOIN payment_transaction pt ON pt.memberPaymentInfoId = mpi.id
AND pt.tradingState = 'PAY_SUCCESS'
WHERE
YEAR ( mpp.createTime ) BETWEEN @startYear
AND @endYear
""").setParam("startYear", startYear).setParam("endYear", endYear);
List<NutMap> map = memberPaymentService.listMap(sql);
double payMoney = map.stream().filter(v -> !v.getBoolean("isRefund")).mapToDouble(v -> v.getDouble("money")).sum();
double refundMoney = map.stream().filter(v -> v.getBoolean("isRefund")).mapToDouble(v -> v.getDouble("money")).sum();
int refundSize = map.stream().filter(v -> v.getBoolean("isRefund")).collect(Collectors.toList()).size();
int paySize = map.stream().filter(v -> !v.getBoolean("isRefund")).collect(Collectors.toList()).size();
NutMap data = new NutMap();
data.put("payMoney", payMoney);
data.put("refundMoney", refundMoney);
data.put("paySize", paySize);
data.put("refundSize", refundSize);
return Result.success(data);
}
@At
@RequiresPermissions("member.payment.chartSummary")
public Object allUnionMoney(String paymentProjectId) {
Sql sql = Sqls.create("""
SELECT
un.unionname,
COALESCE ( SUM( pt.tradingAmount * 0.01 ), 0 ) AS money
FROM
sys_union un
LEFT JOIN payment_transaction pt ON pt.unionId = un.id
AND pt.tradingState = 'PAY_SUCCESS'
AND pt.isRefund = 0
LEFT JOIN member_payment_info mpi ON mpi.id = pt.memberPaymentInfoId
AND mpi.paymentProjectId=@paymentProjectId
GROUP BY
un.id
ORDER BY
un.unioncode
""").setParam("paymentProjectId", paymentProjectId);
return Result.success(memberPaymentService.listMap(sql));
}
}
@@ -53,13 +53,11 @@ public class MemberPaymentMineController {
public Object pageData(PageForm pageForm, Integer year, Integer isPay) {
Sql sql = Sqls.create("""
SELECT
mpp.`year`,
mpp.projectName,
mpp.startTime,
mpp.endTime,
mpi.id,
mpi.payId,
mpi.isPayment,
mpi.payPersonnel,
mpi.personType,
@@ -88,10 +86,11 @@ public class MemberPaymentMineController {
@At
@RepeatSubmit
@RequiresPermissions("member.payment.mine")
public Object pcOrderPay(Integer paymentMoney) {
public Object pcOrderPay(Integer paymentMoney, String paymentInfoId) {
WxPayNeedParamVo paramVo = new WxPayNeedParamVo();
paramVo.setDescription(ShiroUtil.getPlatformUsername() + "会费缴纳支付");
paramVo.setAttach("");
paramVo.setMemberPaymentInfoId(paymentInfoId);
paramVo.setAmount(new Amount().setTotal(paymentMoney));
return wxPayCommonService.nativePay(paramVo);
}
@@ -0,0 +1,114 @@
package io.v.nutz.zhgh.memberCost.controller;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONObject;
import io.v.nutz.base.annontation.RepeatSubmit;
import io.v.nutz.base.annontation.Valid;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.payment.enums.TradingStateEnum;
import io.v.nutz.base.payment.enums.WxPayResultCode;
import io.v.nutz.base.payment.model.PaymentTransaction;
import io.v.nutz.base.payment.wxpay.service.WxPayCommonService;
import io.v.nutz.base.query.PageForm;
import io.v.nutz.base.result.Result;
import io.v.nutz.zhgh.memberCost.service.MemberPaymentService;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.dao.Cnd;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.SqlExpressionGroup;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.json.Json;
import org.nutz.lang.util.NutMap;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import java.io.Reader;
/**
* @ClassName MemberPaymentRefundController
* @Description 退款
* @Author zhf
* @Date 2025/3/11 上午8:51
*/
@Slf4j
@IocBean
@Ok("json:full")
@At("/platform/member/payment/refund")
public class MemberPaymentRefundController {
@Inject
private WxPayCommonService wxPayCommonService;
@Inject
private MemberPaymentService memberPaymentService;
@At("")
@Ok("beetl:/platform/membercost/refund/index.html")
@RequiresPermissions("member.payment.refund")
public void index() {
}
@At
@ViReturn
@RequiresPermissions("member.payment.refund")
public Object pageData(PageForm pageForm, String paymentProjectId, String transactionId, Integer isRefund) {
Sql sql = Sqls.create("""
SELECT
mpp.`year`,
mpp.projectName,
mpp.startTime,
mpp.endTime,
mpi.isPayment,
mpi.payPersonnel,
mpi.personType,
mpi.paymentMonth,
mpi.paymentTime,
pt.id,
pt.outTradeNo,
pt.transactionId,
pt.userName,
pt.loginName,
pt.unitName,
pt.unionName,
pt.tradingAmount,
pt.isRefund,
prr.createdAt AS refundTime
FROM
payment_transaction pt
LEFT JOIN `member_payment_info` mpi ON pt.memberPaymentInfoId = mpi.id
LEFT JOIN `payment_refund_record` prr ON pt.memberPaymentInfoId = mpi.id
LEFT JOIN member_payment_project mpp ON mpi.paymentProjectId = mpp.id
$condition
""");
Cnd cnd = Cnd.NEW();
cnd.andEX("mpi.paymentProjectId", "=", paymentProjectId);
cnd.andEX("pt.tradingState", "=", TradingStateEnum.PAY_SUCCESS);
cnd.and(Cnd.likeEX("pt.transactionId", transactionId));
if (isRefund != 3) {
cnd.andEX("pt.isRefund", "=", isRefund);
}
if (ObjectUtil.isNotEmpty(pageForm.getSearchKeyword())) {
SqlExpressionGroup group = new SqlExpressionGroup();
group.orLike("pt.userName", pageForm.getSearchKeyword());
group.orLike("pt.loginName", pageForm.getSearchKeyword());
cnd.and(group);
}
cnd.groupBy("pt.id");
sql.setCondition(cnd);
return memberPaymentService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
}
@At
@RepeatSubmit
@RequiresPermissions("member.payment.refund")
public Object doRefund(@Valid String id) {
PaymentTransaction transaction = memberPaymentService.dao().fetch(PaymentTransaction.class, id);
Result refund = wxPayCommonService.refund(transaction.getTransactionId(), transaction.getOutTradeNo());
return refund;
}
}