Commit bb0d8d54 by 吕明尚

增加会员进度日志,增加充值回调

parent 4faf9dd2
package share.web.controller.system;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import share.common.annotation.Log;
import share.common.core.controller.BaseController;
import share.common.core.domain.AjaxResult;
import share.common.core.page.TableDataInfo;
import share.common.enums.BusinessType;
import share.common.utils.poi.ExcelUtil;
import share.system.domain.MemberProgressLog;
import share.system.service.MemberProgressLogService;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* 会员进度日志Controller
*
* @author wuwenlong
* @date 2024-07-02
*/
@RestController
@RequestMapping("/system/memberProgressLog")
public class MemberProgressLogController extends BaseController {
@Autowired
private MemberProgressLogService memberProgressLogService;
/**
* 查询会员进度日志列表
*/
@PreAuthorize("@ss.hasPermi('system:memberProgressLog:list')")
@GetMapping("/list")
public TableDataInfo list(MemberProgressLog memberProgressLog) {
startPage();
List<MemberProgressLog> list = memberProgressLogService.selectMemberProgressLogList(memberProgressLog);
return getDataTable(list);
}
/**
* 导出会员进度日志列表
*/
@PreAuthorize("@ss.hasPermi('system:memberProgressLog:export')")
@Log(title = "会员进度日志", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, MemberProgressLog memberProgressLog) {
List<MemberProgressLog> list = memberProgressLogService.selectMemberProgressLogList(memberProgressLog);
ExcelUtil<MemberProgressLog> util = new ExcelUtil<MemberProgressLog>(MemberProgressLog.class);
util.exportExcel(response, list, "会员进度日志数据");
}
/**
* 获取会员进度日志详细信息
*/
@PreAuthorize("@ss.hasPermi('system:memberProgressLog:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id) {
return success(memberProgressLogService.selectMemberProgressLogById(id));
}
/**
* 新增会员进度日志
*/
@PreAuthorize("@ss.hasPermi('system:memberProgressLog:add')")
@Log(title = "会员进度日志", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody MemberProgressLog memberProgressLog) {
return toAjax(memberProgressLogService.insertMemberProgressLog(memberProgressLog));
}
/**
* 修改会员进度日志
*/
@PreAuthorize("@ss.hasPermi('system:memberProgressLog:edit')")
@Log(title = "会员进度日志", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody MemberProgressLog memberProgressLog) {
return toAjax(memberProgressLogService.updateMemberProgressLog(memberProgressLog));
}
/**
* 删除会员进度日志
*/
@PreAuthorize("@ss.hasPermi('system:memberProgressLog:remove')")
@Log(title = "会员进度日志", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids) {
return toAjax(memberProgressLogService.deleteMemberProgressLogByIds(ids));
}
}
package share.common.enums;
public enum MemberTypeEnum {
//普通会员
NORMAL(0L, "普通会员"),
//充值会员
RECHARGE(1L, "充值会员"),
//权益会员
RIGHTS(2L, "权益会员"),
;
private Long index;
private String name;
MemberTypeEnum() {
}
MemberTypeEnum(Long index, String name) {
this.index = index;
this.name = name;
}
public Long getIndex() {
return index;
}
public void setIndex(Long index) {
this.index = index;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
......@@ -8,8 +8,8 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
public enum YesNoEnum {
yes(1, true, "是", "激活", "正常", "Y", "续费", "", "", "", ""),
no(0, false, "否", "冻结", "异常", "N", "预定", "", "", "", "");
yes(1, true, "是", "激活", "正常", "Y", "续费", "增加", "", "", ""),
no(0, false, "否", "冻结", "异常", "N", "预定", "减少", "", "", "");
private Integer index;
......
package share.web.controller.system;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import share.common.annotation.Log;
import share.common.core.controller.BaseController;
import share.common.core.domain.AjaxResult;
import share.common.core.domain.R;
import share.common.core.page.TableDataInfo;
import share.common.core.redis.RedisUtil;
import share.common.enums.BusinessType;
import share.common.utils.JsonConvertUtil;
import share.common.utils.poi.ExcelUtil;
import share.system.domain.Recharge;
import share.system.request.CreateRechargeRequest;
import share.system.response.RechargePayResultResponse;
import share.system.service.RechargeService;
import javax.servlet.http.HttpServletResponse;
......@@ -20,11 +27,14 @@ import java.util.List;
* @author wuwenlong
* @date 2024-06-24
*/
@Slf4j
@RestController
@RequestMapping("/recharge")
public class RechargeController extends BaseController {
@Autowired
private RechargeService rechargeService;
@Autowired
private RedisUtil redisUtil;
/**
* 查询充值记录列表
......@@ -81,4 +91,17 @@ public class RechargeController extends BaseController {
public AjaxResult remove(@PathVariable Long[] ids) {
return toAjax(rechargeService.deleteRechargeByIds(ids));
}
//
@PostMapping("/recharge")
public R<RechargePayResultResponse> createOrder(@RequestBody @Validated CreateRechargeRequest request) {
if ("1".equals(redisUtil.frontInOutLogSwitch())) {
log.info("SOrderController method preOrder 入参 {}", JsonConvertUtil.write2JsonStr(request));
}
RechargePayResultResponse response = rechargeService.createRecharge(request);
if ("1".equals(redisUtil.frontInOutLogSwitch())) {
log.info("SOrderController method preOrder 出参 {}", JsonConvertUtil.write2JsonStr(response));
}
return R.ok(response);
}
}
package share.system.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import share.common.annotation.Excel;
import share.common.core.domain.BaseEntity;
import java.math.BigDecimal;
import java.util.Date;
/**
* 会员进度日志对象 s_member_progress_log
*
* @author wuwenlong
* @date 2024-07-02
*/
@Data
@TableName(value = "s_member_progress_log")
public class MemberProgressLog extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* ID
*/
private Long id;
/**
* 用户id
*/
@Excel(name = "用户id")
private Long consumerId;
/**
* 变动进度
*/
@Excel(name = "变动进度")
private BigDecimal variableProgress;
/**
* 当前进度
*/
@Excel(name = "当前进度")
private BigDecimal currentProgress;
/**
* 操作类型
*/
@Excel(name = "操作类型")
private Integer operationType;
/**
* 操作时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "操作时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date operationTime;
/**
* 是否删除
*/
//逻辑删除注解(0 未删除 1 已删除)
@TableLogic
@TableField(select = false)
private Long isDelete;
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("consumerId", getConsumerId())
.append("variableProgress", getVariableProgress())
.append("currentProgress", getCurrentProgress())
.append("operationType", getOperationType())
.append("operationTime", getOperationTime())
.append("isDelete", getIsDelete())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
.toString();
}
}
......@@ -49,6 +49,12 @@ public class RechargeConf extends BaseEntity {
@Excel(name = "充值满送金额")
private BigDecimal giveAmount;
@Excel(name = "积分赠送比例")
private BigDecimal giveRatio;
@Excel(name = "充值赠送时长")
private BigDecimal giveDuration;
/**
* 启用禁用:1-启用,0-禁用
*/
......
package share.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import share.system.domain.MemberProgressLog;
import java.util.List;
/**
* 会员进度日志Mapper接口
*
* @author wuwenlong
* @date 2024-07-02
*/
public interface MemberProgressLogMapper extends BaseMapper<MemberProgressLog> {
/**
* 查询会员进度日志
*
* @param id 会员进度日志主键
* @return 会员进度日志
*/
public MemberProgressLog selectMemberProgressLogById(Long id);
/**
* 查询会员进度日志列表
*
* @param memberProgressLog 会员进度日志
* @return 会员进度日志集合
*/
public List<MemberProgressLog> selectMemberProgressLogList(MemberProgressLog memberProgressLog);
/**
* 新增会员进度日志
*
* @param memberProgressLog 会员进度日志
* @return 结果
*/
public int insertMemberProgressLog(MemberProgressLog memberProgressLog);
/**
* 修改会员进度日志
*
* @param memberProgressLog 会员进度日志
* @return 结果
*/
public int updateMemberProgressLog(MemberProgressLog memberProgressLog);
/**
* 删除会员进度日志
*
* @param id 会员进度日志主键
* @return 结果
*/
public int deleteMemberProgressLogById(Long id);
/**
* 批量删除会员进度日志
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteMemberProgressLogByIds(Long[] ids);
}
......@@ -59,4 +59,6 @@ public interface RechargeMapper extends BaseMapper<Recharge> {
* @return 结果
*/
public int deleteRechargeByIds(Long[] ids);
Recharge getInfoByEntity(Recharge rechargeParam);
}
package share.system.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "CreateRechargeRequest对象", description = "下单请求对象")
public class CreateRechargeRequest {
@ApiModelProperty(value = "支付类型(1:微信,2:支付宝)", required = true)
@NotNull(message = "支付类型不能为空")
private Integer payType;
@ApiModelProperty(value = "充值配置表id")
@NotNull(message = "充值配置表id")
private Long rechargeConfId;
}
package share.system.response;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import share.system.domain.vo.WxPayJsResultVo;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "RechargePayResultResponse对象", description = "订单支付结果响应对象")
public class RechargePayResultResponse {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "支付状态")
private Boolean status;
@ApiModelProperty(value = "微信调起支付参数对象")
private WxPayJsResultVo jsConfig;
@ApiModelProperty(value = "支付类型")
private String payType;
@ApiModelProperty(value = "订单编号")
private String rechargeNo;
@ApiModelProperty(value = "微信支付回调的url")
private String notifyUrl;
}
......@@ -62,4 +62,6 @@ public interface ConsumerWalletService extends IService<ConsumerWallet> {
public int deleteConsumerWalletById(Long id);
ConsumerWalletVo selectByConsumerId();
boolean addConsumerWallet(ConsumerWallet consumerWallet);
}
package share.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import share.system.domain.MemberProgressLog;
import java.util.List;
/**
* 会员进度日志Service接口
*
* @author wuwenlong
* @date 2024-07-02
*/
public interface MemberProgressLogService extends IService<MemberProgressLog> {
/**
* 查询会员进度日志
*
* @param id 会员进度日志主键
* @return 会员进度日志
*/
public MemberProgressLog selectMemberProgressLogById(Long id);
/**
* 查询会员进度日志列表
*
* @param memberProgressLog 会员进度日志
* @return 会员进度日志集合
*/
public List<MemberProgressLog> selectMemberProgressLogList(MemberProgressLog memberProgressLog);
/**
* 新增会员进度日志
*
* @param memberProgressLog 会员进度日志
* @return 结果
*/
public int insertMemberProgressLog(MemberProgressLog memberProgressLog);
/**
* 修改会员进度日志
*
* @param memberProgressLog 会员进度日志
* @return 结果
*/
public int updateMemberProgressLog(MemberProgressLog memberProgressLog);
/**
* 批量删除会员进度日志
*
* @param ids 需要删除的会员进度日志主键集合
* @return 结果
*/
public int deleteMemberProgressLogByIds(Long[] ids);
/**
* 删除会员进度日志信息
*
* @param id 会员进度日志主键
* @return 结果
*/
public int deleteMemberProgressLogById(Long id);
}
package share.system.service;
import share.system.domain.Recharge;
import share.system.domain.SOrder;
import share.system.response.OrderPayResultResponse;
import share.system.response.RechargePayResultResponse;
/**
* @Author wwl
......@@ -28,6 +30,6 @@ public interface OrderPayService {
* @param recharge 支付参数
* @return OrderPayResultResponse
*/
// RechargePayResultResponse saobeiRechargePayment(Recharge recharge);
RechargePayResultResponse saobeiRechargePayment(Recharge recharge);
}
......@@ -2,6 +2,8 @@ package share.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import share.system.domain.Recharge;
import share.system.request.CreateRechargeRequest;
import share.system.response.RechargePayResultResponse;
import java.util.List;
......@@ -59,4 +61,10 @@ public interface RechargeService extends IService<Recharge> {
* @return 结果
*/
public int deleteRechargeById(Long id);
RechargePayResultResponse createRecharge(CreateRechargeRequest request);
Recharge getInfoByEntity(Recharge rechargeParam);
void paymentSuccessful(Recharge recharge);
}
......@@ -63,9 +63,13 @@ public class CallbackServiceImpl implements CallbackService {
@Autowired
private ISConsumptionRecordsService sConsumptionRecordsService;
@Autowired
private SaobeiApiLogService saobeiApiLogService;
@Autowired
private RechargeService rechargeService;
/**
* 微信支付回调
*/
......@@ -374,6 +378,81 @@ public class CallbackServiceImpl implements CallbackService {
}
break;
case RECHARGE:
Recharge rechargeParam = new Recharge();
rechargeParam.setOutTradeNo(param.getTerminal_trace());
rechargeParam.setConsumerId(attachVo.getUserId());
Recharge recharge = rechargeService.getInfoByEntity(rechargeParam);
if (ObjectUtil.isNull(recharge)) {
logger.error("saobei wechat pay error : 订单信息不存在==》" + param.getTerminal_trace());
responseVo.setReturn_code(SaobeiStatusEnum.FAIL.getCode());
responseVo.setReturn_msg("订单信息不存在!");
// 保存api日志
saobeiApiLog.setResponseParams(JSONUtil.toJsonStr(responseVo));
saobeiApiLog.setResult(responseVo.getReturn_code());
saobeiApiLog.setResultMsg(responseVo.getReturn_msg());
saobeiApiLog.setOutTradeNo(param.getOut_trade_no());
saobeiApiLogService.insertSaobeiApiLog(saobeiApiLog);
return responseVo;
}
if (YesNoEnum.yes.getIndex().equals(recharge.getStatus())) {
logger.error("saobei wechat pay error : 订单已处理==》" + param.getTerminal_trace());
responseVo.setReturn_code(SaobeiStatusEnum.SUCCESS.getCode());
responseVo.setReturn_msg("success");
// 保存api日志
saobeiApiLog.setResponseParams(JSONUtil.toJsonStr(responseVo));
saobeiApiLog.setResult(responseVo.getReturn_code());
saobeiApiLog.setResultMsg(responseVo.getReturn_msg());
saobeiApiLog.setOutTradeNo(param.getOut_trade_no());
saobeiApiLogService.insertSaobeiApiLog(saobeiApiLog);
return responseVo;
}
WechatPayInfo wechatInfo = wechatPayInfoService.getByNo(recharge.getOutTradeNo());
if (ObjectUtil.isNull(wechatInfo)) {
logger.error("saobei wechat pay error : 微信订单信息不存在==》" + param.getTerminal_trace());
responseVo.setReturn_code(SaobeiStatusEnum.FAIL.getCode());
responseVo.setReturn_msg("微信订单信息不存在!");
// 保存api日志
saobeiApiLog.setResponseParams(JSONUtil.toJsonStr(responseVo));
saobeiApiLog.setResult(responseVo.getReturn_code());
saobeiApiLog.setResultMsg(responseVo.getReturn_msg());
saobeiApiLog.setOutTradeNo(param.getOut_trade_no());
saobeiApiLogService.insertSaobeiApiLog(saobeiApiLog);
return responseVo;
}
// wechatPayInfo.setIsSubscribe(param.getIsSubscribe());
wechatInfo.setBankType(param.getBank_type());
wechatInfo.setCashFee(Integer.valueOf(param.getTotal_fee()));
// wechatPayInfo.setTransactionId(param.getOut_trade_no());
wechatInfo.setTimeEnd(param.getEnd_time());
wechatInfo.setTimeExpire(param.getEnd_time());
Boolean aFalse = Boolean.FALSE;
try {
recharge.setStatus(YesNoEnum.yes.getIndex());
recharge.setPayTime(DateUtils.getNowDate());
rechargeService.paymentSuccessful(recharge);
wechatInfo.setTradeState("1");
wechatInfo.setTradeStateDesc("支付成功");
wechatPayInfoService.updateById(wechatInfo);
aFalse = Boolean.TRUE;
} catch (Exception e) {
logger.error("微信支付回调出错");
logger.error(e.toString());
}
if (!aFalse) {
logger.error("saobei wechat pay error : 订单更新失败==》" + param.getTerminal_trace());
responseVo.setReturn_code(SaobeiStatusEnum.FAIL.getCode());
responseVo.setReturn_msg("订单更新失败!");
// 保存api日志
saobeiApiLog.setResponseParams(JSONUtil.toJsonStr(responseVo));
saobeiApiLog.setResult(responseVo.getReturn_code());
saobeiApiLog.setResultMsg(responseVo.getReturn_msg());
saobeiApiLog.setOutTradeNo(param.getOut_trade_no());
saobeiApiLogService.insertSaobeiApiLog(saobeiApiLog);
return responseVo;
}
break;
default:
logger.error("wechat pay err : 未知的支付类型==》" + param.getTerminal_trace());
......
......@@ -3,14 +3,15 @@ package share.system.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import share.common.enums.YesNoEnum;
import share.common.utils.DateUtils;
import share.system.domain.ConsumerWallet;
import share.system.domain.SConsumer;
import share.system.domain.*;
import share.system.domain.vo.ConsumerWalletVo;
import share.system.mapper.ConsumerWalletMapper;
import share.system.service.ConsumerWalletService;
import share.system.service.SConsumerService;
import share.system.service.*;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
......@@ -26,6 +27,12 @@ public class ConsumerWalletServiceImpl extends ServiceImpl<ConsumerWalletMapper,
@Autowired
private SConsumerService sConsumerService;
@Autowired
private BalanceLogService balanceLogService;
@Autowired
private DurationLogService durationLogService;
@Autowired
private IntegralLogService integralLogService;
/**
* 查询会员钱包
......@@ -102,4 +109,31 @@ public class ConsumerWalletServiceImpl extends ServiceImpl<ConsumerWalletMapper,
consumerWallet.setConsumerId(info.getId());
return consumerWalletMapper.selectByConsumerId(consumerWallet);
}
@Override
public boolean addConsumerWallet(ConsumerWallet consumerWallet) {
int i = consumerWalletMapper.insertConsumerWallet(consumerWallet);
BalanceLog balanceLog = new BalanceLog();
balanceLog.setConsumerId(consumerWallet.getConsumerId());
balanceLog.setCurrentBalance(new BigDecimal(0));
balanceLog.setVariableAmount(consumerWallet.getBalance());
balanceLog.setOperationType(YesNoEnum.yes.getIndex());
balanceLog.setOperationTime(new Date());
balanceLogService.save(balanceLog);
DurationLog durationLog = new DurationLog();
durationLog.setConsumerId(consumerWallet.getConsumerId());
durationLog.setCurrentDuration(new BigDecimal(0));
durationLog.setVariableDuration(consumerWallet.getRemainingDuration());
durationLog.setOperationTime(new Date());
durationLog.setOperationType(YesNoEnum.yes.getIndex());
durationLogService.save(durationLog);
IntegralLog integralLog = new IntegralLog();
integralLog.setConsumerId(consumerWallet.getConsumerId());
integralLog.setCurrentIntegral(new BigDecimal(0));
integralLog.setVariableIntegral(consumerWallet.getRemainingIntegral());
integralLog.setOperationTime(new Date());
integralLog.setOperationType(YesNoEnum.yes.getIndex());
integralLogService.save(integralLog);
return i == 1;
}
}
package share.system.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import share.common.utils.DateUtils;
import share.system.domain.MemberProgressLog;
import share.system.mapper.MemberProgressLogMapper;
import share.system.service.MemberProgressLogService;
import java.util.List;
/**
* 会员进度日志Service业务层处理
*
* @author wuwenlong
* @date 2024-07-02
*/
@Service
public class MemberProgressLogServiceImpl extends ServiceImpl<MemberProgressLogMapper, MemberProgressLog> implements MemberProgressLogService {
@Autowired
private MemberProgressLogMapper memberProgressLogMapper;
/**
* 查询会员进度日志
*
* @param id 会员进度日志主键
* @return 会员进度日志
*/
@Override
public MemberProgressLog selectMemberProgressLogById(Long id) {
return memberProgressLogMapper.selectMemberProgressLogById(id);
}
/**
* 查询会员进度日志列表
*
* @param memberProgressLog 会员进度日志
* @return 会员进度日志
*/
@Override
public List<MemberProgressLog> selectMemberProgressLogList(MemberProgressLog memberProgressLog) {
return memberProgressLogMapper.selectMemberProgressLogList(memberProgressLog);
}
/**
* 新增会员进度日志
*
* @param memberProgressLog 会员进度日志
* @return 结果
*/
@Override
public int insertMemberProgressLog(MemberProgressLog memberProgressLog) {
memberProgressLog.setCreateTime(DateUtils.getNowDate());
return memberProgressLogMapper.insertMemberProgressLog(memberProgressLog);
}
/**
* 修改会员进度日志
*
* @param memberProgressLog 会员进度日志
* @return 结果
*/
@Override
public int updateMemberProgressLog(MemberProgressLog memberProgressLog) {
memberProgressLog.setUpdateTime(DateUtils.getNowDate());
return memberProgressLogMapper.updateMemberProgressLog(memberProgressLog);
}
/**
* 批量删除会员进度日志
*
* @param ids 需要删除的会员进度日志主键
* @return 结果
*/
@Override
public int deleteMemberProgressLogByIds(Long[] ids) {
return memberProgressLogMapper.deleteMemberProgressLogByIds(ids);
}
/**
* 删除会员进度日志信息
*
* @param id 会员进度日志主键
* @return 结果
*/
@Override
public int deleteMemberProgressLogById(Long id) {
return memberProgressLogMapper.deleteMemberProgressLogById(id);
}
}
......@@ -20,10 +20,12 @@ import share.common.exception.base.BaseException;
import share.common.utils.BaseUtil;
import share.common.utils.DateUtil;
import share.common.utils.JsonConvertUtil;
import share.system.domain.Recharge;
import share.system.domain.SConsumerToken;
import share.system.domain.SOrder;
import share.system.domain.vo.*;
import share.system.response.OrderPayResultResponse;
import share.system.response.RechargePayResultResponse;
import share.system.service.*;
import share.system.util.WxPayUtil;
......@@ -54,8 +56,8 @@ public class OrderPayServiceImpl implements OrderPayService {
@Autowired
private SaobeiService saobeiService;
// @Autowired
// private RechargeService rechargeService;
@Autowired
private RechargeService rechargeService;
/**
* 获取域名
......@@ -231,92 +233,95 @@ public class OrderPayServiceImpl implements OrderPayService {
return vo;
}
// /**
// * 充值支付(扫呗-微信支付)
// * @param recharge 支付参数
// * @return
// */
// @Override
// public RechargePayResultResponse saobeiRechargePayment(Recharge recharge) {
// RechargePayResultResponse response = new RechargePayResultResponse();
// response.setRechargeNo(recharge.getRechargeNo());
// response.setPayType(PayTypeEnum.getEnumByCode(recharge.getPayType()).getValue());
// response.setStatus(YesNoEnum.no.getFlag());
// // 扫呗支付
// ConcurrentHashMap<String, String> unifiedorder = saobeiUnifiedRecharge(recharge);
// WxPayJsResultVo vo = new WxPayJsResultVo();
// vo.setAppId(unifiedorder.get("appId"));
// vo.setNonceStr(unifiedorder.get("nonceStr"));
// vo.setPackages(unifiedorder.get("package"));
// vo.setSignType(unifiedorder.get("signType"));
// vo.setTimeStamp(unifiedorder.get("timeStamp"));
// vo.setPaySign(unifiedorder.get("paySign"));
// // 更新商户订单号
// recharge.setOutTradeNo(unifiedorder.get("outTradeNo"));
// recharge.setTerminalTrace(unifiedorder.get("terminalTrace"));
// rechargeService.updateById(recharge);
// response.setJsConfig(vo);
// return response;
// }
/**
* 充值支付(扫呗-微信支付)
*
* @param recharge 支付参数
* @return
*/
@Override
public RechargePayResultResponse saobeiRechargePayment(Recharge recharge) {
RechargePayResultResponse response = new RechargePayResultResponse();
response.setRechargeNo(recharge.getRechargeNo());
response.setPayType(PayTypeEnum.getEnumByCode(recharge.getPayType()).getValue());
response.setStatus(YesNoEnum.no.getFlag());
// 扫呗支付
ConcurrentHashMap<String, String> unifiedorder = saobeiUnifiedRecharge(recharge);
WxPayJsResultVo vo = new WxPayJsResultVo();
vo.setAppId(unifiedorder.get("appId"));
vo.setNonceStr(unifiedorder.get("nonceStr"));
vo.setPackages(unifiedorder.get("package"));
vo.setSignType(unifiedorder.get("signType"));
vo.setTimeStamp(unifiedorder.get("timeStamp"));
vo.setPaySign(unifiedorder.get("paySign"));
// 更新商户订单号
recharge.setOutTradeNo(unifiedorder.get("outTradeNo"));
recharge.setTerminalTrace(unifiedorder.get("terminalTrace"));
rechargeService.updateById(recharge);
response.setJsConfig(vo);
return response;
}
// /**
// * 预下单 (扫呗-微信)
// * @param recharge 充值对象
// * @return 预下单返回对象
// */
// private ConcurrentHashMap<String, String> saobeiUnifiedRecharge(Recharge recharge) {
// // 获取用户openId
// SConsumerToken userToken = consumerTokenService.getTokenByUserId(recharge.getConsumerId());
// if (ObjectUtil.isNull(userToken)) {
// throw new BaseException("该用户没有openId");
// }
// // 获取appid、mch_id
// // 微信签名key
// String appId = weChatConfig.getAppId();
// String mchId = weChatConfig.getMchId();
// String signKey = weChatConfig.getSignKey();
// // 获取扫呗微信预下单对象
// SaobeiMiniPayRequestVo unifiedorderVo = getSaobeiUnifiedRechargeVo(recharge, userToken.getToken(), appId, mchId, signKey);
// // 预下单(统一下单)
// SaobeiMiniPayResponse response = saobeiService.wechatMinipay(unifiedorderVo);
// logger.info("SaobeiMiniPayResponse :", JsonConvertUtil.write2JsonStr(response));
// // 组装前端预下单参数
// ConcurrentHashMap<String, String> map = new ConcurrentHashMap<>();
// map.put("appId", response.getAppId());
// map.put("nonceStr", response.getNonceStr());
// map.put("package", response.getPackage_str());
// map.put("signType", response.getSignType());
// map.put("timeStamp", response.getTimeStamp());
// map.put("paySign", response.getPaySign());
// map.put("prepayTime", DateUtil.nowDateTimeStr());
// map.put("outTradeNo", response.getOut_trade_no());
// map.put("terminalTrace", unifiedorderVo.getTerminal_trace());
// return map;
// }
//
// /**
// * 获取预下单对象 (扫呗-微信)
// * 充值
// * @return 预下单对象
// */
// private SaobeiMiniPayRequestVo getSaobeiUnifiedRechargeVo(Recharge recharge, String openid, String appId, String mchId, String signKey) {
// AttachVo attachVo = new AttachVo(OrderTypeEnum.RECHARGE.getValue(), recharge.getConsumerId());
//
// SaobeiMiniPayRequestVo vo = new SaobeiMiniPayRequestVo();
// vo.setSub_appid(appId);
// vo.setMerchant_no(saobeiConfig.getMerchantNo());
// vo.setTerminal_id(saobeiConfig.getTerminalId());
// vo.setAttach(JSONObject.toJSONString(attachVo));
// vo.setTerminal_trace(BaseUtil.getOrderNo("WXNO"));
// vo.setTerminal_time(DateUtil.nowDate(Constants.DATE_TIME_FORMAT_NUM));
// vo.setOrder_body(StrUtil.concat(true,recharge.getRechargeAmount().toString(),"元充值!"));
// // 订单中使用的是BigDecimal,这里要转为Integer类型
// vo.setTotal_fee(String.valueOf(recharge.getRechargeAmount().multiply(BigDecimal.TEN).multiply(BigDecimal.TEN).intValue()));
// vo.setNotify_url(apiDomain + PayConstants.SAOBEI_PAY_NOTIFY_API_URI);
// vo.setTrade_type(PayConstants.WX_PAY_TRADE_TYPE_JS);
// vo.setOpen_id(openid);
// vo.setDevice_no("WEB");
// return vo;
// }
/**
* 预下单 (扫呗-微信)
*
* @param recharge 充值对象
* @return 预下单返回对象
*/
private ConcurrentHashMap<String, String> saobeiUnifiedRecharge(Recharge recharge) {
// 获取用户openId
SConsumerToken userToken = consumerTokenService.getTokenByUserId(recharge.getConsumerId());
if (ObjectUtil.isNull(userToken)) {
throw new BaseException("该用户没有openId");
}
// 获取appid、mch_id
// 微信签名key
String appId = weChatConfig.getAppId();
String mchId = weChatConfig.getMchId();
String signKey = weChatConfig.getSignKey();
// 获取扫呗微信预下单对象
SaobeiMiniPayRequestVo unifiedorderVo = getSaobeiUnifiedRechargeVo(recharge, userToken.getToken(), appId, mchId, signKey);
// 预下单(统一下单)
SaobeiMiniPayResponse response = saobeiService.wechatMinipay(unifiedorderVo);
logger.info("SaobeiMiniPayResponse :", JsonConvertUtil.write2JsonStr(response));
// 组装前端预下单参数
ConcurrentHashMap<String, String> map = new ConcurrentHashMap<>();
map.put("appId", response.getAppId());
map.put("nonceStr", response.getNonceStr());
map.put("package", response.getPackage_str());
map.put("signType", response.getSignType());
map.put("timeStamp", response.getTimeStamp());
map.put("paySign", response.getPaySign());
map.put("prepayTime", DateUtil.nowDateTimeStr());
map.put("outTradeNo", response.getOut_trade_no());
map.put("terminalTrace", unifiedorderVo.getTerminal_trace());
return map;
}
/**
* 获取预下单对象 (扫呗-微信)
* 充值
*
* @return 预下单对象
*/
private SaobeiMiniPayRequestVo getSaobeiUnifiedRechargeVo(Recharge recharge, String openid, String appId, String mchId, String signKey) {
AttachVo attachVo = new AttachVo(OrderTypeEnum.RECHARGE.getValue(), recharge.getConsumerId());
SaobeiMiniPayRequestVo vo = new SaobeiMiniPayRequestVo();
vo.setSub_appid(appId);
vo.setMerchant_no(saobeiConfig.getMerchantNo());
vo.setTerminal_id(saobeiConfig.getTerminalId());
vo.setAttach(JSONObject.toJSONString(attachVo));
vo.setTerminal_trace(BaseUtil.getOrderNo("WXNO"));
vo.setTerminal_time(DateUtil.nowDate(Constants.DATE_TIME_FORMAT_NUM));
vo.setOrder_body(StrUtil.concat(true, recharge.getRechargeAmount().toString(), "元充值!"));
// 订单中使用的是BigDecimal,这里要转为Integer类型
vo.setTotal_fee(String.valueOf(recharge.getRechargeAmount().multiply(BigDecimal.TEN).multiply(BigDecimal.TEN).intValue()));
vo.setNotify_url(apiDomain + PayConstants.SAOBEI_PAY_NOTIFY_API_URI);
vo.setTrade_type(PayConstants.WX_PAY_TRADE_TYPE_JS);
vo.setOpen_id(openid);
vo.setDevice_no("WEB");
return vo;
}
}
......@@ -3,6 +3,7 @@ package share.system.service.impl;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.dianping.openapi.sdk.api.customerauth.session.CustomerKeyShopScopeQuery;
......@@ -29,6 +30,7 @@ import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import share.common.core.redis.RedisUtil;
import share.common.enums.*;
import share.common.exception.base.BaseException;
import share.common.utils.DateUtils;
import share.system.domain.SConsumer;
import share.system.domain.SConsumerCoupon;
......@@ -98,6 +100,11 @@ public class QPServiceImpl implements QPService {
*/
@Override
public String consumeByUser(String code, String storeId, String status) throws Exception {
//获取用户信息
SConsumer user = FrontTokenComponent.getWxSConsumerEntry();
if (ObjectUtil.isNull(user)) {
throw new BaseException("您的登录已过期,请先登录");
}
LambdaQueryWrapper<SStore> sStoreLambdaQueryWrapper = new LambdaQueryWrapper<>();
sStoreLambdaQueryWrapper.eq(SStore::getId, storeId);
SStore sStore = storeService.getOne(sStoreLambdaQueryWrapper);
......@@ -109,8 +116,6 @@ public class QPServiceImpl implements QPService {
}
//验券准备
TuangouReceiptPrepareResponseEntity prepare = prepare(code.trim(), sStore.getOpenShopUuid(), status);
//获取用户信息
SConsumer user = FrontTokenComponent.getWxSConsumerEntry();
//查询领取记录表
LambdaQueryWrapper<SConsumerCoupon> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(SConsumerCoupon::getCouponCode, code);
......@@ -428,6 +433,11 @@ public class QPServiceImpl implements QPService {
@Override
public List<SStoreVo> queryshop(SStoreDto dto) throws Exception {
//获取用户信息
SConsumer user = FrontTokenComponent.getWxSConsumerEntry();
if (ObjectUtil.isNull(user)) {
throw new BaseException("您的登录已过期,请先登录");
}
String code = dto.getCode();
if (StringUtils.isEmpty(dto.getLatitude()) || StringUtils.isEmpty(dto.getLongitude())) {
throw new Exception("经纬度不能为空");
......@@ -441,8 +451,6 @@ public class QPServiceImpl implements QPService {
}
//验券准备
TuangouReceiptPrepareResponseEntity prepare = prepare(code.trim(), sStore.getOpenShopUuid(), "");
//获取用户信息
SConsumer user = FrontTokenComponent.getWxSConsumerEntry();
//查询领取记录表
LambdaQueryWrapper<SConsumerCoupon> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(SConsumerCoupon::getCouponCode, code);
......
package share.system.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import share.common.enums.MemberTypeEnum;
import share.common.enums.YesNoEnum;
import share.common.exception.base.BaseException;
import share.common.utils.BaseUtil;
import share.common.utils.DateUtils;
import share.system.domain.Recharge;
import share.common.utils.bean.BeanUtils;
import share.system.domain.*;
import share.system.domain.vo.FrontTokenComponent;
import share.system.mapper.RechargeMapper;
import share.system.service.RechargeService;
import share.system.request.CreateRechargeRequest;
import share.system.response.RechargePayResultResponse;
import share.system.service.*;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
......@@ -20,6 +34,18 @@ import java.util.List;
public class RechargeServiceImpl extends ServiceImpl<RechargeMapper, Recharge> implements RechargeService {
@Autowired
private RechargeMapper rechargeMapper;
@Autowired
private SConsumerService sConsumerService;
@Autowired
private RechargeConfService rechargeConfService;
@Autowired
private OrderPayService orderPayService;
@Autowired
private ConsumerMemberService consumerMemberService;
@Autowired
private ConsumerWalletService consumerWalletService;
@Autowired
private MemberConfigService memberConfigService;
/**
* 查询充值记录
......@@ -88,4 +114,77 @@ public class RechargeServiceImpl extends ServiceImpl<RechargeMapper, Recharge> i
public int deleteRechargeById(Long id) {
return rechargeMapper.deleteRechargeById(id);
}
@Override
@Transactional(rollbackFor = Exception.class)
public RechargePayResultResponse createRecharge(CreateRechargeRequest request) {
SConsumer user = FrontTokenComponent.getWxSConsumerEntry();
if (ObjectUtil.isNull(user)) {
throw new BaseException("您的登录已过期,请先登录");
}
if (StringUtils.isEmpty(user.getPhone())) {
user = sConsumerService.getById(user.getId());
if (StringUtils.isEmpty(user.getPhone())) {
throw new BaseException("请绑定手机号");
}
}
Recharge recharge = generatRecharge(request, user);
save(recharge);
RechargePayResultResponse response = orderPayService.saobeiRechargePayment(recharge);
return response;
}
@Override
public Recharge getInfoByEntity(Recharge rechargeParam) {
return baseMapper.getInfoByEntity(rechargeParam);
}
@Override
public void paymentSuccessful(Recharge recharge) {
ConsumerMember one = consumerMemberService.getOne(new LambdaQueryWrapper<ConsumerMember>().eq(ConsumerMember::getConsumerId, recharge.getConsumerId()));
if (ObjectUtil.isEmpty(one)) {
//新增会员
ConsumerMember consumerMember = new ConsumerMember();
consumerMember.setConsumerId(recharge.getConsumerId());
consumerMember.setMembershipLevel(1L);
consumerMember.setMemberType(MemberTypeEnum.RECHARGE.getIndex());
MemberConfig memberConfig = memberConfigService.getOne(new LambdaQueryWrapper<MemberConfig>()
.eq(MemberConfig::getMembershipLevel, 1L)
.eq(MemberConfig::getMemberType, MemberTypeEnum.RECHARGE.getIndex()));
consumerMember.setMemberConfigId(memberConfig.getId());
consumerMember.setMembershipProgress(recharge.getRechargeAmount().longValue());
consumerMember.setExpirationDate(DateUtils.addDays(new Date(), memberConfig.getValidityPeriod().intValue()));
consumerMemberService.save(consumerMember);
RechargeConf rechargeConf = rechargeConfService.selectRechargeConfById(recharge.getRechargeConfId());
//新增会员钱包
ConsumerWallet consumerWallet = new ConsumerWallet();
consumerWallet.setConsumerId(recharge.getConsumerId());
BigDecimal balance = recharge.getRechargeAmount().add(rechargeConf.getGiveAmount());
consumerWallet.setBalance(balance);
consumerWallet.setRemainingDuration(rechargeConf.getGiveDuration());
BigDecimal Integral = recharge.getRechargeAmount().multiply(rechargeConf.getGiveRatio());
consumerWallet.setRemainingIntegral(Integral);
consumerWalletService.addConsumerWallet(consumerWallet);
} else {
}
}
private Recharge generatRecharge(CreateRechargeRequest request, SConsumer user) {
Recharge recharge = new Recharge();
BeanUtils.copyProperties(request, recharge);
recharge.setRechargeNo(BaseUtil.getOrderNo("CZ"));
RechargeConf byId = rechargeConfService.getById(request.getRechargeConfId());
if (ObjectUtil.isEmpty(byId)) {
throw new BaseException("充值模板异常");
}
recharge.setRechargeAmount(byId.getRechargeAmount());
recharge.setGiveAmount(byId.getGiveAmount());
recharge.setGiveType(byId.getGiveType());
recharge.setStatus(YesNoEnum.no.getIndex());
recharge.setConsumerId(user.getId());
recharge.setPhone(user.getPhone());
recharge.setRechargeDate(new Date());
return recharge;
}
}
......@@ -2,6 +2,7 @@ package share.system.service.impl;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpGlobalConfig;
import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONArray;
......@@ -351,6 +352,10 @@ public class TiktokServiceImpl implements TiktokService {
@Override
public String consumeByUser(String code, String storeId) throws Exception {
SConsumer user = FrontTokenComponent.getWxSConsumerEntry();
if (ObjectUtil.isNull(user)) {
throw new BaseException("您的登录已过期,请先登录");
}
LambdaQueryWrapper<SStore> sStoreLambdaQueryWrapper = new LambdaQueryWrapper<>();
sStoreLambdaQueryWrapper.eq(SStore::getId, storeId);
SStore sStore = storeService.getOne(sStoreLambdaQueryWrapper);
......@@ -378,7 +383,6 @@ public class TiktokServiceImpl implements TiktokService {
JSONObject entries = new JSONObject(o);
JSONObject sku = entries.getJSONObject("sku");
JSONObject amount = entries.getJSONObject("amount");
SConsumer user = FrontTokenComponent.getWxSConsumerEntry();
// //查询领取记录表
// LambdaQueryWrapper<SConsumerCoupon> queryWrapper = new LambdaQueryWrapper<>();
// queryWrapper.eq(SConsumerCoupon::getCouponCode, entries.getStr("encrypted_code"));
......@@ -499,6 +503,11 @@ public class TiktokServiceImpl implements TiktokService {
@Override
public List<SStoreVo> queryshop(SStoreDto dto) throws Exception {
//获取用户信息
SConsumer user = FrontTokenComponent.getWxSConsumerEntry();
if (ObjectUtil.isNull(user)) {
throw new BaseException("您的登录已过期,请先登录");
}
String code = dto.getCode();
if (StringUtils.isEmpty(dto.getLatitude()) || StringUtils.isEmpty(dto.getLongitude())) {
throw new Exception("经纬度不能为空");
......
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="share.system.mapper.MemberProgressLogMapper">
<resultMap type="MemberProgressLog" id="MemberProgressLogResult">
<result property="id" column="id"/>
<result property="consumerId" column="consumer_id"/>
<result property="variableProgress" column="variable_progress"/>
<result property="currentProgress" column="current_progress"/>
<result property="operationType" column="operation_type"/>
<result property="operationTime" column="operation_time"/>
<result property="isDelete" column="is_delete"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
<result property="remark" column="remark"/>
</resultMap>
<sql id="selectMemberProgressLogVo">
select id,
consumer_id,
variable_progress,
current_progress,
operation_type,
operation_time,
is_delete,
create_by,
create_time,
update_by,
update_time,
remark
from s_member_progress_log
</sql>
<select id="selectMemberProgressLogList" parameterType="MemberProgressLog" resultMap="MemberProgressLogResult">
<include refid="selectMemberProgressLogVo"/>
<where>
<if test="consumerId != null ">and consumer_id = #{consumerId}</if>
<if test="variableProgress != null ">and variable_progress = #{variableProgress}</if>
<if test="currentProgress != null ">and current_progress = #{currentProgress}</if>
<if test="operationType != null ">and operation_type = #{operationType}</if>
<if test="operationTime != null ">and operation_time = #{operationTime}</if>
<if test="isDelete != null ">and is_delete = #{isDelete}</if>
</where>
</select>
<select id="selectMemberProgressLogById" parameterType="Long" resultMap="MemberProgressLogResult">
<include refid="selectMemberProgressLogVo"/>
where id = #{id}
</select>
<insert id="insertMemberProgressLog" parameterType="MemberProgressLog" useGeneratedKeys="true" keyProperty="id">
insert into s_member_progress_log
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="consumerId != null">consumer_id,</if>
<if test="variableProgress != null">variable_progress,</if>
<if test="currentProgress != null">current_progress,</if>
<if test="operationType != null">operation_type,</if>
<if test="operationTime != null">operation_time,</if>
<if test="isDelete != null">is_delete,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="remark != null">remark,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="consumerId != null">#{consumerId},</if>
<if test="variableProgress != null">#{variableProgress},</if>
<if test="currentProgress != null">#{currentProgress},</if>
<if test="operationType != null">#{operationType},</if>
<if test="operationTime != null">#{operationTime},</if>
<if test="isDelete != null">#{isDelete},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="remark != null">#{remark},</if>
</trim>
</insert>
<update id="updateMemberProgressLog" parameterType="MemberProgressLog">
update s_member_progress_log
<trim prefix="SET" suffixOverrides=",">
<if test="consumerId != null">consumer_id = #{consumerId},</if>
<if test="variableProgress != null">variable_progress = #{variableProgress},</if>
<if test="currentProgress != null">current_progress = #{currentProgress},</if>
<if test="operationType != null">operation_type = #{operationType},</if>
<if test="operationTime != null">operation_time = #{operationTime},</if>
<if test="isDelete != null">is_delete = #{isDelete},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="remark != null">remark = #{remark},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteMemberProgressLogById" parameterType="Long">
delete
from s_member_progress_log
where id = #{id}
</delete>
<delete id="deleteMemberProgressLogByIds" parameterType="String">
delete from s_member_progress_log where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>
\ No newline at end of file
......@@ -9,6 +9,8 @@
<result property="name" column="name"/>
<result property="rechargeAmount" column="recharge_amount"/>
<result property="giveType" column="give_type"/>
<result property="giveRatio" column="give_ratio"/>
<result property="giveDuration" column="give_duration"/>
<result property="giveAmount" column="give_amount"/>
<result property="enable" column="enable"/>
<result property="suitType" column="suit_type"/>
......@@ -26,6 +28,8 @@
name,
recharge_amount,
give_type,
give_ratio,
give_duration,
give_amount,
enable,
suit_type,
......@@ -45,6 +49,8 @@
<if test="name != null and name != ''">and name like concat('%', #{name}, '%')</if>
<if test="rechargeAmount != null ">and recharge_amount = #{rechargeAmount}</if>
<if test="giveType != null and giveType != ''">and give_type = #{giveType}</if>
<if test="giveRatio != null ">and give_ratio = #{giveRatio}</if>
<if test="giveDuration != null ">and give_duration = #{giveDuration}</if>
<if test="giveAmount != null ">and give_amount = #{giveAmount}</if>
<if test="enable != null and enable != ''">and enable = #{enable}</if>
<if test="suitType != null and suitType != ''">and suit_type = #{suitType}</if>
......@@ -63,6 +69,8 @@
<if test="name != null">name,</if>
<if test="rechargeAmount != null">recharge_amount,</if>
<if test="giveType != null and giveType != ''">give_type,</if>
<if test="giveRatio != null">give_ratio,</if>
<if test="giveDuration != null">give_duration,</if>
<if test="giveAmount != null">give_amount,</if>
<if test="enable != null and enable != ''">enable,</if>
<if test="suitType != null and suitType != ''">suit_type,</if>
......@@ -78,6 +86,8 @@
<if test="name != null">#{name},</if>
<if test="rechargeAmount != null">#{rechargeAmount},</if>
<if test="giveType != null and giveType != ''">#{giveType},</if>
<if test="giveRatio != null">#{giveRatio},</if>
<if test="giveDuration != null">#{giveDuration},</if>
<if test="giveAmount != null">#{giveAmount},</if>
<if test="enable != null and enable != ''">#{enable},</if>
<if test="suitType != null and suitType != ''">#{suitType},</if>
......@@ -97,6 +107,8 @@
<if test="name != null">name = #{name},</if>
<if test="rechargeAmount != null">recharge_amount = #{rechargeAmount},</if>
<if test="giveType != null and giveType != ''">give_type = #{giveType},</if>
<if test="giveRatio != null">give_ratio = #{giveRatio},</if>
<if test="giveDuration != null">give_duration = #{giveDuration},</if>
<if test="giveAmount != null">give_amount = #{giveAmount},</if>
<if test="enable != null and enable != ''">enable = #{enable},</if>
<if test="suitType != null and suitType != ''">suit_type = #{suitType},</if>
......
......@@ -80,6 +80,10 @@
<include refid="selectRechargeVo"/>
where id = #{id}
</select>
<select id="getInfoByEntity" resultType="share.system.domain.Recharge">
<include refid="selectRechargeVo"/>
where out_trade_no=#{outTradeNo} and consumer_id=#{consumerId}
</select>
<insert id="insertRecharge" parameterType="Recharge" useGeneratedKeys="true" keyProperty="id">
insert into s_recharge
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment