Browse Source

10-17 收款:补全手续费优化

lijianlin/feature-202509231533026-现金管理-收款管理
lijianlin 1 month ago
parent
commit
52a4ad29ac
  1. 2
      src/main/java/com/example/demo/mapper/cash/CashAuditMapper.java
  2. 2
      src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java
  3. 37
      src/main/java/com/example/demo/serviceImpl/cash/CashAuditServiceImpl.java
  4. 17
      src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java
  5. 1
      src/main/java/com/example/demo/serviceImpl/coin/RechargeServiceImpl.java
  6. 5
      src/main/resources/cashMapper/CashAuditMapper.xml
  7. 52
      src/main/resources/cashMapper/CashCollectionMapper.xml
  8. 16
      src/main/resources/mapper/WorkBenchMapper.xml

2
src/main/java/com/example/demo/mapper/cash/CashAuditMapper.java

@ -16,4 +16,6 @@ import org.apache.ibatis.annotations.Param;
public interface CashAuditMapper {
//审核收款订单
void updateOrder (CashRecord updateOrder);
//根据id获取审核人姓名
String getAuditName(Integer auditId);
}

2
src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java

@ -36,7 +36,7 @@ public interface CashCollectionMapper {
@Param("cashCollection") CashCollection cashCollection);
//根据订单号查询待审核的现金收款订单
CashRecord selectUnAuditByOrderCode(@Param("orderCode") String orderCode);
CashRecord selectAuditByOrderCode(@Param("orderCode") String orderCode);
//补全手续费等信息
int complete(@Param("cashRecord") CashRecord cashRecord);
//根据精网号获取姓名

37
src/main/java/com/example/demo/serviceImpl/cash/CashAuditServiceImpl.java

@ -1,16 +1,20 @@
package com.example.demo.serviceImpl.cash;
import com.example.demo.Util.GoldTistV2;
import com.example.demo.domain.entity.CashRecord;
import com.example.demo.domain.entity.UserGoldRecord;
import com.example.demo.mapper.cash.CashAuditMapper;
import com.example.demo.mapper.cash.CashCollectionMapper;
import com.example.demo.mapper.coin.AuditMapper;
import com.example.demo.mapper.coin.RechargeMapper;
import com.example.demo.service.cash.CashAuditService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.time.ZoneOffset;
import java.util.Date;
/**
* @program: gold-java
@ -25,27 +29,29 @@ public class CashAuditServiceImpl implements CashAuditService {
@Autowired
private AuditMapper auditMapper;
@Autowired
private RechargeMapper rechargeMapper;
@Autowired
private CashCollectionMapper cashCollectionMapper;
@Autowired
private CashAuditMapper cashAuditMapper;
@Transactional
@Override
public boolean auditCollection(String token,Integer auditId, String orderCode, Integer action, String rejectReason) {
CashRecord order = cashCollectionMapper.selectUnAuditByOrderCode(orderCode);
CashRecord order = cashCollectionMapper.selectAuditByOrderCode(orderCode);
if (order==null || order.getStatus()!=0
){
throw new IllegalArgumentException("订单不存在或已被审核");
}
CashRecord updateOrder = new CashRecord();
//设置审核人
updateOrder.setAuditId(auditId);
updateOrder.setAuditId(order.getAuditId());
//判断是通过还是驳回更新审核状态
updateOrder.setOrderCode(orderCode);
String auditName = cashAuditMapper.getAuditName(order.getAuditId());
if (action==1){ //通过
updateOrder.setStatus(1);
//往金币订单表加一条充值记录
/* //往金币订单表加一条充值记录
UserGoldRecord rechargeOrder = new UserGoldRecord();
rechargeOrder.setOrderCode(orderCode.replaceFirst("^XJ_", "XJCZ_"));
rechargeOrder.setJwcode(order.getJwcode());
@ -64,13 +70,26 @@ public class CashAuditServiceImpl implements CashAuditService {
rechargeOrder.setFreeDecember(0);
}
rechargeOrder.setSumGold(order.getPermanentGold()+order.getFreeGold());
//todo 缺汇率idmoney备注 10-17 1130
rechargeOrder.setPayModel(order.getPayType());
//todo money备注 10-17 1130
rechargeOrder.setRateId(Integer.valueOf(order.getPaymentCurrency()));
rechargeOrder.setVoucher(order.getVoucher());
rechargeOrder.setPayPlatform("金币系统");
rechargeOrder.setPayModel(order.getPayType());
//把时间转换成Date
Date date = Date.from(order.getPayTime().toInstant(ZoneOffset.ofHours(8)));
rechargeOrder.setPayTime(date);
rechargeOrder.setAdminId(order.getSubmitterId());
rechargeOrder.setAuditId(order.getAuditId());
rechargeOrder.setType((byte) 0);
rechargeOrder.setAuditStatus(1);
rechargeOrder.setCreateTime(new Date());
rechargeMapper.add(rechargeOrder);
GoldTistV2.addCoinNew(order.getJwcode().toString(), 64, //充值永久金币
(double) (order.getPermanentGold() ) /100,
order.getRemark(),(double) (order.getPermanentGold() ) /100, auditName, "金币充值");
GoldTistV2.addCoinNew(order.getJwcode().toString(), 63, //充值免费
(double) (order.getFreeGold()) /100,
order.getRemark(),0, auditName, "金币充值");*/
}
else if (action==2){ //驳回
updateOrder.setStatus(2);

17
src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java

@ -177,12 +177,23 @@ public class CashCollectionServiceImpl implements CashCollectionService {
}
cashCollection.setReceivedMarket(marketMapper.getMarketId(cashCollection.getReceivedMarket()));
if (cashCollection.getCashRoleId()==2) {
//角色是总部时传134sql处理为134筛选提交人置空不设筛选条件
cashCollection.setStatus(134);
//角色是总部时传1346sql处理为1346筛选
cashCollection.setStatus(1346);
cashCollection.setSubmitterId(null);
cashCollection.setReceivedMarket(null);
}if (cashCollection.getCashRoleId()==1){
//角色是地方财务提交人置空不设筛选条件---仅当角色是0 地方客服时按提交人筛选
//角色是地方财务提交人置空不设筛选条件,仅按地区筛选查看
if(cashCollection.getStatus()==null){
cashCollection.setStatus(123460);
}
cashCollection.setSubmitterId(null);
}if (cashCollection.getCashRoleId()==0){
//角色是地方财务提交人置空不设筛选条件---仅当角色是0 地方客服时按提交人筛选
cashCollection.setStatus(null);
cashCollection.setSubmitterId(cashCollection.getSubmitterId());
cashCollection.setReceivedMarket(null);
}
cashCollection.setMarkets(markets);
PageHelper.startPage(pageNum, pageSize);

1
src/main/java/com/example/demo/serviceImpl/coin/RechargeServiceImpl.java

@ -144,7 +144,6 @@ public class RechargeServiceImpl implements RechargeService {
userGoldRecord.setType((byte) 0);
userGoldRecord.setAuditStatus(0);
userGoldRecord.setCreateTime(new Date());
rechargeMapper.add(userGoldRecord);
return Result.success();
}

5
src/main/resources/cashMapper/CashAuditMapper.xml

@ -11,4 +11,9 @@
audit_time=now()
where order_code=#{orderCode} and status=0
</update>
<select id="getAuditName" resultType="java.lang.String">
select a.admin_name from admin as a left join
cash_record cr on a.id=cr.audit_id
where a.id=#{auditId}
</select>
</mapper>

52
src/main/resources/cashMapper/CashCollectionMapper.xml

@ -47,16 +47,50 @@
</update>
<!--补全手续费等字段-->
<update id="complete">
update cash_record
set handling_charge=#{cashRecord.handlingCharge},
UPDATE cash_record
<set>
<if test="cashRecord.handlingCharge != null and cashRecord.handlingCharge!=''">
handling_charge = #{cashRecord.handlingCharge},
</if>
<if test="cashRecord.receivedCurrency != null and cashRecord.receivedCurrency != ''">
received_currency = #{cashRecord.receivedCurrency},
</if>
<if test="cashRecord.receivedAmount != null">
received_amount = #{cashRecord.receivedAmount},
</if>
<if test="cashRecord.receivedTime != null">
received_time = #{cashRecord.receivedTime},
</if>
<if test="cashRecord.receivedRemark != null and cashRecord.receivedRemark != ''">
received_remark = #{cashRecord.receivedRemark},
status=4,
bank_code= #{cashRecord.bankCode}
where order_code=#{cashRecord.orderCode} and status in (1,3)
</if>
<if test="cashRecord.paymentCurrency != null and cashRecord.paymentCurrency != ''">
payment_currency = #{cashRecord.paymentCurrency},
</if>
<!-- 关键:null 就不拼这一列 -->
<if test="cashRecord.paymentAmount != null">
payment_amount = #{cashRecord.paymentAmount},
</if>
<if test="cashRecord.bankCode != null and cashRecord.bankCode != ''">
bank_code = #{cashRecord.bankCode},
</if>
<!-- 只有 这些字段全部非空才更新状态 -->
status = CASE
WHEN
handling_charge IS NOT NULL
AND received_currency IS NOT NULL AND received_currency != ''
AND received_amount IS NOT NULL
AND received_time IS NOT NULL
AND received_remark IS NOT NULL AND received_remark != ''
AND payment_currency IS NOT NULL AND payment_currency != ''
AND payment_amount IS NOT NULL
AND bank_code IS NOT NULL AND bank_code != ''
THEN 4
ELSE status
END
</set>
WHERE order_code = #{cashRecord.orderCode}
AND status IN (1, 3)
</update>
<!--根据jwcode获取所属地区-->
<select id="getMarketByJwcode" resultType="java.lang.String">
@ -72,8 +106,8 @@
<select id="selectCollection1" resultType="com.example.demo.domain.vo.cash.CashCollection">
select cr.id,cr.jwcode,cr.name,cr.market,
m.name as marketName,cr.activity,cr.order_code,cr.bank_code,
cr.goods_name,cr.good_num,cr.payment_currency,cr.payment_amount,
cr.received_currency,cr.received_amount,cr.handling_charge,
cr.goods_name,cr.good_num,cr.permanent_gold,cr.free_gold,cr.payment_currency,cr.payment_amount/100 as paymentAmount,
cr.received_currency,cr.received_amount/100 as receivedAmount,cr.handling_charge/100 as handlingCharge,
cr.received_market,cr.pay_type,cr.pay_time,cr.received_time,
cr.status,cr.submitter_id,cr.voucher,cr.remark,cr.reject_reason,
cr.audit_id,cr.create_time,cr.update_time,cr.audit_time,
@ -131,7 +165,7 @@
</otherwise>
</choose>
</select>
<select id="selectUnAuditByOrderCode" resultType="com.example.demo.domain.entity.CashRecord">
<select id="selectAuditByOrderCode" resultType="com.example.demo.domain.entity.CashRecord">
select status,order_code from cash_record where order_code=#{orderCode}
</select>
<!--根据精网号获取姓名-->

16
src/main/resources/mapper/WorkBenchMapper.xml

@ -171,14 +171,14 @@
<!--获取各地区-->
<select id="getRevenue" resultType="com.example.demo.domain.vo.coin.WorkbenchRevenue">
SELECT m.name AS market,
SUM(CASE WHEN r.id = 2 THEN cr.received_amount ELSE 0 END) AS hkd,
SUM(CASE WHEN r.id = 3 THEN cr.received_amount ELSE 0 END) AS sgd,
SUM(CASE WHEN r.id = 4 THEN cr.received_amount ELSE 0 END) AS myr,
SUM(CASE WHEN r.id = 5 THEN cr.received_amount ELSE 0 END) AS thb,
SUM(CASE WHEN r.id = 6 THEN cr.received_amount ELSE 0 END) AS cad,
SUM(CASE WHEN r.id = 7 THEN cr.received_amount ELSE 0 END) AS vdn,
SUM(CASE WHEN r.id = 8 THEN cr.received_amount ELSE 0 END) AS krw,
ROUND( SUM(cr.received_amount * r.num), 2) AS totalSGD
SUM(CASE WHEN r.id = 2 THEN cr.received_amount/100 ELSE 0 END) AS hkd,
SUM(CASE WHEN r.id = 3 THEN cr.received_amount/100 ELSE 0 END) AS sgd,
SUM(CASE WHEN r.id = 4 THEN cr.received_amount/100 ELSE 0 END) AS myr,
SUM(CASE WHEN r.id = 5 THEN cr.received_amount/100 ELSE 0 END) AS thb,
SUM(CASE WHEN r.id = 6 THEN cr.received_amount/100 ELSE 0 END) AS cad,
SUM(CASE WHEN r.id = 7 THEN cr.received_amount/100 ELSE 0 END) AS vdn,
SUM(CASE WHEN r.id = 8 THEN cr.received_amount/100 ELSE 0 END) AS krw,
ROUND( SUM(cr.received_amount/100 * r.num), 2) AS totalSGD
FROM cash_record cr
JOIN market m ON cr.received_market = m.id
JOIN rate r ON cr.received_currency = r.id

Loading…
Cancel
Save