From 41f5c01599ad8fae3eefce9b6c67f3789873c47c Mon Sep 17 00:00:00 2001 From: wangfukang <15630117759@163.com> Date: Thu, 19 Mar 2026 18:22:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=B9=E6=8E=A5=E6=8B=BC=E5=9B=A2=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cc/hiver/core/entity/Worker.java | 104 +++++------------- .../core/serviceimpl/WorkerServiceImpl.java | 31 +----- .../java/cc/hiver/core/vo/WorkerQueryVO.java | 24 ++-- .../mall/controller/OrderController.java | 6 - .../controller/UserAddressController.java | 102 +++++++++++++++++ .../mall/controller/WorkerController.java | 21 ---- .../controller/WorkerRelaPriceController.java | 33 ++++-- .../mall/dao/mapper/UserAddressMapper.java | 13 +++ .../service/impl/DeductLogServiceImpl.java | 2 - .../cc/hiver/mall/entity/UserAddress.java | 47 ++++++++ .../cc/hiver/mall/entity/WorkerRelaPrice.java | 5 +- .../cc/hiver/mall/pojo/vo/UserAddressVo.java | 19 ++++ .../hiver/mall/pojo/vo/WorkerRealPriceVo.java | 36 ++++++ .../service/mybatis/UserAddressService.java | 28 +++++ .../mybatis/UserAddressServiceImpl.java | 61 ++++++++++ .../resources/mapper/UserAddressMapper.xml | 29 +++++ .../mapper/WorkerRelaPriceMapper.xml | 9 +- 17 files changed, 413 insertions(+), 157 deletions(-) create mode 100644 hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/UserAddressController.java create mode 100644 hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/UserAddressMapper.java create mode 100644 hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/UserAddress.java create mode 100644 hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/UserAddressVo.java create mode 100644 hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/WorkerRealPriceVo.java create mode 100644 hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/UserAddressService.java create mode 100644 hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/UserAddressServiceImpl.java create mode 100644 hiver-modules/hiver-mall/src/main/resources/mapper/UserAddressMapper.xml diff --git a/hiver-core/src/main/java/cc/hiver/core/entity/Worker.java b/hiver-core/src/main/java/cc/hiver/core/entity/Worker.java index ee1f3f9c..79b8aa0b 100644 --- a/hiver-core/src/main/java/cc/hiver/core/entity/Worker.java +++ b/hiver-core/src/main/java/cc/hiver/core/entity/Worker.java @@ -31,7 +31,7 @@ import java.util.Date; @DynamicUpdate @Table(name = "t_worker") @TableName("t_worker") -@ApiModel(value = "抢单工管理") +@ApiModel(value = "配送员管理") @EntityListeners(AuditingEntityListener.class) @JsonIgnoreProperties(value = {"hibernateLazyInitializer", "handler", "fieldHandler"}) public class Worker implements Serializable { @@ -39,50 +39,36 @@ public class Worker implements Serializable { private static final long serialVersionUID = 1L; /** - * 抢单工编号 + * 配送员编号 */ @Id - @ApiModelProperty("抢单工编号") + @ApiModelProperty("配送员编号") @Column(name = "worker_id", nullable = false) private String workerId = "W" + SnowFlakeUtil.nextId().toString(); /** - * 抢单工名称 + * 配送员名称 */ - @ApiModelProperty("抢单工名称") + @ApiModelProperty("配送员名称") @Column(name = "worker_name") private String workerName; /** - * 抢单工简介 + * 当前佣金余额 */ - @ApiModelProperty("抢单工简介") - @Column(name = "worker_describe") - private String workerDescribe; - - /** - * 缴押金总额 - */ - @Column(name = "depo_num") - @ApiModelProperty("缴押金总额") - private BigDecimal depoNum = new BigDecimal(0); - - /** - * 押金余额 - */ - @ApiModelProperty("押金余额") + @ApiModelProperty("当前佣金余额") @Column(name = "depo_bal") private BigDecimal depoBal = new BigDecimal(0); /** - * 接单状态 1-可抢单 2-不可接单(押金不足状态) 3-已禁用(手工预置状态) + * 接单状态 1-可抢单 2-不可接单() 3-已禁用(手工预置状态) */ @Column(name = "worker_status") - @ApiModelProperty("接单状态 1-可抢单 2-不可接单(押金不足状态) 3-已禁用(手工预置状态)") + @ApiModelProperty("接单状态 1-可抢单 2-不可接单() 3-已禁用(手工预置状态)") private Integer workerStatus = 1; - @ApiModelProperty("订单工创建人") + @ApiModelProperty("配送员创建人") @CreatedBy @TableField(fill = FieldFill.INSERT) private String createBy; @@ -90,10 +76,10 @@ public class Worker implements Serializable { @CreatedDate @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @ApiModelProperty("订单工创建时间") + @ApiModelProperty("配送员创建时间") private Date createTime; - @ApiModelProperty("订单工修改人") + @ApiModelProperty("配送员修改人") @LastModifiedBy @TableField(fill = FieldFill.UPDATE) private String updateBy; @@ -101,7 +87,7 @@ public class Worker implements Serializable { @LastModifiedDate @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @ApiModelProperty(value = "订单工修改时间") + @ApiModelProperty(value = "配送员修改时间") @TableField(fill = FieldFill.UPDATE) private Date updateTime; @@ -112,43 +98,20 @@ public class Worker implements Serializable { @ApiModelProperty("联系方式") private String mobile; - - /** - * 订单与抢单工映射关系 - * - * 多端中的列键值《外键》指向一端 一对多的单向关联,我们还是推荐使用一张中间表来建立关系。 - */ - /*@OneToMany(targetEntity = Order.class,mappedBy = "orderByWorker",cascade = CascadeType.ALL,fetch = FetchType.EAGER) - private List order;*/ - /** * 区域 */ @Column(name = "region") - @ApiModelProperty("办公区域") + @ApiModelProperty("接单区域") private String region; /** * 区域名称 */ @Column(name = "region_title") - @ApiModelProperty("办公区域") + @ApiModelProperty("接单区域") private String regionTitle; - /** - * 人员标识 - */ - @ApiModelProperty("人员标识 1-扛包工 2-快递员") - @Column(name = "sign_Person") - private String signPerson; - - /** - * 所属公司 - */ - @ApiModelProperty("所属公司") - @Column(name = "owner_Company") - private String ownerCompany; - /** * 描述 */ @@ -159,17 +122,10 @@ public class Worker implements Serializable { /** * 描述 */ - @ApiModelProperty("记录扛包工推送机器id") + @ApiModelProperty("记录配送员推送机器id") @Column(name = "client_Id") private String clientId; - /** - * 扛包扣减固定金额 - */ - @ApiModelProperty("扛包扣减固定金额") - @Column(name = "fixed_amount") - private BigDecimal fixedAmount = new BigDecimal(0); - /** * 登录账号 */ @@ -185,19 +141,6 @@ public class Worker implements Serializable { @Column(name = "password") private String password; - - @ApiModelProperty(value = "省") - @Column(name = "province") - private String province; - - @ApiModelProperty(value = "市") - @Column(name = "city") - private String city; - - @ApiModelProperty(value = "县区") - @Column(name = "area") - private String area; - @ApiModelProperty(value = "上下线状态:0:下线;1:上线") @Column(name = "is_on_line") private Integer isOnLine; @@ -207,8 +150,16 @@ public class Worker implements Serializable { private BigDecimal rebateAmount; @Transient - @ApiModelProperty(value = "手上的订单数") - private Integer orderCount; + @ApiModelProperty(value = "手上的待接单订单数") + private Integer orderWaitCount; + + @Transient + @ApiModelProperty(value = "手上的待取货订单数") + private Integer orderGetCount; + + @Transient + @ApiModelProperty(value = "手上的待送达订单数") + private Integer orderPutCount; @ApiModelProperty(value = "用户id") @Column(name = "user_id") @@ -238,4 +189,7 @@ public class Worker implements Serializable { @Column(name = "avg_time") private BigDecimal avgTime; + @ApiModelProperty(value = "超出3楼额外费用") + @Column(name = "high_floor_fee") + private BigDecimal highFloorFee; } diff --git a/hiver-core/src/main/java/cc/hiver/core/serviceimpl/WorkerServiceImpl.java b/hiver-core/src/main/java/cc/hiver/core/serviceimpl/WorkerServiceImpl.java index 856ac8eb..b6a906c0 100644 --- a/hiver-core/src/main/java/cc/hiver/core/serviceimpl/WorkerServiceImpl.java +++ b/hiver-core/src/main/java/cc/hiver/core/serviceimpl/WorkerServiceImpl.java @@ -64,7 +64,6 @@ public class WorkerServiceImpl implements WorkerService { final Path mobileField = root.get("mobile"); final Path createTimeField = root.get("createTime"); final Path signPersonField = root.get("signPerson"); - final Path ownerCompanyField = root.get("ownerCompany"); final Path isOnLineField = root.get("isOnLine"); @@ -95,30 +94,8 @@ public class WorkerServiceImpl implements WorkerService { list.add(cb.equal(isOnLineField, worker.getIsOnLine())); } - // 后台管理系统,只会查询快递员或者拉包工,其他不限制 - if("1".equals(worker.getAdminFlag())){ - if (CharSequenceUtil.isNotEmpty(worker.getSignPerson())) { - list.add(cb.equal(signPersonField, worker.getSignPerson())); - } - }else{ - if (CharSequenceUtil.isNotEmpty(worker.getSignPerson())) { - list.add(cb.equal(signPersonField, worker.getSignPerson())); - //如果是快递公司,则只能选择归属公司,否则不限制 - if ("2".equals(worker.getSignPerson()) && CharSequenceUtil.isNotEmpty(worker.getOwnerCompany())) { - final String[] transCompany = worker.getOwnerCompany().trim().split(","); - list.add(ownerCompanyField.in(transCompany)); - } - } - // 不传公司名称,查询拉包工,传的话查询该快递公司下的快递员 - if (StringUtils.isNotEmpty(worker.getOwnerCompany())) { - list.add(cb.like(ownerCompanyField, '%' + worker.getOwnerCompany() + '%')); - } else { - list.add(cb.equal(signPersonField, WorkerConstant.SIGN_PERSON[0])); - } - } - // 模糊搜素 - // 根据拉包工姓名及电话,模糊匹配 + // 根据配送员姓名及电话,模糊匹配 if (CharSequenceUtil.isNotEmpty(worker.getSearchStr())) { list.add(cb.or(cb.like(workerNameField, '%' + worker.getSearchStr()+'%'), cb.like(mobileField,'%' + worker.getSearchStr()+'%'))); } @@ -161,12 +138,6 @@ public class WorkerServiceImpl implements WorkerService { String orderCount = stringIntegerMap.get("orderCount").toString(); workerOrderCountMap.put(workId, Integer.valueOf(orderCount)); } - for (Worker worker1 : content) { - final String workerId = worker1.getWorkerId(); - if (workerOrderCountMap.containsKey(workerId)) { - worker1.setOrderCount(workerOrderCountMap.get(workerId)); - } - } return workerPage; } diff --git a/hiver-core/src/main/java/cc/hiver/core/vo/WorkerQueryVO.java b/hiver-core/src/main/java/cc/hiver/core/vo/WorkerQueryVO.java index a5a5c497..343aa726 100644 --- a/hiver-core/src/main/java/cc/hiver/core/vo/WorkerQueryVO.java +++ b/hiver-core/src/main/java/cc/hiver/core/vo/WorkerQueryVO.java @@ -5,29 +5,31 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.math.BigDecimal; + @Data -@ApiModel("订单工查询接口") +@ApiModel("配送员查询接口") public class WorkerQueryVO extends HiverBasePageQuery { /** * 抢单工编号 */ - @ApiModelProperty("抢单工编号") + @ApiModelProperty("配送员编号") private String workerId; /** * 抢单工名称 */ - @ApiModelProperty("抢单工名称") + @ApiModelProperty("配送员名称") private String workerName; /** * 抢单工简介 */ - @ApiModelProperty("抢单工简介") + @ApiModelProperty("配送员简介") private String workerDescribe; @@ -37,6 +39,14 @@ public class WorkerQueryVO extends HiverBasePageQuery { @ApiModelProperty("缴押金总额") private Integer depoNum; + @ApiModelProperty("是否接收指派单 0不接指派 1接收") + private Integer getPushOrder; + + @ApiModelProperty("评分") + private BigDecimal score; + + @ApiModelProperty("配送平均时长") + private BigDecimal avgTime; /** * 押金余额 @@ -48,7 +58,7 @@ public class WorkerQueryVO extends HiverBasePageQuery { /** * 接单状态 1-可抢单 2-不可接单(押金不足状态) 3-已禁用(手工预置状态) */ - @ApiModelProperty("接单状态 1-可抢单 2-不可接单(押金不足状态) 3-已禁用(手工预置状态)") + @ApiModelProperty("接单状态 1-可抢单 2-不可接单 3-已禁用(手工预置状态)") private Integer workerStatus; /** @@ -66,13 +76,13 @@ public class WorkerQueryVO extends HiverBasePageQuery { /** * 区域 */ - @ApiModelProperty("办公区域") + @ApiModelProperty("配送区域") private String region; /** * 人员标识 */ - @ApiModelProperty("人员标识 1-扛包工 2-快递员") + @ApiModelProperty("人员标识") private String signPerson; /** diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/OrderController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/OrderController.java index 06a3a7e0..f87d7073 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/OrderController.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/OrderController.java @@ -282,13 +282,7 @@ public class OrderController { * 实体对象:运送方式 物流抢所有的物流的单 快递抢快递员所属公司的单 抢状态‘未预定的单’ * */ final OrderVO orderVO = new OrderVO(); - if ("1".equals(worker.getSignPerson())) { - orderVO.setOrderLogistics(OrderConstant.ORDER_LOGISTICS[0]); - } else { - orderVO.setOrderLogistics(OrderConstant.ORDER_LOGISTICS[1]); - } orderVO.setRegion(worker.getRegion()); - orderVO.setTransCompany(worker.getOwnerCompany()); orderVO.setOrderStatus(OrderConstant.ORDER_STATUS[0] + ',' + OrderConstant.ORDER_STATUS[6]); final OrderXd orderxd = new OrderXd(); // 这里不要自动生成的id diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/UserAddressController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/UserAddressController.java new file mode 100644 index 00000000..5f4d3ea7 --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/UserAddressController.java @@ -0,0 +1,102 @@ +package cc.hiver.mall.controller; + +import cc.hiver.core.common.utils.ResultUtil; +import cc.hiver.core.common.vo.Result; +import cc.hiver.mall.entity.UserAddress; +import cc.hiver.mall.pojo.vo.UserAddressVo; +import cc.hiver.mall.service.mybatis.UserAddressService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@Slf4j +@RestController +@Api(tags = "用户收货地址接口") +@RequestMapping(value = "/hiver/app/userAddress/") +public class UserAddressController { + + @Autowired + private UserAddressService userAddressService; + + @RequestMapping(value = "/save", method = RequestMethod.POST) + @ApiOperation(value = "新增用户收货地址") + public Result save(UserAddress userAddress) { + + // 如果是第一条地址或者传过来就是默认,设置默认逻辑可在这里增加 + // 为了安全起见这里直接调用 save,不处理复杂逻辑 + boolean result = userAddressService.save(userAddress); + if (result) { + // 如果传过来的就是默认地址,可以调用把其他的设置为非默认 + if (userAddress.getIsDefault() != null && userAddress.getIsDefault() == 1) { + userAddressService.setDefaultAddress(userAddress.getId(), userAddress.getUserId()); + } + return ResultUtil.success("添加成功"); + } else { + return ResultUtil.error("添加失败"); + } + } + + @RequestMapping(value = "/edit", method = RequestMethod.POST) + @ApiOperation(value = "编辑用户收货地址") + public Result edit(UserAddress userAddress) { + if (StringUtils.isBlank(userAddress.getId())) { + return ResultUtil.error("地址ID不能为空"); + } + // 不能修改别人的地址 + UserAddress old = userAddressService.getById(userAddress.getId()); + + boolean result = userAddressService.updateById(userAddress); + if (result) { + // 如果改成了默认地址,则更新其他为非默认 + if (userAddress.getIsDefault() != null && userAddress.getIsDefault() == 1) { + userAddressService.setDefaultAddress(userAddress.getId(), old.getUserId()); + } + return ResultUtil.success("修改成功"); + } else { + return ResultUtil.error("修改失败"); + } + } + + @RequestMapping(value = "/delById", method = RequestMethod.POST) + @ApiOperation(value = "删除用户收货地址") + public Result delById(@RequestParam("id")String id) { + if (StringUtils.isBlank(id)) { + return ResultUtil.error("地址ID不能为空"); + } + boolean result = userAddressService.removeById(id); + if (result) { + return ResultUtil.success("删除成功"); + } else { + return ResultUtil.error("删除失败"); + } + } + + @RequestMapping(value = "/list", method = RequestMethod.GET) + @ApiOperation(value = "获取当前用户的收货地址列表") + public Result list(@RequestParam("userId") String userId) { + if (userId == null || StringUtils.isEmpty(userId)) { + return ResultUtil.error("未获取到当前登录用户信息"); + } + List list = userAddressService.getAddressListByUserId(userId); + return new ResultUtil>().setData(list); + } + + @RequestMapping(value = "/setDefault", method = RequestMethod.POST) + @ApiOperation(value = "设置默认收货地址") + public Result setDefault(@RequestParam("id") String id,@RequestParam("userId") String userId) { + if (StringUtils.isBlank(id)) { + return ResultUtil.error("地址ID不能为空"); + } + userAddressService.setDefaultAddress(id, userId); + return ResultUtil.success("设置成功"); + } + +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/WorkerController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/WorkerController.java index bfcf9add..c8f7efe4 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/WorkerController.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/WorkerController.java @@ -102,16 +102,12 @@ public class WorkerController { Recharge recharge = new Recharge(); recharge.setRechargeName(u.getWorkerName()); - recharge.setRechargeDescribe(u.getWorkerDescribe()); recharge.setRechargeWorkerId(u.getWorkerId()); - recharge.setRechargeNum(u.getDepoNum()); recharge.setMobile(u.getMobile()); rechargeService.save(recharge); //更新余额,重置当次应缴 - u.setDepoBal(u.getDepoBal().add(u.getDepoNum())); - u.setDepoNum(new BigDecimal(0)); u.setIsOnLine(CommonConstant.ON_LINE); workerService.save(u); @@ -131,23 +127,6 @@ public class WorkerController { u.setRegion(null); u.setRegionTitle(""); } - //修改抢单工信息时如涉及到充值押金情况,需要更新余额且重置应缴 - if (u.getDepoNum() != null && u.getDepoNum().compareTo(BigDecimal.ZERO) > 0) { - - Recharge recharge = new Recharge(); - - recharge.setRechargeName(u.getWorkerName()); - recharge.setRechargeDescribe(u.getWorkerDescribe()); - recharge.setRechargeWorkerId(u.getWorkerId()); - recharge.setRechargeNum(u.getDepoNum()); - recharge.setMobile(u.getMobile()); - - rechargeService.save(recharge); - - Worker worker = workerService.get(u.getWorkerId()); - u.setDepoBal(worker.getDepoBal().add(u.getDepoNum())); - u.setDepoNum(new BigDecimal(0)); - } workerService.update(u); return ResultUtil.success("修改成功"); diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/WorkerRelaPriceController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/WorkerRelaPriceController.java index 556edcbe..43c025cd 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/WorkerRelaPriceController.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/WorkerRelaPriceController.java @@ -17,7 +17,10 @@ package cc.hiver.mall.controller; import cc.hiver.core.common.utils.ResultUtil; import cc.hiver.core.common.vo.Result; +import cc.hiver.core.entity.Worker; +import cc.hiver.core.service.WorkerService; import cc.hiver.mall.entity.WorkerRelaPrice; +import cc.hiver.mall.pojo.vo.WorkerRealPriceVo; import cc.hiver.mall.service.mybatis.WorkerRelaPriceService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -41,21 +44,37 @@ public class WorkerRelaPriceController { @Autowired private WorkerRelaPriceService workerRelaPriceService; + @Autowired + private WorkerService workerService; + @RequestMapping(value = "/getByWorkerId", method = RequestMethod.GET) @ApiOperation("根据配送员id获取") - public Result> getByProductId(@RequestParam String workerId) { + public Result getByProductId(@RequestParam String workerId) { + WorkerRealPriceVo workerRealPriceVo = new WorkerRealPriceVo(); + Worker worker = workerService.findByWorkerId(workerId); + workerRealPriceVo.setWorkerName(worker.getWorkerName()); + workerRealPriceVo.setCardPicture(worker.getCardPicture()); + workerRealPriceVo.setHighFloorFee(worker.getHighFloorFee()); final List workerRelaPriceList = workerRelaPriceService.selectByWorkerId(workerId); - return new ResultUtil>().setData(workerRelaPriceList); + workerRealPriceVo.setWorkerRelaPriceList(workerRelaPriceList); + return new ResultUtil().setData(workerRealPriceVo); } @PostMapping(value = "/batchAdd") @ApiOperation("批量新增") - public Result batchAdd(@RequestBody List workerRelaPrice) { - if(workerRelaPrice != null && !workerRelaPrice.isEmpty()){ - workerRelaPriceService.deleteByWorkerId(workerRelaPrice.get(0).getWorkerId()); + public Result batchAdd(@RequestBody WorkerRealPriceVo workerRealPriceVo) { + if(workerRealPriceVo != null){ + workerRelaPriceService.deleteByWorkerId(workerRealPriceVo.getWorkerRelaPriceList().get(0).getWorkerId()); } - // 批量新增 - final boolean b = workerRelaPriceService.saveBatch(workerRelaPrice); + //更新配送员信息 + Worker worker = new Worker(); + worker.setWorkerId(workerRealPriceVo.getWorkerRelaPriceList().get(0).getWorkerId()); + worker.setWorkerName(workerRealPriceVo.getWorkerName()); + worker.setCardPicture(workerRealPriceVo.getCardPicture()); + worker.setHighFloorFee(workerRealPriceVo.getHighFloorFee()); + workerService.update(worker); + // 批量新增配送规则 + final boolean b = workerRelaPriceService.saveBatch(workerRealPriceVo.getWorkerRelaPriceList()); if (b) { return ResultUtil.success("保存成功!"); } else { diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/UserAddressMapper.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/UserAddressMapper.java new file mode 100644 index 00000000..be151081 --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/UserAddressMapper.java @@ -0,0 +1,13 @@ +package cc.hiver.mall.dao.mapper; + +import cc.hiver.mall.entity.UserAddress; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +/** + * 用户收货地址 Mapper 接口 + */ +@Repository +public interface UserAddressMapper extends BaseMapper { + +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/deductlog/service/impl/DeductLogServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/deductlog/service/impl/DeductLogServiceImpl.java index 22f62d7c..fafca610 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/deductlog/service/impl/DeductLogServiceImpl.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/deductlog/service/impl/DeductLogServiceImpl.java @@ -120,8 +120,6 @@ public class DeductLogServiceImpl extends ServiceImpl workerRelaPriceList; +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/UserAddressService.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/UserAddressService.java new file mode 100644 index 00000000..c6987d48 --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/UserAddressService.java @@ -0,0 +1,28 @@ +package cc.hiver.mall.service.mybatis; + +import cc.hiver.mall.entity.UserAddress; +import cc.hiver.mall.pojo.vo.UserAddressVo; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + * 用户收货地址 服务类 + */ +public interface UserAddressService extends IService { + + /** + * 查询用户收货地址列表 + * @param userId 用户ID + * @return 地址列表 + */ + List getAddressListByUserId(String userId); + + /** + * 设置默认地址 + * @param id 地址ID + * @param userId 用户ID + */ + void setDefaultAddress(String id, String userId); + +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/UserAddressServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/UserAddressServiceImpl.java new file mode 100644 index 00000000..f2235760 --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/UserAddressServiceImpl.java @@ -0,0 +1,61 @@ +package cc.hiver.mall.serviceimpl.mybatis; + +import cc.hiver.mall.dao.mapper.UserAddressMapper; +import cc.hiver.mall.entity.UserAddress; +import cc.hiver.mall.pojo.vo.UserAddressVo; +import cc.hiver.mall.service.mybatis.UserAddressService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 用户收货地址 服务实现类 + */ +@Service +public class UserAddressServiceImpl extends ServiceImpl implements UserAddressService { + + @Override + public List getAddressListByUserId(String userId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("user_id", userId); + // 按默认地址排序(1在前面),然后再按创建时间降序 + queryWrapper.orderByDesc("is_default"); + queryWrapper.orderByDesc("create_time"); + + List list = this.list(queryWrapper); + if (list == null || list.isEmpty()) { + return new ArrayList<>(); + } + + return list.stream().map(address -> { + UserAddressVo vo = new UserAddressVo(); + BeanUtils.copyProperties(address, vo); + // 这里可以补充查询对应的楼座名称(字典值) 封装到 vo.setAreaName(...) + return vo; + }).collect(Collectors.toList()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void setDefaultAddress(String id, String userId) { + // 先将该用户的所有地址设置为非默认 + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("user_id", userId); + updateWrapper.set("is_default", 0); + this.update(updateWrapper); + + // 再将指定的地址设置为默认 + UpdateWrapper defaultWrapper = new UpdateWrapper<>(); + defaultWrapper.eq("id", id); + defaultWrapper.eq("user_id", userId); // 增加安全校验,防止修改别人的地址 + defaultWrapper.set("is_default", 1); + this.update(defaultWrapper); + } +} diff --git a/hiver-modules/hiver-mall/src/main/resources/mapper/UserAddressMapper.xml b/hiver-modules/hiver-mall/src/main/resources/mapper/UserAddressMapper.xml new file mode 100644 index 00000000..80a56812 --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/resources/mapper/UserAddressMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + id, user_id, receiver_name, receiver_phone, sex, area_id, floor, room_num, address_tag, is_default, + create_by, create_time, update_by, update_time, del_flag + + + diff --git a/hiver-modules/hiver-mall/src/main/resources/mapper/WorkerRelaPriceMapper.xml b/hiver-modules/hiver-mall/src/main/resources/mapper/WorkerRelaPriceMapper.xml index f520fbd4..273fd1fe 100644 --- a/hiver-modules/hiver-mall/src/main/resources/mapper/WorkerRelaPriceMapper.xml +++ b/hiver-modules/hiver-mall/src/main/resources/mapper/WorkerRelaPriceMapper.xml @@ -16,25 +16,24 @@ - id, create_by, create_time, del_flag, update_by, update_time, worker_id, get_area_id, - get_area_name, put_area_id, put_area_name, ramark, order_type, order_bkge, high_floor_fee, get_push_order + get_area_name, put_area_id, put_area_name, remark, order_type, order_bkge, get_push_order insert into t_worker_rela_price (id, create_by, create_time, del_flag, update_by, update_time, - worker_id, get_area_id, get_area_name, put_area_id, put_area_name, remark, order_type, order_bkge) + worker_id, get_area_id, get_area_name, put_area_id, put_area_name, remark, order_type, order_bkge, get_push_order) values (#{id,jdbcType=VARCHAR}, #{createBy,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, #{delFlag,jdbcType=INTEGER}, #{updateBy,jdbcType=VARCHAR}, #{updateTime,jdbcType=TIMESTAMP}, #{workerId,jdbcType=VARCHAR}, #{getAreaId,jdbcType=VARCHAR}, #{getAreaName,jdbcType=VARCHAR}, #{putAreaId,jdbcType=VARCHAR}, #{putAreaName,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR}, - #{orderType,jdbcType=INTEGER}, #{orderBkge,jdbcType=DECIMAL},, #{highFloorFee,jdbcType=DECIMAL} - ,#{getPushOrder,jdbcType=INTEGER}) + #{orderType,jdbcType=INTEGER}, #{orderBkge,jdbcType=DECIMAL}, + #{getPushOrder,jdbcType=INTEGER})