From 8ec863238ec33fa175960f067e2f659b7adaa52c Mon Sep 17 00:00:00 2001 From: GYJ <1157756119@qq.com> Date: Wed, 19 Feb 2025 18:00:21 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E4=BD=99=E9=A2=9D=E6=B5=81?= =?UTF-8?q?=E6=B0=B4=E8=BF=81=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/enums/ShopUserFlowBizEnum.java | 42 +++ .../czg/mergedata/common/utils/CodeGen.java | 2 +- .../mergedata/controller/UserController.java | 10 + .../mergedata/cur/entity/CurOrderPayment.java | 88 ++++++ .../mergedata/cur/entity/CurShopUserFlow.java | 80 +++++ .../cur/mapper/CurOrderPaymentMapper.java | 18 ++ .../cur/mapper/CurShopUserFlowMapper.java | 18 ++ .../cur/service/CurOrderPaymentService.java | 14 + .../cur/service/CurShopUserFlowService.java | 15 + .../impl/CurOrderPaymentServiceImpl.java | 18 ++ .../impl/CurShopUserFlowServiceImpl.java | 284 ++++++++++++++++++ .../mergedata/old/entity/OldOrderPayment.java | 107 +++++++ .../mergedata/old/entity/OldShopUserFlow.java | 56 ++++ .../old/mapper/OldOrderPaymentMapper.java | 16 + .../old/mapper/OldShopUserFlowMapper.java | 16 + .../old/service/OldOrderPaymentService.java | 14 + .../old/service/OldShopUserFlowService.java | 14 + .../impl/OldOrderPaymentServiceImpl.java | 18 ++ .../impl/OldShopUserFlowServiceImpl.java | 18 ++ .../mapper/cur/OrderPaymentMapper.xml | 7 + .../mapper/cur/ShopUserFlowMapper.xml | 7 + .../mapper/old/OrderPaymentMapper.xml | 7 + .../mapper/old/ShopUserFlowMapper.xml | 7 + 23 files changed, 875 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/czg/mergedata/common/enums/ShopUserFlowBizEnum.java create mode 100644 src/main/java/com/czg/mergedata/cur/entity/CurOrderPayment.java create mode 100644 src/main/java/com/czg/mergedata/cur/entity/CurShopUserFlow.java create mode 100644 src/main/java/com/czg/mergedata/cur/mapper/CurOrderPaymentMapper.java create mode 100644 src/main/java/com/czg/mergedata/cur/mapper/CurShopUserFlowMapper.java create mode 100644 src/main/java/com/czg/mergedata/cur/service/CurOrderPaymentService.java create mode 100644 src/main/java/com/czg/mergedata/cur/service/CurShopUserFlowService.java create mode 100644 src/main/java/com/czg/mergedata/cur/service/impl/CurOrderPaymentServiceImpl.java create mode 100644 src/main/java/com/czg/mergedata/cur/service/impl/CurShopUserFlowServiceImpl.java create mode 100644 src/main/java/com/czg/mergedata/old/entity/OldOrderPayment.java create mode 100644 src/main/java/com/czg/mergedata/old/entity/OldShopUserFlow.java create mode 100644 src/main/java/com/czg/mergedata/old/mapper/OldOrderPaymentMapper.java create mode 100644 src/main/java/com/czg/mergedata/old/mapper/OldShopUserFlowMapper.java create mode 100644 src/main/java/com/czg/mergedata/old/service/OldOrderPaymentService.java create mode 100644 src/main/java/com/czg/mergedata/old/service/OldShopUserFlowService.java create mode 100644 src/main/java/com/czg/mergedata/old/service/impl/OldOrderPaymentServiceImpl.java create mode 100644 src/main/java/com/czg/mergedata/old/service/impl/OldShopUserFlowServiceImpl.java create mode 100644 src/main/resources/mapper/cur/OrderPaymentMapper.xml create mode 100644 src/main/resources/mapper/cur/ShopUserFlowMapper.xml create mode 100644 src/main/resources/mapper/old/OrderPaymentMapper.xml create mode 100644 src/main/resources/mapper/old/ShopUserFlowMapper.xml diff --git a/src/main/java/com/czg/mergedata/common/enums/ShopUserFlowBizEnum.java b/src/main/java/com/czg/mergedata/common/enums/ShopUserFlowBizEnum.java new file mode 100644 index 0000000..dc0487a --- /dev/null +++ b/src/main/java/com/czg/mergedata/common/enums/ShopUserFlowBizEnum.java @@ -0,0 +1,42 @@ +package com.czg.mergedata.common.enums; + +import lombok.Getter; + +/** + * @author Administrator + */ + +@Getter +public enum ShopUserFlowBizEnum { + // 会员充值 + CASH_IN("cashIn", "会员充值"), + // 重置奖励 + AWARD_IN("awardIn", "充值奖励"), + // 微信小程序充值 + WECHAT_IN("wechatIn", "微信小程序充值"), + // 支付宝小程序重置 + ALIPAY_IN("alipayIn", "支付宝小程序充值"), + // 订单支付奖励 + ORDER_PAY("orderPay", "订单支付奖励"), + // 订单退款 + ORDER_REFUND("orderRefund", "订单退款"), + // 充值退款 + RECHARGE_REFUND("rechargeRefund", "充值退款"), + // 管理员手动增减余额 + ADMIN_IN("adminIn", "管理员手动增减余额"), + //管理员退款充值 +// ADMIN_REFUND("adminRefund"), + //adminOut + ADMIN_OUT("adminOut", "管理员退款充值"), + //adminInOut +// ADMIN_IN_OUT("adminInOut"), + NOT_FOUND("notFound", "未找到"), + ; + private final String code; + private final String msg; + + ShopUserFlowBizEnum(String code, String msg) { + this.msg = msg; + this.code = code; + } +} diff --git a/src/main/java/com/czg/mergedata/common/utils/CodeGen.java b/src/main/java/com/czg/mergedata/common/utils/CodeGen.java index 0e18fe6..8a10237 100644 --- a/src/main/java/com/czg/mergedata/common/utils/CodeGen.java +++ b/src/main/java/com/czg/mergedata/common/utils/CodeGen.java @@ -81,7 +81,7 @@ public class CodeGen { //设置表前缀和只生成哪些表,setGenerateTable 未配置时,生成所有表 globalConfig.getStrategyConfig() .setTablePrefix("tb_") - .setGenerateTable("tb_call_config", "tb_call_queue", "tb_call_table"); + .setGenerateTable("tb_shop_user_flow", "tb_order_payment"); EntityConfig entityConfig = globalConfig.getEntityConfig(); if (isOldVersion) { diff --git a/src/main/java/com/czg/mergedata/controller/UserController.java b/src/main/java/com/czg/mergedata/controller/UserController.java index edaafc5..61b50dc 100644 --- a/src/main/java/com/czg/mergedata/controller/UserController.java +++ b/src/main/java/com/czg/mergedata/controller/UserController.java @@ -1,8 +1,10 @@ package com.czg.mergedata.controller; import com.czg.mergedata.common.resp.CzgResult; +import com.czg.mergedata.cur.service.CurShopUserFlowService; import com.czg.mergedata.cur.service.CurSysUserService; import jakarta.annotation.Resource; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -16,8 +18,16 @@ public class UserController { @Resource private CurSysUserService curSysUserService; + @Resource + private CurShopUserFlowService curShopUserFlowService; + @RequestMapping("/mergeShopInfo") public CzgResult mergeShopInfo() { return curSysUserService.mergeShopInfo(); } + + @GetMapping("/userFlow") + public CzgResult userFlow() { + return curShopUserFlowService.mergeData(); + } } diff --git a/src/main/java/com/czg/mergedata/cur/entity/CurOrderPayment.java b/src/main/java/com/czg/mergedata/cur/entity/CurOrderPayment.java new file mode 100644 index 0000000..2fa6643 --- /dev/null +++ b/src/main/java/com/czg/mergedata/cur/entity/CurOrderPayment.java @@ -0,0 +1,88 @@ +package com.czg.mergedata.cur.entity; + +import com.mybatisflex.annotation.Column; +import com.mybatisflex.annotation.Id; +import com.mybatisflex.annotation.KeyType; +import com.mybatisflex.annotation.Table; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import java.io.Serial; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 支付详情 实体类。 + * + * @author mac + * @since 2025-02-19 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table("tb_order_payment") +public class CurOrderPayment implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @Id(keyType = KeyType.Auto) + private Long id; + + /** + * 店铺Id + */ + private Long shopId; + + /** + * 来源Id 订单Id或 会员充值时为 会员Id + */ + private Long sourceId; + + /** + * 支付方式:order,refund, memberIn,memberRefund + */ + private String payType; + + /** + * 支付单号 唯一 自己系统的 mchOrderNo + */ + private String orderNo; + + /** + * 微信或支付宝支付条码 + */ + private String authCode; + + /** + * 金额 + */ + private BigDecimal amount; + + /** + * 三方支付单号 返回结果的 payOrderId + */ + private String tradeNumber; + + private LocalDateTime payTime; + + /** + * 支付相应结果 json + */ + private String respJson; + + @Column(onInsertValue = "now()") + private LocalDateTime createTime; + + @Column(onInsertValue = "now()", onUpdateValue = "now()") + private LocalDateTime updateTime; + +} diff --git a/src/main/java/com/czg/mergedata/cur/entity/CurShopUserFlow.java b/src/main/java/com/czg/mergedata/cur/entity/CurShopUserFlow.java new file mode 100644 index 0000000..43729c6 --- /dev/null +++ b/src/main/java/com/czg/mergedata/cur/entity/CurShopUserFlow.java @@ -0,0 +1,80 @@ +package com.czg.mergedata.cur.entity; + +import com.mybatisflex.annotation.Column; +import com.mybatisflex.annotation.Id; +import com.mybatisflex.annotation.KeyType; +import com.mybatisflex.annotation.Table; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import java.io.Serial; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 用户余额流水 实体类。 + * + * @author mac + * @since 2025-02-19 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table("tb_shop_user_flow") +public class CurShopUserFlow implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + @Id(keyType = KeyType.Auto) + private Long id; + + private Long userId; + + private Long shopId; + + /** + * 操作金额 + */ + private BigDecimal amount; + + /** + * 用户余额 + */ + private BigDecimal balance; + + /** + * 退款金额 + */ + private BigDecimal refundAmount; + + /** + * 类型:cashIn 会员充值,awardIn 充值奖励,wechatIn 微信小程序充值,alipayIn 支付宝小程序充值,orderPay 订单消费,orderRefund 订单退款,rechargeRefund 充值退款 adminIn 管理员充值 +adminRefund 管理员退款充值 adminOut管理员消费 adminInOut管理员充值扣除 + */ + private String bizCode; + + /** + * 关联id, +订单支付/订单退款/霸王餐时 订单id +支付/退款 tb_order_payment.id + + */ + private Long relationId; + + /** + * 充值记录Id 退款使用 + */ + private Long rechargeId; + + private String remark; + + @Column(onInsertValue = "now()") + private LocalDateTime createTime; + +} diff --git a/src/main/java/com/czg/mergedata/cur/mapper/CurOrderPaymentMapper.java b/src/main/java/com/czg/mergedata/cur/mapper/CurOrderPaymentMapper.java new file mode 100644 index 0000000..344f59b --- /dev/null +++ b/src/main/java/com/czg/mergedata/cur/mapper/CurOrderPaymentMapper.java @@ -0,0 +1,18 @@ +package com.czg.mergedata.cur.mapper; + +import com.mybatisflex.annotation.UseDataSource; +import com.mybatisflex.core.BaseMapper; +import com.czg.mergedata.cur.entity.CurOrderPayment; +import org.apache.ibatis.annotations.Select; + +/** + * 支付详情 映射层。 + * + * @author mac + * @since 2025-02-19 + */ +@UseDataSource("ds1") +public interface CurOrderPaymentMapper extends BaseMapper { + @Select("truncate tb_order_payment") + void truncateTable(); +} diff --git a/src/main/java/com/czg/mergedata/cur/mapper/CurShopUserFlowMapper.java b/src/main/java/com/czg/mergedata/cur/mapper/CurShopUserFlowMapper.java new file mode 100644 index 0000000..46c6b4a --- /dev/null +++ b/src/main/java/com/czg/mergedata/cur/mapper/CurShopUserFlowMapper.java @@ -0,0 +1,18 @@ +package com.czg.mergedata.cur.mapper; + +import com.mybatisflex.annotation.UseDataSource; +import com.mybatisflex.core.BaseMapper; +import com.czg.mergedata.cur.entity.CurShopUserFlow; +import org.apache.ibatis.annotations.Select; + +/** + * 用户余额流水 映射层。 + * + * @author mac + * @since 2025-02-19 + */ +@UseDataSource("ds1") +public interface CurShopUserFlowMapper extends BaseMapper { + @Select("truncate tb_shop_user_flow") + void truncateTable(); +} diff --git a/src/main/java/com/czg/mergedata/cur/service/CurOrderPaymentService.java b/src/main/java/com/czg/mergedata/cur/service/CurOrderPaymentService.java new file mode 100644 index 0000000..8eeb3ac --- /dev/null +++ b/src/main/java/com/czg/mergedata/cur/service/CurOrderPaymentService.java @@ -0,0 +1,14 @@ +package com.czg.mergedata.cur.service; + +import com.mybatisflex.core.service.IService; +import com.czg.mergedata.cur.entity.CurOrderPayment; + +/** + * 支付详情 服务层。 + * + * @author mac + * @since 2025-02-19 + */ +public interface CurOrderPaymentService extends IService { + +} diff --git a/src/main/java/com/czg/mergedata/cur/service/CurShopUserFlowService.java b/src/main/java/com/czg/mergedata/cur/service/CurShopUserFlowService.java new file mode 100644 index 0000000..f7e6bdc --- /dev/null +++ b/src/main/java/com/czg/mergedata/cur/service/CurShopUserFlowService.java @@ -0,0 +1,15 @@ +package com.czg.mergedata.cur.service; + +import com.czg.mergedata.common.resp.CzgResult; +import com.mybatisflex.core.service.IService; +import com.czg.mergedata.cur.entity.CurShopUserFlow; + +/** + * 用户余额流水 服务层。 + * + * @author mac + * @since 2025-02-19 + */ +public interface CurShopUserFlowService extends IService { + CzgResult mergeData(); +} diff --git a/src/main/java/com/czg/mergedata/cur/service/impl/CurOrderPaymentServiceImpl.java b/src/main/java/com/czg/mergedata/cur/service/impl/CurOrderPaymentServiceImpl.java new file mode 100644 index 0000000..ea717b4 --- /dev/null +++ b/src/main/java/com/czg/mergedata/cur/service/impl/CurOrderPaymentServiceImpl.java @@ -0,0 +1,18 @@ +package com.czg.mergedata.cur.service.impl; + +import com.mybatisflex.spring.service.impl.ServiceImpl; +import com.czg.mergedata.cur.entity.CurOrderPayment; +import com.czg.mergedata.cur.mapper.CurOrderPaymentMapper; +import com.czg.mergedata.cur.service.CurOrderPaymentService; +import org.springframework.stereotype.Service; + +/** + * 支付详情 服务层实现。 + * + * @author mac + * @since 2025-02-19 + */ +@Service +public class CurOrderPaymentServiceImpl extends ServiceImpl implements CurOrderPaymentService{ + +} diff --git a/src/main/java/com/czg/mergedata/cur/service/impl/CurShopUserFlowServiceImpl.java b/src/main/java/com/czg/mergedata/cur/service/impl/CurShopUserFlowServiceImpl.java new file mode 100644 index 0000000..fef0b9b --- /dev/null +++ b/src/main/java/com/czg/mergedata/cur/service/impl/CurShopUserFlowServiceImpl.java @@ -0,0 +1,284 @@ +package com.czg.mergedata.cur.service.impl; + +import cn.hutool.core.lang.generator.SnowflakeGenerator; +import cn.hutool.core.util.StrUtil; +import com.czg.mergedata.common.enums.ShopUserFlowBizEnum; +import com.czg.mergedata.common.resp.CzgResult; +import com.czg.mergedata.common.utils.PageUtils; +import com.czg.mergedata.cur.entity.CurOrderPayment; +import com.czg.mergedata.cur.entity.CurShopUserFlow; +import com.czg.mergedata.cur.entity.CurUserInfo; +import com.czg.mergedata.cur.mapper.CurOrderPaymentMapper; +import com.czg.mergedata.cur.mapper.CurShopUserFlowMapper; +import com.czg.mergedata.cur.service.CurShopIdRelationService; +import com.czg.mergedata.cur.service.CurShopUserFlowService; +import com.czg.mergedata.cur.service.CurUserInfoService; +import com.czg.mergedata.old.entity.OldShopUser; +import com.czg.mergedata.old.entity.OldShopUserFlow; +import com.czg.mergedata.old.service.OldShopUserFlowService; +import com.czg.mergedata.old.service.OldShopUserService; +import com.mybatisflex.core.paginate.Page; +import com.mybatisflex.core.query.QueryWrapper; +import com.mybatisflex.spring.service.impl.ServiceImpl; +import jakarta.annotation.Resource; +import lombok.Data; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.mybatisflex.core.query.QueryMethods.column; + +/** + * 用户余额流水 服务层实现。 + * + * @author mac + * @since 2025-02-19 + */ +@Service +public class CurShopUserFlowServiceImpl extends ServiceImpl implements CurShopUserFlowService { + + @Resource + private CurShopIdRelationService curShopIdRelationService; + + @Resource + private CurOrderPaymentMapper curOrderPaymentMapper; + + @Resource + private OldShopUserService oldShopUserService; + + @Resource + private CurUserInfoService curUserInfoService; + + @Resource + private OldShopUserFlowService oldShopUserFlowService; + + @Data + static class ShopUserIdClass { + private Long shopId; + private Long userId; + } + + @Override + @Transactional + public CzgResult mergeData() { + getMapper().truncateTable(); + curOrderPaymentMapper.truncateTable(); + + Map oldAndCurShopIdMap = curShopIdRelationService.getOldShopIdRelation(); + + Map shopUserIdClassMap = getShopUserIdClassMap(oldAndCurShopIdMap); + + execUserFlow(oldAndCurShopIdMap, shopUserIdClassMap); + + execRefundFlow(); + + return CzgResult.success("迁移成功"); + } + + private Map getShopUserIdClassMap(Map oldAndCurShopIdMap) { + QueryWrapper queryWrapper = QueryWrapper.create().select(OldShopUser::getShopId, OldShopUser::getUserId).from(OldShopUser.class) + .and(column(OldShopUser::getIsVip).eq(1).or(column(OldShopUser::getAmount).gt(0))); + + List list = oldShopUserService.list(queryWrapper); + + Map shopUserIdClassMap = new HashMap<>(); + + for (OldShopUser oldShopUser : list) { + ShopUserIdClass shopUserIdClass = new ShopUserIdClass(); + + shopUserIdClass.setShopId(oldAndCurShopIdMap.get(Long.valueOf(oldShopUser.getShopId()))); + shopUserIdClass.setUserId(getOldShopUserUserId(oldShopUser)); + + shopUserIdClassMap.put(shopUserIdClass.getUserId(), shopUserIdClass); + } + + return shopUserIdClassMap; + } + + private void execUserFlow(Map oldAndCurShopIdMap, Map shopUserIdClassMap) { + Page page = oldShopUserFlowService.page(PageUtils.buildPage()); + + while (!page.getRecords().isEmpty()) { + saveUserFlow(page.getRecords(), shopUserIdClassMap, oldAndCurShopIdMap); + + page = oldShopUserFlowService.page(PageUtils.buildPage(page.getPageNumber() + 1)); + } + } + + private void execRefundFlow() { + QueryWrapper queryWrapper = QueryWrapper.create() + .select() + .from(CurShopUserFlow.class) + .isNotNull(CurShopUserFlow::getRemark) + .ne(CurShopUserFlow::getRemark, ""); + + List list = list(queryWrapper); + + List rechargeList = new ArrayList<>(); + List refundList = new ArrayList<>(); + + for (CurShopUserFlow curShopUserFlow : list) { + String remark = curShopUserFlow.getRemark(); + + if (remark.length() > 10) { + // 创建 支付记录,回填 relationId + rechargeList.add(curShopUserFlow); + } else { + // 创建退款记录 ,回填 relationId 退款金额 充值记录 id + refundList.add(curShopUserFlow); + } + } + + for (CurShopUserFlow curShopUserFlow : rechargeList) { + CurOrderPayment curOrderPayment = new CurOrderPayment(); + curOrderPayment.setShopId(curShopUserFlow.getShopId()); + curOrderPayment.setSourceId(curShopUserFlow.getId()); + curOrderPayment.setPayType("memberIn"); + curOrderPayment.setOrderNo(curShopUserFlow.getRemark()); + curOrderPayment.setAmount(curShopUserFlow.getAmount()); + curOrderPayment.setPayTime(curShopUserFlow.getCreateTime()); + curOrderPayment.setRespJson("{}"); + + curOrderPaymentMapper.insert(curOrderPayment); + + curShopUserFlow.setRelationId(curOrderPayment.getId()); + updateById(curShopUserFlow); + } + + for (CurShopUserFlow curShopUserFlow : refundList) { + Long rechargeId = Long.valueOf(curShopUserFlow.getRemark()); + + CurShopUserFlow rechargeFlow = getById(rechargeId); + + if (rechargeFlow == null) { + System.out.println("rechargeFlow is null"); + continue; + } + + BigDecimal refundAmount = curShopUserFlow.getAmount().negate(); + BigDecimal curRefundAmount =rechargeFlow.getRefundAmount() == null ? BigDecimal.ZERO : rechargeFlow.getRefundAmount(); + rechargeFlow.setRefundAmount(curRefundAmount.add(refundAmount)); + updateById(rechargeFlow); + + CurOrderPayment curOrderPayment = new CurOrderPayment(); + curOrderPayment.setShopId(curShopUserFlow.getShopId()); + curOrderPayment.setSourceId(curShopUserFlow.getId()); + curOrderPayment.setPayType("memberRefund"); + curOrderPayment.setOrderNo(String.valueOf(new SnowflakeGenerator().next())); + curOrderPayment.setAmount(curShopUserFlow.getAmount()); + curOrderPayment.setPayTime(curShopUserFlow.getCreateTime()); + curOrderPayment.setRespJson("{}"); + + curOrderPaymentMapper.insert(curOrderPayment); + + curShopUserFlow.setRelationId(curOrderPayment.getId()); + curShopUserFlow.setRechargeId(rechargeId); + updateById(curShopUserFlow); + } + } + + private void saveUserFlow(List oldShopUserFlowList, Map shopUserIdClassMap, Map oldAndCurShopIdMap) { + List curShopUserFlowList = new ArrayList<>(); + + for (OldShopUserFlow oldShopUserFlow : oldShopUserFlowList) { + CurShopUserFlow curShopUserFlow = new CurShopUserFlow(); + + ShopUserIdClass shopUserIdClass = getShopUserIdClass(oldShopUserFlow.getShopUserId(), shopUserIdClassMap); + if (shopUserIdClass == null) { + continue; + } + + curShopUserFlow.setId(Long.valueOf(oldShopUserFlow.getId())); + curShopUserFlow.setUserId(shopUserIdClass.getUserId()); + curShopUserFlow.setShopId(shopUserIdClass.getShopId()); + curShopUserFlow.setAmount(oldShopUserFlow.getAmount()); + curShopUserFlow.setBalance(oldShopUserFlow.getBalance()); + curShopUserFlow.setCreateTime(oldShopUserFlow.getCreateTime()); + + ShopUserFlowBizEnum flowBizEnum = getShopUserFlowBizEnum(oldShopUserFlow.getBizCode()); + curShopUserFlow.setBizCode(flowBizEnum.getCode()); + + if ("-".equals(oldShopUserFlow.getType())) { + curShopUserFlow.setAmount(curShopUserFlow.getAmount().multiply(new BigDecimal(-1))); + } + + curShopUserFlow.setCreateTime(oldShopUserFlow.getCreateTime()); + curShopUserFlow.setRemark(oldShopUserFlow.getRemark()); + + curShopUserFlowList.add(curShopUserFlow); + } + + saveBatch(curShopUserFlowList); + } + + private ShopUserIdClass getShopUserIdClass(Integer shopUserId, Map shopUserIdClassMap) { + ShopUserIdClass shopUserIdClass = shopUserIdClassMap.get(Long.valueOf(shopUserId)); + + if (shopUserIdClass == null) { + OldShopUser byId = oldShopUserService.getById(shopUserId); + if (byId == null) { + return null; + } + + shopUserIdClass = new ShopUserIdClass(); + shopUserIdClass.setShopId(Long.valueOf(byId.getShopId())); + shopUserIdClass.setUserId(getOldShopUserUserId(byId)); + shopUserIdClassMap.put(Long.valueOf(byId.getShopId()), shopUserIdClass); + } + + return shopUserIdClass; + } + + private Long getOldShopUserUserId(OldShopUser oldShopUser) { + if (oldShopUser == null) { + return 0L; + } + + if (StrUtil.isNotBlank(oldShopUser.getUserId())) { + return Long.valueOf(oldShopUser.getUserId()); + } + + CurUserInfo curUserInfo = new CurUserInfo(); + curUserInfo.setHeadImg(oldShopUser.getHeadImg()); + curUserInfo.setNickName(oldShopUser.getName()); + curUserInfo.setPayPwd(oldShopUser.getTelephone()); + curUserInfo.setBirthDay(oldShopUser.getBirthDay()); + curUserInfo.setSex(oldShopUser.getSex()); + curUserInfo.setStatus(oldShopUser.getStatus()); + + curUserInfoService.save(curUserInfo); + + return curUserInfo.getId(); + } + + private ShopUserFlowBizEnum getShopUserFlowBizEnum(String type) { + /** + * 类型: + * cashIn 现金充值, + * wechatIn 微信小程序充值, + * alipayIn 支付宝小程序充值, + * awardIn 充值奖励, + * rechargeRefund 充值退款 + * + * orderPay 订单消费, + * orderRefund 订单退款, + * + * adminIn 管理员充值 + * adminOut管理员消费 + */ + return switch (type) { + case "scanMemberIn", "inMoneyIn" -> ShopUserFlowBizEnum.WECHAT_IN; + case "inMoneyOut", "memberReturn" -> ShopUserFlowBizEnum.RECHARGE_REFUND; + case "scanMemberAwardIn" -> ShopUserFlowBizEnum.AWARD_IN; + case "cashMemberIn" -> ShopUserFlowBizEnum.CASH_IN; + case "accountReturnPay", "consumeIn", "vipCardCash" -> ShopUserFlowBizEnum.ORDER_REFUND; + case "accountPay", "accountGroupPay", "consumeOut" -> ShopUserFlowBizEnum.ORDER_PAY; + default -> ShopUserFlowBizEnum.NOT_FOUND; + }; + } +} diff --git a/src/main/java/com/czg/mergedata/old/entity/OldOrderPayment.java b/src/main/java/com/czg/mergedata/old/entity/OldOrderPayment.java new file mode 100644 index 0000000..f0034d0 --- /dev/null +++ b/src/main/java/com/czg/mergedata/old/entity/OldOrderPayment.java @@ -0,0 +1,107 @@ +package com.czg.mergedata.old.entity; + +import com.mybatisflex.annotation.Id; +import com.mybatisflex.annotation.KeyType; +import com.mybatisflex.annotation.Table; +import java.io.Serializable; +import java.math.BigDecimal; + +import java.io.Serial; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 订单支付展示 实体类。 + * + * @author mac + * @since 2025-02-19 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table("tb_order_payment") +public class OldOrderPayment implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @Id(keyType = KeyType.Auto) + private Integer id; + + /** + * 支付方式Id + */ + private String payTypeId; + + /** + * 实际支付金额 + */ + private BigDecimal amount; + + private BigDecimal paidAmount; + + /** + * 退款金额 + */ + private BigDecimal hasRefundAmount; + + /** + * 支付方式名称 + */ + private String payName; + + /** + * 支付方式 + */ + private String payType; + + /** + * 收款 + */ + private BigDecimal received; + + /** + * 找零 + */ + private BigDecimal changeFee; + + /** + * 商户Id + */ + private String merchantId; + + /** + * 店铺Id + */ + private String shopId; + + /** + * 结算单号 + */ + private String billingId; + + private String orderId; + + private String authCode; + + private String refundable; + + private Long createdAt; + + private Long updatedAt; + + private String tradeNumber; + + /** + * 会员Id + */ + private String memberId; + +} diff --git a/src/main/java/com/czg/mergedata/old/entity/OldShopUserFlow.java b/src/main/java/com/czg/mergedata/old/entity/OldShopUserFlow.java new file mode 100644 index 0000000..9cdcea2 --- /dev/null +++ b/src/main/java/com/czg/mergedata/old/entity/OldShopUserFlow.java @@ -0,0 +1,56 @@ +package com.czg.mergedata.old.entity; + +import com.mybatisflex.annotation.Column; +import com.mybatisflex.annotation.Id; +import com.mybatisflex.annotation.KeyType; +import com.mybatisflex.annotation.Table; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import java.io.Serial; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 实体类。 + * + * @author mac + * @since 2025-02-19 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table("tb_shop_user_flow") +public class OldShopUserFlow implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + @Id(keyType = KeyType.Auto) + private Integer id; + + private Integer shopUserId; + + private BigDecimal amount; + + private BigDecimal balance; + + private String bizCode; + + private String bizName; + + @Column(onInsertValue = "now()") + private LocalDateTime createTime; + + private String type; + + private String isReturn; + + private String remark; + +} diff --git a/src/main/java/com/czg/mergedata/old/mapper/OldOrderPaymentMapper.java b/src/main/java/com/czg/mergedata/old/mapper/OldOrderPaymentMapper.java new file mode 100644 index 0000000..fa4b7e1 --- /dev/null +++ b/src/main/java/com/czg/mergedata/old/mapper/OldOrderPaymentMapper.java @@ -0,0 +1,16 @@ +package com.czg.mergedata.old.mapper; + +import com.mybatisflex.annotation.UseDataSource; +import com.mybatisflex.core.BaseMapper; +import com.czg.mergedata.old.entity.OldOrderPayment; + +/** + * 订单支付展示 映射层。 + * + * @author mac + * @since 2025-02-19 + */ +@UseDataSource("ds2") +public interface OldOrderPaymentMapper extends BaseMapper { + +} diff --git a/src/main/java/com/czg/mergedata/old/mapper/OldShopUserFlowMapper.java b/src/main/java/com/czg/mergedata/old/mapper/OldShopUserFlowMapper.java new file mode 100644 index 0000000..6c910d6 --- /dev/null +++ b/src/main/java/com/czg/mergedata/old/mapper/OldShopUserFlowMapper.java @@ -0,0 +1,16 @@ +package com.czg.mergedata.old.mapper; + +import com.mybatisflex.annotation.UseDataSource; +import com.mybatisflex.core.BaseMapper; +import com.czg.mergedata.old.entity.OldShopUserFlow; + +/** + * 映射层。 + * + * @author mac + * @since 2025-02-19 + */ +@UseDataSource("ds2") +public interface OldShopUserFlowMapper extends BaseMapper { + +} diff --git a/src/main/java/com/czg/mergedata/old/service/OldOrderPaymentService.java b/src/main/java/com/czg/mergedata/old/service/OldOrderPaymentService.java new file mode 100644 index 0000000..b401b2d --- /dev/null +++ b/src/main/java/com/czg/mergedata/old/service/OldOrderPaymentService.java @@ -0,0 +1,14 @@ +package com.czg.mergedata.old.service; + +import com.mybatisflex.core.service.IService; +import com.czg.mergedata.old.entity.OldOrderPayment; + +/** + * 订单支付展示 服务层。 + * + * @author mac + * @since 2025-02-19 + */ +public interface OldOrderPaymentService extends IService { + +} diff --git a/src/main/java/com/czg/mergedata/old/service/OldShopUserFlowService.java b/src/main/java/com/czg/mergedata/old/service/OldShopUserFlowService.java new file mode 100644 index 0000000..6dc12f7 --- /dev/null +++ b/src/main/java/com/czg/mergedata/old/service/OldShopUserFlowService.java @@ -0,0 +1,14 @@ +package com.czg.mergedata.old.service; + +import com.mybatisflex.core.service.IService; +import com.czg.mergedata.old.entity.OldShopUserFlow; + +/** + * 服务层。 + * + * @author mac + * @since 2025-02-19 + */ +public interface OldShopUserFlowService extends IService { + +} diff --git a/src/main/java/com/czg/mergedata/old/service/impl/OldOrderPaymentServiceImpl.java b/src/main/java/com/czg/mergedata/old/service/impl/OldOrderPaymentServiceImpl.java new file mode 100644 index 0000000..e1cc670 --- /dev/null +++ b/src/main/java/com/czg/mergedata/old/service/impl/OldOrderPaymentServiceImpl.java @@ -0,0 +1,18 @@ +package com.czg.mergedata.old.service.impl; + +import com.mybatisflex.spring.service.impl.ServiceImpl; +import com.czg.mergedata.old.entity.OldOrderPayment; +import com.czg.mergedata.old.mapper.OldOrderPaymentMapper; +import com.czg.mergedata.old.service.OldOrderPaymentService; +import org.springframework.stereotype.Service; + +/** + * 订单支付展示 服务层实现。 + * + * @author mac + * @since 2025-02-19 + */ +@Service +public class OldOrderPaymentServiceImpl extends ServiceImpl implements OldOrderPaymentService{ + +} diff --git a/src/main/java/com/czg/mergedata/old/service/impl/OldShopUserFlowServiceImpl.java b/src/main/java/com/czg/mergedata/old/service/impl/OldShopUserFlowServiceImpl.java new file mode 100644 index 0000000..18fc6ef --- /dev/null +++ b/src/main/java/com/czg/mergedata/old/service/impl/OldShopUserFlowServiceImpl.java @@ -0,0 +1,18 @@ +package com.czg.mergedata.old.service.impl; + +import com.mybatisflex.spring.service.impl.ServiceImpl; +import com.czg.mergedata.old.entity.OldShopUserFlow; +import com.czg.mergedata.old.mapper.OldShopUserFlowMapper; +import com.czg.mergedata.old.service.OldShopUserFlowService; +import org.springframework.stereotype.Service; + +/** + * 服务层实现。 + * + * @author mac + * @since 2025-02-19 + */ +@Service +public class OldShopUserFlowServiceImpl extends ServiceImpl implements OldShopUserFlowService{ + +} diff --git a/src/main/resources/mapper/cur/OrderPaymentMapper.xml b/src/main/resources/mapper/cur/OrderPaymentMapper.xml new file mode 100644 index 0000000..fb03fa9 --- /dev/null +++ b/src/main/resources/mapper/cur/OrderPaymentMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/src/main/resources/mapper/cur/ShopUserFlowMapper.xml b/src/main/resources/mapper/cur/ShopUserFlowMapper.xml new file mode 100644 index 0000000..d88de12 --- /dev/null +++ b/src/main/resources/mapper/cur/ShopUserFlowMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/src/main/resources/mapper/old/OrderPaymentMapper.xml b/src/main/resources/mapper/old/OrderPaymentMapper.xml new file mode 100644 index 0000000..29643d9 --- /dev/null +++ b/src/main/resources/mapper/old/OrderPaymentMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/src/main/resources/mapper/old/ShopUserFlowMapper.xml b/src/main/resources/mapper/old/ShopUserFlowMapper.xml new file mode 100644 index 0000000..edd2981 --- /dev/null +++ b/src/main/resources/mapper/old/ShopUserFlowMapper.xml @@ -0,0 +1,7 @@ + + + + +