From 42084093865c01ae44d324b99c54785ee920ab35 Mon Sep 17 00:00:00 2001 From: Houpn Date: Fri, 11 Aug 2023 21:37:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=85=85=E5=80=BC=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cc/hiver/core/dao/RechargeDao.java | 9 ++ .../java/cc/hiver/core/entity/Recharge.java | 109 ++++++++++++++++++ .../hiver/core/service/RechargeService.java | 29 +++++ .../core/serviceimpl/OrderServiceImpl.java | 49 +++++--- .../core/serviceimpl/RechargeServiceImpl.java | 90 +++++++++++++++ .../controller/manage/RechargeController.java | 47 ++++++++ .../controller/manage/WorkerController.java | 30 +++++ 7 files changed, 348 insertions(+), 15 deletions(-) create mode 100644 hiver-core/src/main/java/cc/hiver/core/dao/RechargeDao.java create mode 100644 hiver-core/src/main/java/cc/hiver/core/entity/Recharge.java create mode 100644 hiver-core/src/main/java/cc/hiver/core/service/RechargeService.java create mode 100644 hiver-core/src/main/java/cc/hiver/core/serviceimpl/RechargeServiceImpl.java create mode 100644 hiver-modules/hiver-base/src/main/java/cc/hiver/base/controller/manage/RechargeController.java diff --git a/hiver-core/src/main/java/cc/hiver/core/dao/RechargeDao.java b/hiver-core/src/main/java/cc/hiver/core/dao/RechargeDao.java new file mode 100644 index 00000000..e392f272 --- /dev/null +++ b/hiver-core/src/main/java/cc/hiver/core/dao/RechargeDao.java @@ -0,0 +1,9 @@ +package cc.hiver.core.dao; + +import cc.hiver.core.base.HiverBaseDao; +import cc.hiver.core.entity.Courier; +import cc.hiver.core.entity.Recharge; + +public interface RechargeDao extends HiverBaseDao { + +} \ No newline at end of file diff --git a/hiver-core/src/main/java/cc/hiver/core/entity/Recharge.java b/hiver-core/src/main/java/cc/hiver/core/entity/Recharge.java new file mode 100644 index 00000000..0f06f96f --- /dev/null +++ b/hiver-core/src/main/java/cc/hiver/core/entity/Recharge.java @@ -0,0 +1,109 @@ +package cc.hiver.core.entity; + +import cc.hiver.core.common.utils.SnowFlakeUtil; +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; +import org.springframework.data.annotation.CreatedBy; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedBy; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.Date; + +@Data +@Entity +@Accessors(chain = true) +@DynamicInsert +@DynamicUpdate +@Table(name = "t_recharge_log") +@TableName("t_recharge_log") +@ApiModel(value = "押金充值记录管理") +@EntityListeners(AuditingEntityListener.class) +@JsonIgnoreProperties(value = {"hibernateLazyInitializer", "handler", "fieldHandler"}) +public class Recharge implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 充值记录编号 + */ + @Id + @ApiModelProperty("充值编号") + @Column(name = "recharge_id", nullable = false) + private String rechargeId = "RZ"+SnowFlakeUtil.nextId().toString(); + + /** + * 被充值人名称 + */ + @ApiModelProperty("充值名称") + @Column(name = "recharge_name") + private String rechargeName; + + /** + * 被充值人编号 + */ + @ApiModelProperty("被充值人编号") + @Column(name = "recharge_worker_id") + private String rechargeWorkerId; + + /** + * 充值简介 + */ + @ApiModelProperty("充值简介") + @Column(name = "recharge_describe") + private String rechargeDescribe; + + /** + * 缴押金总额 + */ + @Column(name = "recharge_num") + @ApiModelProperty("当次缴纳") + private Integer rechargeNum = 0; + + + + @ApiModelProperty("充值创建人") + @CreatedBy + @TableField(fill = FieldFill.INSERT) + private String createBy; + + @CreatedDate + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("充值创建时间") + private Date createTime; + + @ApiModelProperty("充值修改人") + @LastModifiedBy + @TableField(fill = FieldFill.UPDATE) + private String updateBy; + + @LastModifiedDate + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "充值修改时间") + @TableField(fill = FieldFill.UPDATE) + private Date updateTime; + + /** + * 联系方式 + */ + @Column(name = "mobile") + @ApiModelProperty("联系方式") + private String mobile; + + +} diff --git a/hiver-core/src/main/java/cc/hiver/core/service/RechargeService.java b/hiver-core/src/main/java/cc/hiver/core/service/RechargeService.java new file mode 100644 index 00000000..6d3939a1 --- /dev/null +++ b/hiver-core/src/main/java/cc/hiver/core/service/RechargeService.java @@ -0,0 +1,29 @@ +package cc.hiver.core.service; + +import cc.hiver.core.base.HiverBaseService; +import cc.hiver.core.common.vo.SearchVo; +import cc.hiver.core.entity.Courier; +import cc.hiver.core.entity.Recharge; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +/** + * 用户接口 + * + * @author Houpn + */ +@CacheConfig(cacheNames = "recharge") +public interface RechargeService extends HiverBaseService { + + /** + * 多条件分页获取充值记录 + * + * @param Recharge + * @param searchVo + * @param pageable + * @return + */ + Page findByCondition(Recharge recharge, SearchVo searchVo, Pageable pageable); + +} diff --git a/hiver-core/src/main/java/cc/hiver/core/serviceimpl/OrderServiceImpl.java b/hiver-core/src/main/java/cc/hiver/core/serviceimpl/OrderServiceImpl.java index c0fa54b4..46f564fd 100644 --- a/hiver-core/src/main/java/cc/hiver/core/serviceimpl/OrderServiceImpl.java +++ b/hiver-core/src/main/java/cc/hiver/core/serviceimpl/OrderServiceImpl.java @@ -110,28 +110,35 @@ public class OrderServiceImpl implements OrderService { @Override public Predicate toPredicate(Root root, CriteriaQuery cq, CriteriaBuilder cb) { Path orderIdField = root.get("orderId"); - Path norderLogisticsField = root.get("orderLogistics"); + Path orderLogisticsField = root.get("orderLogistics"); Path kdOrderIdField = root.get("kdOrderId"); Path timeoutField = root.get("timeout"); Path orderStatusdField = root.get("orderStatus"); Path orderByWorkerField = root.get("orderByWorker"); //抢单时间 Path createTimeField = root.get("orderByWorkertime"); + Path regionField = root.get("region"); + List list = new ArrayList<>(); - if (StrUtil.isNotBlank(order.getOrderId())) { - list.add(cb.equal(orderIdField, order.getOrderId())); + //区域条件 + if (StrUtil.isNotBlank(order.getRegion())) { + list.add(cb.equal(regionField,order.getRegion())); } - - // 精确搜索 + //物流方式限制 if (StrUtil.isNotBlank(order.getOrderLogistics())) { - list.add(cb.equal(norderLogisticsField, order.getOrderLogistics())); - } - if (StrUtil.isNotBlank(order.getKdOrderId())) { - list.add(cb.like(kdOrderIdField, order.getKdOrderId())); + list.add(cb.equal(orderLogisticsField,order.getOrderLogistics())); } + //订单工编号应该为空 + /*if(StrUtil.isNotBlank(order.getOrderByWorker())){ + list.add(cb.equal(orderLogisticsField,order.getOrderLogistics())); + }else{ + list.add(cb.or(cb.isNull(orderByWorkerField),cb.equal(orderByWorkerField,order.getOrderByWorker()))); + }*/ + + if (StrUtil.isNotBlank(order.getTimeout())) { list.add(cb.equal(timeoutField, order.getTimeout())); } @@ -141,8 +148,17 @@ public class OrderServiceImpl implements OrderService { list.add(cb.equal(orderStatusdField, order.getOrderStatus())); } - if (StrUtil.isNotBlank(order.getOrderByWorker())) { - list.add(cb.equal(orderByWorkerField, order.getOrderByWorker())); + + if (StrUtil.isNotBlank(order.getOrderId())) { + list.add(cb.equal(orderIdField, order.getOrderId())); + } + + if (StrUtil.isNotBlank(order.getKdOrderId())) { + list.add(cb.like(kdOrderIdField, order.getKdOrderId())); + } + + if (StrUtil.isNotBlank(order.getTimeout())) { + list.add(cb.equal(timeoutField, order.getTimeout())); } // 创建时间 if (StrUtil.isNotBlank(searchVo.getStartDate()) && StrUtil.isNotBlank(searchVo.getEndDate())) { @@ -168,7 +184,7 @@ public class OrderServiceImpl implements OrderService { @Override public Predicate toPredicate(Root root, CriteriaQuery cq, CriteriaBuilder cb) { Path orderIdField = root.get("orderId"); - Path norderLogisticsField = root.get("orderLogistics"); + Path orderLogisticsField = root.get("orderLogistics"); Path kdOrderIdField = root.get("kdOrderId"); Path timeoutField = root.get("timeout"); Path orderStatusdField = root.get("orderStatus"); @@ -184,12 +200,15 @@ public class OrderServiceImpl implements OrderService { } //物流方式限制 if (StrUtil.isNotBlank(order.getOrderLogistics())) { - list.add(cb.equal(norderLogisticsField,order.getOrderLogistics())); + list.add(cb.equal(orderLogisticsField,order.getOrderLogistics())); } //订单工编号应该为空 - list.add(cb.or(cb.isNull(orderByWorkerField),cb.equal(orderByWorkerField,order.getOrderByWorker()))); - + if(StrUtil.isNotBlank(order.getOrderByWorker())){ + list.add(cb.equal(orderLogisticsField,order.getOrderLogistics())); + }else{ + list.add(cb.or(cb.isNull(orderByWorkerField),cb.equal(orderByWorkerField,order.getOrderByWorker()))); + } if (StrUtil.isNotBlank(order.getTimeout())) { list.add(cb.equal(timeoutField, order.getTimeout())); diff --git a/hiver-core/src/main/java/cc/hiver/core/serviceimpl/RechargeServiceImpl.java b/hiver-core/src/main/java/cc/hiver/core/serviceimpl/RechargeServiceImpl.java new file mode 100644 index 00000000..1e281e10 --- /dev/null +++ b/hiver-core/src/main/java/cc/hiver/core/serviceimpl/RechargeServiceImpl.java @@ -0,0 +1,90 @@ +package cc.hiver.core.serviceimpl; + +import cc.hiver.core.common.utils.SecurityUtil; +import cc.hiver.core.common.vo.SearchVo; +import cc.hiver.core.dao.RechargeDao; +import cc.hiver.core.entity.Recharge; +import cc.hiver.core.service.RechargeService; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.domain.Specification; +import org.springframework.lang.Nullable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.persistence.criteria.*; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 用户接口实现 + * + * @author houpn + */ +@Slf4j +@Service +@Transactional +public class RechargeServiceImpl implements RechargeService { + @Autowired + private RechargeDao rechargeDao; + + @Autowired + private SecurityUtil securityUtil; + + @Override + public RechargeDao getRepository() { + return rechargeDao; + } + + @Override + public Page findByCondition(Recharge recharge, SearchVo searchVo, Pageable pageable) { + return rechargeDao.findAll(new Specification() { + @Nullable + @Override + public Predicate toPredicate(Root root, CriteriaQuery cq, CriteriaBuilder cb) { + Path rechargeIdField = root.get("rechargeId"); + Path rechargeWorkerIdField = root.get("rechargeWorkerId"); + Path rechargeNameField = root.get("rechargeName"); + Path mobileField = root.get("mobile"); + Path createTimeField = root.get("createTime"); + + List list = new ArrayList<>(); + + /*if (StrUtil.isNotBlank(recharge.getRechargeId())) { + list.add(cb.equal(rechargeIdField, recharge.getRechargeId())); + }*/ + + if (StrUtil.isNotBlank(recharge.getRechargeWorkerId())) { + list.add(cb.equal(rechargeWorkerIdField, recharge.getRechargeWorkerId())); + } + + // 模糊搜素 + if (StrUtil.isNotBlank(recharge.getRechargeName())) { + list.add(cb.like(rechargeNameField, '%' + recharge.getRechargeName() + '%')); + } + + // 模糊搜素 + if (StrUtil.isNotBlank(recharge.getMobile())) { + list.add(cb.like(mobileField, '%' + recharge.getMobile() + '%')); + } + // 创建时间 + if (StrUtil.isNotBlank(searchVo.getStartDate()) && StrUtil.isNotBlank(searchVo.getEndDate())) { + Date start = DateUtil.parse(searchVo.getStartDate()); + Date end = DateUtil.parse(searchVo.getEndDate()); + list.add(cb.between(createTimeField, start, DateUtil.endOfDay(end))); + } + + // 数据权限 + + Predicate[] arr = new Predicate[list.size()]; + cq.where(list.toArray(arr)); + return null; + } + }, pageable); + } +} diff --git a/hiver-modules/hiver-base/src/main/java/cc/hiver/base/controller/manage/RechargeController.java b/hiver-modules/hiver-base/src/main/java/cc/hiver/base/controller/manage/RechargeController.java new file mode 100644 index 00000000..72713fe6 --- /dev/null +++ b/hiver-modules/hiver-base/src/main/java/cc/hiver/base/controller/manage/RechargeController.java @@ -0,0 +1,47 @@ +package cc.hiver.base.controller.manage; + +import cc.hiver.core.common.utils.PageUtil; +import cc.hiver.core.common.utils.ResultUtil; +import cc.hiver.core.common.vo.PageVo; +import cc.hiver.core.common.vo.Result; +import cc.hiver.core.common.vo.SearchVo; +import cc.hiver.core.entity.Recharge; +import cc.hiver.core.service.RechargeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.data.domain.Page; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +/** + * 充值记录管理接口 + * + * @author houpn + */ +@Slf4j +@RestController +@Api(tags = "充值记录管理接口") +@RequestMapping("/hiver/recharge") +@Transactional +public class RechargeController { + public static final String recharge = "recharge::"; + + @Autowired + private RechargeService rechargeService; + + + + @RequestMapping(value = "/getByCondition", method = RequestMethod.GET) + @ApiOperation(value = "多条件分页获取订单列表") + public Result> getByCondition(Recharge recharge, + SearchVo searchVo, + PageVo pageVo) { + Page page = rechargeService.findByCondition(recharge, searchVo, PageUtil.initPage(pageVo)); + return new ResultUtil>().setData(page); + } + + +} diff --git a/hiver-modules/hiver-base/src/main/java/cc/hiver/base/controller/manage/WorkerController.java b/hiver-modules/hiver-base/src/main/java/cc/hiver/base/controller/manage/WorkerController.java index 9757101d..43016156 100644 --- a/hiver-modules/hiver-base/src/main/java/cc/hiver/base/controller/manage/WorkerController.java +++ b/hiver-modules/hiver-base/src/main/java/cc/hiver/base/controller/manage/WorkerController.java @@ -11,7 +11,9 @@ import cc.hiver.core.common.vo.Result; import cc.hiver.core.common.vo.SearchVo; import cc.hiver.core.dao.mapper.DeleteMapper; import cc.hiver.core.entity.Courier; +import cc.hiver.core.entity.Recharge; import cc.hiver.core.entity.Worker; +import cc.hiver.core.service.RechargeService; import cc.hiver.core.service.WorkerService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -43,6 +45,8 @@ public class WorkerController { @Autowired private WorkerService workerService; + @Autowired + private RechargeService rechargeService; @Autowired private DeleteMapper deleteMapper; @@ -84,12 +88,27 @@ public class WorkerController { public Result add(@Valid Worker u, @RequestParam(required = false) String[] roleIds) { + //更新充值记录 + 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() + u.getDepoNum()); u.setDepoNum(0); workerService.save(u); + + + + // 发送创建账号消息 //addMessage.addSendMessage(user.getId()); return ResultUtil.success("创建成功"); @@ -102,6 +121,17 @@ public class WorkerController { //修改抢单工信息时如涉及到充值押金情况,需要更新余额且重置应缴 if(u.getDepoNum()>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.findById(u.getWorkerId()); u.setDepoBal(worker.getDepoBal() + u.getDepoNum()); u.setDepoNum(0);