Browse Source

对接拼团数据

master
wangfukang 4 weeks ago
parent
commit
41f5c01599
  1. 104
      hiver-core/src/main/java/cc/hiver/core/entity/Worker.java
  2. 31
      hiver-core/src/main/java/cc/hiver/core/serviceimpl/WorkerServiceImpl.java
  3. 24
      hiver-core/src/main/java/cc/hiver/core/vo/WorkerQueryVO.java
  4. 6
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/OrderController.java
  5. 102
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/UserAddressController.java
  6. 21
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/WorkerController.java
  7. 33
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/WorkerRelaPriceController.java
  8. 13
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/UserAddressMapper.java
  9. 2
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/deductlog/service/impl/DeductLogServiceImpl.java
  10. 47
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/UserAddress.java
  11. 5
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/WorkerRelaPrice.java
  12. 19
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/UserAddressVo.java
  13. 36
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/WorkerRealPriceVo.java
  14. 28
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/UserAddressService.java
  15. 61
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/UserAddressServiceImpl.java
  16. 29
      hiver-modules/hiver-mall/src/main/resources/mapper/UserAddressMapper.xml
  17. 9
      hiver-modules/hiver-mall/src/main/resources/mapper/WorkerRelaPriceMapper.xml

104
hiver-core/src/main/java/cc/hiver/core/entity/Worker.java

@ -31,7 +31,7 @@ import java.util.Date;
@DynamicUpdate @DynamicUpdate
@Table(name = "t_worker") @Table(name = "t_worker")
@TableName("t_worker") @TableName("t_worker")
@ApiModel(value = "抢单工管理") @ApiModel(value = "配送员管理")
@EntityListeners(AuditingEntityListener.class) @EntityListeners(AuditingEntityListener.class)
@JsonIgnoreProperties(value = {"hibernateLazyInitializer", "handler", "fieldHandler"}) @JsonIgnoreProperties(value = {"hibernateLazyInitializer", "handler", "fieldHandler"})
public class Worker implements Serializable { public class Worker implements Serializable {
@ -39,50 +39,36 @@ public class Worker implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* 抢单工编号 * 配送员编号
*/ */
@Id @Id
@ApiModelProperty("抢单工编号") @ApiModelProperty("配送员编号")
@Column(name = "worker_id", nullable = false) @Column(name = "worker_id", nullable = false)
private String workerId = "W" + SnowFlakeUtil.nextId().toString(); private String workerId = "W" + SnowFlakeUtil.nextId().toString();
/** /**
* 抢单工名称 * 配送员名称
*/ */
@ApiModelProperty("抢单工名称") @ApiModelProperty("配送员名称")
@Column(name = "worker_name") @Column(name = "worker_name")
private String workerName; private String workerName;
/** /**
* 抢单工简介 * 当前佣金余额
*/ */
@ApiModelProperty("抢单工简介") @ApiModelProperty("当前佣金余额")
@Column(name = "worker_describe")
private String workerDescribe;
/**
* 缴押金总额
*/
@Column(name = "depo_num")
@ApiModelProperty("缴押金总额")
private BigDecimal depoNum = new BigDecimal(0);
/**
* 押金余额
*/
@ApiModelProperty("押金余额")
@Column(name = "depo_bal") @Column(name = "depo_bal")
private BigDecimal depoBal = new BigDecimal(0); private BigDecimal depoBal = new BigDecimal(0);
/** /**
* 接单状态 1-可抢单 2-不可接单(押金不足状态) 3-已禁用(手工预置状态) * 接单状态 1-可抢单 2-不可接单() 3-已禁用(手工预置状态)
*/ */
@Column(name = "worker_status") @Column(name = "worker_status")
@ApiModelProperty("接单状态 1-可抢单 2-不可接单(押金不足状态) 3-已禁用(手工预置状态)") @ApiModelProperty("接单状态 1-可抢单 2-不可接单() 3-已禁用(手工预置状态)")
private Integer workerStatus = 1; private Integer workerStatus = 1;
@ApiModelProperty("订单工创建人") @ApiModelProperty("配送员创建人")
@CreatedBy @CreatedBy
@TableField(fill = FieldFill.INSERT) @TableField(fill = FieldFill.INSERT)
private String createBy; private String createBy;
@ -90,10 +76,10 @@ public class Worker implements Serializable {
@CreatedDate @CreatedDate
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("订单工创建时间") @ApiModelProperty("配送员创建时间")
private Date createTime; private Date createTime;
@ApiModelProperty("订单工修改人") @ApiModelProperty("配送员修改人")
@LastModifiedBy @LastModifiedBy
@TableField(fill = FieldFill.UPDATE) @TableField(fill = FieldFill.UPDATE)
private String updateBy; private String updateBy;
@ -101,7 +87,7 @@ public class Worker implements Serializable {
@LastModifiedDate @LastModifiedDate
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "订单工修改时间") @ApiModelProperty(value = "配送员修改时间")
@TableField(fill = FieldFill.UPDATE) @TableField(fill = FieldFill.UPDATE)
private Date updateTime; private Date updateTime;
@ -112,43 +98,20 @@ public class Worker implements Serializable {
@ApiModelProperty("联系方式") @ApiModelProperty("联系方式")
private String mobile; private String mobile;
/**
* 订单与抢单工映射关系
*
* 多端中的列键值外键指向一端 一对多的单向关联我们还是推荐使用一张中间表来建立关系
*/
/*@OneToMany(targetEntity = Order.class,mappedBy = "orderByWorker",cascade = CascadeType.ALL,fetch = FetchType.EAGER)
private List<Order> order;*/
/** /**
* 区域 * 区域
*/ */
@Column(name = "region") @Column(name = "region")
@ApiModelProperty("办公区域") @ApiModelProperty("接单区域")
private String region; private String region;
/** /**
* 区域名称 * 区域名称
*/ */
@Column(name = "region_title") @Column(name = "region_title")
@ApiModelProperty("办公区域") @ApiModelProperty("接单区域")
private String regionTitle; 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") @Column(name = "client_Id")
private String clientId; 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") @Column(name = "password")
private String 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:上线") @ApiModelProperty(value = "上下线状态:0:下线;1:上线")
@Column(name = "is_on_line") @Column(name = "is_on_line")
private Integer isOnLine; private Integer isOnLine;
@ -207,8 +150,16 @@ public class Worker implements Serializable {
private BigDecimal rebateAmount; private BigDecimal rebateAmount;
@Transient @Transient
@ApiModelProperty(value = "手上的订单数") @ApiModelProperty(value = "手上的待接单订单数")
private Integer orderCount; private Integer orderWaitCount;
@Transient
@ApiModelProperty(value = "手上的待取货订单数")
private Integer orderGetCount;
@Transient
@ApiModelProperty(value = "手上的待送达订单数")
private Integer orderPutCount;
@ApiModelProperty(value = "用户id") @ApiModelProperty(value = "用户id")
@Column(name = "user_id") @Column(name = "user_id")
@ -238,4 +189,7 @@ public class Worker implements Serializable {
@Column(name = "avg_time") @Column(name = "avg_time")
private BigDecimal avgTime; private BigDecimal avgTime;
@ApiModelProperty(value = "超出3楼额外费用")
@Column(name = "high_floor_fee")
private BigDecimal highFloorFee;
} }

31
hiver-core/src/main/java/cc/hiver/core/serviceimpl/WorkerServiceImpl.java

@ -64,7 +64,6 @@ public class WorkerServiceImpl implements WorkerService {
final Path<String> mobileField = root.get("mobile"); final Path<String> mobileField = root.get("mobile");
final Path<Date> createTimeField = root.get("createTime"); final Path<Date> createTimeField = root.get("createTime");
final Path<Date> signPersonField = root.get("signPerson"); final Path<Date> signPersonField = root.get("signPerson");
final Path<String> ownerCompanyField = root.get("ownerCompany");
final Path<String> isOnLineField = root.get("isOnLine"); final Path<String> isOnLineField = root.get("isOnLine");
@ -95,30 +94,8 @@ public class WorkerServiceImpl implements WorkerService {
list.add(cb.equal(isOnLineField, worker.getIsOnLine())); 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())) { if (CharSequenceUtil.isNotEmpty(worker.getSearchStr())) {
list.add(cb.or(cb.like(workerNameField, '%' + worker.getSearchStr()+'%'), cb.like(mobileField,'%' + 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(); String orderCount = stringIntegerMap.get("orderCount").toString();
workerOrderCountMap.put(workId, Integer.valueOf(orderCount)); 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; return workerPage;
} }

24
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 io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
@Data @Data
@ApiModel("订单工查询接口") @ApiModel("配送员查询接口")
public class WorkerQueryVO extends HiverBasePageQuery { public class WorkerQueryVO extends HiverBasePageQuery {
/** /**
* 抢单工编号 * 抢单工编号
*/ */
@ApiModelProperty("抢单工编号") @ApiModelProperty("配送员编号")
private String workerId; private String workerId;
/** /**
* 抢单工名称 * 抢单工名称
*/ */
@ApiModelProperty("抢单工名称") @ApiModelProperty("配送员名称")
private String workerName; private String workerName;
/** /**
* 抢单工简介 * 抢单工简介
*/ */
@ApiModelProperty("抢单工简介") @ApiModelProperty("配送员简介")
private String workerDescribe; private String workerDescribe;
@ -37,6 +39,14 @@ public class WorkerQueryVO extends HiverBasePageQuery {
@ApiModelProperty("缴押金总额") @ApiModelProperty("缴押金总额")
private Integer depoNum; 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-已禁用(手工预置状态) * 接单状态 1-可抢单 2-不可接单(押金不足状态) 3-已禁用(手工预置状态)
*/ */
@ApiModelProperty("接单状态 1-可抢单 2-不可接单(押金不足状态) 3-已禁用(手工预置状态)") @ApiModelProperty("接单状态 1-可抢单 2-不可接单 3-已禁用(手工预置状态)")
private Integer workerStatus; private Integer workerStatus;
/** /**
@ -66,13 +76,13 @@ public class WorkerQueryVO extends HiverBasePageQuery {
/** /**
* 区域 * 区域
*/ */
@ApiModelProperty("办公区域") @ApiModelProperty("配送区域")
private String region; private String region;
/** /**
* 人员标识 * 人员标识
*/ */
@ApiModelProperty("人员标识 1-扛包工 2-快递员") @ApiModelProperty("人员标识")
private String signPerson; private String signPerson;
/** /**

6
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(); 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.setRegion(worker.getRegion());
orderVO.setTransCompany(worker.getOwnerCompany());
orderVO.setOrderStatus(OrderConstant.ORDER_STATUS[0] + ',' + OrderConstant.ORDER_STATUS[6]); orderVO.setOrderStatus(OrderConstant.ORDER_STATUS[0] + ',' + OrderConstant.ORDER_STATUS[6]);
final OrderXd orderxd = new OrderXd(); final OrderXd orderxd = new OrderXd();
// 这里不要自动生成的id // 这里不要自动生成的id

102
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<UserAddressVo> list = userAddressService.getAddressListByUserId(userId);
return new ResultUtil<List<UserAddressVo>>().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("设置成功");
}
}

21
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 recharge = new Recharge();
recharge.setRechargeName(u.getWorkerName()); recharge.setRechargeName(u.getWorkerName());
recharge.setRechargeDescribe(u.getWorkerDescribe());
recharge.setRechargeWorkerId(u.getWorkerId()); recharge.setRechargeWorkerId(u.getWorkerId());
recharge.setRechargeNum(u.getDepoNum());
recharge.setMobile(u.getMobile()); recharge.setMobile(u.getMobile());
rechargeService.save(recharge); rechargeService.save(recharge);
//更新余额,重置当次应缴 //更新余额,重置当次应缴
u.setDepoBal(u.getDepoBal().add(u.getDepoNum()));
u.setDepoNum(new BigDecimal(0));
u.setIsOnLine(CommonConstant.ON_LINE); u.setIsOnLine(CommonConstant.ON_LINE);
workerService.save(u); workerService.save(u);
@ -131,23 +127,6 @@ public class WorkerController {
u.setRegion(null); u.setRegion(null);
u.setRegionTitle(""); 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); workerService.update(u);
return ResultUtil.success("修改成功"); return ResultUtil.success("修改成功");

33
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.utils.ResultUtil;
import cc.hiver.core.common.vo.Result; 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.entity.WorkerRelaPrice;
import cc.hiver.mall.pojo.vo.WorkerRealPriceVo;
import cc.hiver.mall.service.mybatis.WorkerRelaPriceService; import cc.hiver.mall.service.mybatis.WorkerRelaPriceService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@ -41,21 +44,37 @@ public class WorkerRelaPriceController {
@Autowired @Autowired
private WorkerRelaPriceService workerRelaPriceService; private WorkerRelaPriceService workerRelaPriceService;
@Autowired
private WorkerService workerService;
@RequestMapping(value = "/getByWorkerId", method = RequestMethod.GET) @RequestMapping(value = "/getByWorkerId", method = RequestMethod.GET)
@ApiOperation("根据配送员id获取") @ApiOperation("根据配送员id获取")
public Result<List<WorkerRelaPrice>> getByProductId(@RequestParam String workerId) { public Result<WorkerRealPriceVo> 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<WorkerRelaPrice> workerRelaPriceList = workerRelaPriceService.selectByWorkerId(workerId); final List<WorkerRelaPrice> workerRelaPriceList = workerRelaPriceService.selectByWorkerId(workerId);
return new ResultUtil<List<WorkerRelaPrice>>().setData(workerRelaPriceList); workerRealPriceVo.setWorkerRelaPriceList(workerRelaPriceList);
return new ResultUtil<WorkerRealPriceVo>().setData(workerRealPriceVo);
} }
@PostMapping(value = "/batchAdd") @PostMapping(value = "/batchAdd")
@ApiOperation("批量新增") @ApiOperation("批量新增")
public Result batchAdd(@RequestBody List<WorkerRelaPrice> workerRelaPrice) { public Result batchAdd(@RequestBody WorkerRealPriceVo workerRealPriceVo) {
if(workerRelaPrice != null && !workerRelaPrice.isEmpty()){ if(workerRealPriceVo != null){
workerRelaPriceService.deleteByWorkerId(workerRelaPrice.get(0).getWorkerId()); 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) { if (b) {
return ResultUtil.success("保存成功!"); return ResultUtil.success("保存成功!");
} else { } else {

13
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<UserAddress> {
}

2
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/deductlog/service/impl/DeductLogServiceImpl.java

@ -120,8 +120,6 @@ public class DeductLogServiceImpl extends ServiceImpl<DeductLogMapper, DeductLog
if (StringUtils.isNotEmpty(workId) && !SaleConstant.TRANSPORT_TYPE[3].equals(transportType)) { if (StringUtils.isNotEmpty(workId) && !SaleConstant.TRANSPORT_TYPE[3].equals(transportType)) {
// 获取拉包工信息 // 获取拉包工信息
worker = workerService.findById(workId); worker = workerService.findById(workId);
// 配送人员扣减固定金额
workerFixedAmount = worker.getFixedAmount() == null ? BigDecimal.ZERO : worker.getFixedAmount();
// 配送人员押金余额(拉包工扣减前押金余额) // 配送人员押金余额(拉包工扣减前押金余额)
workerBefDepoBal = worker.getDepoBal() == null ? BigDecimal.ZERO : worker.getDepoBal(); workerBefDepoBal = worker.getDepoBal() == null ? BigDecimal.ZERO : worker.getDepoBal();
// 配送人员返佣金额 // 配送人员返佣金额

47
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/UserAddress.java

@ -0,0 +1,47 @@
package cc.hiver.mall.entity;
import cc.hiver.core.base.HiverBaseEntity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "用户收货地址")
@TableName(value = "t_user_address", autoResultMap = true)
public class UserAddress extends HiverBaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "用户ID/会员ID")
private String userId;
@ApiModelProperty(value = "收货人姓名")
private String receiverName;
@ApiModelProperty(value = "收货人电话")
private String receiverPhone;
@ApiModelProperty(value = "性别 (0未知 1男 2女)")
private Integer sex;
@ApiModelProperty(value = "楼座ID (对应数据字典, 可匹配配送员)")
private String areaId;
@ApiModelProperty(value = "楼层")
private String floor;
@ApiModelProperty(value = "具体门牌号")
private String roomNum;
@ApiModelProperty(value = "地址标签 (如:宿舍、实验室、教学楼)")
private String addressTag;
@ApiModelProperty(value = "区域名称")
private String areaName;
@ApiModelProperty(value = "是否默认地址 (0否 1是)")
private Integer isDefault;
}

5
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/WorkerRelaPrice.java

@ -48,12 +48,9 @@ public class WorkerRelaPrice extends HiverBaseEntity {
@ApiModelProperty(value = "配送佣金") @ApiModelProperty(value = "配送佣金")
private BigDecimal orderBkge; private BigDecimal orderBkge;
@ApiModelProperty(value = "配送类型") @ApiModelProperty(value = "接单类型 0外卖 1快递")
private Integer orderType; private Integer orderType;
@ApiModelProperty(value = "超出3楼以上额外费用")
private BigDecimal highFloorFee;
@ApiModelProperty(value = "0 不接收指派 1接收") @ApiModelProperty(value = "0 不接收指派 1接收")
private Integer getPushOrder; private Integer getPushOrder;
} }

19
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/UserAddressVo.java

@ -0,0 +1,19 @@
package cc.hiver.mall.pojo.vo;
import cc.hiver.mall.entity.UserAddress;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "用户收货地址VO")
public class UserAddressVo extends UserAddress {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "楼座名称(供前端展示)")
private String areaName;
}

36
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/WorkerRealPriceVo.java

@ -0,0 +1,36 @@
package cc.hiver.mall.pojo.vo;
import cc.hiver.mall.entity.WorkerRelaPrice;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
/**
* 兼职信息
* @author 王富康
*/
@Data
@Accessors(chain = true)
public class WorkerRealPriceVo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = " 配送规则")
private String userId;
@ApiModelProperty(value = " 配送规则")
private String workerName;
@ApiModelProperty(value = " 配送规则")
private String cardPicture;
@ApiModelProperty(value = " 配送规则")
private BigDecimal highFloorFee;
@ApiModelProperty(value = " 配送规则")
private List<WorkerRelaPrice> workerRelaPriceList;
}

28
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<UserAddress> {
/**
* 查询用户收货地址列表
* @param userId 用户ID
* @return 地址列表
*/
List<UserAddressVo> getAddressListByUserId(String userId);
/**
* 设置默认地址
* @param id 地址ID
* @param userId 用户ID
*/
void setDefaultAddress(String id, String userId);
}

61
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<UserAddressMapper, UserAddress> implements UserAddressService {
@Override
public List<UserAddressVo> getAddressListByUserId(String userId) {
QueryWrapper<UserAddress> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("user_id", userId);
// 按默认地址排序(1在前面),然后再按创建时间降序
queryWrapper.orderByDesc("is_default");
queryWrapper.orderByDesc("create_time");
List<UserAddress> 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<UserAddress> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("user_id", userId);
updateWrapper.set("is_default", 0);
this.update(updateWrapper);
// 再将指定的地址设置为默认
UpdateWrapper<UserAddress> defaultWrapper = new UpdateWrapper<>();
defaultWrapper.eq("id", id);
defaultWrapper.eq("user_id", userId); // 增加安全校验,防止修改别人的地址
defaultWrapper.set("is_default", 1);
this.update(defaultWrapper);
}
}

29
hiver-modules/hiver-mall/src/main/resources/mapper/UserAddressMapper.xml

@ -0,0 +1,29 @@
<?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="cc.hiver.mall.dao.mapper.UserAddressMapper">
<resultMap id="BaseResultMap" type="cc.hiver.mall.entity.UserAddress">
<id column="id" jdbcType="VARCHAR" property="id" />
<result column="user_id" jdbcType="VARCHAR" property="userId" />
<result column="receiver_name" jdbcType="VARCHAR" property="receiverName" />
<result column="receiver_phone" jdbcType="VARCHAR" property="receiverPhone" />
<result column="sex" jdbcType="INTEGER" property="sex" />
<result column="area_id" jdbcType="VARCHAR" property="areaId" />
<result column="floor" jdbcType="VARCHAR" property="floor" />
<result column="room_num" jdbcType="VARCHAR" property="roomNum" />
<result column="address_tag" jdbcType="VARCHAR" property="addressTag" />
<result column="is_default" jdbcType="INTEGER" property="isDefault" />
<result column="create_by" jdbcType="VARCHAR" property="createBy" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_by" jdbcType="VARCHAR" property="updateBy" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
<result column="del_flag" jdbcType="INTEGER" property="delFlag" />
</resultMap>
<sql id="Base_Column_List">
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
</sql>
</mapper>

9
hiver-modules/hiver-mall/src/main/resources/mapper/WorkerRelaPriceMapper.xml

@ -16,25 +16,24 @@
<result column="remark" jdbcType="VARCHAR" property="remark"/> <result column="remark" jdbcType="VARCHAR" property="remark"/>
<result column="order_type" jdbcType="INTEGER" property="orderType"/> <result column="order_type" jdbcType="INTEGER" property="orderType"/>
<result column="order_bkge" jdbcType="DECIMAL" property="orderBkge"/> <result column="order_bkge" jdbcType="DECIMAL" property="orderBkge"/>
<result column="high_floor_fee" jdbcType="DECIMAL" property="highFloorFee"/>
<result column="get_push_order" jdbcType="INTEGER" property="getPushOrder"/> <result column="get_push_order" jdbcType="INTEGER" property="getPushOrder"/>
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id, create_by, create_time, del_flag, update_by, update_time, worker_id, get_area_id, 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
</sql> </sql>
<insert id="insert" parameterType="cc.hiver.mall.entity.ProductGroupBuyPrice"> <insert id="insert" parameterType="cc.hiver.mall.entity.ProductGroupBuyPrice">
insert into t_worker_rela_price (id, create_by, create_time, insert into t_worker_rela_price (id, create_by, create_time,
del_flag, update_by, update_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}, values (#{id,jdbcType=VARCHAR}, #{createBy,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP},
#{delFlag,jdbcType=INTEGER}, #{updateBy,jdbcType=VARCHAR}, #{updateTime,jdbcType=TIMESTAMP}, #{delFlag,jdbcType=INTEGER}, #{updateBy,jdbcType=VARCHAR}, #{updateTime,jdbcType=TIMESTAMP},
#{workerId,jdbcType=VARCHAR}, #{getAreaId,jdbcType=VARCHAR}, #{getAreaName,jdbcType=VARCHAR}, #{workerId,jdbcType=VARCHAR}, #{getAreaId,jdbcType=VARCHAR}, #{getAreaName,jdbcType=VARCHAR},
#{putAreaId,jdbcType=VARCHAR}, #{putAreaName,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR}, #{putAreaId,jdbcType=VARCHAR}, #{putAreaName,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR},
#{orderType,jdbcType=INTEGER}, #{orderBkge,jdbcType=DECIMAL},, #{highFloorFee,jdbcType=DECIMAL} #{orderType,jdbcType=INTEGER}, #{orderBkge,jdbcType=DECIMAL},
,#{getPushOrder,jdbcType=INTEGER}) #{getPushOrder,jdbcType=INTEGER})
</insert> </insert>
<select id="selectByWorkerId" parameterType="java.lang.String" resultMap="BaseResultMap"> <select id="selectByWorkerId" parameterType="java.lang.String" resultMap="BaseResultMap">

Loading…
Cancel
Save