feat:部门、商户添加是否同步到正元

This commit is contained in:
dzc committed 2025-03-21 18:39:57 +08:00
1 parent 224bee7031
commit b7d7996c25
15 files changed
+79 -29

No files matched your search

@@ -7,6 +7,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
public class HardOrderCsVo implements BaseMchInterface, BaseHardInterface {
@@ -47,6 +48,8 @@ public class HardOrderCsVo implements BaseMchInterface, BaseHardInterface {
@Schema(description = "总盈利次数")
private BigDecimal totalProfitCount;
private LocalDateTime day;
/**
* 导出相关
*/
@@ -14,6 +14,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bsd.pjcloud.common.core.util.BeanUtils;
import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.common.data.datascope.DataScope;
import com.bsd.pjcloud.common.idempotent.annotation.Idempotent;
import com.bsd.pjcloud.common.log.annotation.SysLog;
import com.bsd.pjcloud.common.security.annotation.Inner;
@@ -90,6 +91,13 @@ public class HardOrderController {
return R.ok(hardwareOrderService.pagejoin(page, dto));
}
@Operation(summary = "app商户查询订单列表", description = "app商户查询订单列表")
@GetMapping("/app/mch-page-join")
public R appMchPageJoin(@ParameterObject Page page, @ParameterObject HardOrderDto dto) {
dto.setIsFindCarList(false);
return R.ok(hardwareOrderService.pagejoin(page, dto));
}
@Operation(summary = "app查询订单详情", description = "app查询订单详情")
@GetMapping("/app/detail")
public R appDetail(@RequestParam Long id) {
@@ -139,7 +147,7 @@ public class HardOrderController {
@GetMapping("/page-join")
@PreAuthorize("@pms.hasPermission('hard_hardwareOrder_view')")
public R pageJoin(@ParameterObject Page page, @ParameterObject HardOrderDto dto) {
return R.ok(hardwareOrderService.scopePageList(page, dto));
return R.ok(hardwareOrderService.scopePageList(page, dto, DataScope.of()));
}
@Operation(summary = "通过id查询", description = "通过id查询")
@@ -8,7 +8,9 @@ import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.fill.FillConfig;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.common.data.datascope.DataScope;
import com.bsd.pjcloud.common.log.annotation.SysLog;
import com.bsd.pjcloud.hard.api.constant.HardTypeEnum;
import com.bsd.pjcloud.hard.api.constant.order.HardOrderStatusEnum;
@@ -25,6 +27,7 @@ import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import org.springdoc.core.annotations.ParameterObject;
import org.springframework.http.HttpHeaders;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
@@ -43,35 +46,45 @@ import java.util.Map;
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class HardOrderTotalController {
private final HardOrderTotalService HardOrderTotalService;
private final HardOrderTotalService hardOrderTotalService;
/* ************************************* start 远程调用 start ************************************* */
/* ************************************* end 远程调用 end ************************************* */
/* ************************************* start app start ************************************* */
@Operation(summary = "app查询商户流水记录", description = "app查询订单列表根据权限")
@GetMapping("/app/mch-page-join-scope")
public R appMchTotal(@ParameterObject Page page, @ParameterObject HardOrderDto dto) {
dto.setIsFindCarList(false);
return R.ok(hardOrderTotalService.listCsByDay(page, dto));
}
/* ************************************* end app end ************************************* */
@PostMapping("/page-list-sb")
@Operation(summary = "设备交易记录")
public R<List<HardOrderSbVo>> pageListSb(@RequestBody HardOrderDto dto) {
return R.ok(HardOrderTotalService.listSb(dto));
return R.ok(hardOrderTotalService.listSb(dto));
}
@PostMapping("/page-list-cs")
@Operation(summary = "商户交易记录")
public R<List<HardOrderCsVo>> pageListCs(@RequestBody HardOrderDto dto) {
dto.setOrderStatusCodes(HardOrderStatusEnum.getPaySuccessCodes());
return R.ok(HardOrderTotalService.listCs(dto));
return R.ok(hardOrderTotalService.listCs(dto));
}
@PostMapping("/page-list-payType")
@Operation(summary = "支付方式交易记录")
public R<List<HardOrderPayTypeVo>> pageListPayType(@RequestBody HardOrderDto dto) {
return R.ok(HardOrderTotalService.listPayType(dto));
return R.ok(hardOrderTotalService.listPayType(dto));
}
@PostMapping("/page-list-dept")
@Operation(summary = "部门交易记录")
public R<List<HardDeptTotalVo>> pageListDept(@RequestBody HardDeptTotalDto dto) {
return R.ok(HardOrderTotalService.pageListDept(dto));
return R.ok(hardOrderTotalService.pageListDept(dto));
}
@Operation(summary = "设备交易记录导出", description = "设备交易记录导出")
@@ -80,7 +93,7 @@ public class HardOrderTotalController {
@PreAuthorize("@pms.hasPermission('hard_hardTotal_export_sb')")
public void exportSb(HttpServletResponse response, HardOrderDto dto) throws IOException {
dto.setOrderStatusCodes(HardOrderStatusEnum.getPaySuccessCodes());
List<HardOrderSbVo> list = HardOrderTotalService.listSb(dto);
List<HardOrderSbVo> list = hardOrderTotalService.listSb(dto);
try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(ResourceUtil.getStream("file/设备交易金额汇总.xlsx")).build()) {
WriteSheet writeSheet = EasyExcel.writerSheet().build();
FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
@@ -154,7 +167,7 @@ public class HardOrderTotalController {
@PreAuthorize("@pms.hasPermission('hard_hardTotal_export_cs')")
public void exportTk(HttpServletResponse response, HardOrderDto dto) throws IOException {
dto.setOrderStatusCodes(HardOrderStatusEnum.getPaySuccessCodes());
List<HardOrderCsVo> list = HardOrderTotalService.listCs(dto);
List<HardOrderCsVo> list = hardOrderTotalService.listCs(dto);
try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(ResourceUtil.getStream("file/商户交易金额汇总.xlsx")).build()) {
WriteSheet writeSheet = EasyExcel.writerSheet().build();
FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
@@ -226,7 +239,7 @@ public class HardOrderTotalController {
@SysLog("支付方式交易记录")
@PreAuthorize("@pms.hasPermission('hard_hardTotal_export_payType')")
public void exportPayType(HttpServletResponse response, HardOrderDto dto) throws IOException {
List<HardOrderPayTypeVo> list = HardOrderTotalService.listPayType(dto);
List<HardOrderPayTypeVo> list = hardOrderTotalService.listPayType(dto);
try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(ResourceUtil.getStream("file/支付方式交易汇总.xlsx")).build()) {
WriteSheet writeSheet = EasyExcel.writerSheet().build();
FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
@@ -298,7 +311,7 @@ public class HardOrderTotalController {
@SysLog("部门交易记录导出")
@PreAuthorize("@pms.hasPermission('hard_hardTotal_export_dept')")
public void exportDept(HttpServletResponse response, @RequestBody HardDeptTotalDto dto) throws IOException {
List<HardDeptTotalVo> list = HardOrderTotalService.pageListDept(dto);
List<HardDeptTotalVo> list = hardOrderTotalService.pageListDept(dto);
try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(ResourceUtil.getStream("file/部门交易金额汇总.xlsx")).build()) {
WriteSheet writeSheet = EasyExcel.writerSheet().build();
FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
@@ -52,7 +52,7 @@ public interface HardOrderMapper extends PjcloudBaseMapper<HardOrderEntity> {
return wrapper;
}
default Page<HardOrderVo> scopePageList(Page page, HardOrderDto dto) {
default Page<HardOrderVo> scopePageList(Page page, HardOrderDto dto, DataScope dataScope) {
Page list = selectPageByScope(page, commonWrapper(dto), DataScope.of());
list.setRecords(BeanUtils.toBean(list.getRecords(), HardOrderVo.class));
return list;
@@ -3,6 +3,7 @@ package com.bsd.pjcloud.hard.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bsd.pjcloud.common.core.constant.enums.YesNoEnum;
import com.bsd.pjcloud.common.data.datascope.DataScope;
import com.bsd.pjcloud.hard.api.dto.hard.HandCancelCodeDto;
import com.bsd.pjcloud.hard.api.dto.hard.HardCreateOrderDto;
import com.bsd.pjcloud.hard.api.dto.order.HardOrderDto;
@@ -17,7 +18,7 @@ public interface HardOrderService extends IService<HardOrderEntity> {
Page<HardOrderVo> pagejoin(Page page, HardOrderDto dto);
Page<HardOrderVo> scopePageList(Page page, HardOrderDto dto);
Page<HardOrderVo> scopePageList(Page page, HardOrderDto dto, DataScope dataScope);
List<HardOrderVo> scopeList(HardOrderDto dto);
@@ -1,5 +1,6 @@
package com.bsd.pjcloud.hard.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bsd.pjcloud.hard.api.dto.order.HardDeptTotalDto;
import com.bsd.pjcloud.hard.api.dto.order.HardOrderDto;
import com.bsd.pjcloud.hard.api.vo.order.*;
@@ -32,4 +33,9 @@ public interface HardOrderTotalService {
* 正元统计交易数据同步
*/
HardZyCardSyncVo totalYearMonthDay(HardOrderDto dto);
/**
* 根据天查询每个商户的流水
*/
Object listCsByDay(Page page, HardOrderDto dto);
}
@@ -17,6 +17,7 @@ import com.bsd.pjcloud.common.core.constant.enums.YesNoEnum;
import com.bsd.pjcloud.common.core.util.BeanUtils;
import com.bsd.pjcloud.common.core.util.CollectionUtils;
import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.common.data.datascope.DataScope;
import com.bsd.pjcloud.hard.api.constant.HardTypeEnum;
import com.bsd.pjcloud.hard.api.constant.order.HardOrderStatusEnum;
import com.bsd.pjcloud.hard.api.constant.order.HardOrderTypeEnum;
@@ -120,8 +121,8 @@ public class HardOrderServiceImpl extends ServiceImpl<HardOrderMapper, HardOrder
}
@Override
public Page<HardOrderVo> scopePageList(Page page, HardOrderDto dto) {
Page<HardOrderVo> list = baseMapper.scopePageList(page, dto);
public Page<HardOrderVo> scopePageList(Page page, HardOrderDto dto, DataScope dataScope) {
Page<HardOrderVo> list = baseMapper.scopePageList(page, dto, dataScope);
if (ObjectUtil.isNotEmpty(list.getRecords())) {
// 用户
List<Long> userIds = list.getRecords().stream().map(HardOrderVo::getUserId).filter(ObjectUtil::isNotEmpty).distinct().toList();
@@ -71,6 +71,12 @@ public class SysDept extends Model<SysDept> {
@Schema(description = "排序值")
private Integer sortOrder;
/**
* 是否同步到正元
*/
@Schema(description = "是否同步到正元")
private String isSyncZy;
/**
* 创建人
*/
@@ -40,9 +40,6 @@ public interface RemoteDeptService {
/**
* 获取所有部门接口
*
* @param parentDeptId 父部门ID
* @return R 返回结果对象,包含所有部门信息列表
*/
@GetMapping("/dept/list")
R<List<SysDept>> getAllDept(@RequestParam("parentDeptId") Long parentDeptId);
@@ -19,9 +19,6 @@
package com.bsd.pjcloud.admin.controller;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bsd.pjcloud.admin.api.dto.DeptAllListDto;
import com.bsd.pjcloud.admin.api.entity.SysDept;
import com.bsd.pjcloud.admin.api.vo.DeptExcelVO;
@@ -37,7 +34,6 @@ import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.AllArgsConstructor;
import org.springdoc.core.annotations.ParameterObject;
import org.springframework.http.HttpHeaders;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
@@ -217,9 +213,6 @@ public class SysDeptController {
/**
* 查询部门所属的分组部门
*
* @param deptId
* @return
*/
@Inner
@GetMapping("/getParentDeptHardGroup")
@@ -73,9 +73,6 @@ public interface SysDeptService extends IService<SysDept> {
/**
* 获取部门的所有后代部门列表
*
* @param deptId 部门ID
* @return 后代部门列表
*/
List<SysDept> listDescendant(Long deptId);
@@ -37,6 +37,7 @@ import com.bsd.pjcloud.admin.api.vo.DeptExcelVO;
import com.bsd.pjcloud.admin.api.vo.OrgTreeVO;
import com.bsd.pjcloud.admin.mapper.*;
import com.bsd.pjcloud.admin.service.SysDeptService;
import com.bsd.pjcloud.common.core.constant.enums.YesNoEnum;
import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.common.data.datascope.DataScope;
import com.bsd.pjcloud.common.excel.vo.ErrorMessage;
@@ -94,6 +94,12 @@ public class MchManageEntity extends Model<MchManageEntity> {
@Schema(description = "商户地址")
private String addressDes;
/**
* 是否同步到正元
*/
@Schema(description = "是否同步到正元")
private String isSyncZy;
/**
* 创建人
*/
@@ -41,6 +41,7 @@ public interface MchManageMapper extends PjcloudBaseMapper<MchManageEntity> {
default List<MchManageVo> list(MchManageDto dto) {
MPJLambdaQueryWrapper<MchManageEntity> wrapper = new MPJLambdaQueryWrapper<MchManageEntity>()
.selectAll(MchManageEntity.class)
.eq(ObjectUtil.isNotEmpty(dto.getIsSyncZy()), MchManageEntity::getIsSyncZy, dto.getIsSyncZy())
.eq(ObjectUtil.isNotEmpty(dto.getId()), MchManageEntity::getId, dto.getId())
.eq(ObjectUtil.isNotEmpty(dto.getDeptId()), MchManageEntity::getDeptId, dto.getDeptId())
.likeIfExists(MchManageEntity::getName, dto.getName())
@@ -11,6 +11,7 @@ import com.bsd.pjcloud.admin.api.entity.SysRole;
import com.bsd.pjcloud.admin.api.feign.RemoteDeptService;
import com.bsd.pjcloud.admin.api.feign.RemoteRoleService;
import com.bsd.pjcloud.admin.api.feign.RemoteUserService;
import com.bsd.pjcloud.common.core.constant.enums.YesNoEnum;
import com.bsd.pjcloud.common.data.datascope.DataScope;
import com.bsd.pjcloud.common.data.datascope.DataScopeFuncEnum;
import com.bsd.pjcloud.thirdparty.api.feign.RemoterThirdZyService;
@@ -73,6 +74,7 @@ public class WalletThirdZyServiceImpl implements WalletThirdZyService {
@Override
public void syncAllMch(Long mchId, Boolean isDel) {
MchManageDto dto = new MchManageDto();
dto.setIsSyncZy(YesNoEnum.YES.getCode());
if (ObjectUtil.isNotEmpty(mchId)) {
dto.setId(mchId);
}
@@ -122,6 +124,7 @@ public class WalletThirdZyServiceImpl implements WalletThirdZyService {
if (ObjectUtil.isNotEmpty(deptId)) {
deptList = deptList.stream().filter(v -> ObjectUtil.equals(v.getDeptId(), deptId)).toList();
}
deptList = deptList.stream().filter(v -> ObjectUtil.equals(v.getIsSyncZy(), YesNoEnum.YES.getCode())).toList();
if (ObjectUtil.isEmpty(deptList)) {
log.info("|{}|同步到正元全部商户部门信息错误deptList为空", TAG);
return;
@@ -159,6 +162,7 @@ public class WalletThirdZyServiceImpl implements WalletThirdZyService {
}
// 查询部门信息
List<SysDept> deptList = remoteDeptService.getAllDept(null).getData();
deptList = deptList.stream().filter(v -> ObjectUtil.equals(v.getIsSyncZy(), YesNoEnum.YES.getCode())).toList();
if (ObjectUtil.isEmpty(deptList)) {
log.info("|{}| syncAllRole 错误 deptList为空", TAG);
return;
@@ -197,6 +201,14 @@ public class WalletThirdZyServiceImpl implements WalletThirdZyService {
log.error("|{}|syncAllUser 同步到正元全部身份信息错误roleList为空", TAG);
return;
}
// 查询可以同步到正元的部门
List<SysDept> deptList = remoteDeptService.getAllDept(null).getData();
deptList = deptList.stream().filter(v -> ObjectUtil.equals(v.getIsSyncZy(), YesNoEnum.YES.getCode())).toList();
if (ObjectUtil.isEmpty(deptList)) {
log.info("|{}| syncAllUser 错误 可以同步到正元的部门为空", TAG);
return;
}
List<Long> syncZyDeptIds = deptList.stream().map(SysDept::getDeptId).toList();
Optional<SysRole> defaultUserRole = roleList.stream().filter(v -> ObjectUtil.equals(v.getRoleCode(), DEFAULT_USER_ROLE_CODE)).findFirst();
if (defaultUserRole.isEmpty()) {
log.error("|{}|syncAllUser 同步到正元全部身份信息错误defaultUserRole为空", TAG);
@@ -210,7 +222,7 @@ public class WalletThirdZyServiceImpl implements WalletThirdZyService {
}
int total = 0;
while (true) {
int syncCount = syncAllUserGroup(page, userId, defaultUserRole.get().getRoleId(), walletType.getId());
int syncCount = syncAllUserGroup(page, userId, defaultUserRole.get().getRoleId(), walletType.getId(), syncZyDeptIds);
if (syncCount > 0) {
total += syncCount;
}
@@ -221,7 +233,7 @@ public class WalletThirdZyServiceImpl implements WalletThirdZyService {
}
private int syncAllUserGroup(Page page, Long userId, Long roleId, Long walletTypeId) {
private int syncAllUserGroup(Page page, Long userId, Long roleId, Long walletTypeId, List<Long> syncZyDeptIds) {
WalletManageDto query = new WalletManageDto();
query.setWalletTypeId(walletTypeId);
if (ObjectUtil.isNotEmpty(userId)) query.setUserId(userId);
@@ -238,6 +250,11 @@ public class WalletThirdZyServiceImpl implements WalletThirdZyService {
log.error("|{}|syncAllUserGroup用户不存在WalletManageVo为空|{}|", TAG, JSONUtil.toJsonStr(v));
continue;
}
// 校验用户是否在可以同步的正元部门下面
if (!syncZyDeptIds.contains(user.getSysUser().getDeptId())) {
log.error("|{}|syncAllUserGroup用户不在可以同步的正元部门下面|{}|", TAG, JSONUtil.toJsonStr(v));
continue;
}
MchManageVo mch = mchManageService.getFirstMchByDeptId(user.getSysUser().getDeptId());
if (ObjectUtil.isEmpty(mch)) {
log.error("|{}|syncAllUserGroup用户部门商户id为空WalletManageVo|{}|", TAG, JSONUtil.toJsonStr(v));