123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- package com.ylx.massage.service.impl;
- import cn.hutool.json.JSONObject;
- import cn.hutool.json.JSONUtil;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.ijpay.core.IJPayHttpResponse;
- import com.ijpay.core.enums.RequestMethodEnum;
- import com.ijpay.core.kit.PayKit;
- import com.ijpay.core.kit.WxPayKit;
- import com.ijpay.core.utils.DateTimeZoneUtil;
- import com.ijpay.wxpay.WxPayApi;
- import com.ijpay.wxpay.enums.WxDomainEnum;
- import com.ijpay.wxpay.enums.v3.BasePayApiEnum;
- import com.ijpay.wxpay.model.v3.Amount;
- import com.ijpay.wxpay.model.v3.Payer;
- import com.ijpay.wxpay.model.v3.UnifiedOrderModel;
- import com.ylx.common.config.WxPayConfig;
- import com.ylx.common.core.domain.R;
- import com.ylx.common.exception.ServiceException;
- import com.ylx.common.utils.StringUtils;
- import com.ylx.massage.domain.TConsumptionLog;
- import com.ylx.massage.domain.TRecharge;
- import com.ylx.massage.domain.TWxUser;
- import com.ylx.massage.mapper.TRechargeMapper;
- import com.ylx.massage.service.TConsumptionLogService;
- import com.ylx.massage.service.TRechargeService;
- import com.ylx.massage.service.TWxUserService;
- import com.ylx.massage.utils.OrderNumberGenerator;
- import io.swagger.annotations.ApiOperation;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.RequestParam;
- import javax.annotation.Resource;
- import java.math.BigDecimal;
- import java.time.LocalDateTime;
- import java.util.Map;
- import static com.ylx.common.constant.HttpStatus.SUCCESS;
- /**
- * 充值记录表 服务实现类
- */
- @Service
- @Slf4j
- public class TRechargeServiceImpl extends ServiceImpl<TRechargeMapper, TRecharge> implements TRechargeService {
- @Resource
- private TWxUserService wxUserService;
- @Resource
- private OrderNumberGenerator generator;
- @Resource
- private TConsumptionLogService consumptionLogService;
- @Override
- @Transactional(rollbackFor = Exception.class)
- public TRecharge recharge(TRecharge recharge) {
- //增加充值记录
- if (StringUtils.isBlank(recharge.getcOpenId())) {
- throw new ServiceException("openId不能为空");
- }
- if (null == recharge.getdMoney() || recharge.getdMoney().compareTo(BigDecimal.ZERO) <= 0) {
- throw new ServiceException("充值金额不能为空");
- }
- LambdaQueryWrapper<TRecharge> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(TRecharge::getcOpenId, recharge.getcOpenId()).eq(TRecharge::getPayStatus, -1).eq(TRecharge::getdMoney, recharge.getdMoney());
- TRecharge one = getOne(queryWrapper);
- if (one != null) {
- log.info("未支付的充值记录,{}",one.getRechargeNo());
- return one;
- }
- recharge.setRechargeNo(generator.generateNextOrderNumber(OrderNumberGenerator.KEY_PREFIX_RECHAR));
- recharge.setDtCreateTime(LocalDateTime.now());
- save(recharge);
- //todo 调用微信支付成功后增加账户金额
- return recharge;
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public TRecharge increaseAmount(String rechargeNo) {
- //增加个人账户金额
- TRecharge recharge = getByRechargeNo(rechargeNo);
- if(recharge == null){
- log.error("未支付的充值记录不存在,单号:{}",rechargeNo);
- return null;
- }
- //修改充值状态
- recharge.setPayStatus(1);
- this.updateById(recharge);
- //增加个人账户金额
- TWxUser user = wxUserService.getByOpenId(recharge.getcOpenId());
- user.setdBalance(user.getdBalance().add(recharge.getdMoney()));
- wxUserService.updateById(user);
- //增加消费记录
- TConsumptionLog tConsumptionLog = new TConsumptionLog();
- tConsumptionLog.setAmount(recharge.getdMoney());
- tConsumptionLog.setBillNo(rechargeNo);
- tConsumptionLog.setOpenId(recharge.getcOpenId());
- tConsumptionLog.setBillType(1);
- tConsumptionLog.setNote("微信充值");
- consumptionLogService.save(tConsumptionLog);
- log.info("微信充值成功,充值单号:{},充值金额:{},充值OpenId:{}",rechargeNo,recharge.getdMoney(),user.getcOpenid());
- return recharge;
- }
- private TRecharge getByRechargeNo(String rechargeNo) {
- return getOne(new LambdaQueryWrapper<TRecharge>().eq(TRecharge::getRechargeNo, rechargeNo).eq(TRecharge::getPayStatus, -1));
- }
- }
|