|
@@ -0,0 +1,245 @@
|
|
|
|
|
+package com.sapit.client.app.manage.controller.rider;
|
|
|
|
|
+
|
|
|
|
|
+import com.sapit.client.app.manage.service.rider.DeliveryRiderManageService;
|
|
|
|
|
+import com.sapit.common.constant.ReturnCode;
|
|
|
|
|
+import com.sapit.common.entity.rider.DeliveryRider;
|
|
|
|
|
+import com.sapit.common.framwork.AuthToken;
|
|
|
|
|
+import com.sapit.common.framwork.PageControlData;
|
|
|
|
|
+import com.sapit.common.framwork.ResultBean;
|
|
|
|
|
+import com.sapit.common.search.rider.DeliveryRiderSearchBean;
|
|
|
|
|
+import com.sapit.common.util.DateUtil;
|
|
|
|
|
+import com.sapit.common.util.MD5;
|
|
|
|
|
+import org.apache.commons.lang.StringUtils;
|
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
+import org.springframework.web.bind.annotation.PostMapping;
|
|
|
|
|
+import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
|
|
+import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
+
|
|
|
|
|
+import java.sql.Timestamp;
|
|
|
|
|
+import java.time.LocalDate;
|
|
|
|
|
+import java.time.LocalDateTime;
|
|
|
|
|
+import java.time.LocalTime;
|
|
|
|
|
+import java.time.format.DateTimeParseException;
|
|
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
|
|
+import java.util.List;
|
|
|
|
|
+
|
|
|
|
|
+@RestController
|
|
|
|
|
+@RequestMapping(value = "deliveryRiderManage1", produces = "application/json")
|
|
|
|
|
+public class DeliveryRiderManage1Controller {
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private DeliveryRiderManageService deliveryRiderManageService;
|
|
|
|
|
+
|
|
|
|
|
+ @PostMapping(value = "/list")
|
|
|
|
|
+ @AuthToken(type = "admin")
|
|
|
|
|
+ public ResultBean list(DeliveryRiderSearchBean searchBean, PageControlData page) {
|
|
|
|
|
+ ResultBean bean = new ResultBean();
|
|
|
|
|
+ List<DeliveryRider> list = deliveryRiderManageService.getList(page, searchBean);
|
|
|
|
|
+ for (DeliveryRider rider : list) {
|
|
|
|
|
+ rider.setPassword(null);
|
|
|
|
|
+ }
|
|
|
|
|
+ bean.setList(list);
|
|
|
|
|
+ bean.setPage(page);
|
|
|
|
|
+ return bean;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @PostMapping(value = "/save")
|
|
|
|
|
+ @AuthToken(type = "admin")
|
|
|
|
|
+ public ResultBean save(DeliveryRider rider) {
|
|
|
|
|
+ ResultBean bean = new ResultBean();
|
|
|
|
|
+ String msg = validate(rider);
|
|
|
|
|
+ if (msg != null) {
|
|
|
|
|
+ bean.getRtnBean().setRtnCode(ReturnCode.PARAM_WRONG);
|
|
|
|
|
+ bean.getRtnBean().setRtnMsg(msg);
|
|
|
|
|
+ return bean;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!deliveryRiderManageService.checkPhone(rider.getId(), rider.getPhone())) {
|
|
|
|
|
+ bean.getRtnBean().setRtnCode(ReturnCode.FAILED);
|
|
|
|
|
+ bean.getRtnBean().setRtnMsg("手机号已被使用,请更换手机号");
|
|
|
|
|
+ return bean;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ try {
|
|
|
|
|
+ normalize(rider);
|
|
|
|
|
+ } catch (DateTimeParseException e) {
|
|
|
|
|
+ bean.getRtnBean().setRtnCode(ReturnCode.PARAM_WRONG);
|
|
|
|
|
+ bean.getRtnBean().setRtnMsg("不能接单时间格式错误");
|
|
|
|
|
+ return bean;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (rider.getId() == null) {
|
|
|
|
|
+ rider.setPassword(MD5.encrypt(rider.getPassword()));
|
|
|
|
|
+ rider.setCreateTime(DateUtil.getSqlToday());
|
|
|
|
|
+ rider.setUpdateTime(DateUtil.getSqlToday());
|
|
|
|
|
+ deliveryRiderManageService.save(rider);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ DeliveryRider old = deliveryRiderManageService.getById(rider.getId());
|
|
|
|
|
+ if (old == null) {
|
|
|
|
|
+ bean.getRtnBean().setRtnCode(ReturnCode.FAILED);
|
|
|
|
|
+ bean.getRtnBean().setRtnMsg("配送员不存在");
|
|
|
|
|
+ return bean;
|
|
|
|
|
+ }
|
|
|
|
|
+ old.setPhone(rider.getPhone());
|
|
|
|
|
+ old.setName(rider.getName());
|
|
|
|
|
+ old.setType(rider.getType());
|
|
|
|
|
+ old.setMerchantId(rider.getMerchantId());
|
|
|
|
|
+ old.setWorkStatus(rider.getWorkStatus());
|
|
|
|
|
+ old.setAccountStatus(rider.getAccountStatus());
|
|
|
|
|
+ old.setPickup(rider.getPickup());
|
|
|
|
|
+ old.setDelivery(rider.getDelivery());
|
|
|
|
|
+ old.setClimbStairs(rider.getClimbStairs());
|
|
|
|
|
+ old.setNoOrderStartTime(rider.getNoOrderStartTime());
|
|
|
|
|
+ old.setNoOrderEndTime(rider.getNoOrderEndTime());
|
|
|
|
|
+ if (StringUtils.isNotBlank(rider.getPassword())) {
|
|
|
|
|
+ old.setPassword(MD5.encrypt(rider.getPassword()));
|
|
|
|
|
+ }
|
|
|
|
|
+ old.setUpdateTime(DateUtil.getSqlToday());
|
|
|
|
|
+ deliveryRiderManageService.update(old);
|
|
|
|
|
+ }
|
|
|
|
|
+ return bean;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @PostMapping(value = "/updateWorkStatus")
|
|
|
|
|
+ @AuthToken(type = "admin")
|
|
|
|
|
+ public ResultBean updateWorkStatus(Long id, Long workStatus) {
|
|
|
|
|
+ ResultBean bean = new ResultBean();
|
|
|
|
|
+ if (id == null || !isZeroOrOne(workStatus)) {
|
|
|
|
|
+ bean.getRtnBean().setRtnCode(ReturnCode.PARAM_WRONG);
|
|
|
|
|
+ bean.getRtnBean().setRtnMsg("参数错误");
|
|
|
|
|
+ return bean;
|
|
|
|
|
+ }
|
|
|
|
|
+ deliveryRiderManageService.updateWorkStatus(id, workStatus);
|
|
|
|
|
+ return bean;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @PostMapping(value = "/updateAccountStatus")
|
|
|
|
|
+ @AuthToken(type = "admin")
|
|
|
|
|
+ public ResultBean updateAccountStatus(Long id, Long accountStatus) {
|
|
|
|
|
+ ResultBean bean = new ResultBean();
|
|
|
|
|
+ if (id == null || !isZeroOrOne(accountStatus)) {
|
|
|
|
|
+ bean.getRtnBean().setRtnCode(ReturnCode.PARAM_WRONG);
|
|
|
|
|
+ bean.getRtnBean().setRtnMsg("参数错误");
|
|
|
|
|
+ return bean;
|
|
|
|
|
+ }
|
|
|
|
|
+ deliveryRiderManageService.updateAccountStatus(id, accountStatus);
|
|
|
|
|
+ return bean;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @PostMapping(value = "/updatePermission")
|
|
|
|
|
+ @AuthToken(type = "admin")
|
|
|
|
|
+ public ResultBean updatePermission(Long id, String field, Long value) {
|
|
|
|
|
+ ResultBean bean = new ResultBean();
|
|
|
|
|
+ if (id == null || !isZeroOrOne(value)) {
|
|
|
|
|
+ bean.getRtnBean().setRtnCode(ReturnCode.PARAM_WRONG);
|
|
|
|
|
+ bean.getRtnBean().setRtnMsg("参数错误");
|
|
|
|
|
+ return bean;
|
|
|
|
|
+ }
|
|
|
|
|
+ String column = getPermissionColumn(field);
|
|
|
|
|
+ if (column == null) {
|
|
|
|
|
+ bean.getRtnBean().setRtnCode(ReturnCode.PARAM_WRONG);
|
|
|
|
|
+ bean.getRtnBean().setRtnMsg("权限字段错误");
|
|
|
|
|
+ return bean;
|
|
|
|
|
+ }
|
|
|
|
|
+ DeliveryRider rider = deliveryRiderManageService.getById(id);
|
|
|
|
|
+ if (rider == null) {
|
|
|
|
|
+ bean.getRtnBean().setRtnCode(ReturnCode.FAILED);
|
|
|
|
|
+ bean.getRtnBean().setRtnMsg("配送员不存在");
|
|
|
|
|
+ return bean;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (("pickup".equals(field) && value == 1 && rider.getClimbStairs() == 1)
|
|
|
|
|
+ || ("climbStairs".equals(field) && value == 1 && rider.getPickup() == 1)) {
|
|
|
|
|
+ bean.getRtnBean().setRtnCode(ReturnCode.FAILED);
|
|
|
|
|
+ bean.getRtnBean().setRtnMsg("取餐权限和爬楼权限不能同时存在");
|
|
|
|
|
+ return bean;
|
|
|
|
|
+ }
|
|
|
|
|
+ deliveryRiderManageService.updatePermission(id, column, value);
|
|
|
|
|
+ return bean;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @PostMapping(value = "/delete")
|
|
|
|
|
+ @AuthToken(type = "admin")
|
|
|
|
|
+ public ResultBean delete(Long id) {
|
|
|
|
|
+ ResultBean bean = new ResultBean();
|
|
|
|
|
+ if (id == null) {
|
|
|
|
|
+ bean.getRtnBean().setRtnCode(ReturnCode.PARAM_WRONG);
|
|
|
|
|
+ bean.getRtnBean().setRtnMsg("参数错误");
|
|
|
|
|
+ return bean;
|
|
|
|
|
+ }
|
|
|
|
|
+ int rows = deliveryRiderManageService.deleteById(id);
|
|
|
|
|
+ if (rows < 1) {
|
|
|
|
|
+ bean.getRtnBean().setRtnCode(ReturnCode.FAILED);
|
|
|
|
|
+ bean.getRtnBean().setRtnMsg("配送员不存在");
|
|
|
|
|
+ }
|
|
|
|
|
+ return bean;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private String validate(DeliveryRider rider) {
|
|
|
|
|
+ if (rider == null || StringUtils.isBlank(rider.getName()) || StringUtils.isBlank(rider.getPhone())) {
|
|
|
|
|
+ return "请填写姓名和手机号";
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!rider.getPhone().matches("^1\\d{10}$")) {
|
|
|
|
|
+ return "请输入正确的手机号";
|
|
|
|
|
+ }
|
|
|
|
|
+ if (rider.getId() == null && StringUtils.isBlank(rider.getPassword())) {
|
|
|
|
|
+ return "新增配送员必须填写密码";
|
|
|
|
|
+ }
|
|
|
|
|
+ if (rider.getType() == null || (rider.getType() != 1L && rider.getType() != 2L)) {
|
|
|
|
|
+ return "请选择配送员类型";
|
|
|
|
|
+ }
|
|
|
|
|
+ if (rider.getType() == 2L && rider.getMerchantId() == null) {
|
|
|
|
|
+ return "商家配送员必须填写所属商家";
|
|
|
|
|
+ }
|
|
|
|
|
+ if (rider.getType() == 1L && Long.valueOf(1L).equals(rider.getPickup()) && Long.valueOf(1L).equals(rider.getClimbStairs())) {
|
|
|
|
|
+ return "取餐权限和爬楼权限不能同时存在";
|
|
|
|
|
+ }
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void normalize(DeliveryRider rider) {
|
|
|
|
|
+ rider.setWorkStatus(defaultZeroOne(rider.getWorkStatus(), 1L));
|
|
|
|
|
+ rider.setAccountStatus(defaultZeroOne(rider.getAccountStatus(), 1L));
|
|
|
|
|
+ rider.setPickup(defaultZeroOne(rider.getPickup(), 0L));
|
|
|
|
|
+ rider.setDelivery(defaultZeroOne(rider.getDelivery(), 0L));
|
|
|
|
|
+ rider.setClimbStairs(defaultZeroOne(rider.getClimbStairs(), 0L));
|
|
|
|
|
+ if (rider.getType() == 1L) {
|
|
|
|
|
+ rider.setMerchantId(null);
|
|
|
|
|
+ rider.setNoOrderStartTime(null);
|
|
|
|
|
+ rider.setNoOrderEndTime(null);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ rider.setPickup(0L);
|
|
|
|
|
+ rider.setDelivery(0L);
|
|
|
|
|
+ rider.setClimbStairs(0L);
|
|
|
|
|
+ rider.setNoOrderStartTime(parseTime(rider.getNoOrderStartTimeStr()));
|
|
|
|
|
+ rider.setNoOrderEndTime(parseTime(rider.getNoOrderEndTimeStr()));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private Timestamp parseTime(String time) {
|
|
|
|
|
+ if (StringUtils.isBlank(time)) {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+ LocalTime localTime = LocalTime.parse(time, DateTimeFormatter.ofPattern("HH:mm"));
|
|
|
|
|
+ LocalDateTime dateTime = LocalDateTime.of(LocalDate.of(1970, 1, 1), localTime);
|
|
|
|
|
+ return Timestamp.valueOf(dateTime);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private Long defaultZeroOne(Long value, Long defaultValue) {
|
|
|
|
|
+ return isZeroOrOne(value) ? value : defaultValue;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private boolean isZeroOrOne(Long value) {
|
|
|
|
|
+ return value != null && (value == 0L || value == 1L);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private String getPermissionColumn(String field) {
|
|
|
|
|
+ if ("pickup".equals(field)) {
|
|
|
|
|
+ return "pickup";
|
|
|
|
|
+ }
|
|
|
|
|
+ if ("delivery".equals(field)) {
|
|
|
|
|
+ return "delivery";
|
|
|
|
|
+ }
|
|
|
|
|
+ if ("climbStairs".equals(field)) {
|
|
|
|
|
+ return "climb_stairs";
|
|
|
|
|
+ }
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|