1.消费流水明细/充值流水优化
2.消费流水导出没有数据 bug 3.异常扣费数据保存, 页面回显 4.扣费闸机在线扣费异常信息返回调整 5.二次扣费,自定义扣费 不去校验用户本餐是否就餐
This commit is contained in:
+4
-1
@@ -49,8 +49,11 @@ public class StConsumptionExceptionRecord implements Serializable {
|
||||
private Integer secondChargeFlag;
|
||||
@Schema(title ="自定义扣费标记 1 是 ; 0 否")
|
||||
private Integer isCustom;
|
||||
@Schema(title ="恢复标记 1 是; 0 否")
|
||||
@Schema(title ="恢复标记 1 是; 0 否; 3 不展示恢复标记")
|
||||
private Integer isRestore;
|
||||
@Schema(title ="异常提示")
|
||||
private String errorMsg;
|
||||
|
||||
|
||||
|
||||
/**创建日期*/
|
||||
|
||||
+2
@@ -48,4 +48,6 @@ public class StExceptionRecordVo {
|
||||
@Schema(title ="部门名称")
|
||||
private String deptName;
|
||||
|
||||
private String errorMsg;
|
||||
|
||||
}
|
||||
|
||||
+2
@@ -55,4 +55,6 @@ public class StRfidVo {
|
||||
* 恢复标记 1 是; 0 否
|
||||
*/
|
||||
private Integer isRestore;
|
||||
|
||||
private String errorMsg;
|
||||
}
|
||||
|
||||
+2
-2
@@ -306,8 +306,8 @@ public class StBbzxOrderInfoController {
|
||||
} else {
|
||||
return Result.OK();
|
||||
}
|
||||
query.setStatus(3);//(充值=102
|
||||
return Result.OK(iStClientMemberTransactionRecordService.pageQuery(query));
|
||||
query.setStatus(102);//(充值=102
|
||||
return Result.OK(iStClientMemberTransactionRecordService.pageQueryNew(query));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+4
-97
@@ -37,7 +37,6 @@ import org.springframework.web.multipart.MultipartFile;
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.validation.Valid;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
@@ -115,16 +114,11 @@ public class StClientMemberBalanceController {
|
||||
clientMemberWrapper.eq(StClientMemberBalance::getMemberId, userId);
|
||||
StClientMemberBalance balance = iStClientMemberBalanceService.getOne(clientMemberWrapper);
|
||||
|
||||
// Map<String, Object> map = iStClientMemberLevelDemotionTimeService.topUpAwardService(null, value.floatValue(),canteenId);
|
||||
BigDecimal rewardBalance = new BigDecimal(0);
|
||||
int integralBalance = 0;
|
||||
StClientMemberTopUpDTO query = new StClientMemberTopUpDTO();
|
||||
query.setId(balance.getId());
|
||||
query.setCanteenId(canteenId);
|
||||
// if(null != map){
|
||||
// rewardBalance = BigDecimal.valueOf(Float.parseFloat(map.get("amount").toString()));
|
||||
// integralBalance = Integer.parseInt(map.get("integral").toString());
|
||||
// }
|
||||
query.setTopUpBalance(value);
|
||||
query.setRewardBalance(rewardBalance);
|
||||
query.setIntegralBalance(integralBalance);
|
||||
@@ -408,26 +402,8 @@ public class StClientMemberBalanceController {
|
||||
if(null == transactionRecord || StringUtils.isBlank(transactionRecord.getId())){
|
||||
return Result.error("订单未找到");
|
||||
}
|
||||
// List<Integer> onLine = Arrays.asList(MemberEnum.PAYMENT_METHOD_BY_ALI.getCode(),
|
||||
// MemberEnum.PAYMENT_METHOD_BY_WX.getCode());
|
||||
// if(!onLine.contains(transactionRecord.getPaymentMethod()) && onLine.contains(query.getPaymentMethod())){
|
||||
// //原充值方式不是线上,但是撤销充值时是线上提示,不支持线上退款请选择其他退回
|
||||
// return Result.error("原订单非线上充值,不支持原路退回,请选择其他方式");
|
||||
// }
|
||||
// if(onLine.contains(transactionRecord.getPaymentMethod())){//线上退款
|
||||
// RefundDTO refundDTO = new RefundDTO();
|
||||
// refundDTO.setPayOrderNo(query.getPayOrderNo());
|
||||
// refundDTO.setTotalFee(query.getTotalFee());
|
||||
// refundDTO.setPaymentMethod(query.getPaymentMethod());
|
||||
// refundDTO.setRemark(query.getRemark());
|
||||
// if(StringUtils.isBlank(query.getPayOrderNo())){
|
||||
// return Result.error("商户订单号不能为空");
|
||||
// }
|
||||
// return stBbzxOrderInfoService.returnPayInfoTopUpOnline(refundDTO);
|
||||
// } else {
|
||||
//线下退款
|
||||
return iStClientMemberBalanceService.backOutTopUpOffLine(query);
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
@@ -461,8 +437,9 @@ public class StClientMemberBalanceController {
|
||||
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
String canteenId = sysUser.getCanteenId();
|
||||
query.setCanteenId(canteenId);
|
||||
query.setStatus(1);//消费=101
|
||||
return Result.OK(iStClientMemberTransactionRecordService.pageQuery(query));
|
||||
//消费=101
|
||||
query.setStatus(101);
|
||||
return Result.OK(iStClientMemberTransactionRecordService.pageQueryNew(query));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -516,7 +493,7 @@ public class StClientMemberBalanceController {
|
||||
query.setStartTime(query.getStartDate());
|
||||
}
|
||||
if(StringUtils.isNotBlank(query.getEndDate())){
|
||||
query.setStartTime(query.getEndDate());
|
||||
query.setEndTime(query.getEndDate());
|
||||
}
|
||||
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
//餐品总库只查询内置食堂
|
||||
@@ -581,70 +558,6 @@ public class StClientMemberBalanceController {
|
||||
}
|
||||
|
||||
|
||||
// /**
|
||||
// * 企业付款到个人微信余额退款后台审核接口
|
||||
// * @param orderNo
|
||||
// * @return
|
||||
// */
|
||||
// @GetMapping("/btoc/refund/check")
|
||||
// @Operation(summary= "用户退费-企业付款到个人微信余额退款后台审核接口")
|
||||
// @SendNotification()
|
||||
// public Result<?> btocRefund(@RequestParam String orderNo) {
|
||||
// String auditorId = JwtUtil.getUserId();
|
||||
// LambdaQueryWrapper<StClientMemberTransactionRecord> queryWrapper = new LambdaQueryWrapper<>();
|
||||
// queryWrapper.eq(StClientMemberTransactionRecord::getOrderNo, orderNo);
|
||||
// StClientMemberTransactionRecord one = iStClientMemberTransactionRecordService.getOne(queryWrapper);
|
||||
// if(null == one){
|
||||
// return Result.error("申请订单不存在");
|
||||
// }
|
||||
// if(one.getStatus().equals(MemberTransactionTypeEnum.B_TO_C_REFUND_301.getCode())){
|
||||
// return Result.error("订单已经退款成功!");
|
||||
// }
|
||||
// TransfersDto transfersDto = new TransfersDto();
|
||||
// transfersDto.setAmount(one.getTransactionAmount().multiply(BigDecimal.valueOf(100)).intValue());
|
||||
// SysUser sysUser = feignSystemService.getById(one.getMemberId());
|
||||
// if(null == sysUser){
|
||||
// return Result.error("用户不存在");
|
||||
// }
|
||||
// if(StringUtils.isBlank(sysUser.getThirdId())){
|
||||
// return Result.error("用户微信标识为空,请先绑定微信后再试");
|
||||
// }
|
||||
// transfersDto.setOpenid(sysUser.getThirdId());
|
||||
// transfersDto.setCheck_name("FORCE_CHECK");
|
||||
// transfersDto.setRe_user_name(sysUser.getRealname());
|
||||
// transfersDto.setDesc("企业付款到个人微信余额退款");
|
||||
// transfersDto.setPartner_trade_no(StMemberUtil.getOrderNoTransfer(orderNo));
|
||||
// Result<Boolean> result = iPayInfo.btocRefund(transfersDto);
|
||||
// one.setCreateBy(auditorId);//审核人ID
|
||||
// one.setPayTime(new Date());//审核人时间
|
||||
// one.setIsSync(0);
|
||||
// iStClientMemberTransactionRecordService.updateById(one);
|
||||
// if(null != result && result.getCode() == HttpServletResponse.SC_OK && result.getResult()){
|
||||
// LambdaQueryWrapper<StClientMemberBalance> wrapper = new LambdaQueryWrapper<>();
|
||||
// wrapper.eq(StClientMemberBalance::getMemberId, one.getMemberId());
|
||||
// StClientMemberBalance swClientMemberBalance = iStClientMemberBalanceService.getBaseMapper().selectOne(wrapper);
|
||||
// if (swClientMemberBalance != null) {
|
||||
// swClientMemberBalance.setTopUpBalance(new BigDecimal(0));
|
||||
// swClientMemberBalance.setRewardBalance(new BigDecimal(0));
|
||||
// swClientMemberBalance.setIntegralBalance(0);
|
||||
// swClientMemberBalance.setUpdateTime(new Date());
|
||||
// swClientMemberBalance.setCreateBy(one.getCreateBy());
|
||||
// swClientMemberBalance.setUpdateBy(one.getUpdateBy());
|
||||
// swClientMemberBalance.setCanteenId(one.getCanteenId());
|
||||
// swClientMemberBalance.setIsSync(0);
|
||||
// boolean flag = iStClientMemberBalanceService.saveOrUpdate(swClientMemberBalance);
|
||||
// if(flag){
|
||||
// one.setStatus(MemberTransactionTypeEnum.B_TO_C_REFUND_301.getCode());
|
||||
// one.setIsSync(0);
|
||||
// iStClientMemberTransactionRecordService.updateById(one);
|
||||
// }
|
||||
// }
|
||||
// return Result.OK("退款成功");
|
||||
// } else {
|
||||
// return Result.error("退款失败");
|
||||
// }
|
||||
//
|
||||
// }
|
||||
|
||||
//=====================================================================================
|
||||
|
||||
@@ -679,12 +592,6 @@ public class StClientMemberBalanceController {
|
||||
}
|
||||
|
||||
|
||||
// @PostMapping("/updateFeign")
|
||||
// @Operation(summary = "会员余额更新feign")
|
||||
// public void memberBalanceUpdateFeign(@RequestBody StClientMemberSpendDTO balance) throws Exception {
|
||||
// balance.setInvoice(false);
|
||||
//// iStClientMemberBalanceService.memberSpend(balance); 迁移至client服务更新余额
|
||||
// }
|
||||
|
||||
@PostMapping("/returnSpendFeign")
|
||||
@Operation(summary="会员余额退款")
|
||||
|
||||
+4
@@ -1,6 +1,7 @@
|
||||
package org.jeecg.payment.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.jeecg.payment.dto.StClientMemberTransactionRecordDTO;
|
||||
@@ -22,6 +23,9 @@ public interface StClientMemberTransactionRecordMapper extends BaseMapper<StClie
|
||||
*/
|
||||
List<StClientMemberTransactionRecordVO> pageList(Page<StClientMemberTransactionRecordVO> page, @Param("vo") StClientMemberTransactionRecordDTO query);
|
||||
|
||||
long pageListCount(@Param("vo") StClientMemberTransactionRecordDTO query);
|
||||
IPage<StClientMemberTransactionRecordVO> pageList2(Page<StClientMemberTransactionRecordVO> page, @Param("vo") StClientMemberTransactionRecordDTO query);
|
||||
|
||||
/**
|
||||
* 列表查询
|
||||
* @return
|
||||
|
||||
+125
-4
@@ -132,6 +132,129 @@
|
||||
order by a.create_time desc
|
||||
</select>
|
||||
|
||||
<select id="pageListCount" resultType="java.lang.Long">
|
||||
SELECT
|
||||
count(a.id)
|
||||
FROM
|
||||
st_client_member_transaction_record as a
|
||||
<if test="vo.dinnerType != null and vo.dinnerType != ''">
|
||||
LEFT JOIN st_bbzx_order_info sboi ON a.order_no = sboi.order_no
|
||||
</if>
|
||||
LEFT JOIN sys_user_sub AS c ON a.member_id = c.id
|
||||
WHERE a.is_del = 0
|
||||
<if test="vo.startTime != null and vo.endTime !=''">
|
||||
<choose>
|
||||
<when test="vo.payTimeStatus == 1">
|
||||
and DATE_FORMAT(a.pay_time,'%Y-%m-%d') >= DATE_FORMAT(#{vo.startTime},'%Y-%m-%d')
|
||||
and DATE_FORMAT(a.pay_time,'%Y-%m-%d') <= DATE_FORMAT(#{vo.endTime},'%Y-%m-%d')
|
||||
</when>
|
||||
<when test="vo.payTimeStatus == 2">
|
||||
and DATE_FORMAT(a.create_time,'%Y-%m-%d') >= DATE_FORMAT(#{vo.startTime},'%Y-%m-%d')
|
||||
and DATE_FORMAT(a.create_time,'%Y-%m-%d') <= DATE_FORMAT(#{vo.endTime},'%Y-%m-%d')
|
||||
</when>
|
||||
</choose>
|
||||
</if>
|
||||
<if test="vo.status != null ">
|
||||
and a.STATUS = #{vo.status}
|
||||
</if>
|
||||
|
||||
<if test="vo.list != null">
|
||||
and c.depart_ids in
|
||||
<foreach item="departId" collection="vo.list" open="(" separator="," close=")">
|
||||
#{departId}
|
||||
</foreach>
|
||||
</if>
|
||||
|
||||
<if test="vo.phone != null and vo.phone != ''">
|
||||
and c.phone like CONCAT('%',#{vo.phone,jdbcType=VARCHAR},'%')
|
||||
</if>
|
||||
<if test="vo.paymentMethod != null and vo.paymentMethod != ''">
|
||||
and a.payment_method = #{vo.paymentMethod}
|
||||
</if>
|
||||
<if test="vo.workNo != null and vo.workNo != ''">
|
||||
and c.work_no like CONCAT('%',#{vo.workNo,jdbcType=VARCHAR},'%')
|
||||
</if>
|
||||
<if test="vo.userName != null and vo.userName != ''">
|
||||
and c.realname like CONCAT('%',#{vo.userName,jdbcType=VARCHAR},'%')
|
||||
</if>
|
||||
<if test="vo.canteenId != null and vo.canteenId != ''">
|
||||
and a.canteen_id = #{vo.canteenId}
|
||||
</if>
|
||||
|
||||
<if test="vo.dinnerType != null and vo.dinnerType != ''">
|
||||
and sboi.dinner_type = #{vo.dinnerType}
|
||||
</if>
|
||||
|
||||
</select>
|
||||
<select id="pageList2" resultType="org.jeecg.payment.vo.StClientMemberTransactionRecordVO">
|
||||
SELECT
|
||||
a.id,
|
||||
a.serial_no as serialNo,
|
||||
a.order_no as orderNo,
|
||||
c.realname as userName,
|
||||
|
||||
c.phone,
|
||||
c.work_no as workNo,
|
||||
a.status,
|
||||
a.transaction_amount as transactionAmount,
|
||||
a.payment_method as paymentMethod,
|
||||
a.available_balance as availableBalance,
|
||||
a.reward_balance as rewardBalance,
|
||||
a.stored_balance as storedBalance,
|
||||
a.integral_balance as integralBalance,
|
||||
a.create_time as createTime,
|
||||
a.pay_time as payTime,
|
||||
a.update_status as updateStatus
|
||||
FROM
|
||||
st_client_member_transaction_record as a
|
||||
<if test="vo.dinnerType != null and vo.dinnerType != ''">
|
||||
LEFT JOIN st_bbzx_order_info sboi ON a.order_no = sboi.order_no
|
||||
</if>
|
||||
LEFT JOIN sys_user_sub AS c ON a.member_id = c.id
|
||||
WHERE a.is_del = 0
|
||||
<if test="vo.startTime != null and vo.endTime !=''">
|
||||
<choose>
|
||||
<when test="vo.payTimeStatus == 1">
|
||||
and a.pay_time between #{vo.startTime} and #{vo.endTime}
|
||||
</when>
|
||||
<when test="vo.payTimeStatus == 2">
|
||||
and a.create_time between #{vo.startTime} and #{vo.endTime}
|
||||
</when>
|
||||
</choose>
|
||||
</if>
|
||||
<if test="vo.status != null ">
|
||||
and a.STATUS = #{vo.status}
|
||||
</if>
|
||||
|
||||
<if test="vo.list != null">
|
||||
and c.depart_ids in
|
||||
<foreach item="departId" collection="vo.list" open="(" separator="," close=")">
|
||||
#{departId}
|
||||
</foreach>
|
||||
</if>
|
||||
|
||||
<if test="vo.phone != null and vo.phone != ''">
|
||||
and c.phone like CONCAT('%',#{vo.phone,jdbcType=VARCHAR},'%')
|
||||
</if>
|
||||
<if test="vo.paymentMethod != null and vo.paymentMethod != ''">
|
||||
and a.payment_method = #{vo.paymentMethod}
|
||||
</if>
|
||||
<if test="vo.workNo != null and vo.workNo != ''">
|
||||
and c.work_no like CONCAT('%',#{vo.workNo,jdbcType=VARCHAR},'%')
|
||||
</if>
|
||||
<if test="vo.userName != null and vo.userName != ''">
|
||||
and c.realname like CONCAT('%',#{vo.userName,jdbcType=VARCHAR},'%')
|
||||
</if>
|
||||
<if test="vo.canteenId != null and vo.canteenId != ''">
|
||||
and a.canteen_id = #{vo.canteenId}
|
||||
</if>
|
||||
|
||||
<if test="vo.dinnerType != null and vo.dinnerType != ''">
|
||||
and sboi.dinner_type = #{vo.dinnerType}
|
||||
</if>
|
||||
order by a.create_time desc
|
||||
</select>
|
||||
|
||||
<select id="pageBalanceRefundList" resultType="org.jeecg.payment.vo.StClientMemberTransactionRecordVO">
|
||||
SELECT
|
||||
a.id,
|
||||
@@ -164,12 +287,10 @@
|
||||
<if test="vo.startTime != null and vo.endTime !=''">
|
||||
<choose>
|
||||
<when test="vo.payTimeStatus == 1">
|
||||
and DATE_FORMAT(a.pay_time,'%Y-%m-%d') >= DATE_FORMAT(#{vo.startTime},'%Y-%m-%d')
|
||||
and DATE_FORMAT(a.pay_time,'%Y-%m-%d') <= DATE_FORMAT(#{vo.endTime},'%Y-%m-%d')
|
||||
and a.pay_time between #{vo.startTime} and #{vo.endTime}
|
||||
</when>
|
||||
<when test="vo.payTimeStatus == 2">
|
||||
and DATE_FORMAT(a.create_time,'%Y-%m-%d') >= DATE_FORMAT(#{vo.startTime},'%Y-%m-%d')
|
||||
and DATE_FORMAT(a.create_time,'%Y-%m-%d') <= DATE_FORMAT(#{vo.endTime},'%Y-%m-%d')
|
||||
and a.create_time between #{vo.startTime} and #{vo.endTime}
|
||||
</when>
|
||||
</choose>
|
||||
</if>
|
||||
|
||||
+1
@@ -13,6 +13,7 @@
|
||||
a.create_time,
|
||||
a.update_time,
|
||||
a.pay_time,
|
||||
a.error_msg,
|
||||
u.realname as userName,
|
||||
CONCAT(
|
||||
IFNULL(parent_depart.depart_name, ''),
|
||||
|
||||
+2
@@ -24,6 +24,8 @@ public interface IStClientMemberTransactionRecordService extends JeecgService<St
|
||||
*/
|
||||
IPage<StClientMemberTransactionRecordVO> pageQuery(StClientMemberTransactionRecordDTO query);
|
||||
|
||||
IPage<StClientMemberTransactionRecordVO> pageQueryNew(StClientMemberTransactionRecordDTO query);
|
||||
|
||||
/**
|
||||
* 列表查询导出
|
||||
*
|
||||
|
||||
+56
-3
@@ -359,6 +359,12 @@ public class StClientMemberLevelDeductRuleServiceImpl extends JeecgServiceImpl<S
|
||||
List<StConsumptionExceptionRecord> unselectedEntities = unselectedData.stream()
|
||||
.map(vo -> {
|
||||
StConsumptionExceptionRecord entity = new StConsumptionExceptionRecord();
|
||||
if(vo.getIsRestore()!= null){
|
||||
entity.setIsRestore(vo.getIsRestore());
|
||||
}
|
||||
if(StringUtils.isNotBlank(vo.getErrorMsg())){
|
||||
entity.setErrorMsg(vo.getErrorMsg());
|
||||
}
|
||||
entity.setUserId(vo.getUserId());
|
||||
entity.setDeviceCode(vo.getDeviceCode());
|
||||
entity.setCanteenId(vo.getRestId());
|
||||
@@ -482,7 +488,8 @@ public class StClientMemberLevelDeductRuleServiceImpl extends JeecgServiceImpl<S
|
||||
StMiniMineBalanceVo stMiniMineBalanceVoOnline = new StMiniMineBalanceVo();
|
||||
|
||||
List<StRfidVo> unselectedData = new ArrayList<>();
|
||||
|
||||
List<StRfidVo> unselectedDataException = new ArrayList<>();
|
||||
StRfidVo err = new StRfidVo();
|
||||
for (Map.Entry<String, List<StRfidVo>> entry : stringListMap.entrySet()) {
|
||||
List<StRfidVo> voList = entry.getValue();
|
||||
//数据排序: 防止 离线数据 一次正常扣费, 多次二次扣费, 导致数据添加有问题
|
||||
@@ -494,8 +501,9 @@ public class StClientMemberLevelDeductRuleServiceImpl extends JeecgServiceImpl<S
|
||||
);
|
||||
for (StRfidVo stRfidVo : voList) { // 改用普通for循环,方便控制流程
|
||||
//判断用户本餐是否已经有数据
|
||||
//二次扣费,自定义扣费, 不去判断用户是否有数据
|
||||
System.out.println("二次扣费标记" + stRfidVo.getSecondChargeFlag());
|
||||
if(stRfidVo.getSecondChargeFlag() == null || stRfidVo.getSecondChargeFlag() == 0){
|
||||
if((stRfidVo.getSecondChargeFlag() == null || stRfidVo.getSecondChargeFlag() == 0) && (stRfidVo.getIsCustom() == null || stRfidVo.getIsCustom() == 0)){
|
||||
long count = iStBbzxOrderInfoService.count(new LambdaQueryWrapper<StBbzxOrderInfo>()
|
||||
.eq(StBbzxOrderInfo::getMemberId, stRfidVo.getUserId())
|
||||
.eq(StBbzxOrderInfo::getDinnerType, entry.getKey())
|
||||
@@ -506,7 +514,7 @@ public class StClientMemberLevelDeductRuleServiceImpl extends JeecgServiceImpl<S
|
||||
if(count > 0){
|
||||
if(stRfidVo.getIsRestore() == null){
|
||||
unselectedData.add(stRfidVo);
|
||||
errorMessages = "用户本餐已扣费";
|
||||
errorMessages = "本餐已扣费";
|
||||
System.out.println("用户本餐已扣费");
|
||||
continue;
|
||||
}
|
||||
@@ -531,6 +539,9 @@ public class StClientMemberLevelDeductRuleServiceImpl extends JeecgServiceImpl<S
|
||||
", 已存在的订单编号=" + stBbzxOrderInfo.getOrderNo();
|
||||
log.error(errorMsg);
|
||||
errorMessages = "重复支付"; // 添加错误信息
|
||||
stRfidVo.setIsRestore(3);
|
||||
stRfidVo.setErrorMsg(errorMessages);
|
||||
unselectedDataException.add(stRfidVo);
|
||||
continue; // 跳过当前循环,处理下一个
|
||||
}
|
||||
}
|
||||
@@ -562,6 +573,9 @@ public class StClientMemberLevelDeductRuleServiceImpl extends JeecgServiceImpl<S
|
||||
stRfidVo.getUserId(), null, null, 1, levelDeductRuleVo,
|
||||
errorMsg, stRfidVo));
|
||||
}
|
||||
stRfidVo.setIsRestore(3);
|
||||
stRfidVo.setErrorMsg(errorMessages);
|
||||
unselectedDataException.add(stRfidVo);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -575,6 +589,9 @@ public class StClientMemberLevelDeductRuleServiceImpl extends JeecgServiceImpl<S
|
||||
String errorMsg = "计算预算扣费金额失败, userId=" + stRfidVo.getUserId() + ", 餐次=" + timesName;
|
||||
log.error(errorMsg, e);
|
||||
errorMessages = "计算预算扣费金额失败";
|
||||
stRfidVo.setIsRestore(3);
|
||||
stRfidVo.setErrorMsg(errorMessages);
|
||||
unselectedDataException.add(stRfidVo);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@@ -596,6 +613,9 @@ public class StClientMemberLevelDeductRuleServiceImpl extends JeecgServiceImpl<S
|
||||
stRfidVo.getUserId(), null, null, deductionType,
|
||||
levelDeductRuleVo, errorMsg, stRfidVo));
|
||||
}
|
||||
stRfidVo.setIsRestore(3);
|
||||
stRfidVo.setErrorMsg(errorMessages);
|
||||
unselectedDataException.add(stRfidVo);
|
||||
continue;
|
||||
}
|
||||
stMiniMineBalanceVo = userBalanceResult.getResult();
|
||||
@@ -611,6 +631,9 @@ public class StClientMemberLevelDeductRuleServiceImpl extends JeecgServiceImpl<S
|
||||
stRfidVo.getUserId(), null, null, deductionType,
|
||||
levelDeductRuleVo, errorMsg, stRfidVo));
|
||||
}
|
||||
stRfidVo.setIsRestore(3);
|
||||
stRfidVo.setErrorMsg(errorMessages);
|
||||
unselectedDataException.add(stRfidVo);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -626,6 +649,9 @@ public class StClientMemberLevelDeductRuleServiceImpl extends JeecgServiceImpl<S
|
||||
stRfidVo.getUserId(), null, null, deductionType, levelDeductRuleVo,
|
||||
errorMsg, stRfidVo));
|
||||
}
|
||||
stRfidVo.setIsRestore(3);
|
||||
stRfidVo.setErrorMsg(errorMessages);
|
||||
unselectedDataException.add(stRfidVo);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -638,6 +664,9 @@ public class StClientMemberLevelDeductRuleServiceImpl extends JeecgServiceImpl<S
|
||||
stRfidVo.getUserId(), null, null, deductionType, levelDeductRuleVo,
|
||||
finalErrorMessages +",卡号:"+ finalStMiniMineBalanceVo.getCardCode(), stRfidVo));
|
||||
}
|
||||
stRfidVo.setIsRestore(3);
|
||||
stRfidVo.setErrorMsg(errorMessages);
|
||||
unselectedDataException.add(stRfidVo);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -650,10 +679,16 @@ public class StClientMemberLevelDeductRuleServiceImpl extends JeecgServiceImpl<S
|
||||
if(online){
|
||||
if(stMiniMineBalanceVo.getUserStatus() != 1){
|
||||
errorMessages = "主用户已停用";
|
||||
stRfidVo.setIsRestore(3);
|
||||
stRfidVo.setErrorMsg(errorMessages);
|
||||
unselectedDataException.add(stRfidVo);
|
||||
continue;
|
||||
}
|
||||
if(stMiniMineBalanceVo.getStatus()!= 1){
|
||||
errorMessages = "当前用户已停用";
|
||||
stRfidVo.setIsRestore(3);
|
||||
stRfidVo.setErrorMsg(errorMessages);
|
||||
unselectedDataException.add(stRfidVo);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@@ -676,6 +711,9 @@ public class StClientMemberLevelDeductRuleServiceImpl extends JeecgServiceImpl<S
|
||||
String errorMsg = "自定义金额扣费操作失败, userId=" + userId + ", 错误信息: " + data;
|
||||
log.error(errorMsg);
|
||||
errorMessages = "自定义金额扣费操作失败: " + data;
|
||||
stRfidVo.setIsRestore(3);
|
||||
stRfidVo.setErrorMsg(errorMessages);
|
||||
unselectedDataException.add(stRfidVo);
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
@@ -692,6 +730,9 @@ public class StClientMemberLevelDeductRuleServiceImpl extends JeecgServiceImpl<S
|
||||
String errorMsg = "规则模式扣费操作失败, userId=" + userId + ", 错误信息: " + data;
|
||||
log.error(errorMsg);
|
||||
errorMessages = "规则模式扣费操作失败:" + data;
|
||||
stRfidVo.setIsRestore(3);
|
||||
stRfidVo.setErrorMsg(errorMessages);
|
||||
unselectedDataException.add(stRfidVo);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@@ -699,6 +740,9 @@ public class StClientMemberLevelDeductRuleServiceImpl extends JeecgServiceImpl<S
|
||||
String errorMsg = "扣费处理过程中发生异常, userId=" + userId + ", 异常信息: " + e.getMessage();
|
||||
log.error(errorMsg, e);
|
||||
errorMessages = "扣费处理过程中发生异常: " + e.getMessage();
|
||||
stRfidVo.setIsRestore(3);
|
||||
stRfidVo.setErrorMsg(errorMessages);
|
||||
unselectedDataException.add(stRfidVo);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -711,10 +755,15 @@ public class StClientMemberLevelDeductRuleServiceImpl extends JeecgServiceImpl<S
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//保存异常消费数据
|
||||
if(CollectionUtils.isNotEmpty(unselectedData)){
|
||||
saveExceptionRecord(unselectedData);
|
||||
}
|
||||
//余: 出异常的数据都存在 异常消费表中, 给特殊标记 不让恢复,展示异常原因
|
||||
if(CollectionUtils.isNotEmpty(unselectedDataException)){
|
||||
saveExceptionRecord(unselectedDataException);
|
||||
}
|
||||
|
||||
if(online){//在线
|
||||
// 根据错误信息返回不同结果
|
||||
@@ -732,7 +781,11 @@ public class StClientMemberLevelDeductRuleServiceImpl extends JeecgServiceImpl<S
|
||||
return Result.OK("扣费成功",stClientMemberSpendVO);
|
||||
} else {
|
||||
log.info("在线扣费耗时,error:{}",System.currentTimeMillis() - start);
|
||||
if("本餐已扣费".equals(errorMessages)){
|
||||
return Result.error(errorMessages);
|
||||
}else {
|
||||
return Result.error("扣费异常,请联系管理员");
|
||||
}
|
||||
}
|
||||
}
|
||||
return Result.OK("扣费成功");
|
||||
|
||||
+64
@@ -1,15 +1,20 @@
|
||||
package org.jeecg.payment.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.jeecg.common.system.base.service.impl.JeecgServiceImpl;
|
||||
import org.jeecg.payment.dto.StClientMemberTransactionRecordDTO;
|
||||
import org.jeecg.payment.entity.StBbzxOrderInfo;
|
||||
import org.jeecg.payment.entity.StClientMemberBalance;
|
||||
import org.jeecg.payment.entity.StClientMemberTransactionRecord;
|
||||
import org.jeecg.payment.enums.MemberEnum;
|
||||
import org.jeecg.payment.enums.MemberTransactionTypeEnum;
|
||||
import org.jeecg.payment.mapper.StClientMemberTransactionRecordMapper;
|
||||
import org.jeecg.payment.service.IStBbzxOrderInfoService;
|
||||
import org.jeecg.payment.service.IStClientMemberBalanceService;
|
||||
import org.jeecg.payment.service.IStClientMemberTransactionRecordService;
|
||||
import org.jeecg.payment.vo.InOutRecordInfoVo;
|
||||
import org.jeecg.payment.vo.StClientMemberTransactionRecordVO;
|
||||
@@ -17,7 +22,13 @@ import org.jeecg.system.service.ISysPayDepartService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 交易记录
|
||||
@@ -28,6 +39,10 @@ public class StClientMemberTransactionRecordServiceImpl extends JeecgServiceImpl
|
||||
|
||||
@Resource
|
||||
private ISysPayDepartService iSysPayDepartService;
|
||||
@Resource
|
||||
private IStClientMemberBalanceService iStClientMemberBalanceService;
|
||||
@Resource
|
||||
private IStBbzxOrderInfoService iStBbzxOrderInfoService;
|
||||
|
||||
@Override
|
||||
public IPage<StClientMemberTransactionRecordVO> pageQuery(StClientMemberTransactionRecordDTO query) {
|
||||
@@ -55,6 +70,55 @@ public class StClientMemberTransactionRecordServiceImpl extends JeecgServiceImpl
|
||||
return page.setRecords(pageList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IPage<StClientMemberTransactionRecordVO> pageQueryNew(StClientMemberTransactionRecordDTO query) {
|
||||
Page<StClientMemberTransactionRecordVO> page = new Page<>(query.getPageNo(), query.getPageSize());
|
||||
page.setSearchCount(false);
|
||||
//计算总数
|
||||
long l = baseMapper.pageListCount(query);
|
||||
page.setTotal(l);
|
||||
page.setRecords(new ArrayList<>());
|
||||
if(l > 0){
|
||||
IPage<StClientMemberTransactionRecordVO> pageList = baseMapper.pageList2(page, query);
|
||||
if(CollectionUtils.isNotEmpty(pageList.getRecords())){
|
||||
Set<String> orderNoSet = pageList.getRecords().stream().map(StClientMemberTransactionRecordVO::getOrderNo).collect(Collectors.toSet());
|
||||
Set<String> memberIdSet = pageList.getRecords().stream().map(StClientMemberTransactionRecordVO::getId).collect(Collectors.toSet());
|
||||
|
||||
Map<String, StBbzxOrderInfo> orderInfoMap = iStBbzxOrderInfoService.list(new LambdaQueryWrapper<StBbzxOrderInfo>().eq(StBbzxOrderInfo::getIsDel, 0).in(StBbzxOrderInfo::getOrderNo, orderNoSet))
|
||||
.stream().collect(Collectors.toMap(StBbzxOrderInfo::getOrderNo,
|
||||
Function.identity(),
|
||||
(existing, replacement) -> existing));
|
||||
|
||||
Map<String, BigDecimal> balanceMap = iStClientMemberBalanceService.list(new LambdaQueryWrapper<StClientMemberBalance>().eq(StClientMemberBalance::getIsDel, 0).in(StClientMemberBalance::getMemberId, memberIdSet))
|
||||
.stream().collect(Collectors.toMap(StClientMemberBalance::getMemberId,
|
||||
StClientMemberBalance::getConsumptionTotal,
|
||||
(existing, replacement) -> existing));
|
||||
|
||||
for (StClientMemberTransactionRecordVO record : pageList.getRecords()) {
|
||||
StBbzxOrderInfo stBbzxOrderInfo = orderInfoMap.get(record.getOrderNo());
|
||||
if(stBbzxOrderInfo != null){
|
||||
record.setCardCode(stBbzxOrderInfo.getSerialNo());
|
||||
record.setBusinessModel(stBbzxOrderInfo.getBusinessModel());
|
||||
record.setDinnerType(stBbzxOrderInfo.getDinnerType());
|
||||
record.setMonetary(balanceMap.get(record.getId()));
|
||||
}
|
||||
record.setStatusName(MemberTransactionTypeEnum.getName(record.getStatus()));
|
||||
record.setPaymentMethodName(MemberEnum.getXcxName(record.getPaymentMethod()));
|
||||
record.setUpdateStatusName(null != record.getUpdateStatus() && 1 == record.getUpdateStatus() ? "前端":"后台");
|
||||
if(null != record.getBusinessModel()&& 1 == record.getBusinessModel() ){
|
||||
record.setBusinessModelName("定值模式");//扣费类型(1:固定扣费,2:固定+补贴扣费,3:按量扣费,4:自定义金额)
|
||||
}
|
||||
if(null != record.getBusinessModel()&& 4 == record.getBusinessModel() ){
|
||||
record.setBusinessModelName("金额模式");//扣费类型(1:固定扣费,2:固定+补贴扣费,3:按量扣费,4:自定义金额)
|
||||
}
|
||||
}
|
||||
}
|
||||
return pageList;
|
||||
}
|
||||
|
||||
return page;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<StClientMemberTransactionRecordVO> queryList(StClientMemberTransactionRecordDTO query) {
|
||||
List<StClientMemberTransactionRecordVO> pageList = baseMapper.pageList(query);
|
||||
|
||||
Reference in New Issue
Block a user