fix:建店时候调用创建门店接口;流水接口新增收入支出字段;新增账户详情接口、交易详情接口

This commit is contained in:
wangff
2025-11-19 16:23:14 +08:00
parent 2335ecca4c
commit ff9be4e61b
12 changed files with 213 additions and 49 deletions

View File

@@ -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;
}
}

View File

@@ -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;
/**
* <p>
* 营帐通门店模式
* </p>
*
* @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<JoinModeEnum> 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;
}
}

View File

@@ -20,4 +20,14 @@ public class BillPageDTO {
private List<BillDTO> pageData;
private WalletBasicPageInfo page;
/**
* 收入
*/
private Long getAmount;
/**
* 支出
*/
private Long useAmount;
}

View File

@@ -23,8 +23,6 @@ public class AccountBatchQueryRequest {
@ApiModelProperty(value = "门店id")
private String outStoreId;
private Integer walletType;
@ApiModelProperty(value = "分页信息",required = true)
private WalletBasicPageInfo page;

View File

@@ -0,0 +1,21 @@
package com.cool.store.request.wallet;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* <p>
* 账户查询Request
* </p>
*
* @author wangff
* @since 2025/11/19
*/
@Data
public class AccountQueryRequest extends StoreShopRequest {
@ApiModelProperty("钱包类型 1平安 2网商")
private Integer walletType;
@ApiModelProperty("账户编号")
private String accountNo;
}

View File

@@ -18,7 +18,4 @@ public class StoreShopRequest {
@ApiModelProperty("门店id两者取一")
private String storeId;
@ApiModelProperty("钱包类型 1平安 2网商")
private Integer walletType;
}

View File

@@ -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;
/**
* <p>
* 账户交易列表分页VO
* </p>
*
* @author wangff
* @since 2025/11/19
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AccountBillPageVO {
@ApiModelProperty("分页数据")
PageInfo<AccountBillListVO> data;
@ApiModelProperty("收入")
private BigDecimal getAmount;
@ApiModelProperty("支出")
private BigDecimal useAmount;
public AccountBillPageVO(PageInfo<AccountBillListVO> 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);
}
}

View File

@@ -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);
}
}
}

View File

@@ -83,17 +83,31 @@ public interface WalletService {
/**
* 查询账户列表
* @param request 门店idRequest
* @param request 账户查询Request
* @return 账户信息VO列表
*/
List<AccountInfoVO> getAccountList(StoreShopRequest request);
List<AccountInfoVO> getAccountList(AccountQueryRequest request);
/**
* 根据账户编号查询账户信息
* @param request 账户查询Request
* @return 账户信息VO
*/
AccountInfoVO getAccountInfo(AccountQueryRequest request);
/**
* 交易流水
* @param request 交易流水查询Request
* @return 账户交易列表VO列表
*/
PageInfo<AccountBillListVO> getBillPage(AccountBillQueryRequest request);
AccountBillPageVO getBillPage(AccountBillQueryRequest request);
/**
* 账户交易详情
* @param request 交易详情查询Request
* @return 交易详情VO
*/
BillDetailDTO getBillDetail(BillDetailRequest request);
/**
* 密码维护

View File

@@ -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<AccountInfoVO> getAccountList(StoreShopRequest request) {
public List<AccountInfoVO> getAccountList(AccountQueryRequest request) {
String storeId = getStoreId(request);
List<AccountInfoDTO> accountInfo = walletApiService.getAccountInfo(new OutStoreIdRequest(storeId));
return accountInfo.stream()
@@ -264,7 +263,15 @@ public class WalletServiceImpl implements WalletService {
}
@Override
public PageInfo<AccountBillListVO> getBillPage(AccountBillQueryRequest request) {
public AccountInfoVO getAccountInfo(AccountQueryRequest request) {
String storeId = getStoreId(request);
List<AccountInfoDTO> 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<AccountBillListVO> 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

View File

@@ -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<List<AccountInfoVO>> getAccountList(StoreShopRequest request) {
public ResponseResult<List<AccountInfoVO>> getAccountList(AccountQueryRequest request) {
return ResponseResult.success(walletService.getAccountList(request));
}

View File

@@ -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<List<AccountInfoVO>> getAccountList(StoreShopRequest request) {
public ResponseResult<List<AccountInfoVO>> getAccountList(AccountQueryRequest request) {
return ResponseResult.success(walletService.getAccountList(request));
}
@ApiOperation("账户详情")
@GetMapping("/accountInfo")
public ResponseResult<AccountInfoVO> getAccountInfo(AccountQueryRequest request) {
return ResponseResult.success(walletService.getAccountInfo(request));
}
@ApiOperation("账户流水")
@PostMapping("/billPage")
public ResponseResult<PageInfo<AccountBillListVO>> getBillPage(@RequestBody @Validated AccountBillQueryRequest request) {
public ResponseResult<AccountBillPageVO> getBillPage(@RequestBody @Validated AccountBillQueryRequest request) {
return ResponseResult.success(walletService.getBillPage(request));
}
@ApiOperation("交易流水详情")
@GetMapping("/billDetail")
public ResponseResult<BillDetailDTO> getBillDetail(BillDetailRequest request) {
return ResponseResult.success(walletService.getBillDetail(request));
}
@ApiOperation("密码维护")
@PostMapping("/passwordUpdate")
public ResponseResult<Boolean> passwordUpdate(@RequestBody @Validated AccountPasswordRequest request) {