feat(shop): 添加店铺智能柜数量统计功能

在ShopDTO、ShopEntity和ShopMapper中添加cabinetCount字段,用于统计每个店铺关联的智能柜数量
修改查询逻辑,通过LEFT JOIN和COUNT计算智能柜数量
调整SearchShopQuery中的查询条件以支持新的统计功能
This commit is contained in:
dzq 2025-06-17 15:11:03 +08:00
parent a7d0c891b9
commit ef875a0810
6 changed files with 31 additions and 14 deletions

View File

@ -498,8 +498,12 @@ public class QywxScheduleJob {
localUser.setGender(String.valueOf(wxUser.getGender())); localUser.setGender(String.valueOf(wxUser.getGender()));
localUser.setEmail(wxUser.getEmail()); localUser.setEmail(wxUser.getEmail());
localUser.setBizMail(wxUser.getBiz_mail()); localUser.setBizMail(wxUser.getBiz_mail());
localUser.setDirectLeader(StringUtils.join(wxUser.getDirect_leader(), ",")); if (wxUser.getDirect_leader()!= null && !wxUser.getDirect_leader().isEmpty()) {
localUser.setIsLeaderInDept(StringUtils.join(wxUser.getIs_leader_in_dept(), ",")); localUser.setDirectLeader(wxUser.getDirect_leader().get(0));
}
if (wxUser.getIs_leader_in_dept()!= null &&!wxUser.getIs_leader_in_dept().isEmpty()) {
localUser.setIsLeaderInDept(String.valueOf(wxUser.getIs_leader_in_dept().get(0)));
}
localUser.setTelephone(wxUser.getTelephone()); localUser.setTelephone(wxUser.getTelephone());
localUser.setAlias(wxUser.getAlias()); localUser.setAlias(wxUser.getAlias());
localUser.setAddress(wxUser.getAddress()); localUser.setAddress(wxUser.getAddress());
@ -533,8 +537,12 @@ public class QywxScheduleJob {
newUser.setGender(String.valueOf(wxUser.getGender())); newUser.setGender(String.valueOf(wxUser.getGender()));
newUser.setEmail(wxUser.getEmail()); newUser.setEmail(wxUser.getEmail());
newUser.setBizMail(wxUser.getBiz_mail()); newUser.setBizMail(wxUser.getBiz_mail());
newUser.setDirectLeader(StringUtils.join(wxUser.getDirect_leader(), ",")); if (wxUser.getDirect_leader()!= null && !wxUser.getDirect_leader().isEmpty()) {
newUser.setIsLeaderInDept(StringUtils.join(wxUser.getIs_leader_in_dept(), ",")); newUser.setDirectLeader(wxUser.getDirect_leader().get(0));
}
if (wxUser.getIs_leader_in_dept()!= null &&!wxUser.getIs_leader_in_dept().isEmpty()) {
newUser.setIsLeaderInDept(String.valueOf(wxUser.getIs_leader_in_dept().get(0)));
}
newUser.setTelephone(wxUser.getTelephone()); newUser.setTelephone(wxUser.getTelephone());
newUser.setAlias(wxUser.getAlias()); newUser.setAlias(wxUser.getAlias());
newUser.setAddress(wxUser.getAddress()); newUser.setAddress(wxUser.getAddress());

View File

@ -25,7 +25,7 @@ public class ShopApplicationService {
private final ShopModelFactory shopModelFactory; private final ShopModelFactory shopModelFactory;
public PageDTO<ShopDTO> getShopList(SearchShopQuery<ShopEntity> query) { public PageDTO<ShopDTO> getShopList(SearchShopQuery<ShopEntity> query) {
Page<ShopEntity> page = shopService.page(query.toPage(), query.toQueryWrapper()); Page<ShopEntity> page = shopService.getShopList(query.toPage(), query.toQueryWrapper());
List<ShopDTO> dtoList = page.getRecords().stream() List<ShopDTO> dtoList = page.getRecords().stream()
.map(ShopDTO::new) .map(ShopDTO::new)
.collect(Collectors.toList()); .collect(Collectors.toList());

View File

@ -55,6 +55,10 @@ public class ShopEntity extends BaseEntity<ShopEntity> {
@TableField("cover_img") @TableField("cover_img")
private String coverImg; private String coverImg;
@ApiModelProperty("关联的智能柜数量")
@TableField(exist = false)
private Integer cabinetCount;
@Override @Override
public Serializable pkVal() { public Serializable pkVal() {
return this.shopId; return this.shopId;

View File

@ -18,8 +18,9 @@ import java.util.List;
* @since 2025-05-09 * @since 2025-05-09
*/ */
public interface ShopMapper extends BaseMapper<ShopEntity> { public interface ShopMapper extends BaseMapper<ShopEntity> {
@Select("SELECT * " + @Select("SELECT s.*, COUNT(sc.cabinet_id) AS cabinetCount " +
"FROM shop " + "FROM shop s " +
"LEFT JOIN smart_cabinet sc ON sc.shop_id = s.shop_id AND sc.deleted = 0 " +
"${ew.customSqlSegment}") "${ew.customSqlSegment}")
Page<ShopEntity> getShopList( Page<ShopEntity> getShopList(
Page<ShopEntity> page, Page<ShopEntity> page,

View File

@ -40,4 +40,7 @@ public class ShopDTO {
@ExcelColumn(name = "封面图URL") @ExcelColumn(name = "封面图URL")
private String coverImg; private String coverImg;
@ExcelColumn(name = "智能柜数量")
private Integer cabinetCount;
} }

View File

@ -25,13 +25,14 @@ public class SearchShopQuery<T> extends AbstractPageQuery<T> {
QueryWrapper<T> queryWrapper = new QueryWrapper<>(); QueryWrapper<T> queryWrapper = new QueryWrapper<>();
queryWrapper queryWrapper
.like(StrUtil.isNotEmpty(shopName), "shop_name", shopName) .like(StrUtil.isNotEmpty(shopName), "s.shop_name", shopName)
.eq(StrUtil.isNotEmpty(enable), "enable", enable) .eq(StrUtil.isNotEmpty(enable), "s.enable", enable)
.eq(StrUtil.isNotEmpty(corpid), "corpid", corpid) .eq(StrUtil.isNotEmpty(corpid), "s.corpid", corpid)
.eq(belongType != null, "belong_type", belongType) .eq(belongType != null, "s.belong_type", belongType)
.eq(mode != null, "mode", mode) .eq(mode != null, "s.mode", mode)
.eq(balanceEnable != null, "balance_enable", balanceEnable) .eq(balanceEnable != null, "s.balance_enable", balanceEnable)
.between(startTime != null && endTime != null, "create_time", startTime, endTime); .between(startTime != null && endTime != null, "s.create_time", startTime, endTime)
.groupBy("s.shop_id");
this.timeRangeColumn = "create_time"; this.timeRangeColumn = "create_time";