diff --git a/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/controller/XhpcCardController.java b/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/controller/XhpcCardController.java index 15369272..fa0b04c7 100644 --- a/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/controller/XhpcCardController.java +++ b/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/controller/XhpcCardController.java @@ -175,5 +175,18 @@ public class XhpcCardController extends BaseController { return xhpcCardService.operateDevicesLog(operateDevicesLogRequest); } + /** + * query recharging records of user + * + * @author WH + * @date 2022/2/14 11:13 + * @since version-1.0 + */ + @GetMapping("/user/recharging") + public R queryRechargingRecord(QueryRechargingRecordRequest queryRechargingRecordRequest) { + + return xhpcCardService.queryRechargingRecord(queryRechargingRecordRequest); + } + } diff --git a/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/domain/QueryRechargingRecordRequest.java b/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/domain/QueryRechargingRecordRequest.java new file mode 100644 index 00000000..22d2ef72 --- /dev/null +++ b/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/domain/QueryRechargingRecordRequest.java @@ -0,0 +1,57 @@ +package com.xhpc.card.domain; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * Entity class of query recharge record + * + * @author WH + * @date 2022/2/14 15:45 + * @since version-1.0 + */ +@NoArgsConstructor +@Data +public class QueryRechargingRecordRequest { + + /** + * 用户账号 + */ + @JsonProperty("userAccount") + @NotNull(message = "userAccount的参数名不正确或者userAccount的值为空,请检查传入参数") + @NotBlank(message = "userAccount的参数不能为''字符串,请检查传入参数") + private String userAccount; + /** + * 用户类型 + * (0 C端用户 1 流量方用户 2社区用户 3B端用户) + */ + @JsonProperty("userType") + @NotNull(message = "userType的参数名不正确或者userType的值为空,请检查传入参数") + private Integer userType; + /** + * 卡类型(0离线,1联网) + */ + @JsonProperty("cardType") + @NotNull(message = "cardType的参数名不正确或者cardType的值为空,请检查传入参数") + private Integer cardType; + /** + * 卡号 + */ + @NotNull(message = "cardSerialNumber的参数名不正确或者cardSerialNumber的值为空,请检查传入参数") + @NotBlank(message = "cardSerialNumber的参数不能为''字符串,请检查传入参数") + @JsonProperty("cardSerialNumber") + private String cardSerialNumber; + /** + * Page number of current page + */ + private Long currentPage; + /** + * Every page shows items of data + */ + private Long items; + +} diff --git a/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/domain/QueryRechargingRecordResponse.java b/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/domain/QueryRechargingRecordResponse.java new file mode 100644 index 00000000..fb9e1bea --- /dev/null +++ b/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/domain/QueryRechargingRecordResponse.java @@ -0,0 +1,71 @@ +package com.xhpc.card.domain; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * Wrapper response class of interface of query recharging record + * + * @author WH + * @date 2022/2/14 16:08 + * @since version-1.0 + */ +@NoArgsConstructor +@Data +public class QueryRechargingRecordResponse { + + /** + * 总条数 + */ + @JsonProperty("totalItems") + private Long totalItems; + /** + * 数据 + */ + @JsonProperty("data") + private List data; + + /** + * 一条数据 + */ + @NoArgsConstructor + @Data + public static class DataDTO { + + /** + * 用户账户 + */ + @JsonProperty("userAccount") + private String userAccount; + /** + * 订单编号 + */ + @JsonProperty("orderNumber") + private String orderNumber; + /** + * 充值金额 + */ + @JsonProperty("rechargeMoney") + private Long rechargeMoney; + /** + * 充值方式(1 微信 2 支付宝 3 平台) + */ + @JsonProperty("rechargeMethod") + private String rechargeMethod; + /** + * 订单状态(0待支付 1充值成功,2充值失败) + */ + @JsonProperty("orderStatus") + private Integer orderStatus; + /** + * 创建时间 + */ + @JsonProperty("createTime") + private String createTime; + + } + +} diff --git a/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/mapper/TIccardLogMapper.java b/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/mapper/TIccardLogMapper.java index 0a3e16e3..8a68ad8e 100644 --- a/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/mapper/TIccardLogMapper.java +++ b/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/mapper/TIccardLogMapper.java @@ -3,6 +3,7 @@ package com.xhpc.card.mapper; import com.xhpc.card.domain.OperateCardsLogRequest; import com.xhpc.card.domain.OperateDevicesLogRequest; import com.xhpc.card.pojo.TIccardLog; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -56,4 +57,22 @@ public interface TIccardLogMapper { */ Long selectCountOfDeviceLogListByCondition(OperateDevicesLogRequest operateDevicesLogRequest); + /** + * query log about recharge records by uniqueId of card + * + * @author WH + * @date 2022/2/15 9:43 + * @since version-1.0 + */ + List selectRechargeLogByUniqueId(@Param("uniqueId") String uniqueId, @Param("currentPage") Long currentPage, @Param("items") Long items); + + /** + * query log count about recharge records by uniqueId of card + * + * @author WH + * @date 2022/2/15 9:43 + * @since version-1.0 + */ + Long selectCountRechargeLogByUniqueId(@Param("uniqueId") String uniqueId); + } \ No newline at end of file diff --git a/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/mapper/XhpcAppUserMapper.java b/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/mapper/XhpcAppUserMapper.java index e9a402bc..8c364d28 100644 --- a/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/mapper/XhpcAppUserMapper.java +++ b/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/mapper/XhpcAppUserMapper.java @@ -37,4 +37,13 @@ public interface XhpcAppUserMapper { */ List selectByCondition(SearchCardUserQueryCondition queryCondition); + /** + * 根据手机号查找C端用户充值记录 + * + * @author WH + * @date 2022/2/14 17:14 + * @since version-1.0 + */ + XhpcAppUser selectByPhone(String userAccount); + } \ No newline at end of file diff --git a/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/mapper/XhpcCommunityPersonnelMapper.java b/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/mapper/XhpcCommunityPersonnelMapper.java index b5c83286..597838f9 100644 --- a/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/mapper/XhpcCommunityPersonnelMapper.java +++ b/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/mapper/XhpcCommunityPersonnelMapper.java @@ -63,4 +63,13 @@ public interface XhpcCommunityPersonnelMapper { */ Long selectCountByOperatorId(@Param("operatorId") Long operatorId); + /** + * query record by userAccount + * + * @author WH + * @date 2022/2/15 17:10 + * @since version-1.0 + */ + XhpcCommunityPersonnel selectByAccount(String userAccount); + } \ No newline at end of file diff --git a/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/mapper/XhpcCustomersPersonnelMapper.java b/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/mapper/XhpcCustomersPersonnelMapper.java index 0512e295..f68de70d 100644 --- a/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/mapper/XhpcCustomersPersonnelMapper.java +++ b/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/mapper/XhpcCustomersPersonnelMapper.java @@ -65,4 +65,12 @@ public interface XhpcCustomersPersonnelMapper { */ Long selectCountByOperatorId(Long operatorId); + /** + * query record by user account + * + * @param userAccount + * @return + */ + XhpcCustomersPersonnel selectByAccount(String userAccount); + } \ No newline at end of file diff --git a/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/mapper/XhpcRechargeOrderMapper.java b/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/mapper/XhpcRechargeOrderMapper.java new file mode 100644 index 00000000..e51cb96d --- /dev/null +++ b/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/mapper/XhpcRechargeOrderMapper.java @@ -0,0 +1,41 @@ +package com.xhpc.card.mapper; + +import com.xhpc.card.pojo.XhpcRechargeOrder; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface XhpcRechargeOrderMapper { + + int deleteByPrimaryKey(Long rechargeOrderId); + + int insert(XhpcRechargeOrder record); + + int insertSelective(XhpcRechargeOrder record); + + XhpcRechargeOrder selectByPrimaryKey(Long rechargeOrderId); + + int updateByPrimaryKeySelective(XhpcRechargeOrder record); + + int updateByPrimaryKey(XhpcRechargeOrder record); + + /** + * 通过用户id查找用户所有的充值记录 + * + * @author WH + * @date 2022/2/14 17:53 + * @since version-1.0 + */ + List selectByUserId(@Param("appUserId") Long appUserId, @Param("currentPage") Long currentPage, @Param("items") Long items); + + /** + * query count of recharge records of user by user id + * + * @author WH + * @date 2022/2/15 16:14 + * @since version-1.0 + */ + Long selectCountByUserId(@Param("appUserId") Long appUserId); + + +} \ No newline at end of file diff --git a/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/pojo/XhpcRechargeOrder.java b/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/pojo/XhpcRechargeOrder.java new file mode 100644 index 00000000..370b9d21 --- /dev/null +++ b/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/pojo/XhpcRechargeOrder.java @@ -0,0 +1,99 @@ +package com.xhpc.card.pojo; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * xhpc_recharge_order + * + * @author + */ +@Data +public class XhpcRechargeOrder implements Serializable { + + /** + * 充值订单id + */ + private Long rechargeOrderId; + + /** + * 充值订单编号 + */ + private String rechargeOrderNumber; + + /** + * 用户id + */ + private Long userId; + + /** + * 微信支付订单号 + */ + private String prepayId; + + /** + * 支付宝订单编号 + */ + private String alipayNumber; + + /** + * 充值金额 + */ + private BigDecimal amount; + + /** + * 充值渠道(1微信 2支付宝 3平台) + */ + private Integer type; + + /** + * 状态(0待支付 1充值成功,2充值失败) + */ + private Integer status; + + /** + * 订单来源(0 C端用户 1 流量方用户 2社区用户 3B端用户) + */ + private Integer source; + + /** + * 删除标志(0代表存在 2代表删除) + */ + private Integer delFlag; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 创建者 + */ + private String createBy; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 更新者 + */ + private String updateBy; + + /** + * 备注 + */ + private String remark; + + /** + * 租户id + */ + private String tenantId; + + private static final long serialVersionUID = 1L; + +} \ No newline at end of file diff --git a/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/service/IXhpcCardService.java b/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/service/IXhpcCardService.java index eaff111d..a7804f1e 100644 --- a/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/service/IXhpcCardService.java +++ b/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/service/IXhpcCardService.java @@ -139,4 +139,14 @@ public interface IXhpcCardService { */ R operateDevicesLog(OperateDevicesLogRequest operateDevicesLogRequest); + /** + * query recharge record of card + * ps:query card equals query account + * + * @author WH + * @date 2022/2/14 15:55 + * @since version-1.0 + */ + R queryRechargingRecord(QueryRechargingRecordRequest queryRechargingRecordRequest); + } diff --git a/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/service/impl/XhpcCardServiceImpl.java b/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/service/impl/XhpcCardServiceImpl.java index 19eed060..d6a6e553 100644 --- a/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/service/impl/XhpcCardServiceImpl.java +++ b/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/service/impl/XhpcCardServiceImpl.java @@ -51,6 +51,8 @@ public class XhpcCardServiceImpl implements IXhpcCardService { private TokenService tokenService; @Resource private TIccardLogMapper tIccardLogMapper; + @Resource + private XhpcRechargeOrderMapper xhpcRechargeOrderMapper; @Override public R cardStartup(String cardno, String serialNumber, String rateModelId) { @@ -515,6 +517,113 @@ public class XhpcCardServiceImpl implements IXhpcCardService { return R.ok(operateDevicesLogResponse); } + @Override + public R queryRechargingRecord(QueryRechargingRecordRequest queryRechargingRecordRequest) { + //计算分页索引 + long startIndex = MyPagingUtil.calculateStartIndex(queryRechargingRecordRequest.getCurrentPage(), queryRechargingRecordRequest.getItems()); + queryRechargingRecordRequest.setCurrentPage(startIndex); + QueryRechargingRecordResponse queryRechargingRecordResponse = new QueryRechargingRecordResponse(); + queryRechargingRecordResponse.setData(new ArrayList<>()); + queryRechargingRecordResponse.setTotalItems(0L); + Integer cardType = queryRechargingRecordRequest.getCardType(); + //如果卡是离线卡 + if (cardType == 0) { + List tIccardLogList = tIccardLogMapper.selectRechargeLogByUniqueId(queryRechargingRecordRequest.getCardSerialNumber(), queryRechargingRecordRequest.getCurrentPage(), queryRechargingRecordRequest.getItems()); + if (tIccardLogList.isEmpty()) { + R.ok(queryRechargingRecordResponse); + } + Long recordsCount = tIccardLogMapper.selectCountRechargeLogByUniqueId(queryRechargingRecordRequest.getCardSerialNumber()); + queryRechargingRecordResponse.setTotalItems(recordsCount); + for (TIccardLog tIccardLog : tIccardLogList) { + String log = tIccardLog.getLog(); + CardLogInfo cardLogInfo = JSONUtil.toBean(log, CardLogInfo.class); + CardLogInfo.CardInfoDTO cardInfo = cardLogInfo.getCardInfo(); + //Get userAccount by userIndex + Integer userIndex = cardInfo.getUserIndex(); + TIccardUsers tIccardUsers = tIccardUsersMapper.selectByPrimaryKey(userIndex); + String accountStr = tIccardUsers.getPhone(); + QueryRechargingRecordResponse.DataDTO dataDTO = new QueryRechargingRecordResponse.DataDTO(); + dataDTO.setUserAccount(accountStr); + //Get orderNumber(not found in the MySQL database) + dataDTO.setOrderNumber(null); + //Get rechargeMoney + dataDTO.setRechargeMoney(Long.valueOf(cardInfo.getPrepay())); + //Get rechargeMethod (not found in the MySQL database) + dataDTO.setRechargeMethod(null); + dataDTO.setOrderStatus(null); + dataDTO.setCreateTime(MyDateUtil.parseDateToStr(tIccardLog.getCreatetime())); + queryRechargingRecordResponse.getData().add(dataDTO); + } + return R.ok(queryRechargingRecordResponse); + } else { + //如果是联网卡 + //Get user id + switch (queryRechargingRecordRequest.getUserType()) { + case 0: + XhpcAppUser xhpcAppUser = xhpcAppUserMapper.selectByPhone(queryRechargingRecordRequest.getUserAccount()); + List xhpcRechargeOrderList = xhpcRechargeOrderMapper.selectByUserId(xhpcAppUser.getAppUserId(), queryRechargingRecordRequest.getCurrentPage(), queryRechargingRecordRequest.getItems()); + if (xhpcRechargeOrderList.isEmpty()) { + return R.ok(queryRechargingRecordResponse); + } + Long recordsCount = xhpcRechargeOrderMapper.selectCountByUserId(xhpcAppUser.getAppUserId()); + queryRechargingRecordResponse.setTotalItems(recordsCount); + for (XhpcRechargeOrder xhpcRechargeOrder : xhpcRechargeOrderList) { + QueryRechargingRecordResponse.DataDTO dataDTO = new QueryRechargingRecordResponse.DataDTO(); + dataDTO.setUserAccount(xhpcAppUser.getPhone()); + queryRechargeRecordToEncapsulateDTO(queryRechargingRecordResponse, xhpcRechargeOrder, dataDTO); + } + return R.ok(queryRechargingRecordResponse); + case 2: + XhpcCommunityPersonnel xhpcCommunityPersonnel = xhpcCommunityPersonnelMapper.selectByAccount(queryRechargingRecordRequest.getUserAccount()); + List xhpcRechargeOrderList1 = xhpcRechargeOrderMapper.selectByUserId(xhpcCommunityPersonnel.getCommunityPersonnelId(), queryRechargingRecordRequest.getCurrentPage(), queryRechargingRecordRequest.getItems()); + if (xhpcRechargeOrderList1.isEmpty()) { + R.ok(queryRechargingRecordResponse); + } + Long recordsCount1 = xhpcRechargeOrderMapper.selectCountByUserId(xhpcCommunityPersonnel.getCommunityId()); + queryRechargingRecordResponse.setTotalItems(recordsCount1); + for (XhpcRechargeOrder xhpcRechargeOrder : xhpcRechargeOrderList1) { + QueryRechargingRecordResponse.DataDTO dataDTO = new QueryRechargingRecordResponse.DataDTO(); + dataDTO.setUserAccount(xhpcCommunityPersonnel.getAccount()); + queryRechargeRecordToEncapsulateDTO(queryRechargingRecordResponse, xhpcRechargeOrder, dataDTO); + } + return R.ok(queryRechargingRecordResponse); + case 3: + XhpcCustomersPersonnel xhpcCustomersPersonnel = xhpcCustomersPersonnelMapper.selectByAccount(queryRechargingRecordRequest.getUserAccount()); + List xhpcRechargeOrderList2 = xhpcRechargeOrderMapper.selectByUserId(xhpcCustomersPersonnel.getCustomersId(), queryRechargingRecordRequest.getCurrentPage(), queryRechargingRecordRequest.getItems()); + if (xhpcRechargeOrderList2.isEmpty()) { + R.ok(queryRechargingRecordResponse); + } + Long recordsCount2 = xhpcRechargeOrderMapper.selectCountByUserId(xhpcCustomersPersonnel.getCustomersId()); + queryRechargingRecordResponse.setTotalItems(recordsCount2); + for (XhpcRechargeOrder xhpcRechargeOrder : xhpcRechargeOrderList2) { + QueryRechargingRecordResponse.DataDTO dataDTO = new QueryRechargingRecordResponse.DataDTO(); + dataDTO.setUserAccount(xhpcCustomersPersonnel.getAccount()); + queryRechargeRecordToEncapsulateDTO(queryRechargingRecordResponse, xhpcRechargeOrder, dataDTO); + } + return R.ok(queryRechargingRecordResponse); + default: + return R.fail("没有此类型的用户"); + } + } + } + + /** + * 用于QueryRechargeRecord方法封装DTO数据 + * + * @author WH + * @date 2022/2/15 18:15 + * @since version-1.0 + */ + private void queryRechargeRecordToEncapsulateDTO(QueryRechargingRecordResponse queryRechargingRecordResponse, XhpcRechargeOrder xhpcRechargeOrder, QueryRechargingRecordResponse.DataDTO dataDTO) { + + dataDTO.setOrderNumber(xhpcRechargeOrder.getRechargeOrderNumber()); + dataDTO.setRechargeMethod(String.valueOf(xhpcRechargeOrder.getType())); + dataDTO.setRechargeMoney(xhpcRechargeOrder.getAmount().longValue()); + dataDTO.setOrderStatus(xhpcRechargeOrder.getStatus()); + dataDTO.setCreateTime(MyDateUtil.parseDateToStr(xhpcRechargeOrder.getCreateTime())); + queryRechargingRecordResponse.getData().add(dataDTO); + } + private void fillUserInfo(CardUserInfo cardUserInfo, Map userData) { cardUserInfo.setCardSerialNumber((String) userData.get("cardID")); diff --git a/xhpc-modules/xhpc-card/src/main/resources/mapper/TIccardLogMapper.xml b/xhpc-modules/xhpc-card/src/main/resources/mapper/TIccardLogMapper.xml index 762ca1a2..1ff8889b 100644 --- a/xhpc-modules/xhpc-card/src/main/resources/mapper/TIccardLogMapper.xml +++ b/xhpc-modules/xhpc-card/src/main/resources/mapper/TIccardLogMapper.xml @@ -91,6 +91,23 @@ AND createTime <= #{logEndTime} + + delete from t_iccard_log diff --git a/xhpc-modules/xhpc-card/src/main/resources/mapper/XhpcAppUserMapper.xml b/xhpc-modules/xhpc-card/src/main/resources/mapper/XhpcAppUserMapper.xml index c66ac2ab..1ccdc37f 100644 --- a/xhpc-modules/xhpc-card/src/main/resources/mapper/XhpcAppUserMapper.xml +++ b/xhpc-modules/xhpc-card/src/main/resources/mapper/XhpcAppUserMapper.xml @@ -57,6 +57,14 @@ limit #{currentPage},#{items} + delete from xhpc_app_user diff --git a/xhpc-modules/xhpc-card/src/main/resources/mapper/XhpcCommunityPersonnelMapper.xml b/xhpc-modules/xhpc-card/src/main/resources/mapper/XhpcCommunityPersonnelMapper.xml index f8c3b61c..b1955ad3 100644 --- a/xhpc-modules/xhpc-card/src/main/resources/mapper/XhpcCommunityPersonnelMapper.xml +++ b/xhpc-modules/xhpc-card/src/main/resources/mapper/XhpcCommunityPersonnelMapper.xml @@ -82,6 +82,13 @@ where create_type = 2 and create_id = #{operatorId} + delete from xhpc_community_personnel diff --git a/xhpc-modules/xhpc-card/src/main/resources/mapper/XhpcCustomersPersonnelMapper.xml b/xhpc-modules/xhpc-card/src/main/resources/mapper/XhpcCustomersPersonnelMapper.xml index df0c87de..c440236d 100644 --- a/xhpc-modules/xhpc-card/src/main/resources/mapper/XhpcCustomersPersonnelMapper.xml +++ b/xhpc-modules/xhpc-card/src/main/resources/mapper/XhpcCustomersPersonnelMapper.xml @@ -82,6 +82,13 @@ where create_type = 2 and create_id = #{operatorId} + delete from xhpc_customers_personnel