diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/JoinModeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/JoinModeEnum.java index 0c4b24555..65faf4608 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/JoinModeEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/JoinModeEnum.java @@ -44,4 +44,13 @@ public enum JoinModeEnum { public static boolean isFranchise(Integer code) { return code == FRANCHISE_DEPARTMENT.code || code == AFFILIATES.code; } + + public static JoinModeEnum getModelByCode(Integer code) { + for (JoinModeEnum e : JoinModeEnum.values()) { + if (e.getCode() == code) { + return e; + } + } + return null; + } } diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/wallet/YztStoreModel.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/wallet/YztStoreModel.java new file mode 100644 index 000000000..b31c55d26 --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/wallet/YztStoreModel.java @@ -0,0 +1,47 @@ +package com.cool.store.enums.wallet; + +import com.cool.store.enums.JoinModeEnum; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +/** + *

+ * 营帐通门店模式 + *

+ * + * @author wangff + * @since 2025/11/19 + */ +@Getter +@AllArgsConstructor +public enum YztStoreModel { + // 1.社会加盟 2.强管 3.强加盟 (门店模式) + + SOCIAL_JOIN(1, "社会加盟", Arrays.asList(JoinModeEnum.FRANCHISE_DEPARTMENT, JoinModeEnum.FRANCHISE_COMPANIES)), + STRONG_MANAGEMENT(2, "强管", Collections.singletonList(JoinModeEnum.FLAGSHIP_STORE)), + STRONG_JOIN(3, "强加盟", Collections.singletonList(JoinModeEnum.AFFILIATES)), + ; + + private final Integer model; + + private final String desc; + + /** + * 对应crm加盟模式枚举类 + */ + private final List joinModelList; + + public static Integer getYztStoreModel(Integer joinModel) { + JoinModeEnum joinModelEnum = JoinModeEnum.getModelByCode(joinModel); + for (YztStoreModel e : YztStoreModel.values()) { + if (e.joinModelList.contains(joinModelEnum)) { + return e.model; + } + } + return null; + } +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/wallet/BillPageDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/wallet/BillPageDTO.java index 162fd905d..999cf8cc6 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/dto/wallet/BillPageDTO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/wallet/BillPageDTO.java @@ -20,4 +20,14 @@ public class BillPageDTO { private List pageData; private WalletBasicPageInfo page; + + /** + * 收入 + */ + private Long getAmount; + + /** + * 支出 + */ + private Long useAmount; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/wallet/AccountBatchQueryRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/wallet/AccountBatchQueryRequest.java index 2018730dc..5337a09c6 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/wallet/AccountBatchQueryRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/wallet/AccountBatchQueryRequest.java @@ -23,8 +23,6 @@ public class AccountBatchQueryRequest { @ApiModelProperty(value = "门店id") private String outStoreId; - private Integer walletType; - @ApiModelProperty(value = "分页信息",required = true) private WalletBasicPageInfo page; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/wallet/AccountQueryRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/wallet/AccountQueryRequest.java new file mode 100644 index 000000000..e98f65417 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/wallet/AccountQueryRequest.java @@ -0,0 +1,21 @@ +package com.cool.store.request.wallet; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + *

+ * 账户查询Request + *

+ * + * @author wangff + * @since 2025/11/19 + */ +@Data +public class AccountQueryRequest extends StoreShopRequest { + @ApiModelProperty("钱包类型 1平安 2网商") + private Integer walletType; + + @ApiModelProperty("账户编号") + private String accountNo; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/wallet/StoreShopRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/wallet/StoreShopRequest.java index c33527642..ef7450aa2 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/wallet/StoreShopRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/wallet/StoreShopRequest.java @@ -18,7 +18,4 @@ public class StoreShopRequest { @ApiModelProperty("门店id,两者取一") private String storeId; - - @ApiModelProperty("钱包类型 1平安 2网商") - private Integer walletType; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/wallet/AccountBillPageVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/wallet/AccountBillPageVO.java new file mode 100644 index 000000000..da99bd058 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/wallet/AccountBillPageVO.java @@ -0,0 +1,40 @@ +package com.cool.store.vo.wallet; + +import com.github.pagehelper.PageInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.Objects; + +/** + *

+ * 账户交易列表分页VO + *

+ * + * @author wangff + * @since 2025/11/19 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class AccountBillPageVO { + @ApiModelProperty("分页数据") + PageInfo data; + + @ApiModelProperty("收入") + private BigDecimal getAmount; + + @ApiModelProperty("支出") + private BigDecimal useAmount; + + public AccountBillPageVO(PageInfo data, Long getAmount, Long useAmount) { + this.data = data; + BigDecimal denominator = new BigDecimal(100); + this.getAmount = new BigDecimal(Objects.nonNull(getAmount) ? getAmount : 0).divide(denominator, 2, RoundingMode.HALF_UP); + this.useAmount = new BigDecimal(Objects.nonNull(useAmount) ? useAmount : 0).divide(denominator, 2, RoundingMode.HALF_UP); + } +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SyncMainSysServerImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SyncMainSysServerImpl.java index e2a14ef65..89da73c43 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SyncMainSysServerImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SyncMainSysServerImpl.java @@ -1,20 +1,16 @@ package com.cool.store.service.impl; import com.alibaba.fastjson.JSONObject; -import com.cool.store.context.CurrentUserHolder; import com.cool.store.dao.*; import com.cool.store.entity.*; import com.cool.store.enums.*; import com.cool.store.enums.point.PaymentMethodEnum; -import com.cool.store.exception.ServiceException; -import com.cool.store.mapper.FranchiseFeeMapper; -import com.cool.store.mapper.SignFranchiseMapper; +import com.cool.store.enums.wallet.YztStoreModel; import com.cool.store.mq.producer.SimpleMessageService; import com.cool.store.request.StoreMasterDTO; -import com.cool.store.request.StoreRequestBody; -import com.cool.store.service.OperationLogService; +import com.cool.store.request.wallet.CreateStoreRequest; import com.cool.store.service.SyncMainSysServer; -import com.cool.store.service.UserAuthMappingService; +import com.cool.store.service.wallet.WalletApiService; import com.cool.store.utils.poi.StringUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; @@ -25,12 +21,6 @@ import javax.annotation.Resource; import java.math.BigDecimal; import java.time.LocalTime; import java.time.format.DateTimeFormatter; -import java.util.HashMap; -import java.util.Map; -import java.util.Objects; - -import static com.cool.store.enums.AuditExecuteEnum.FRANCHISEES; -import static com.cool.store.enums.ExtendFieldTypeEnum.*; /** * @Author: WangShuo @@ -48,39 +38,27 @@ public class SyncMainSysServerImpl implements SyncMainSysServer { @Resource private SimpleMessageService simpleMessageService; @Resource - private SignFranchiseMapper signFranchiseMapper; - @Resource private BuildInformationDAO buildInformationDAO; @Resource private PointInfoDAO pointInfoDAO; @Resource - FranchiseFeeMapper franchiseFeeMapper; - @Resource - private OperationLogDAO operationLogDAO; - @Resource private OrderSysInfoDAO orderSysInfoDAO; @Resource - private ShopStageInfoDAO shopStageInfoDAO; - @Resource - private PreparationServiceImpl preparationService; - @Resource - private UserAuthMappingService userAuthMappingService; - @Resource - private CommonService commonService; - @Resource private ShopInfoDAO shopInfoDAO; @Resource private LineInfoDAO lineInfoDAO; @Value("${mybatis.configuration.variables.enterpriseId}") private String eid; @Resource - private StoreDao storeDao; + private SignFranchiseDAO signFranchiseDAO; @Resource - SignFranchiseDAO signFranchiseDAO; + private PointDetailInfoDAO pointDetailDAO; @Resource - PointDetailInfoDAO pointDetailDAO; + private QualificationsInfoDAO qualificationsInfoDAO; @Resource - QualificationsInfoDAO qualificationsInfoDAO; + private RegionDao regionDao; + @Resource + private WalletApiService walletApiService; @Override @Async @@ -207,10 +185,35 @@ public class SyncMainSysServerImpl implements SyncMainSysServer { } storeMasterDTO.setSignerInfo(signerInfo); simpleMessageService.send(JSONObject.toJSONString(storeMasterDTO), RocketMqTagEnum.ZXJP_CREATE_STORE); + // 推送营帐通 + pushStoreToYzt(shopInfo, lineInfoDO); } catch (Exception e) { log.info("asdStore_error:{},shopId:{}", e.getMessage(), shopId.toString()); } } - + /** + * 钱包推送营帐通创建门店 + */ + public void pushStoreToYzt(ShopInfoDO shopInfoDO, LineInfoDO lineInfoDO) { + try { + RegionDO regionDO = regionDao.getRegionById(shopInfoDO.getRegionId()); + CreateStoreRequest createStoreRequest = CreateStoreRequest.builder() + .outStoreId(shopInfoDO.getStoreId()) + .storeSn(shopInfoDO.getShopCode()) + .storeName(shopInfoDO.getShopName()) + .orgCode(String.valueOf(regionDO.getId())) + .orgName(regionDO.getName()) + .phoneNumber(lineInfoDO.getMobile()) + .storeMode(YztStoreModel.getYztStoreModel(Integer.valueOf(shopInfoDO.getFranchiseBrand()))) + .province(shopInfoDO.getProvinceCode()) + .city(shopInfoDO.getCityCode()) + .district(shopInfoDO.getDistrictCode()) + .address(shopInfoDO.getDetailAddress()) + .build(); + walletApiService.createStore(createStoreRequest); + } catch (Exception e) { + log.error("推送营帐通钱包创建门店失败", e); + } + } } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/wallet/WalletService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/wallet/WalletService.java index 897321f95..39b1070a4 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/wallet/WalletService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/wallet/WalletService.java @@ -83,17 +83,31 @@ public interface WalletService { /** * 查询账户列表 - * @param request 门店idRequest + * @param request 账户查询Request * @return 账户信息VO列表 */ - List getAccountList(StoreShopRequest request); + List getAccountList(AccountQueryRequest request); + + /** + * 根据账户编号查询账户信息 + * @param request 账户查询Request + * @return 账户信息VO + */ + AccountInfoVO getAccountInfo(AccountQueryRequest request); /** * 交易流水 * @param request 交易流水查询Request * @return 账户交易列表VO列表 */ - PageInfo getBillPage(AccountBillQueryRequest request); + AccountBillPageVO getBillPage(AccountBillQueryRequest request); + + /** + * 账户交易详情 + * @param request 交易详情查询Request + * @return 交易详情VO + */ + BillDetailDTO getBillDetail(BillDetailRequest request); /** * 密码维护 diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/wallet/impl/WalletServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/wallet/impl/WalletServiceImpl.java index 816cbb818..06df62dfd 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/wallet/impl/WalletServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/wallet/impl/WalletServiceImpl.java @@ -59,7 +59,6 @@ public class WalletServiceImpl implements WalletService { private final ShopStageInfoDAO shopStageInfoDAO; private final ApplyLicenseMapper applyLicenseMapper; private final WalletApiService walletApiService; - private final RegionDao regionDao; private final WalletPaymentOrderDAO walletPaymentOrderDAO; private final LineInfoDAO lineInfoDAO; private final RedisUtilPool redisUtilPool; @@ -250,7 +249,7 @@ public class WalletServiceImpl implements WalletService { } @Override - public List getAccountList(StoreShopRequest request) { + public List getAccountList(AccountQueryRequest request) { String storeId = getStoreId(request); List accountInfo = walletApiService.getAccountInfo(new OutStoreIdRequest(storeId)); return accountInfo.stream() @@ -264,7 +263,15 @@ public class WalletServiceImpl implements WalletService { } @Override - public PageInfo getBillPage(AccountBillQueryRequest request) { + public AccountInfoVO getAccountInfo(AccountQueryRequest request) { + String storeId = getStoreId(request); + List accountInfo = walletApiService.getAccountInfo(new OutStoreIdRequest(storeId)); + AccountInfoDTO accountInfoDTO = accountInfo.stream().filter(v -> v.getAccountNo().equals(request.getAccountNo())).findFirst().get(); + return BeanUtil.toBean(accountInfoDTO, AccountInfoVO.class); + } + + @Override + public AccountBillPageVO getBillPage(AccountBillQueryRequest request) { ShopInfoDO shopInfo = shopInfoDAO.getShopInfo(request.getShopId()); if (Objects.isNull(shopInfo)) { throw new ServiceException(ErrorCodeEnum.SHOP_NOT_EXIST); @@ -286,7 +293,13 @@ public class WalletServiceImpl implements WalletService { .pageSize(request.getPageSize()) .build(); BillPageDTO billPage = walletApiService.getBillPage(billPageRequest); - return toPageInfo(billPage.getPageData(), AccountBillListVO.class, billPage.getPage()); + PageInfo data = toPageInfo(billPage.getPageData(), AccountBillListVO.class, billPage.getPage()); + return new AccountBillPageVO(data, billPage.getGetAmount(), billPage.getUseAmount()); + } + + @Override + public BillDetailDTO getBillDetail(BillDetailRequest request) { + return walletApiService.getBillDetail(request); } @Override diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/WalletController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/WalletController.java index db5cbdafe..dba73b2c9 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/WalletController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/WalletController.java @@ -2,9 +2,9 @@ package com.cool.store.controller.webb; import com.cool.store.dto.wallet.AccountInfoDTO; import com.cool.store.dto.wallet.TradeRecordDTO; +import com.cool.store.request.wallet.AccountQueryRequest; import com.cool.store.request.wallet.CoolAccountBatchQueryRequest; import com.cool.store.request.wallet.CoolTradeRecodePageRequest; -import com.cool.store.request.wallet.StoreShopRequest; import com.cool.store.response.ResponseResult; import com.cool.store.service.wallet.WalletService; import com.cool.store.vo.wallet.AccountInfoVO; @@ -14,7 +14,6 @@ import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; import java.util.List; /** @@ -34,7 +33,7 @@ public class WalletController { @ApiOperation("账户列表") @GetMapping("/accountList") - public ResponseResult> getAccountList(StoreShopRequest request) { + public ResponseResult> getAccountList(AccountQueryRequest request) { return ResponseResult.success(walletService.getAccountList(request)); } diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniWalletController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniWalletController.java index 1bc90bad3..581e8c17d 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniWalletController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniWalletController.java @@ -1,5 +1,6 @@ package com.cool.store.controller.webc; +import com.cool.store.dto.wallet.BillDetailDTO; import com.cool.store.request.wallet.*; import com.cool.store.response.ResponseResult; import com.cool.store.service.wallet.WalletService; @@ -56,16 +57,28 @@ public class MiniWalletController { @ApiOperation("账户列表") @GetMapping("/accountList") - public ResponseResult> getAccountList(StoreShopRequest request) { + public ResponseResult> getAccountList(AccountQueryRequest request) { return ResponseResult.success(walletService.getAccountList(request)); } + @ApiOperation("账户详情") + @GetMapping("/accountInfo") + public ResponseResult getAccountInfo(AccountQueryRequest request) { + return ResponseResult.success(walletService.getAccountInfo(request)); + } + @ApiOperation("账户流水") @PostMapping("/billPage") - public ResponseResult> getBillPage(@RequestBody @Validated AccountBillQueryRequest request) { + public ResponseResult getBillPage(@RequestBody @Validated AccountBillQueryRequest request) { return ResponseResult.success(walletService.getBillPage(request)); } + @ApiOperation("交易流水详情") + @GetMapping("/billDetail") + public ResponseResult getBillDetail(BillDetailRequest request) { + return ResponseResult.success(walletService.getBillDetail(request)); + } + @ApiOperation("密码维护") @PostMapping("/passwordUpdate") public ResponseResult passwordUpdate(@RequestBody @Validated AccountPasswordRequest request) {