24282 1 month ago
parent
commit
f60795034a

+ 71 - 0
jy-business/src/main/java/com/jy/business/corporation/controller/CorporationShopController.java

@@ -0,0 +1,71 @@
+package com.jy.business.corporation.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jy.business.corporation.model.dto.CorporationShopDto;
+import com.jy.business.corporation.model.dto.CorporationShopSelectDto;
+import com.jy.business.corporation.model.vo.CorporationShopVo;
+import com.jy.business.corporation.service.CorporationShopService;
+import com.jy.framework.model.base.BaseSelectDto;
+import jakarta.annotation.Resource;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 商铺信息 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2025-08-11
+ */
+@RestController
+@RequestMapping("/corporationShop")
+public class CorporationShopController {
+
+    @Resource
+    private CorporationShopService corporationShopService;
+
+    /**
+     * 商铺信息分页
+     */
+    @GetMapping("/getPage")
+    public Page<CorporationShopVo> getPage(CorporationShopSelectDto dto) {
+        return corporationShopService.getPage(dto);
+    }
+
+    /**
+     * 商铺信息明细
+     */
+    @GetMapping("/getDetail")
+    public CorporationShopVo getDetail(BaseSelectDto dto) {
+        return corporationShopService.getDetail(dto.getId());
+    }
+
+    /**
+     * 商铺信息新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody CorporationShopDto dto) {
+        corporationShopService.add(dto);
+    }
+
+    /**
+     * 商铺信息编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody CorporationShopDto dto) {
+        corporationShopService.edit(dto);
+    }
+
+    /**
+     * 商铺信息删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        corporationShopService.delete(dto.getIdList());
+    }
+
+}

+ 61 - 0
jy-business/src/main/java/com/jy/business/corporation/dao/CorporationShopDao.java

@@ -0,0 +1,61 @@
+package com.jy.business.corporation.dao;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jy.business.corporation.mapper.CorporationShopMapper;
+import com.jy.business.corporation.model.dto.CorporationShopSelectDto;
+import com.jy.business.corporation.model.entity.CorporationShop;
+import com.jy.business.corporation.model.table.CorporationShopTable;
+import com.jy.business.corporation.model.table.CorporationTable;
+import com.jy.business.corporation.model.vo.CorporationShopVo;
+import com.jy.framework.model.base.BaseDao;
+import com.jy.system.service.AuthService;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+
+@Service
+public class CorporationShopDao extends BaseDao<CorporationShopMapper, CorporationShop> {
+
+    @Resource
+    private AuthService authService;
+
+    /**
+     * 商铺信息分页
+     */
+    public Page<CorporationShopVo> getPage(CorporationShopSelectDto dto) {
+        CorporationShopTable cs = CorporationShopTable.cs;
+        CorporationTable c = CorporationTable.c;
+
+        return sql(CorporationShopVo.class)
+                .select(
+                        cs.all,
+                        c.name.as(CorporationShopVo::getCorporationName)
+                )
+                .from(cs)
+                .leftJoin(c).on(c.id.eq(cs.corporationId))
+                .where(
+                        cs.createUser.in(authService.getUserPermissionSet())
+                )
+                .orderBy(
+                        cs.id.desc()
+                )
+                .page(dto.getPage());
+    }
+
+    /**
+     * 商铺信息明细
+     */
+    public CorporationShopVo getDetail(Long id) {
+        CorporationShopTable cs = CorporationShopTable.cs;
+
+        return sql(CorporationShopVo.class)
+                .select(
+                        cs.all
+                )
+                .from(cs)
+                .where(
+                        cs.id.eq(id)
+                )
+                .one();
+    }
+
+}

+ 16 - 0
jy-business/src/main/java/com/jy/business/corporation/mapper/CorporationShopMapper.java

@@ -0,0 +1,16 @@
+package com.jy.business.corporation.mapper;
+
+import com.jy.business.corporation.model.entity.CorporationShop;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 商铺信息 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2025-08-11
+ */
+public interface CorporationShopMapper extends BaseMapper<CorporationShop> {
+
+}

+ 5 - 0
jy-business/src/main/java/com/jy/business/corporation/mapper/xml/CorporationShopMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jy.business.corporation.mapper.CorporationShopMapper">
+
+</mapper>

+ 17 - 0
jy-business/src/main/java/com/jy/business/corporation/model/dto/CorporationShopDto.java

@@ -0,0 +1,17 @@
+package com.jy.business.corporation.model.dto;
+
+import com.jy.business.corporation.model.entity.CorporationShop;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 商铺信息新增编辑入参实体
+ *
+ * @author 
+ * @since 2025-08-11
+ */
+@Getter
+@Setter
+public class CorporationShopDto extends CorporationShop {
+
+}

+ 19 - 0
jy-business/src/main/java/com/jy/business/corporation/model/dto/CorporationShopSelectDto.java

@@ -0,0 +1,19 @@
+package com.jy.business.corporation.model.dto;
+
+import com.jy.framework.model.base.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 商铺信息列表查询入参实体
+ *
+ * @author
+ * @since 2025-08-11
+ */
+@Getter
+@Setter
+public class CorporationShopSelectDto extends BaseSelectDto {
+
+
+
+}

+ 71 - 0
jy-business/src/main/java/com/jy/business/corporation/model/entity/CorporationShop.java

@@ -0,0 +1,71 @@
+package com.jy.business.corporation.model.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jy.framework.model.base.BaseIdPo;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 商铺信息
+ * </p>
+ *
+ * @author 
+ * @since 2025-08-11
+ */
+@Getter
+@Setter
+@TableName("corporation_shop")
+public class CorporationShop extends BaseIdPo {
+
+    /**
+     * 店铺名称
+     */
+    private String name;
+
+    /**
+     * 公司id
+     */
+    private Long corporationId;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 创建人
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Long createUser;
+
+    /**
+     * 创建时间
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Date createTime;
+
+    /**
+     * 更新人
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updateUser;
+
+    /**
+     * 更新时间
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Date updateTime;
+
+    /**
+     * 逻辑删除标记
+     */
+    @TableLogic
+    @TableField(fill = FieldFill.INSERT)
+    private String delFlag;
+
+}

+ 69 - 0
jy-business/src/main/java/com/jy/business/corporation/model/table/CorporationShopTable.java

@@ -0,0 +1,69 @@
+package com.jy.business.corporation.model.table;
+
+import com.jy.business.corporation.model.entity.CorporationShop;
+import com.jy.framework.mybatis.join.QueryColumn;
+import com.jy.framework.mybatis.join.Table;
+
+public class CorporationShopTable extends Table<CorporationShop> {
+
+    public static CorporationShopTable corporation_shop = new CorporationShopTable();
+    public static CorporationShopTable cs = corporation_shop.as("cs");
+
+    /**
+     * 店铺id
+     */
+    public QueryColumn id = this.field(CorporationShop::getId);
+
+    /**
+     * 店铺名称
+     */
+    public QueryColumn name = this.field(CorporationShop::getName);
+
+    /**
+     * 公司id
+     */
+    public QueryColumn corporationId = this.field(CorporationShop::getCorporationId);
+
+    /**
+     * 备注
+     */
+    public QueryColumn remark = this.field(CorporationShop::getRemark);
+
+    /**
+     * 创建人
+     */
+    public QueryColumn createUser = this.field(CorporationShop::getCreateUser);
+
+    /**
+     * 创建时间
+     */
+    public QueryColumn createTime = this.field(CorporationShop::getCreateTime);
+
+    /**
+     * 更新人
+     */
+    public QueryColumn updateUser = this.field(CorporationShop::getUpdateUser);
+
+    /**
+     * 更新时间
+     */
+    public QueryColumn updateTime = this.field(CorporationShop::getUpdateTime);
+
+    /**
+     * 逻辑删除标记
+     */
+    public QueryColumn delFlag = this.field(CorporationShop::getDelFlag);
+
+    private CorporationShopTable() {
+        super(CorporationShop.class);
+    }
+
+    private CorporationShopTable(String alias) {
+        super(CorporationShop.class, alias);
+    }
+
+    public CorporationShopTable as(String alias) {
+        return new CorporationShopTable(alias);
+    }
+
+}

+ 22 - 0
jy-business/src/main/java/com/jy/business/corporation/model/vo/CorporationShopVo.java

@@ -0,0 +1,22 @@
+package com.jy.business.corporation.model.vo;
+
+import com.jy.business.corporation.model.entity.CorporationShop;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 商铺信息列表查询返回值实体
+ *
+ * @author 
+ * @since 2025-08-11
+ */
+@Getter
+@Setter
+public class CorporationShopVo extends CorporationShop {
+
+    /**
+     * 公司名称
+     */
+    private String corporationName;
+
+}

+ 45 - 0
jy-business/src/main/java/com/jy/business/corporation/service/CorporationShopService.java

@@ -0,0 +1,45 @@
+package com.jy.business.corporation.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jy.business.corporation.model.dto.CorporationShopDto;
+import com.jy.business.corporation.model.dto.CorporationShopSelectDto;
+import com.jy.business.corporation.model.vo.CorporationShopVo;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 商铺信息 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2025-08-11
+ */
+public interface CorporationShopService {
+
+    /**
+     * 商铺信息分页
+     */
+    Page<CorporationShopVo> getPage(CorporationShopSelectDto dto);
+
+    /**
+     * 商铺信息明细
+     */
+    CorporationShopVo getDetail(Long id);
+
+    /**
+     * 商铺信息新增
+     */
+    void add(CorporationShopDto dto);
+
+    /**
+     * 商铺信息编辑
+     */
+    void edit(CorporationShopDto dto);
+
+    /**
+     * 商铺信息删除
+     */
+    void delete(List<Long> idList);
+
+}

+ 58 - 0
jy-business/src/main/java/com/jy/business/corporation/service/impl/CorporationShopServiceImpl.java

@@ -0,0 +1,58 @@
+package com.jy.business.corporation.service.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jy.business.corporation.dao.CorporationShopDao;
+import com.jy.business.corporation.model.dto.CorporationShopDto;
+import com.jy.business.corporation.model.dto.CorporationShopSelectDto;
+import com.jy.business.corporation.model.vo.CorporationShopVo;
+import com.jy.business.corporation.service.CorporationShopService;
+import com.jy.framework.utils.AssertUtil;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 商铺信息 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2025-08-11
+ */
+@Service
+public class CorporationShopServiceImpl implements CorporationShopService {
+
+    @Resource
+    private CorporationShopDao corporationShopDao;
+
+    @Override
+    public Page<CorporationShopVo> getPage(CorporationShopSelectDto dto) {
+        return corporationShopDao.getPage(dto);
+    }
+
+    @Override
+    public CorporationShopVo getDetail(Long id) {
+        CorporationShopVo vo = corporationShopDao.getDetail(id);
+        AssertUtil.notNull(vo, "未知数据");
+        return vo;
+    }
+
+    @Override
+    public void add(CorporationShopDto dto) {
+        corporationShopDao.save(dto);
+    }
+
+    @Override
+    public void edit(CorporationShopDto dto) {
+        corporationShopDao.updateById(dto);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void delete(List<Long> idList) {
+        corporationShopDao.removeBatchByIds(idList);
+    }
+
+}

+ 27 - 0
jy-ui/src/api/business/corporation/shop.ts

@@ -0,0 +1,27 @@
+import request from '@/utils/request'
+import { PageType, StrAnyObj } from '@/typings'
+
+// 商铺信息分页
+export function getPageApi(params: StrAnyObj): Promise<PageType<StrAnyObj>> {
+  return request.get('/corporationShop/getPage', params)
+}
+
+// 商铺信息明细
+export function getDetailApi(params: StrAnyObj): Promise<StrAnyObj> {
+  return request.get('/corporationShop/getDetail', params)
+}
+
+// 商铺信息新增
+export function addApi(data: StrAnyObj): Promise<void> {
+  return request.post('/corporationShop/add', data)
+}
+
+// 商铺信息编辑
+export function editApi(data: StrAnyObj): Promise<void> {
+  return request.post('/corporationShop/edit', data)
+}
+
+// 商铺信息删除
+export function deleteApi(data: StrAnyObj): Promise<void> {
+  return request.post('/corporationShop/delete', data)
+}

+ 4 - 28
jy-ui/src/components/AForm/type.ts

@@ -2,15 +2,7 @@ import { Arrayable, EpPropMergeType } from 'element-plus/es/utils'
 import { FormItemRule, SingleOrRange } from 'element-plus'
 import { StrAnyObj, StrAnyObjArr } from '@/typings'
 
-export type FormConfigType =
-  | InputType
-  | InputNumberType
-  | SelectType
-  | RadioType
-  | CheckboxType
-  | DatePickerType
-  | FormSlotType
-  | UploadType
+export type FormConfigType = InputType | InputNumberType | SelectType | RadioType | CheckboxType | DatePickerType | FormSlotType | UploadType
 
 export interface InputType extends FormCommonType {
   type: 'input'
@@ -116,17 +108,7 @@ export interface DatePickerType extends FormCommonType {
   // 是否只读
   readonly?: boolean | (() => boolean)
   // 显示类型
-  datePickerType?:
-    | 'year'
-    | 'years'
-    | 'month'
-    | 'date'
-    | 'dates'
-    | 'datetime'
-    | 'week'
-    | 'datetimerange'
-    | 'daterange'
-    | 'monthrange'
+  datePickerType?: 'year' | 'years' | 'month' | 'date' | 'dates' | 'datetime' | 'week' | 'datetimerange' | 'daterange' | 'monthrange'
   // 显示在输入框中的格式
   format?: string
   // 绑定值的格式。 不指定则绑定值为 Date 对象
@@ -135,9 +117,7 @@ export interface DatePickerType extends FormCommonType {
   defaultValue?: Date | [Date, Date]
   // 选择日期后的默认时间值。 如未指定则默认时间值为 00:00:00
   defaultTime?: EpPropMergeType<
-    | (new (...args: any[]) => Date | [Date, Date])
-    | (() => SingleOrRange<Date>)
-    | ((new (...args: any[]) => Date | [Date, Date]) | (() => SingleOrRange<Date>))[],
+    (new (...args: any[]) => Date | [Date, Date]) | (() => SingleOrRange<Date>) | ((new (...args: any[]) => Date | [Date, Date]) | (() => SingleOrRange<Date>))[],
     unknown,
     unknown
   >
@@ -196,11 +176,7 @@ export interface FormOptionType {
   // 自动加载列表
   autoLoadOption?: boolean
   // 获取列表值
-  option?:
-    | StrAnyObjArr
-    | Promise<StrAnyObjArr>
-    | (() => StrAnyObjArr)
-    | (() => Promise<StrAnyObjArr>)
+  option?: StrAnyObjArr | Promise<StrAnyObjArr> | (() => StrAnyObjArr) | (() => Promise<StrAnyObjArr>)
   // 绑定key名称
   keyName?: string
   // 绑定label名称

+ 221 - 0
jy-ui/src/views/business/corporation/shop/index.vue

@@ -0,0 +1,221 @@
+<script setup lang="ts">
+import AForm from '@/components/AForm/index.vue'
+import { FormConfigType } from '@/components/AForm/type'
+import { ToolbarConfigType } from '@/components/AToolbar/type'
+import { ColumnConfigType } from '@/components/ATable/type'
+import { StrAnyObj, StrAnyObjArr } from '@/typings'
+import { useHandleData } from '@/utils/useHandleData'
+import { getPageApi, getDetailApi, addApi, editApi, deleteApi } from '@/api/business/corporation/shop'
+import { getPageApi as getCorporationPageApi } from '@/api//business/corporation/corporation'
+
+const queryRef = ref<InstanceType<typeof AForm>>()
+const formRef = ref<InstanceType<typeof AForm>>()
+
+const showQuery = ref<boolean>(true)
+const selectKeys = ref<string[]>([])
+const pageTotal = ref<number>(0)
+
+const queryData = ref<StrAnyObj>({ pageNum: 1, pageSize: 10 })
+const tableData = ref<StrAnyObjArr>([])
+const formData = ref<StrAnyObj>({})
+
+const dialogTitle = ref<string>('')
+const dialogVisible = ref<boolean>(false)
+
+const queryConfig: FormConfigType[] = [
+  {
+    type: 'input',
+    prop: 'name',
+    label: '店铺名称'
+  },
+  {
+    type: 'select',
+    prop: 'corporationId',
+    label: '所属公司',
+    option: async () => (await getCorporationPageApi({ searchAll: true })).records,
+    keyName: 'id',
+    labelName: 'name'
+  }
+]
+
+const toolbarConfig: ToolbarConfigType[] = [
+  {
+    common: 'search',
+    click() {
+      queryData.value.pageNum = 1
+      getPage()
+    }
+  },
+  {
+    common: 'reset',
+    click() {
+      queryRef.value?.resetFields()
+      getPage()
+    }
+  },
+  {
+    common: 'add',
+    click() {
+      dialogVisible.value = true
+      dialogTitle.value = '新增'
+    }
+  },
+  {
+    common: 'delete',
+    disabled() {
+      return selectKeys.value.length == 0
+    },
+    click() {
+      handleRemove(selectKeys.value)
+    }
+  }
+]
+
+const columnConfig: ColumnConfigType[] = [
+  {
+    prop: 'name',
+    label: '店铺名称',
+    width: 220
+  },
+  {
+    prop: 'corporationName',
+    label: '所属公司',
+    width: 220
+  },
+  {
+    prop: 'remark',
+    label: '备注'
+  },
+  {
+    prop: 'createTime',
+    label: '创建时间',
+    width: 220
+  },
+  {
+    width: 220,
+    handleConfig: [
+      {
+        common: 'update',
+        click(row) {
+          dialogVisible.value = true
+          dialogTitle.value = '编辑'
+          getDetailApi({ id: row.id }).then((resp: StrAnyObj) => {
+            formData.value = resp
+          })
+        }
+      },
+      {
+        common: 'delete',
+        click(row) {
+          handleRemove([row.id])
+        }
+      }
+    ]
+  }
+]
+
+const formConfig: FormConfigType[] = [
+  {
+    type: 'input',
+    prop: 'name',
+    label: '店铺名称',
+    rule: [{ required: true, message: '店铺名称不能为空', trigger: 'blur' }],
+  },
+  {
+    type: 'select',
+    prop: 'corporationId',
+    label: '所属公司',
+    option: async () => (await getCorporationPageApi({ searchAll: true })).records,
+    keyName: 'id',
+    labelName: 'name',
+    rule: [{ required: true, message: '公司id不能为空', trigger: 'blur' }]
+  },
+  {
+    type: 'input',
+    prop: 'remark',
+    label: '备注',
+    itemType: 'textarea',
+    rows: 5
+  }
+]
+
+onMounted(() => {
+  getPage()
+})
+
+// function getCorporation() {
+//   .then((resp) => {
+//
+//   })
+// }
+
+function getPage() {
+  // getCorporation()
+  getPageApi(queryData.value).then((resp) => {
+    tableData.value = resp.records
+    pageTotal.value = resp.total
+  })
+}
+
+function tableSelectionChange(item: StrAnyObjArr) {
+  selectKeys.value = item.map((item) => item.id)
+}
+
+function formSubmit() {
+  formRef.value?.validate(() => {
+    if (formData.value.id) {
+      editApi(formData.value).then(() => {
+        dialogVisible.value = false
+        ElMessage.success('修改成功')
+        getPage()
+      })
+    } else {
+      addApi(formData.value).then(() => {
+        dialogVisible.value = false
+        ElMessage.success('新增成功')
+        getPage()
+      })
+    }
+  })
+}
+
+function formClosed() {
+  formRef.value?.resetFields()
+}
+
+function handleRemove(idList: string[]) {
+  useHandleData('是否确认删除?', () => {
+    deleteApi({ idList }).then(() => {
+      ElMessage.success('删除成功')
+      getPage()
+    })
+  })
+}
+</script>
+
+<template>
+  <div>
+    <el-card v-if="showQuery">
+      <a-form ref="queryRef" v-model="queryData" :config="queryConfig" :span="6"> </a-form>
+    </el-card>
+
+    <a-table
+      selection
+      :data="tableData"
+      :page-total="pageTotal"
+      :toolbar-config="toolbarConfig"
+      :column-config="columnConfig"
+      v-model:show-query="showQuery"
+      v-model:page-num="queryData.pageNum"
+      v-model:page-size="queryData.pageSize"
+      @page-num-change="getPage"
+      @page-size-change="getPage"
+      @selection-change="tableSelectionChange"
+    >
+    </a-table>
+
+    <a-dialog v-model="dialogVisible" :title="dialogTitle" @submit="formSubmit" @closed="formClosed">
+      <a-form ref="formRef" v-model="formData" :config="formConfig" :span="24"> </a-form>
+    </a-dialog>
+  </div>
+</template>