diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxPrepaymentController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxPrepaymentController.java index df880e310..fcc56996a 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxPrepaymentController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxPrepaymentController.java @@ -7,6 +7,7 @@ import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; import com.iformall.domain.po.WxPrepayment; import com.iformall.domain.po.WxPrepaymentHistory; +import com.iformall.enums.EnumUserType; import com.iformall.service.WxPrepaymentService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -15,10 +16,7 @@ import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; /** @@ -65,4 +63,29 @@ public class WxPrepaymentController extends BaseController { return new ResultData(page); } + @ApiOperation("首次充值") + @PostMapping("payFirst") + @SystemControllerLog(description = "预付费-交费") + public ResultData payFirst(@RequestBody WxPrepayment wxPrepayment) { + logger.debug("[" + getIpAddr() + "] prepayment::add"); + wxPrepayment.setTenantId(getTenantId()); + wxPrepayment.setOperationType(EnumUserType.MALLUSER.getCode()); + wxPrepayment.setOperator(getUserId()); + wxPrepaymentService.payFirst(wxPrepayment); + return new ResultData(); + } + + @ApiOperation("再次充值") + @PostMapping("payAgain") + @SystemControllerLog(description = "预付费-交费或扣费") + public ResultData payAgain(@RequestBody WxPrepayment wxPrepayment) { + logger.debug("[" + getIpAddr() + "] prepayment::update"); + wxPrepayment.setTenantId(getTenantId()); + wxPrepayment.setOperationType(EnumUserType.MALLUSER.getCode()); + wxPrepayment.setOperator(getUserId()); + wxPrepaymentService.payAgain(wxPrepayment); + return new ResultData(); + + } + } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxPrepayment.java b/mallinkService/src/main/java/com/iformall/domain/po/WxPrepayment.java index eeb9adfd5..fb6c6d8d0 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxPrepayment.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxPrepayment.java @@ -9,6 +9,9 @@ import java.io.Serializable; import java.util.Date; import java.util.List; +/** + * @author gongbiao + */ @Table(name = "wx_prepayment") @Data public class WxPrepayment implements Serializable { @@ -38,6 +41,10 @@ public class WxPrepayment implements Serializable { private Long totalAmount; @io.swagger.annotations.ApiModelProperty(value = "备注", name = "remarks") private String remarks; + @io.swagger.annotations.ApiModelProperty(value = "总操作类型1C端3B端4A端", name = "operationType") + private Integer operationType; + @io.swagger.annotations.ApiModelProperty(value = "操作人", name = "operator") + private Long operator; @io.swagger.annotations.ApiModelProperty(value = "创建时间", name = "createTime") private Date createTime; @io.swagger.annotations.ApiModelProperty(value = "更新时间", name = "updateTime") diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxPrepaymentHistory.java b/mallinkService/src/main/java/com/iformall/domain/po/WxPrepaymentHistory.java index 109bf390c..d6ab748c6 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxPrepaymentHistory.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxPrepaymentHistory.java @@ -9,6 +9,9 @@ import java.io.Serializable; import java.util.Date; import java.util.List; +/** + * @author gongbiao + */ @Table(name = "wx_prepayment_history") @Data public class WxPrepaymentHistory implements Serializable { diff --git a/mallinkService/src/main/java/com/iformall/service/WxPrepaymentService.java b/mallinkService/src/main/java/com/iformall/service/WxPrepaymentService.java index 8827fc5c4..5bb49e115 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxPrepaymentService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxPrepaymentService.java @@ -21,4 +21,8 @@ public interface WxPrepaymentService { PageInfo listHistoryAsPage(WxPrepaymentHistory wxPrepaymentHistory, Integer pageNum, Integer pageSize); + void payFirst(WxPrepayment wxPrepayment); + + void payAgain(WxPrepayment wxPrepayment); + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPrepaymentServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPrepaymentServiceImpl.java index b8fe3a773..e51aaf713 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPrepaymentServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPrepaymentServiceImpl.java @@ -2,6 +2,7 @@ package com.iformall.service.impl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.iformall.common.IdWorker; import com.iformall.domain.po.WxPrepayment; import com.iformall.domain.po.WxPrepaymentHistory; import com.iformall.mapper.WxPrepaymentHistoryMapper; @@ -12,6 +13,11 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; + +/** + * @author gongbiao + */ @Service public class WxPrepaymentServiceImpl implements WxPrepaymentService { @@ -33,4 +39,39 @@ public class WxPrepaymentServiceImpl implements WxPrepaymentService { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxPrepaymentHistoryMapper.findList(record)); } + @Override + public void payFirst(WxPrepayment wxPrepayment) { + final IdWorker idWorker = IdWorker.get(); + wxPrepayment.setId(idWorker.nextId()); + wxPrepaymentMapper.insertSelective(wxPrepayment); + addPrepaymentHistory(wxPrepayment); + } + + @Override + public void payAgain(WxPrepayment record) { + WxPrepayment wxPrepayment = wxPrepaymentMapper.selectByPrimaryKey(record.getId()); + long remainAmout = wxPrepayment.getRemainAmount() + record.getLastPayAmount(); + long totalAmount = wxPrepayment.getTotalAmount() + record.getLastPayAmount(); + wxPrepayment.setRemainAmount(remainAmout); + wxPrepayment.setTotalAmount(totalAmount); + wxPrepaymentMapper.updateByPrimaryKeySelective(wxPrepayment); + addPrepaymentHistory(wxPrepayment); + } + + private void addPrepaymentHistory(WxPrepayment wxPrepayment) { + WxPrepaymentHistory wxPrepaymentHistory = new WxPrepaymentHistory(); + final IdWorker idWorker = IdWorker.get(); + wxPrepaymentHistory.setId(idWorker.nextId()); + wxPrepaymentHistory.setTenantId(wxPrepayment.getTenantId()); + wxPrepaymentHistory.setMerchantId(wxPrepayment.getMerchantId()); + wxPrepaymentHistory.setPayWay(wxPrepayment.getLastPayWay()); + wxPrepaymentHistory.setPayType(wxPrepayment.getLastPayType()); + String lastPayAmount = new BigDecimal(wxPrepayment.getLastPayAmount()).divide(new BigDecimal(100)).setScale(2).toPlainString(); + wxPrepaymentHistory.setAmountDetail("+" + lastPayAmount + "元"); + wxPrepaymentHistory.setRemainAmount(wxPrepayment.getRemainAmount()); + wxPrepaymentHistory.setOperationType(wxPrepayment.getOperationType()); + wxPrepaymentHistory.setOperator(wxPrepayment.getOperator()); + wxPrepaymentHistoryMapper.insertSelective(wxPrepaymentHistory); + } + } diff --git a/mallinkService/src/main/resources/mapper/WxPrepaymentHistoryMapper.xml b/mallinkService/src/main/resources/mapper/WxPrepaymentHistoryMapper.xml index d63c05d9f..9d723339a 100644 --- a/mallinkService/src/main/resources/mapper/WxPrepaymentHistoryMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxPrepaymentHistoryMapper.xml @@ -16,9 +16,9 @@ - p.`id,p.`tenant_id`,p.`merchant_id`,p.`pay_way`,p.`pay_type`,p.`amount_detail`,p.`remain_amount`,p.`operation_type`,p.`operator`,p.`create_time`, - m.`name` merchant_name - + p.`id,p.`tenant_id`,p.`merchant_id`,p.`pay_way`,p.`pay_type`,p.`amount_detail`,p.`remain_amount`,p.`operation_type`,p.`operator`,p.`create_time`,m.`name` merchant_name + + where 1 = 1 @@ -37,6 +37,9 @@ and p.`pay_way` = #{payWay} + + and p.`operation_type` = #{operationType} + and m.`name` like concat('%',#{merchantName},'%') diff --git a/mallinkService/src/main/resources/mapper/WxPrepaymentMapper.xml b/mallinkService/src/main/resources/mapper/WxPrepaymentMapper.xml index ff40b4cb2..a29da29d2 100644 --- a/mallinkService/src/main/resources/mapper/WxPrepaymentMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxPrepaymentMapper.xml @@ -11,14 +11,16 @@ + + - p.`id`,p.`tenant_id`,p.`merchant_id`,p.`last_pay_way`,p.`last_pay_type`,p.`last_pay_amount`,p.`remain_amount`,p.`total_amount` ,p.`remarks`,p.`create_time`,p.`update_time`, - m.`name` merchant_name + p.`id`,p.`tenant_id`,p.`merchant_id`,p.`last_pay_way`,p.`last_pay_type`,p.`last_pay_amount`,p.`remain_amount`,p.`total_amount` ,p.`remarks`,p.`operation_type`,p.`operator`, + p.`create_time`,p.`update_time`,m.`name` merchant_name @@ -38,6 +40,9 @@ and p.`last_pay_way` = #{lastPayWay} + + and p.`operation_type` = #{operationType} + and m.`name` like concat('%',#{merchantName},'%')