修改微信支付逻辑为不登陆输入卡号和区域号也可以支付;修改根据卡号查询卡信息的地方为根据卡号加区域号;开关阀添加刷卡记录

This commit is contained in:
童丽然 2025-01-06 16:03:23 +08:00
parent 8572ff63e7
commit 9eb126eea0
7 changed files with 113 additions and 20 deletions

View File

@ -10,7 +10,9 @@ import com.fastbee.common.core.domain.entity.SysUser;
import com.fastbee.common.core.mq.DeviceReportBo;
import com.fastbee.common.utils.DateUtils;
import com.fastbee.iot.domain.DeviceReportInfo;
import com.fastbee.iot.domain.NgCardSwipeRecords;
import com.fastbee.iot.mapper.DeviceReportInfoMapper;
import com.fastbee.iot.mapper.NgCardSwipeRecordsMapper;
import com.fastbee.mq.redischannel.producer.IssueInstructionsProducer;
import com.fastbee.mq.service.impl.DeviceOtherMsgHandler;
import com.fastbee.mqttclient.PubMqttClient;
@ -69,6 +71,9 @@ public class DeviceOtherMsgConsumer {
@Autowired
private UserRechargeCardsMapper userRechargeCardsMapper;
@Autowired
private NgCardSwipeRecordsMapper ngCardSwipeRecordsMapper;
@Autowired
private SysUserMapper sysUserMapper;
@ -253,7 +258,11 @@ public class DeviceOtherMsgConsumer {
String cardNumber= String.valueOf(dataJson.getInt("cardId"));//解析cardId
userIrrigationRecord.setCardNumber(cardNumber);//卡号
UserRechargeCards cardInfo=userRechargeCardsMapper.selectUserRechargeCardsByCardnumber(cardNumber);
String areaCode=dataJson.getStr("areaCode");
userIrrigationRecord.setAreaCode(areaCode);//区域号
System.err.println("areaCode"+areaCode);
UserRechargeCards cardInfo=userRechargeCardsMapper.selectUserRechargeCardsByCardNumberAndAreaCode(cardNumber,areaCode);
//根据卡号查询用户所属机构
List<UserRechargeCards> cardList = new LambdaQueryChainWrapper<>(userRechargeCardsMapper)
.select(UserRechargeCards::getUserId,UserRechargeCards::getDeptId)
@ -277,9 +286,7 @@ public class DeviceOtherMsgConsumer {
userIrrigationRecord.setOpenCumFlow(openCumFlow);//用户开阀时使用水量
System.err.println("openCumFlow"+openCumFlow);
String areaCode=dataJson.getStr("areaCode");
userIrrigationRecord.setAreaCode(areaCode);//区域号
System.err.println("areaCode"+areaCode);
userIrrigationRecord.setStatus(1);//状态改为灌溉中
@ -293,6 +300,24 @@ public class DeviceOtherMsgConsumer {
{
log.error("设备{}灌溉记录添加失败",serialNumber);
}
//添加一条刷卡记录
NgCardSwipeRecords ngCardSwipeRecords=new NgCardSwipeRecords();
ngCardSwipeRecords.setCardNumber(cardNumber);//卡号
ngCardSwipeRecords.setDeviceNumber(serialNumber);//设备编码
ngCardSwipeRecords.setAreaCode(areaCode);//区域号
ngCardSwipeRecords.setCardSwipeType(0);//开阀
ngCardSwipeRecords.setCardSwipeTime(DateUtils.getNowDate());//刷卡时间
if(cardInfo!=null && cardInfo.getUserId()!=null){
ngCardSwipeRecords.setUserId(cardInfo.getUserId());//用户id
}
if(cardInfo!=null && cardInfo.getUserName()!=null){
ngCardSwipeRecords.setUserName(cardInfo.getUserName());//用户名称
}
flag=ngCardSwipeRecordsMapper.insertNgCardSwipeRecords(ngCardSwipeRecords);
if(flag<1)
{
log.error("设备{}开阀刷卡记录添加失败",serialNumber);
}
}
//处理关阀门报文
@ -346,6 +371,29 @@ public class DeviceOtherMsgConsumer {
{
log.error("设备{}灌溉记录修改失败",serialNumber);
}
//添加一条刷卡记录
String areaCode=dataJson.getStr("areaCode");
UserRechargeCards cardInfo=userRechargeCardsMapper.selectUserRechargeCardsByCardNumberAndAreaCode(cardNumber,areaCode);//查询卡号+区域号信息
NgCardSwipeRecords ngCardSwipeRecords=new NgCardSwipeRecords();
ngCardSwipeRecords.setCardNumber(cardNumber);//卡号
ngCardSwipeRecords.setDeviceNumber(serialNumber);//设备编码
ngCardSwipeRecords.setAreaCode(areaCode);//区域号
ngCardSwipeRecords.setCardSwipeType(1);//关阀
ngCardSwipeRecords.setCardSwipeTime(DateUtils.getNowDate());//刷卡时间
if(cardInfo!=null && cardInfo.getUserId()!=null){
ngCardSwipeRecords.setUserId(cardInfo.getUserId());//用户id
}
if(cardInfo!=null && cardInfo.getUserName()!=null){
ngCardSwipeRecords.setUserName(cardInfo.getUserName());//用户名称
}
flag=ngCardSwipeRecordsMapper.insertNgCardSwipeRecords(ngCardSwipeRecords);
if(flag<1)
{
log.error("设备{}关阀刷卡记录添加失败",serialNumber);
}
}
}
}

View File

@ -12,11 +12,13 @@ import com.fastbee.common.core.domain.AjaxResult;
import com.fastbee.common.utils.pay.AesUtil;
import com.fastbee.common.utils.pay.RSAUtil;
import com.fastbee.rechargecard.domain.NgMerchants;
import com.fastbee.rechargecard.domain.UserRechargeCards;
import com.fastbee.rechargecard.domain.dto.WeChatPlatformCertificate;
import com.fastbee.rechargecard.domain.dto.WeChatRecharge;
import com.fastbee.rechargecard.domain.dto.WeChatRechargeBacktracking;
import com.fastbee.rechargecard.mapper.NgIrrigationControllersMapper;
import com.fastbee.rechargecard.mapper.NgMerchantsMapper;
import com.fastbee.rechargecard.mapper.UserRechargeCardsMapper;
import com.fastbee.rechargecard.service.INgUserRechargeRecordsService;
import com.fastbee.rechargecard.service.IUserConsumptionDetailsService;
import com.fastbee.rechargecard.service.IUserRechargeCardsService;
@ -35,6 +37,7 @@ import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.h2.engine.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
@ -78,6 +81,8 @@ public class WeChatPayController extends BaseController {
@Autowired
private NgMerchantsMapper ngMerchantsMapper;
@Autowired
private UserRechargeCardsMapper userRechargeCardsMapper;
/**
* 获取平台证书
* @return
@ -135,6 +140,20 @@ public class WeChatPayController extends BaseController {
public AjaxResult BuildOrder(@RequestBody WeChatRecharge recharge) throws Exception {
System.out.println("生成订单");
int flag=0;
UserRechargeCards userRechargeCards=new UserRechargeCards();
userRechargeCards.setCardNumber(String.valueOf(recharge.getCardnumber()));
userRechargeCards.setAreaCode(String.valueOf(recharge.getAreacode()));
List<UserRechargeCards> list=userRechargeCardsMapper.selectUserRechargeCardsList(userRechargeCards);
if(list.size()==0)
{
flag=userRechargeCardsService.insertUserRechargeCards(userRechargeCards);//如果不存在该卡号+区域号则插入卡信息
if(flag!=1){
return error("充值卡信息添加失败");
}
}
String out_trade_no=UUID.randomUUID().toString().replace("-", "");
while(ngUserRechargeRecordsService.SelectRechargeRecodeByRechargeCode(out_trade_no) !=null)
{
@ -163,7 +182,7 @@ public class WeChatPayController extends BaseController {
System.out.println("微信支付订单生成成功");
//订单生成成功
int flag=ngUserRechargeRecordsService.insertNgUserRechargeRecordsWeChat(recharge);//插入用户充值记录表
flag=ngUserRechargeRecordsService.insertNgUserRechargeRecordsWeChat(recharge);//插入用户充值记录表
flag=userConsumptionDetailsService.insertUserConsumptionDetailsWechat(recharge);//插入用户消费明细表
if(flag==1)
{

View File

@ -4,6 +4,7 @@ import java.util.List;
import com.fastbee.rechargecard.domain.UserRechargeCards;
import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
@ -16,12 +17,25 @@ import org.springframework.stereotype.Repository;
@Mapper
public interface UserRechargeCardsMapper extends MPJBaseMapper<UserRechargeCards>
{
/**
* 测试方法
* @param id
* @return
*/
public Long test(Long id);
/**
* 根据卡号和区域号查询
* @param cardNumber
* @param areaCode
* @return
*/
@Select("select * from user_recharge_cards where card_number=#{cardNumber} and area_code=#{areaCode}")
public UserRechargeCards selectUserRechargeCardsByCardNumberAndAreaCode(
@Param("cardNumber") String cardNumber,
@Param("areaCode") String areaCode
);
/**
* 查询用户充值卡
*

View File

@ -103,8 +103,10 @@ public class NgUserRechargeRecordsServiceImpl implements INgUserRechargeRecordsS
@Override
public int insertNgUserRechargeRecordsWeChat(WeChatRecharge rechargecardUser) {
// 根据id查询用户充值卡信息
UserRechargeCards info = userRechargeCardsMapper.selectUserRechargeCardsByCardnumber(String.valueOf(rechargecardUser.getCardnumber()));
//查询用户充值卡信息
String cardNumber=String.valueOf(rechargecardUser.getCardnumber());
String areaCode=String.valueOf(rechargecardUser.getAreacode());
UserRechargeCards info=userRechargeCardsMapper.selectUserRechargeCardsByCardNumberAndAreaCode(cardNumber,areaCode);
/*if (info == null) {
// 如果没有找到对应的记录返回0或者一个错误码
throw new ServiceException("卡号不存在!");

View File

@ -3,6 +3,7 @@ package com.fastbee.rechargecard.service.impl;
import java.util.ArrayList;
import java.util.List;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.fastbee.common.exception.ServiceException;
import com.fastbee.common.utils.DateUtils;
@ -213,8 +214,15 @@ public class UserConsumptionDetailsServiceImpl implements IUserConsumptionDetail
public int insertUserConsumptionDetailsWechat(WeChatRecharge recharge) {
UserConsumptionDetails userConsumptionDetails=new UserConsumptionDetails();
userConsumptionDetails.setCardNumber(String.valueOf(recharge.getCardnumber()));
// 根据id查询用户充值卡信息
UserRechargeCards info = userRechargeCardsMapper.selectUserRechargeCardsByCardnumber(String.valueOf(recharge.getCardnumber()));
// 查询用户充值卡信息
/*QueryWrapper queryWrapper=new QueryWrapper<>(userRechargeCardsMapper);
queryWrapper.eq("card_number",recharge.getCardnumber());
queryWrapper.eq("area_code",recharge.getAreacode());
UserRechargeCards info=userRechargeCardsMapper.selectOne(queryWrapper);*/
String cardNumber=String.valueOf(recharge.getCardnumber());
String areaCode=String.valueOf(recharge.getAreacode());
UserRechargeCards info=userRechargeCardsMapper.selectUserRechargeCardsByCardNumberAndAreaCode(cardNumber,areaCode);
/*if (info == null) {
// 如果没有找到对应的记录返回0或者一个错误码
throw new ServiceException("卡号不存在!");

View File

@ -132,13 +132,14 @@ public class UserRechargeCardsServiceImpl implements IUserRechargeCardsService
//用户充值卡中的余额更改
String cardNumber=ngUserRechargeRecords.getCardNumber();//卡号
BigDecimal balance=ngUserRechargeRecords.getAmount();//充值金额
String areaCode=ngUserRechargeRecords.getAreaCode();
if(!cardNumber.isEmpty())
{
if(userRechargeCardsMapper.selectUserRechargeCardsByCardNumber(cardNumber)==null)
if(userRechargeCardsMapper.selectUserRechargeCardsByCardNumberAndAreaCode(cardNumber,areaCode)==null)
{
throw new Exception("用户信息不存在");
}
UserRechargeCards rechargeCards=userRechargeCardsMapper.selectUserRechargeCardsByCardNumber(ngUserRechargeRecords.getCardNumber());
UserRechargeCards rechargeCards=userRechargeCardsMapper.selectUserRechargeCardsByCardNumberAndAreaCode(cardNumber,areaCode);
BigDecimal newBalance = rechargeCards.getBalance().add(balance);
System.out.println(cardNumber+"的余额从"+rechargeCards.getBalance()+"变成了"+newBalance);
rechargeCards.setBalance(newBalance);
@ -159,11 +160,10 @@ public class UserRechargeCardsServiceImpl implements IUserRechargeCardsService
userConsumptionDetails.setPaymentStatus(2);//账单状态更改为已支付
String areaCode=ngUserRechargeRecords.getAreaCode();
if(ngUserRechargeRecords.getSerialNumber()==null){
//String areaCode=ngUserRechargeRecords.getAreaCode();
/*if(ngUserRechargeRecords.getSerialNumber()==null){
throw new ServiceException("充值机编码为空!!!");
}
}*/
//构建主题
// String topic ="hzlink/147/"+ngUserRechargeRecords.getSerialNumber()+"/cmd/down";
//构建消息
@ -228,7 +228,9 @@ public class UserRechargeCardsServiceImpl implements IUserRechargeCardsService
// 如果没有找到对应的记录返回0或者一个错误码
throw new ServiceException("卡号不存在!");
}*/
UserRechargeCards info = userRechargeCardsMapper.selectUserRechargeCardsByCardnumber(String.valueOf(rechargecardUser.getCardnumber()));
String cardNumber=String.valueOf(rechargecardUser.getCardnumber());
String areaCode=String.valueOf(rechargecardUser.getAreacode());
UserRechargeCards info = userRechargeCardsMapper.selectUserRechargeCardsByCardNumberAndAreaCode(cardNumber,areaCode);
if (info == null) {
// 如果没有找到对应的记录返回0或者一个错误码
//throw new ServiceException("卡号不存在!");
@ -236,7 +238,7 @@ public class UserRechargeCardsServiceImpl implements IUserRechargeCardsService
userRechargeCards.setAreaCode(String.valueOf(rechargecardUser.getAreacode()));
userRechargeCards.setCardNumber(String.valueOf(rechargecardUser.getCardnumber()));
userRechargeCardsMapper.insertUserRechargeCards(userRechargeCards);//如果没有该卡号则新建一条
info = userRechargeCardsMapper.selectUserRechargeCardsByCardnumber(String.valueOf(rechargecardUser.getCardnumber()));
info = userRechargeCardsMapper.selectUserRechargeCardsByCardNumberAndAreaCode(cardNumber,areaCode);
}
// UserConsumptionDetails userConsumptionDetails=new UserConsumptionDetails();

View File

@ -58,9 +58,9 @@ public class UserWechatPayServiceImpl implements IUserWechatPayService {
// public static String platformCertificatePath="fastbee-common/src/main/java/com/fastbee/common/utils/pay/damogang_platformCertificate.pem";
//支付结果回调地址
// public static String notify_url="https://3ffb1c5f.r3.cpolar.cn/pay/getresult";//https://3ffb1c5f.r3.cpolar.cn
public static String notify_url="https://1f647120.r3.cpolar.cn/pay/getresult";//https://1f647120.r3.cpolar.cn
//TODO 生产环境支付结果异步通知地址
public static String notify_url="https://farmh5.hze2.com/prod-api/pay/getresult";
//public static String notify_url="https://farmh5.hze2.com/prod-api/pay/getresult";
//https://5f655ed0.r3.cpolar.cn
//微信小程序appid
public static String appId="wx308612d2a8423311";
@ -76,7 +76,7 @@ public class UserWechatPayServiceImpl implements IUserWechatPayService {
*/
public Map<String, String> CreateOrder(WeChatRecharge recharge) throws Exception {
QueryWrapper queryWrapper=new QueryWrapper();
queryWrapper.eq("dept_id",recharge.getDeptId());
queryWrapper.eq("area_code",recharge.getAreacode());
NgMerchants ngMerchants = ngMerchantsMapper.selectOne(queryWrapper);
if (ngMerchants==null){
return null;