商品模块代码提交
This commit is contained in:
parent
28d07a139d
commit
d2bfcd77b5
|
|
@ -0,0 +1,102 @@
|
|||
package com.czg.controller.admin;
|
||||
|
||||
import com.czg.log.annotation.OperationLog;
|
||||
import com.czg.product.dto.ShopVendorDTO;
|
||||
import com.czg.product.service.ShopVendorService;
|
||||
import com.czg.resp.CzgResult;
|
||||
import com.czg.utils.AssertUtil;
|
||||
import com.czg.validator.group.DefaultGroup;
|
||||
import com.czg.validator.group.InsertGroup;
|
||||
import com.czg.validator.group.UpdateGroup;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* 供应商
|
||||
*
|
||||
* @author Tankaikai tankaikai@aliyun.com
|
||||
* @since 1.0 2025-02-20
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/admin/product/vendor")
|
||||
public class ShopVendorController {
|
||||
private final ShopVendorService shopVendorService;
|
||||
|
||||
/**
|
||||
* 分页
|
||||
*/
|
||||
@GetMapping("page")
|
||||
@OperationLog("供应商-分页")
|
||||
//@SaAdminCheckPermission("shopVendor:page")
|
||||
public CzgResult<Page<ShopVendorDTO>> getShopVendorPage(ShopVendorDTO param) {
|
||||
Page<ShopVendorDTO> data = shopVendorService.getShopVendorPage(param);
|
||||
return CzgResult.success(data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 列表
|
||||
*/
|
||||
@GetMapping("list")
|
||||
@OperationLog("供应商-列表")
|
||||
//@SaAdminCheckPermission("shopVendor:list")
|
||||
public CzgResult<List<ShopVendorDTO>> getShopVendorList(ShopVendorDTO param) {
|
||||
List<ShopVendorDTO> data = shopVendorService.getShopVendorList(param);
|
||||
return CzgResult.success(data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 详情
|
||||
* param id 供应商id
|
||||
*/
|
||||
@GetMapping("{id}")
|
||||
@OperationLog("供应商-详情")
|
||||
//@SaAdminCheckPermission("shopVendor:info")
|
||||
public CzgResult<ShopVendorDTO> getShopVendorById(@PathVariable("id") Long id) {
|
||||
AssertUtil.isNull(id, "{}不能为空", "id");
|
||||
ShopVendorDTO data = shopVendorService.getShopVendorById(id);
|
||||
return CzgResult.success(data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增
|
||||
*/
|
||||
@PostMapping
|
||||
@OperationLog("供应商-新增")
|
||||
//@SaAdminCheckPermission("shopVendor:add")
|
||||
public CzgResult<Void> addShopVendor(@RequestBody @Validated({InsertGroup.class, DefaultGroup.class}) ShopVendorDTO dto) {
|
||||
shopVendorService.addShopVendor(dto);
|
||||
return CzgResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改
|
||||
*/
|
||||
@PutMapping
|
||||
@OperationLog("供应商-修改")
|
||||
//@SaAdminCheckPermission("shopVendor:update")
|
||||
public CzgResult<Void> updateShopVendor(@RequestBody @Validated({UpdateGroup.class, DefaultGroup.class}) ShopVendorDTO dto) {
|
||||
shopVendorService.updateShopVendor(dto);
|
||||
return CzgResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*
|
||||
* @param id 供应商id
|
||||
*/
|
||||
@DeleteMapping("{id}")
|
||||
@OperationLog("供应商-删除")
|
||||
//@SaAdminCheckPermission("shopVendor:delete")
|
||||
public CzgResult<Void> deleteShopVendor(@PathVariable("id") Long id) {
|
||||
//效验数据
|
||||
AssertUtil.isNull(id, "{}不能为空", "id");
|
||||
shopVendorService.deleteShopVendor(id);
|
||||
return CzgResult.success();
|
||||
}
|
||||
}
|
||||
|
|
@ -9,6 +9,7 @@ import jakarta.validation.constraints.NotNull;
|
|||
import jakarta.validation.constraints.Null;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
|
|
@ -20,6 +21,8 @@ import java.time.LocalDateTime;
|
|||
*/
|
||||
@Data
|
||||
public class ShopProdUnitDTO implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -0,0 +1,93 @@
|
|||
package com.czg.product.dto;
|
||||
|
||||
import com.alibaba.fastjson2.annotation.JSONField;
|
||||
import com.czg.validator.group.DefaultGroup;
|
||||
import com.czg.validator.group.InsertGroup;
|
||||
import com.czg.validator.group.UpdateGroup;
|
||||
import jakarta.validation.constraints.*;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 供应商
|
||||
*
|
||||
* @author Tankaikai tankaikai@aliyun.com
|
||||
* @since 1.0 2025-02-20
|
||||
*/
|
||||
@Data
|
||||
public class ShopVendorDTO implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@Null(message = "ID必须为空", groups = InsertGroup.class)
|
||||
@NotNull(message = "ID不能为空", groups = UpdateGroup.class)
|
||||
private Long id;
|
||||
/**
|
||||
* 店铺Id
|
||||
*/
|
||||
private Long shopId;
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
@NotNull(message = "排序值不能为空", groups = DefaultGroup.class)
|
||||
@Min(value = 1, message = "排序值不能小于1", groups = DefaultGroup.class)
|
||||
@Max(value = Integer.MAX_VALUE, message = "排序值不能大于" + Integer.MAX_VALUE, groups = DefaultGroup.class)
|
||||
private Integer sort;
|
||||
/**
|
||||
* 供应商名称
|
||||
*/
|
||||
@NotBlank(message = "供应商名称不能为空", groups = DefaultGroup.class)
|
||||
private String name;
|
||||
/**
|
||||
* 联系人名字
|
||||
*/
|
||||
private String contactName;
|
||||
/**
|
||||
* 联系人电话
|
||||
*/
|
||||
private String telephone;
|
||||
/**
|
||||
* 结算周期(日)
|
||||
*/
|
||||
private Integer period;
|
||||
/**
|
||||
* 供应商地址
|
||||
*/
|
||||
private String address;
|
||||
/**
|
||||
* 标签
|
||||
*/
|
||||
private String tip;
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime createTime;
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime updateTime;
|
||||
/**
|
||||
* 最后一次交易时间(主要做排序)
|
||||
*/
|
||||
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime lastTransactTime;
|
||||
/**
|
||||
* 逻辑删除 1-是 0-否
|
||||
*/
|
||||
@JSONField(serialize = false)
|
||||
private Integer isDel;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
package com.czg.product.entity;
|
||||
|
||||
import com.mybatisflex.annotation.Column;
|
||||
import com.mybatisflex.annotation.Id;
|
||||
import com.mybatisflex.annotation.KeyType;
|
||||
import com.mybatisflex.annotation.Table;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 供应商
|
||||
*
|
||||
* @author Tankaikai tankaikai@aliyun.com
|
||||
* @since 1.0 2025-02-20
|
||||
*/
|
||||
@Data
|
||||
@Table("tb_shop_vendor")
|
||||
public class ShopVendor implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@Id(keyType = KeyType.Auto)
|
||||
private Long id;
|
||||
/**
|
||||
* 店铺Id
|
||||
*/
|
||||
private Long shopId;
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
private Integer sort;
|
||||
/**
|
||||
* 供应商名称
|
||||
*/
|
||||
private String name;
|
||||
/**
|
||||
* 联系人名字
|
||||
*/
|
||||
private String contactName;
|
||||
/**
|
||||
* 联系人电话
|
||||
*/
|
||||
private String telephone;
|
||||
/**
|
||||
* 结算周期(日)
|
||||
*/
|
||||
private Integer period;
|
||||
/**
|
||||
* 供应商地址
|
||||
*/
|
||||
private String address;
|
||||
/**
|
||||
* 标签
|
||||
*/
|
||||
private String tip;
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@Column(onInsertValue = "now()")
|
||||
private LocalDateTime createTime;
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@Column(onInsertValue = "now()", onUpdateValue = "now()")
|
||||
private LocalDateTime updateTime;
|
||||
/**
|
||||
* 最后一次交易时间(主要做排序)
|
||||
*/
|
||||
private LocalDateTime lastTransactTime;
|
||||
/**
|
||||
* 逻辑删除 1-是 0-否
|
||||
*/
|
||||
private Integer isDel;
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
package com.czg.product.service;
|
||||
|
||||
import com.czg.product.dto.ShopVendorDTO;
|
||||
import com.czg.product.entity.ShopVendor;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import com.mybatisflex.core.service.IService;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 供应商
|
||||
*
|
||||
* @author Tankaikai tankaikai@aliyun.com
|
||||
* @since 1.0 2025-02-20
|
||||
*/
|
||||
public interface ShopVendorService extends IService<ShopVendor> {
|
||||
Page<ShopVendorDTO> getShopVendorPage(ShopVendorDTO param);
|
||||
|
||||
List<ShopVendorDTO> getShopVendorList(ShopVendorDTO param);
|
||||
|
||||
ShopVendorDTO getShopVendorById(Long id);
|
||||
|
||||
boolean addShopVendor(ShopVendorDTO dto);
|
||||
|
||||
boolean updateShopVendor(ShopVendorDTO dto);
|
||||
|
||||
boolean deleteShopVendor(Long id);
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
package com.czg.service.product.mapper;
|
||||
|
||||
import com.czg.product.entity.ShopVendor;
|
||||
import com.mybatisflex.core.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* 供应商
|
||||
*
|
||||
* @author Tankaikai tankaikai@aliyun.com
|
||||
* @since 1.0 2025-02-20
|
||||
*/
|
||||
@Mapper
|
||||
public interface ShopVendorMapper extends BaseMapper<ShopVendor> {
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,96 @@
|
|||
package com.czg.service.product.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.czg.enums.DeleteEnum;
|
||||
import com.czg.exception.CzgException;
|
||||
import com.czg.product.dto.ShopVendorDTO;
|
||||
import com.czg.product.entity.ShopVendor;
|
||||
import com.czg.product.service.ShopVendorService;
|
||||
import com.czg.sa.StpKit;
|
||||
import com.czg.service.product.mapper.ShopVendorMapper;
|
||||
import com.czg.utils.PageUtil;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
import com.mybatisflex.core.update.UpdateChain;
|
||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 供应商
|
||||
*
|
||||
* @author Tankaikai tankaikai@aliyun.com
|
||||
* @since 1.0 2025-02-20
|
||||
*/
|
||||
@Service
|
||||
public class ShopVendorServiceImpl extends ServiceImpl<ShopVendorMapper, ShopVendor> implements ShopVendorService {
|
||||
|
||||
private QueryWrapper buildQueryWrapper(ShopVendorDTO param) {
|
||||
QueryWrapper queryWrapper = PageUtil.buildSortQueryWrapper();
|
||||
if (StrUtil.isNotEmpty(param.getName())) {
|
||||
queryWrapper.like(ShopVendor::getName, param.getName());
|
||||
}
|
||||
Long shopId = StpKit.USER.getLoginIdAsLong();
|
||||
queryWrapper.eq(ShopVendor::getShopId, shopId);
|
||||
queryWrapper.orderBy(ShopVendor::getSort, true);
|
||||
queryWrapper.orderBy(ShopVendor::getId, false);
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<ShopVendorDTO> getShopVendorPage(ShopVendorDTO param) {
|
||||
QueryWrapper queryWrapper = buildQueryWrapper(param);
|
||||
return super.pageAs(PageUtil.buildPage(), queryWrapper, ShopVendorDTO.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ShopVendorDTO> getShopVendorList(ShopVendorDTO param) {
|
||||
QueryWrapper queryWrapper = buildQueryWrapper(param);
|
||||
queryWrapper.eq(ShopVendor::getIsDel, DeleteEnum.NORMAL.value());
|
||||
return super.listAs(queryWrapper, ShopVendorDTO.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ShopVendorDTO getShopVendorById(Long id) {
|
||||
Long shopId = StpKit.USER.getLoginIdAsLong();
|
||||
return super.getOneAs(query().eq(ShopVendor::getId, id).eq(ShopVendor::getShopId, shopId), ShopVendorDTO.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addShopVendor(ShopVendorDTO dto) {
|
||||
Long shopId = StpKit.USER.getLoginIdAsLong();
|
||||
boolean exists = super.exists(query().eq(ShopVendor::getName, dto.getName()).eq(ShopVendor::getShopId, shopId));
|
||||
if (exists) {
|
||||
throw new CzgException("供应商已存在");
|
||||
}
|
||||
ShopVendor entity = BeanUtil.copyProperties(dto, ShopVendor.class);
|
||||
entity.setIsDel(DeleteEnum.NORMAL.value());
|
||||
entity.setShopId(shopId);
|
||||
return super.save(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean updateShopVendor(ShopVendorDTO dto) {
|
||||
Long shopId = StpKit.USER.getLoginIdAsLong();
|
||||
dto.setShopId(shopId);
|
||||
boolean exists = super.exists(query().eq(ShopVendor::getName, dto.getName()).eq(ShopVendor::getShopId, shopId).ne(ShopVendor::getId, dto.getId()));
|
||||
if (exists) {
|
||||
throw new CzgException("供应商已存在");
|
||||
}
|
||||
ShopVendor entity = BeanUtil.copyProperties(dto, ShopVendor.class);
|
||||
return super.updateById(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean deleteShopVendor(Long id) {
|
||||
Long shopId = StpKit.USER.getLoginIdAsLong();
|
||||
return UpdateChain.of(ShopVendor.class)
|
||||
.set(ShopVendor::getIsDel, DeleteEnum.DELETED.value())
|
||||
.eq(ShopVendor::getId, id)
|
||||
.eq(ShopVendor::getShopId, shopId)
|
||||
.update();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
<?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.czg.service.product.mapper.ShopVendorMapper">
|
||||
|
||||
</mapper>
|
||||
Loading…
Reference in New Issue