From 134ace1ffb755a7ced45a988087957a05a14f988 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=AE=87=E8=88=AA?= <653809315@qq.com> Date: Mon, 19 Aug 2024 18:38:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E5=91=98=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/controller/SalesmanController.java | 69 ++++++++ .../wyh/admin/service/ISalesmanService.java | 60 +++++++ .../service/impl/SalesmanServiceImpl.java | 159 +++++++++++++++++ .../java/com/wyh/common/entity/Salesman.java | 45 +++++ .../wyh/common/entity/user/UserAddress.java | 54 ++++++ .../com/wyh/common/mapper/SalesmanMapper.java | 13 ++ .../common/mapper/user/UserAddressMapper.java | 13 ++ .../validator/SalesmanCreateValidate.java | 32 ++++ .../validator/SalesmanSearchValidate.java | 26 +++ .../validator/SalesmanUpdateValidate.java | 41 +++++ .../user/UserAddressCreateValidate.java | 41 +++++ .../user/UserAddressSearchValidate.java | 34 ++++ .../user/UserAddressUpdateValidate.java | 51 ++++++ .../com/wyh/common/vo/SalesmanDetailVo.java | 31 ++++ .../com/wyh/common/vo/SalesmanListedVo.java | 37 ++++ .../common/vo/user/UserAddressDetailVo.java | 40 +++++ .../common/vo/user/UserAddressListedVo.java | 44 +++++ .../controller/UserAddressController.java | 66 +++++++ .../front/service/IUserAddressService.java | 61 +++++++ .../service/impl/UserAddressServiceImpl.java | 165 ++++++++++++++++++ admin/src/api/salesman.ts | 26 +++ admin/src/views/salesman/edit.vue | 134 ++++++++++++++ admin/src/views/salesman/index.vue | 119 +++++++++++++ 23 files changed, 1361 insertions(+) create mode 100644 ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/controller/SalesmanController.java create mode 100644 ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/service/ISalesmanService.java create mode 100644 ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/service/impl/SalesmanServiceImpl.java create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/entity/Salesman.java create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/entity/user/UserAddress.java create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/mapper/SalesmanMapper.java create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/mapper/user/UserAddressMapper.java create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/SalesmanCreateValidate.java create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/SalesmanSearchValidate.java create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/SalesmanUpdateValidate.java create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/user/UserAddressCreateValidate.java create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/user/UserAddressSearchValidate.java create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/user/UserAddressUpdateValidate.java create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/SalesmanDetailVo.java create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/SalesmanListedVo.java create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/user/UserAddressDetailVo.java create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/user/UserAddressListedVo.java create mode 100644 ZJ-java/ZJ-front/src/main/java/com/wyh/front/controller/UserAddressController.java create mode 100644 ZJ-java/ZJ-front/src/main/java/com/wyh/front/service/IUserAddressService.java create mode 100644 ZJ-java/ZJ-front/src/main/java/com/wyh/front/service/impl/UserAddressServiceImpl.java create mode 100644 admin/src/api/salesman.ts create mode 100644 admin/src/views/salesman/edit.vue create mode 100644 admin/src/views/salesman/index.vue diff --git a/ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/controller/SalesmanController.java b/ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/controller/SalesmanController.java new file mode 100644 index 0000000..f89bd12 --- /dev/null +++ b/ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/controller/SalesmanController.java @@ -0,0 +1,69 @@ +package com.wyh.admin.controller; + +import com.wyh.admin.aop.Log; +import com.wyh.admin.service.ISalesmanService; +import com.wyh.admin.validate.commons.IdValidate; +import com.wyh.admin.validate.commons.PageValidate; +import com.wyh.common.core.AjaxResult; +import com.wyh.common.core.PageResult; +import com.wyh.common.validator.SalesmanCreateValidate; +import com.wyh.common.validator.SalesmanSearchValidate; +import com.wyh.common.validator.SalesmanUpdateValidate; +import com.wyh.common.validator.annotation.IDMust; +import com.wyh.common.vo.SalesmanDetailVo; +import com.wyh.common.vo.SalesmanListedVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +@RestController +@RequestMapping("api/salesman") +@Api(tags = "业务员信息管理") +public class SalesmanController { + + @Resource + ISalesmanService iSalesmanService; + + @GetMapping("/list") + @ApiOperation(value="业务员信息列表") + public AjaxResult> list(@Validated PageValidate pageValidate, + @Validated SalesmanSearchValidate searchValidate) { + PageResult list = iSalesmanService.list(pageValidate, searchValidate); + return AjaxResult.success(list); + } + + @GetMapping("/detail") + @ApiOperation(value="业务员信息详情") + public AjaxResult detail(@Validated @IDMust() @RequestParam("id") Integer id) { + SalesmanDetailVo detail = iSalesmanService.detail(id); + return AjaxResult.success(detail); + } + + @Log(title = "业务员信息新增") + @PostMapping("/add") + @ApiOperation(value="业务员信息新增") + public AjaxResult add(@Validated @RequestBody SalesmanCreateValidate createValidate) { + iSalesmanService.add(createValidate); + return AjaxResult.success(); + } + + @Log(title = "业务员信息编辑") + @PostMapping("/edit") + @ApiOperation(value="业务员信息编辑") + public AjaxResult edit(@Validated @RequestBody SalesmanUpdateValidate updateValidate) { + iSalesmanService.edit(updateValidate); + return AjaxResult.success(); + } + + @Log(title = "业务员信息删除") + @PostMapping("/del") + @ApiOperation(value="业务员信息删除") + public AjaxResult del(@Validated @RequestBody IdValidate idValidate) { + iSalesmanService.del(idValidate.getId()); + return AjaxResult.success(); + } + +} diff --git a/ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/service/ISalesmanService.java b/ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/service/ISalesmanService.java new file mode 100644 index 0000000..e8b5a05 --- /dev/null +++ b/ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/service/ISalesmanService.java @@ -0,0 +1,60 @@ +package com.wyh.admin.service; + +import com.wyh.admin.validate.commons.PageValidate; +import com.wyh.common.core.PageResult; +import com.wyh.common.validator.SalesmanCreateValidate; +import com.wyh.common.validator.SalesmanSearchValidate; +import com.wyh.common.validator.SalesmanUpdateValidate; +import com.wyh.common.vo.SalesmanDetailVo; +import com.wyh.common.vo.SalesmanListedVo; + +/** + * 业务员信息服务接口类 + * @author wyh + */ +public interface ISalesmanService { + + /** + * 业务员信息列表 + * + * @author wyh + * @param pageValidate 分页参数 + * @param searchValidate 搜索参数 + * @return PageResult + */ + PageResult list(PageValidate pageValidate, SalesmanSearchValidate searchValidate); + + /** + * 业务员信息详情 + * + * @author wyh + * @param id 主键ID + * @return SalesmanDetailVo + */ + SalesmanDetailVo detail(Integer id); + + /** + * 业务员信息新增 + * + * @author wyh + * @param createValidate 参数 + */ + void add(SalesmanCreateValidate createValidate); + + /** + * 业务员信息编辑 + * + * @author wyh + * @param updateValidate 参数 + */ + void edit(SalesmanUpdateValidate updateValidate); + + /** + * 业务员信息删除 + * + * @author wyh + * @param id 主键ID + */ + void del(Integer id); + +} diff --git a/ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/service/impl/SalesmanServiceImpl.java b/ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/service/impl/SalesmanServiceImpl.java new file mode 100644 index 0000000..460ba17 --- /dev/null +++ b/ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/service/impl/SalesmanServiceImpl.java @@ -0,0 +1,159 @@ +package com.wyh.admin.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.wyh.admin.service.ISalesmanService; +import com.wyh.admin.validate.commons.PageValidate; +import com.wyh.common.core.PageResult; +import com.wyh.common.entity.Salesman; +import com.wyh.common.mapper.SalesmanMapper; +import com.wyh.common.util.TimeUtils; +import com.wyh.common.validator.SalesmanCreateValidate; +import com.wyh.common.validator.SalesmanSearchValidate; +import com.wyh.common.validator.SalesmanUpdateValidate; +import com.wyh.common.vo.SalesmanDetailVo; +import com.wyh.common.vo.SalesmanListedVo; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.util.Assert; + +import javax.annotation.Resource; +import java.util.LinkedList; +import java.util.List; + +/** + * 业务员信息实现类 + * @author wyh + */ +@Service +public class SalesmanServiceImpl implements ISalesmanService { + + @Resource + SalesmanMapper salesmanMapper; + + /** + * 业务员信息列表 + * + * @author wyh + * @param pageValidate 分页参数 + * @param searchValidate 搜索参数 + * @return PageResult + */ + @Override + public PageResult list(PageValidate pageValidate, SalesmanSearchValidate searchValidate) { + Integer page = pageValidate.getPageNo(); + Integer limit = pageValidate.getPageSize(); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("is_delete", 0); + queryWrapper.orderByDesc("id"); + + salesmanMapper.setSearch(queryWrapper, searchValidate, new String[]{ + "like:mobile:str", + "like:name:str", + "=:address:str", + "=:coordinate:str", + }); + + IPage iPage = salesmanMapper.selectPage(new Page<>(page, limit), queryWrapper); + + List list = new LinkedList<>(); + for(Salesman item : iPage.getRecords()) { + SalesmanListedVo vo = new SalesmanListedVo(); + BeanUtils.copyProperties(item, vo); + vo.setCreateTime(TimeUtils.timestampToDate(item.getCreateTime())); + vo.setUpdateTime(TimeUtils.timestampToDate(item.getUpdateTime())); + list.add(vo); + } + + return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list); + } + + /** + * 业务员信息详情 + * + * @author wyh + * @param id 主键参数 + * @return Salesman + */ + @Override + public SalesmanDetailVo detail(Integer id) { + Salesman model = salesmanMapper.selectOne( + new QueryWrapper() + .eq("id", id) + .eq("is_delete", 0) + .last("limit 1")); + + Assert.notNull(model, "数据不存在"); + + SalesmanDetailVo vo = new SalesmanDetailVo(); + BeanUtils.copyProperties(model, vo); + return vo; + } + + /** + * 业务员信息新增 + * + * @author wyh + * @param createValidate 参数 + */ + @Override + public void add(SalesmanCreateValidate createValidate) { + Salesman model = new Salesman(); + model.setMobile(createValidate.getMobile()); + model.setCreateTime(System.currentTimeMillis() / 1000); + model.setUpdateTime(System.currentTimeMillis() / 1000); + model.setName(createValidate.getName()); + model.setAddress(createValidate.getAddress()); + model.setCoordinate(createValidate.getCoordinate()); + salesmanMapper.insert(model); + } + + /** + * 业务员信息编辑 + * + * @author wyh + * @param updateValidate 参数 + */ + @Override + public void edit(SalesmanUpdateValidate updateValidate) { + Salesman model = salesmanMapper.selectOne( + new QueryWrapper() + .eq("id", updateValidate.getId()) + .eq("is_delete", 0) + .last("limit 1")); + + Assert.notNull(model, "数据不存在!"); + + model.setId(updateValidate.getId()); + model.setMobile(updateValidate.getMobile()); + model.setUpdateTime(System.currentTimeMillis() / 1000); + model.setName(updateValidate.getName()); + model.setAddress(updateValidate.getAddress()); + model.setCoordinate(updateValidate.getCoordinate()); + salesmanMapper.updateById(model); + } + + /** + * 业务员信息删除 + * + * @author wyh + * @param id 主键ID + */ + @Override + public void del(Integer id) { + Salesman model = salesmanMapper.selectOne( + new QueryWrapper() + .eq("id", id) + .eq("is_delete", 0) + .last("limit 1")); + + Assert.notNull(model, "数据不存在!"); + + model.setIsDelete(1); + model.setDeleteTime(System.currentTimeMillis() / 1000); + salesmanMapper.updateById(model); + } + +} diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/entity/Salesman.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/entity/Salesman.java new file mode 100644 index 0000000..0f82f1d --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/entity/Salesman.java @@ -0,0 +1,45 @@ +package com.wyh.common.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +@ApiModel("业务员信息实体") +public class Salesman implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value="id", type= IdType.AUTO) + @ApiModelProperty(value = "主键") + private Integer id; + + @ApiModelProperty(value = "手机号") + private String mobile; + + @ApiModelProperty(value = "是否删除: 0=否, 1=是") + private Integer isDelete; + + @ApiModelProperty(value = "创建时间") + private Long createTime; + + @ApiModelProperty(value = "更新时间") + private Long updateTime; + + @ApiModelProperty(value = "删除时间") + private Long deleteTime; + + @ApiModelProperty(value = "业务员名称") + private String name; + + @ApiModelProperty(value = "负责地区") + private String address; + + @ApiModelProperty(value = "坐标") + private String coordinate; + +} \ No newline at end of file diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/entity/user/UserAddress.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/entity/user/UserAddress.java new file mode 100644 index 0000000..b6fc208 --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/entity/user/UserAddress.java @@ -0,0 +1,54 @@ +package com.wyh.common.entity.user; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +@ApiModel("地址信息实体") +public class UserAddress implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value="id", type= IdType.AUTO) + @ApiModelProperty(value = "主键") + private Integer id; + + @ApiModelProperty(value = "手机号") + private String mobile; + + @ApiModelProperty(value = "是否删除: 0=否, 1=是") + private Integer isDelete; + + @ApiModelProperty(value = "创建时间") + private Long createTime; + + @ApiModelProperty(value = "更新时间") + private Long updateTime; + + @ApiModelProperty(value = "删除时间") + private Long deleteTime; + + @ApiModelProperty(value = "工作单位") + private String unit; + + @ApiModelProperty(value = "收货人") + private String userName; + + @ApiModelProperty(value = "所在地区") + private String area; + + @ApiModelProperty(value = "详细地址") + private String address; + + @ApiModelProperty(value = "是否默认地址") + private Integer isDefault; + + @ApiModelProperty(value = "用户id") + private Integer userId; + +} \ No newline at end of file diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/mapper/SalesmanMapper.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/mapper/SalesmanMapper.java new file mode 100644 index 0000000..e79a6fc --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/mapper/SalesmanMapper.java @@ -0,0 +1,13 @@ +package com.wyh.common.mapper; + +import com.wyh.common.core.basics.IBaseMapper; +import com.wyh.common.entity.Salesman; +import org.apache.ibatis.annotations.Mapper; + +/** + * 业务员信息Mapper + * @author wyh + */ +@Mapper +public interface SalesmanMapper extends IBaseMapper { +} diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/mapper/user/UserAddressMapper.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/mapper/user/UserAddressMapper.java new file mode 100644 index 0000000..d3ee28b --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/mapper/user/UserAddressMapper.java @@ -0,0 +1,13 @@ +package com.wyh.common.mapper.user; + +import com.wyh.common.core.basics.IBaseMapper; +import com.wyh.common.entity.user.UserAddress; +import org.apache.ibatis.annotations.Mapper; + +/** + * 地址信息Mapper + * @author wyh + */ +@Mapper +public interface UserAddressMapper extends IBaseMapper { +} diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/SalesmanCreateValidate.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/SalesmanCreateValidate.java new file mode 100644 index 0000000..f98ed3a --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/SalesmanCreateValidate.java @@ -0,0 +1,32 @@ +package com.wyh.common.validator; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +@Data +@ApiModel("业务员信息创建参数") +public class SalesmanCreateValidate implements Serializable { + + private static final long serialVersionUID = 1L; + + @NotNull(message = "mobile参数缺失") + @ApiModelProperty(value = "手机号") + private String mobile; + + @NotNull(message = "name参数缺失") + @ApiModelProperty(value = "业务员名称") + private String name; + + @NotNull(message = "address参数缺失") + @ApiModelProperty(value = "负责地区") + private String address; + + @NotNull(message = "coordinate参数缺失") + @ApiModelProperty(value = "坐标") + private String coordinate; + +} diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/SalesmanSearchValidate.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/SalesmanSearchValidate.java new file mode 100644 index 0000000..9ce00a2 --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/SalesmanSearchValidate.java @@ -0,0 +1,26 @@ +package com.wyh.common.validator; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import java.io.Serializable; + +@Data +@ApiModel("业务员信息搜素参数") +public class SalesmanSearchValidate implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "手机号") + private String mobile; + + @ApiModelProperty(value = "业务员名称") + private String name; + + @ApiModelProperty(value = "负责地区") + private String address; + + @ApiModelProperty(value = "坐标") + private String coordinate; + +} diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/SalesmanUpdateValidate.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/SalesmanUpdateValidate.java new file mode 100644 index 0000000..5c3aac2 --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/SalesmanUpdateValidate.java @@ -0,0 +1,41 @@ +package com.wyh.common.validator; + +import com.wyh.common.validator.annotation.IDMust; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 业务员信息参数 + * @author wyh + */ +@Data +@ApiModel("业务员信息更新参数") +public class SalesmanUpdateValidate implements Serializable { + + private static final long serialVersionUID = 1L; + + @IDMust(message = "id参数必传且需大于0") + @ApiModelProperty(value = "主键") + private Integer id; + + @NotNull(message = "mobile参数缺失") + @ApiModelProperty(value = "手机号") + private String mobile; + + @NotNull(message = "name参数缺失") + @ApiModelProperty(value = "业务员名称") + private String name; + + @NotNull(message = "address参数缺失") + @ApiModelProperty(value = "负责地区") + private String address; + + @NotNull(message = "coordinate参数缺失") + @ApiModelProperty(value = "坐标") + private String coordinate; + +} diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/user/UserAddressCreateValidate.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/user/UserAddressCreateValidate.java new file mode 100644 index 0000000..340d93a --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/user/UserAddressCreateValidate.java @@ -0,0 +1,41 @@ +package com.wyh.common.validator.user; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +@Data +@ApiModel("地址信息创建参数") +public class UserAddressCreateValidate implements Serializable { + + private static final long serialVersionUID = 1L; + + @NotNull(message = "mobile参数缺失") + @ApiModelProperty(value = "手机号") + private String mobile; + + @NotNull(message = "unit参数缺失") + @ApiModelProperty(value = "工作单位") + private String unit; + + @NotNull(message = "userName参数缺失") + @ApiModelProperty(value = "收货人") + private String userName; + + @NotNull(message = "area参数缺失") + @ApiModelProperty(value = "所在地区") + private String area; + + @NotNull(message = "address参数缺失") + @ApiModelProperty(value = "详细地址") + private String address; + + @NotNull(message = "isDefault参数缺失") + @ApiModelProperty(value = "是否默认地址,0:否,1:是") + private Integer isDefault; + @ApiModelProperty(value = "用户id") + private Integer userId; +} diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/user/UserAddressSearchValidate.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/user/UserAddressSearchValidate.java new file mode 100644 index 0000000..8e06ec0 --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/user/UserAddressSearchValidate.java @@ -0,0 +1,34 @@ +package com.wyh.common.validator.user; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import java.io.Serializable; + +@Data +@ApiModel("地址信息搜素参数") +public class UserAddressSearchValidate implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "手机号") + private String mobile; + + @ApiModelProperty(value = "工作单位") + private String unit; + + @ApiModelProperty(value = "收货人") + private String userName; + + @ApiModelProperty(value = "所在地区") + private String area; + + @ApiModelProperty(value = "详细地址") + private String address; + + @ApiModelProperty(value = "是否默认地址") + private Integer isDefault; + + @ApiModelProperty(value = "用户id") + private Integer userId; +} diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/user/UserAddressUpdateValidate.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/user/UserAddressUpdateValidate.java new file mode 100644 index 0000000..f16e10a --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/user/UserAddressUpdateValidate.java @@ -0,0 +1,51 @@ +package com.wyh.common.validator.user; + +import com.wyh.common.validator.annotation.IDMust; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 地址信息参数 + * @author wyh + */ +@Data +@ApiModel("地址信息更新参数") +public class UserAddressUpdateValidate implements Serializable { + + private static final long serialVersionUID = 1L; + + @IDMust(message = "id参数必传且需大于0") + @ApiModelProperty(value = "主键") + private Integer id; + + @NotNull(message = "mobile参数缺失") + @ApiModelProperty(value = "手机号") + private String mobile; + + @NotNull(message = "unit参数缺失") + @ApiModelProperty(value = "工作单位") + private String unit; + + @NotNull(message = "userName参数缺失") + @ApiModelProperty(value = "收货人") + private String userName; + + @NotNull(message = "area参数缺失") + @ApiModelProperty(value = "所在地区") + private String area; + + @NotNull(message = "address参数缺失") + @ApiModelProperty(value = "详细地址") + private String address; + + @NotNull(message = "isDefault参数缺失") + @ApiModelProperty(value = "是否默认地址") + private Integer isDefault; + + @ApiModelProperty(value = "用户id") + private Integer userId; +} diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/SalesmanDetailVo.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/SalesmanDetailVo.java new file mode 100644 index 0000000..4f009a4 --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/SalesmanDetailVo.java @@ -0,0 +1,31 @@ +package com.wyh.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +@ApiModel("业务员信息详情Vo") +public class SalesmanDetailVo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + private Integer id; + + @ApiModelProperty(value = "手机号") + private String mobile; + + @ApiModelProperty(value = "业务员名称") + private String name; + + @ApiModelProperty(value = "负责地区") + private String address; + + @ApiModelProperty(value = "坐标") + private String coordinate; + + +} diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/SalesmanListedVo.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/SalesmanListedVo.java new file mode 100644 index 0000000..97c5932 --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/SalesmanListedVo.java @@ -0,0 +1,37 @@ +package com.wyh.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +@ApiModel("业务员信息列表Vo") +public class SalesmanListedVo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + private Integer id; + + @ApiModelProperty(value = "手机号") + private String mobile; + + @ApiModelProperty(value = "创建时间") + private String createTime; + + @ApiModelProperty(value = "更新时间") + private String updateTime; + + @ApiModelProperty(value = "业务员名称") + private String name; + + @ApiModelProperty(value = "负责地区") + private String address; + + @ApiModelProperty(value = "坐标") + private String coordinate; + + +} diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/user/UserAddressDetailVo.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/user/UserAddressDetailVo.java new file mode 100644 index 0000000..4d11bd3 --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/user/UserAddressDetailVo.java @@ -0,0 +1,40 @@ +package com.wyh.common.vo.user; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +@ApiModel("地址信息详情Vo") +public class UserAddressDetailVo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + private Integer id; + + @ApiModelProperty(value = "手机号") + private String mobile; + + @ApiModelProperty(value = "工作单位") + private String unit; + + @ApiModelProperty(value = "收货人") + private String userName; + + @ApiModelProperty(value = "所在地区") + private String area; + + @ApiModelProperty(value = "详细地址") + private String address; + + @ApiModelProperty(value = "是否默认地址") + private Integer isDefault; + + @ApiModelProperty(value = "用户id") + private Integer userId; + + +} diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/user/UserAddressListedVo.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/user/UserAddressListedVo.java new file mode 100644 index 0000000..c2ba296 --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/user/UserAddressListedVo.java @@ -0,0 +1,44 @@ +package com.wyh.common.vo.user; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +@ApiModel("地址信息列表Vo") +public class UserAddressListedVo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + private Integer id; + + @ApiModelProperty(value = "手机号") + private String mobile; + + @ApiModelProperty(value = "创建时间") + private String createTime; + + @ApiModelProperty(value = "更新时间") + private String updateTime; + + @ApiModelProperty(value = "工作单位") + private String unit; + + @ApiModelProperty(value = "收货人") + private String userName; + + @ApiModelProperty(value = "所在地区") + private String area; + + @ApiModelProperty(value = "详细地址") + private String address; + + @ApiModelProperty(value = "是否默认地址") + private Integer isDefault; + + @ApiModelProperty(value = "用户id") + private Integer userId; +} diff --git a/ZJ-java/ZJ-front/src/main/java/com/wyh/front/controller/UserAddressController.java b/ZJ-java/ZJ-front/src/main/java/com/wyh/front/controller/UserAddressController.java new file mode 100644 index 0000000..d0eae7d --- /dev/null +++ b/ZJ-java/ZJ-front/src/main/java/com/wyh/front/controller/UserAddressController.java @@ -0,0 +1,66 @@ +package com.wyh.front.controller; + + +import com.wyh.common.core.AjaxResult; +import com.wyh.common.core.PageResult; +import com.wyh.common.validator.annotation.IDMust; +import com.wyh.common.validator.user.UserAddressCreateValidate; +import com.wyh.common.validator.user.UserAddressSearchValidate; +import com.wyh.common.validator.user.UserAddressUpdateValidate; +import com.wyh.common.vo.user.UserAddressDetailVo; +import com.wyh.common.vo.user.UserAddressListedVo; +import com.wyh.front.service.IUserAddressService; +import com.wyh.front.validate.common.IdValidate; +import com.wyh.front.validate.common.PageValidate; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +@RestController +@RequestMapping("front/address") +@Api(tags = "地址信息管理") +public class UserAddressController { + + @Resource + IUserAddressService iUserAddressService; + + @GetMapping("/list") + @ApiOperation(value="地址信息列表") + public AjaxResult> list(@Validated PageValidate pageValidate, + @Validated UserAddressSearchValidate searchValidate) { + PageResult list = iUserAddressService.list(pageValidate, searchValidate); + return AjaxResult.success(list); + } + + @GetMapping("/detail") + @ApiOperation(value="地址信息详情") + public AjaxResult detail(@Validated @IDMust() @RequestParam("id") Integer id) { + UserAddressDetailVo detail = iUserAddressService.detail(id); + return AjaxResult.success(detail); + } + + @PostMapping("/add") + @ApiOperation(value="地址信息新增") + public AjaxResult add(@Validated @RequestBody UserAddressCreateValidate createValidate) { + iUserAddressService.add(createValidate); + return AjaxResult.success(); + } + + @PostMapping("/edit") + @ApiOperation(value="地址信息编辑") + public AjaxResult edit(@Validated @RequestBody UserAddressUpdateValidate updateValidate) { + iUserAddressService.edit(updateValidate); + return AjaxResult.success(); + } + + @PostMapping("/del") + @ApiOperation(value="地址信息删除") + public AjaxResult del(@Validated @RequestBody IdValidate idValidate) { + iUserAddressService.del(idValidate.getId()); + return AjaxResult.success(); + } + +} diff --git a/ZJ-java/ZJ-front/src/main/java/com/wyh/front/service/IUserAddressService.java b/ZJ-java/ZJ-front/src/main/java/com/wyh/front/service/IUserAddressService.java new file mode 100644 index 0000000..4d31e43 --- /dev/null +++ b/ZJ-java/ZJ-front/src/main/java/com/wyh/front/service/IUserAddressService.java @@ -0,0 +1,61 @@ +package com.wyh.front.service; + + +import com.wyh.common.core.PageResult; +import com.wyh.common.validator.user.UserAddressCreateValidate; +import com.wyh.common.validator.user.UserAddressSearchValidate; +import com.wyh.common.validator.user.UserAddressUpdateValidate; +import com.wyh.common.vo.user.UserAddressDetailVo; +import com.wyh.common.vo.user.UserAddressListedVo; +import com.wyh.front.validate.common.PageValidate; + +/** + * 地址信息服务接口类 + * @author wyh + */ +public interface IUserAddressService { + + /** + * 地址信息列表 + * + * @author wyh + * @param pageValidate 分页参数 + * @param searchValidate 搜索参数 + * @return PageResult + */ + PageResult list(PageValidate pageValidate, UserAddressSearchValidate searchValidate); + + /** + * 地址信息详情 + * + * @author wyh + * @param id 主键ID + * @return UserAddressDetailVo + */ + UserAddressDetailVo detail(Integer id); + + /** + * 地址信息新增 + * + * @author wyh + * @param createValidate 参数 + */ + void add(UserAddressCreateValidate createValidate); + + /** + * 地址信息编辑 + * + * @author wyh + * @param updateValidate 参数 + */ + void edit(UserAddressUpdateValidate updateValidate); + + /** + * 地址信息删除 + * + * @author wyh + * @param id 主键ID + */ + void del(Integer id); + +} diff --git a/ZJ-java/ZJ-front/src/main/java/com/wyh/front/service/impl/UserAddressServiceImpl.java b/ZJ-java/ZJ-front/src/main/java/com/wyh/front/service/impl/UserAddressServiceImpl.java new file mode 100644 index 0000000..ff74124 --- /dev/null +++ b/ZJ-java/ZJ-front/src/main/java/com/wyh/front/service/impl/UserAddressServiceImpl.java @@ -0,0 +1,165 @@ +package com.wyh.front.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.wyh.common.core.PageResult; +import com.wyh.common.entity.user.UserAddress; +import com.wyh.common.mapper.user.UserAddressMapper; +import com.wyh.common.util.TimeUtils; +import com.wyh.common.validator.user.UserAddressCreateValidate; +import com.wyh.common.validator.user.UserAddressSearchValidate; +import com.wyh.common.validator.user.UserAddressUpdateValidate; +import com.wyh.common.vo.user.UserAddressDetailVo; +import com.wyh.common.vo.user.UserAddressListedVo; +import com.wyh.front.service.IUserAddressService; +import com.wyh.front.validate.common.PageValidate; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.util.Assert; + +import javax.annotation.Resource; +import java.util.LinkedList; +import java.util.List; + +/** + * 地址信息实现类 + * @author wyh + */ +@Service +public class UserAddressServiceImpl implements IUserAddressService { + + @Resource + UserAddressMapper userAddressMapper; + + /** + * 地址信息列表 + * + * @author wyh + * @param pageValidate 分页参数 + * @param searchValidate 搜索参数 + * @return PageResult + */ + @Override + public PageResult list(PageValidate pageValidate, UserAddressSearchValidate searchValidate) { + Integer page = pageValidate.getPageNo(); + Integer limit = pageValidate.getPageSize(); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("is_delete", 0); + queryWrapper.orderByDesc("id"); + + userAddressMapper.setSearch(queryWrapper, searchValidate, new String[]{ + "like:mobile:str", + "=:unit:str", + "like:userName@user_name:str", + "=:area:str", + "=:address:str", + "=:isDefault@is_default:int", + }); + + IPage iPage = userAddressMapper.selectPage(new Page<>(page, limit), queryWrapper); + + List list = new LinkedList<>(); + for(UserAddress item : iPage.getRecords()) { + UserAddressListedVo vo = new UserAddressListedVo(); + BeanUtils.copyProperties(item, vo); + vo.setCreateTime(TimeUtils.timestampToDate(item.getCreateTime())); + vo.setUpdateTime(TimeUtils.timestampToDate(item.getUpdateTime())); + list.add(vo); + } + + return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list); + } + + /** + * 地址信息详情 + * + * @author wyh + * @param id 主键参数 + * @return UserAddress + */ + @Override + public UserAddressDetailVo detail(Integer id) { + UserAddress model = userAddressMapper.selectOne( + new QueryWrapper() + .eq("id", id) + .eq("is_delete", 0) + .last("limit 1")); + + Assert.notNull(model, "数据不存在"); + + UserAddressDetailVo vo = new UserAddressDetailVo(); + BeanUtils.copyProperties(model, vo); + return vo; + } + + /** + * 地址信息新增 + * + * @author wyh + * @param createValidate 参数 + */ + @Override + public void add(UserAddressCreateValidate createValidate) { + UserAddress model = new UserAddress(); + model.setMobile(createValidate.getMobile()); + model.setCreateTime(System.currentTimeMillis() / 1000); + model.setUpdateTime(System.currentTimeMillis() / 1000); + model.setUnit(createValidate.getUnit()); + model.setUserName(createValidate.getUserName()); + model.setArea(createValidate.getArea()); + model.setAddress(createValidate.getAddress()); + model.setIsDefault(createValidate.getIsDefault()); + userAddressMapper.insert(model); + } + + /** + * 地址信息编辑 + * + * @author wyh + * @param updateValidate 参数 + */ + @Override + public void edit(UserAddressUpdateValidate updateValidate) { + UserAddress model = userAddressMapper.selectOne( + new QueryWrapper() + .eq("id", updateValidate.getId()) + .eq("is_delete", 0) + .last("limit 1")); + + Assert.notNull(model, "数据不存在!"); + + model.setId(updateValidate.getId()); + model.setMobile(updateValidate.getMobile()); + model.setUpdateTime(System.currentTimeMillis() / 1000); + model.setUnit(updateValidate.getUnit()); + model.setUserName(updateValidate.getUserName()); + model.setArea(updateValidate.getArea()); + model.setAddress(updateValidate.getAddress()); + model.setIsDefault(updateValidate.getIsDefault()); + userAddressMapper.updateById(model); + } + + /** + * 地址信息删除 + * + * @author wyh + * @param id 主键ID + */ + @Override + public void del(Integer id) { + UserAddress model = userAddressMapper.selectOne( + new QueryWrapper() + .eq("id", id) + .eq("is_delete", 0) + .last("limit 1")); + + Assert.notNull(model, "数据不存在!"); + + model.setIsDelete(1); + model.setDeleteTime(System.currentTimeMillis() / 1000); + userAddressMapper.updateById(model); + } + +} diff --git a/admin/src/api/salesman.ts b/admin/src/api/salesman.ts new file mode 100644 index 0000000..0f74ed2 --- /dev/null +++ b/admin/src/api/salesman.ts @@ -0,0 +1,26 @@ +import request from '@/utils/request' + +// 业务员信息列表 +export function salesmanLists(params?: Record) { + return request.get({ url: '/salesman/list', params }) +} + +// 业务员信息详情 +export function salesmanDetail(params: Record) { + return request.get({ url: '/salesman/detail', params }) +} + +// 业务员信息新增 +export function salesmanAdd(params: Record) { + return request.post({ url: '/salesman/add', params }) +} + +// 业务员信息编辑 +export function salesmanEdit(params: Record) { + return request.post({ url: '/salesman/edit', params }) +} + +// 业务员信息删除 +export function salesmanDelete(params: Record) { + return request.post({ url: '/salesman/del', params }) +} diff --git a/admin/src/views/salesman/edit.vue b/admin/src/views/salesman/edit.vue new file mode 100644 index 0000000..2958dfc --- /dev/null +++ b/admin/src/views/salesman/edit.vue @@ -0,0 +1,134 @@ + + diff --git a/admin/src/views/salesman/index.vue b/admin/src/views/salesman/index.vue new file mode 100644 index 0000000..45746b1 --- /dev/null +++ b/admin/src/views/salesman/index.vue @@ -0,0 +1,119 @@ + +