Browse Source

修复下单端系统派单

master
前端-胡立永 3 weeks ago
parent
commit
1ea63f1a05
8 changed files with 218 additions and 43 deletions
  1. +12
    -0
      CatmDogd-Mall-Front-test/src/api/model/AppletOrder.js
  2. +87
    -2
      CatmDogd-Mall-Front-test/src/views/model/AppletOrder/index.vue
  3. +8
    -7
      ruoyi-admin/src/main/resources/application-druid-root.yml
  4. +1
    -0
      ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/ApiMallUserTeacherController.java
  5. +2
    -0
      ruoyi-catdog/src/main/java/com/ruoyi/applet/pojo/dto/filterQualifiedUsersVo.java
  6. +71
    -5
      ruoyi-catdog/src/main/java/com/ruoyi/model/controller/AppletOrderController.java
  7. +9
    -3
      ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppUsersServiceImpl.java
  8. +28
    -26
      ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppletOrderDateFrequencyServiceImpl.java

+ 12
- 0
CatmDogd-Mall-Front-test/src/api/model/AppletOrder.js View File

@ -51,3 +51,15 @@ export function delAppletOrder(id) {
method: 'delete'
})
}
// 修改接单人员
export function editOrderTaker(id, userId) {
return request({
url: '/model/AppletOrder/orderTaker',
method: 'put',
params: {
id: id,
userId: userId
}
})
}

+ 87
- 2
CatmDogd-Mall-Front-test/src/views/model/AppletOrder/index.vue View File

@ -206,7 +206,10 @@
v-hasPermi="['model:AppletOrder:remove']">删除派单记录</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleUpdate(scope.row)"
v-hasPermi="['model:AppletOrder:remove']">修改派单记录</el-button>
v-hasPermi="['model:AppletOrder:remove']" v-if="scope.row.status == 0">修改派单记录</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleEditOrderTaker(scope.row)"
v-hasPermi="['model:AppletOrder:edit']" v-if="scope.row.status == 1">修改接单人员</el-button>
</template>
</el-table-column>
</el-table>
@ -271,11 +274,34 @@
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!-- 修改接单人员对话框 -->
<el-dialog title="修改接单人员" :visible.sync="editOrderTakerOpen" width="40%" append-to-body>
<el-form ref="editOrderTakerForm" :model="editOrderTakerForm" :rules="editOrderTakerRules" label-width="120px">
<el-form-item label="订单编号">
<el-input v-model="editOrderTakerForm.orderSn" disabled />
</el-form-item>
<el-form-item label="当前接单人员">
<el-input v-model="editOrderTakerForm.currentUserName" disabled />
</el-form-item>
<el-form-item label="新接单人员" prop="userId">
<el-select v-model="editOrderTakerForm.userId" placeholder="请选择新的接单人员" filterable>
<el-option v-for="item in getAppUsersUserBcs" :key="item.userId"
:label="item.userName + '(' + item.userTelephone + ')'" :value="item.userId">
</el-option>
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitEditOrderTaker"> </el-button>
<el-button @click="cancelEditOrderTaker"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listAppletOrder, getAppletOrder, delAppletOrder, addAppletOrder, updateAppletOrder, exportAppletOrder } from "@/api/model/AppletOrder";
import { listAppletOrder, getAppletOrder, delAppletOrder, addAppletOrder, updateAppletOrder, exportAppletOrder, editOrderTaker } from "@/api/model/AppletOrder";
import { listAppUsers } from "@/api/model/AppUsers";
export default {
@ -305,6 +331,15 @@ export default {
title: "新增派单信息",
//
open: false,
//
editOrderTakerOpen: false,
//
editOrderTakerForm: {
id: null,
orderSn: '',
currentUserName: '',
userId: null
},
//
queryParams: {
pageNum: 1,
@ -366,6 +401,12 @@ export default {
],
},
//
editOrderTakerRules: {
userId: [
{ required: true, message: "请选择新的接单人员", trigger: "change" }
]
},
columns: [
{ key: 5, label: "支付时间", visible: true },
{ key: 6, label: "本单酬劳", visible: true },
@ -461,6 +502,50 @@ export default {
this.queryParams.pageNum = 1;
this.getList();
},
/** 修改接单人员按钮操作 */
handleEditOrderTaker(row) {
this.editOrderTakerForm = {
id: row.id,
orderSn: row.orderSn,
currentUserName: this.getAppUsersPhone(row.userId) || '暂无信息',
userId: null
};
this.editOrderTakerOpen = true;
},
/** 取消修改接单人员 */
cancelEditOrderTaker() {
this.editOrderTakerOpen = false;
this.resetEditOrderTakerForm();
},
/** 重置修改接单人员表单 */
resetEditOrderTakerForm() {
this.editOrderTakerForm = {
id: null,
orderSn: '',
currentUserName: '',
userId: null
};
if (this.$refs.editOrderTakerForm) {
this.$refs.editOrderTakerForm.resetFields();
}
},
/** 提交修改接单人员 */
submitEditOrderTaker() {
this.$refs.editOrderTakerForm.validate(valid => {
if (valid) {
editOrderTaker(this.editOrderTakerForm.id, this.editOrderTakerForm.userId).then(response => {
this.$modal.msgSuccess("修改接单人员成功");
this.editOrderTakerOpen = false;
this.resetEditOrderTakerForm();
this.getList();
});
}
});
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");


+ 8
- 7
ruoyi-admin/src/main/resources/application-druid-root.yml View File

@ -6,8 +6,8 @@ spring:
druid:
# 主库数据源 jdbc:mysql://localhost:3306/catmdogf?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true
master:
# url: jdbc:mysql://47.97.158.59:3306/catmdogf_test20250624?useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
url: jdbc:mysql://47.97.158.59:3306/catmdogf_prod20250624?useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
url: jdbc:mysql://47.97.158.59:3306/catmdogf_test20250624?useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
# url: jdbc:mysql://47.97.158.59:3306/catmdogf_prod20250624?useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
username: root
password: Qweruiop@123
# 从库数据源
@ -58,7 +58,8 @@ wechat:
merchantId: 1665639691
# privateKeyPath: /data/software/app/key/apiclient_key.pem
privateKeyPath: E:\\git_java\\api_java\\pet-admin\\pet-admin\\pet-admin\\ruoyi-admin\\src\\main\\resources\\apiclient_key.pem
# privateKeyPath: E:\\git_java\\api_java\\pet-admin\\pet-admin\\pet-admin\\ruoyi-admin\\src\\main\\resources\\apiclient_key.pem
privateKeyPath: E:\\file\\2025\\1\pet-admin\\ruoyi-admin\\src\\main\\resources\\apiclient_key.pem
# privateKeyPath: E:\\file\\2025\\project\\1\pet-admin\\ruoyi-admin\\src\\main\\resources\\apiclient_key.pem
# privateKeyPath: /root/pem/apiclient_key.pem
# privateKeyPath: F:\\java_work\\team_work_java\\pet-admin-25-01-25\\pet-admin\\ruoyi-admin\\src\\main\\resources\\apiclient_key.pem
@ -77,8 +78,8 @@ wechat:
staffAppId: wx01f0f43759922fda
staffSecret: b0a5617e6e4c387262a32af2b355c8b6
publicKeyId: PUB_KEY_ID_0116656396912025062400291558001601
publicKeyPath: E:\\git_java\\api_java\\pet-admin\\pet-admin\\pet-admin\\ruoyi-admin\\src\\main\\resources\\pub_key.pem
# publicKeyPath: E:\\file\\2025\\1\pet-admin\\ruoyi-admin\\src\\main\\resources\\pub_key.pem
# publicKeyPath: E:\\git_java\\api_java\\pet-admin\\pet-admin\\pet-admin\\ruoyi-admin\\src\\main\\resources\\pub_key.pem
publicKeyPath: E:\\file\\2025\\1\pet-admin\\ruoyi-admin\\src\\main\\resources\\pub_key.pem
# publicKeyPath: E:\\file\\2025\\project\\1\pet-admin\\ruoyi-admin\\src\\main\\resources\\pub_key.pem
# publicKeyPath: /data/software/app/key/pub_key.pem
pay:
@ -139,8 +140,8 @@ wechat-admin:
staffAppId: wx01f0f43759922fda
staffSecret: b0a5617e6e4c387262a32af2b355c8b6
# publicKeyPath: /root/pem/pub_key.pem
publicKeyPath: E:\\git_java\\api_java\\pet-admin\\pet-admin\\pet-admin\\ruoyi-admin\\src\\main\\resources\\pub_key.pem
# publicKeyPath: E:\\file\\2025\\1\pet-admin\\ruoyi-admin\\src\\main\\resources\\pub_key.pem
# publicKeyPath: E:\\git_java\\api_java\\pet-admin\\pet-admin\\pet-admin\\ruoyi-admin\\src\\main\\resources\\pub_key.pem
publicKeyPath: E:\\file\\2025\\1\pet-admin\\ruoyi-admin\\src\\main\\resources\\pub_key.pem
# publicKeyPath: E:\\file\\2025\\project\\1\pet-admin\\ruoyi-admin\\src\\main\\resources\\pub_key.pem
# publicKeyPath: /data/software/app/key/pub_key.pem
publicKeyId: PUB_KEY_ID_0116656396912025062400291558001601


+ 1
- 0
ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/ApiMallUserTeacherController.java View File

@ -89,6 +89,7 @@ public class ApiMallUserTeacherController extends BaseController {
appUsers2 = appUsersService.filterQualifiedUsers(
filterQualifiedUsersVo.builder()
.distance("100")
.companionLevel(request.getTeacherLevels())
.latitude(Double.parseDouble(request.getLatitude()))
.longitude(Double.parseDouble(request.getLongitude()))


+ 2
- 0
ruoyi-catdog/src/main/java/com/ruoyi/applet/pojo/dto/filterQualifiedUsersVo.java View File

@ -40,4 +40,6 @@ public class filterQualifiedUsersVo {
//宠物类型 1猫咪2狗狗
@ApiModelProperty(value = "宠物类型 1猫咪,2狗狗")
private String petTypes;
private String distance;//距离(公里)
}

+ 71
- 5
ruoyi-catdog/src/main/java/com/ruoyi/model/controller/AppletOrderController.java View File

@ -4,13 +4,19 @@ import java.io.IOException;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.api.R;
import com.cyl.h5.pojo.vo.H5OrderVO;
import com.cyl.h5.service.H5OrderService;
import com.cyl.manager.oms.domain.Order;
import com.cyl.manager.oms.mapper.OrderMapper;
import com.cyl.manager.oms.service.OrderService;
import com.ruoyi.applet.service.IApiMallOrderService;
import com.ruoyi.applet.service.IMallOrderService;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.model.service.IAppletUsersService;
import com.ruoyi.model.domain.AppletOrderDateFrequency;
import com.ruoyi.model.domain.AppletOrderItem;
import com.ruoyi.model.service.*;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@ -26,7 +32,6 @@ import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.model.domain.AppletOrder;
import com.ruoyi.model.service.IAppletOrderService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
@ -51,10 +56,18 @@ public class AppletOrderController extends BaseController
private OrderService service;
@Autowired
private IAppletUsersService appletUsersService;
@Autowired
private IApiMallOrderService apiMallOrderService;
@Autowired
private IAppletOrderItemService appletOrderItemService;
@Autowired
private IAppletOrderDateFrequencyService appletOrderDateFrequencyService;
@Autowired
private OrderMapper orderMapper;
/**
* 查询订单信息列表
@ -143,14 +156,67 @@ public class AppletOrderController extends BaseController
return toAjax(appletOrderService.updateAppletOrder(appletOrder));
}
/**
* 修改接单人员
*/
@PreAuthorize("@ss.hasPermi('model:AppletOrder:edit')")
@Log(title = "订单信息", businessType = BusinessType.UPDATE)
@PutMapping("/orderTaker")
public AjaxResult editOrderTaker(String id, Long userId)
{
AppletOrder order = appletOrderService.getById(id);
if (order != null){
AppletOrderItem orderItem = appletOrderItemService.lambdaQuery()
.eq(AppletOrderItem::getOrderId, order.getOrderId()).one();
if (orderItem != null){
orderItem.setUserId(userId);
appletOrderItemService.updateById(orderItem);
}
List<AppletOrderDateFrequency> frequency = appletOrderDateFrequencyService.lambdaQuery()
.eq(AppletOrderDateFrequency::getOrderId, order.getOrderId()).list();
for (AppletOrderDateFrequency dateFrequency : frequency) {
dateFrequency.setMasterId(userId);
appletOrderDateFrequencyService.updateById(dateFrequency);
}
Order omsOrder = orderMapper.selectById(order.getOrderId());
if (omsOrder != null){
omsOrder.setAcceptAppUserId(userId);
orderMapper.updateById(omsOrder);
}
order.setUserId(userId);
appletOrderService.updateById(order);
}
return AjaxResult.success();
}
/**
* 删除订单信息
*/
@PreAuthorize("@ss.hasPermi('model:AppletOrder:remove')")
@Log(title = "订单信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(appletOrderService.deleteAppletOrderByIds(ids));
for (Long id : ids) {
AppletOrder order = appletOrderService.getById(id);
if (order != null){
//取消日订单
appletOrderItemService.remove(Wrappers.<AppletOrderItem>lambdaQuery()
.eq(AppletOrderItem::getOrderId, order.getOrderId()));
//取消日订单
appletOrderDateFrequencyService.remove(Wrappers.<AppletOrderDateFrequency>lambdaQuery()
.eq(AppletOrderDateFrequency::getOrderId, order.getOrderId()));
}
}
int i = appletOrderService.deleteAppletOrderByIds(ids);
return toAjax(i);
}
}

+ 9
- 3
ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppUsersServiceImpl.java View File

@ -137,6 +137,12 @@ public class AppUsersServiceImpl extends ServiceImpl<AppUsersMapper, AppUsers> i
// 根据订单筛选符合条件的技师
@Override
public List<AppUsers> filterQualifiedUsers(filterQualifiedUsersVo filterVo) {
String distance = "15";
if (StringUtils.isNotEmpty(filterVo.getDistance())){
distance = filterVo.getDistance();
}
List<AppUsers> qualifiedTechnicians = new ArrayList<>();
// 排除的地址
@ -198,7 +204,7 @@ public class AppUsersServiceImpl extends ServiceImpl<AppUsersMapper, AppUsers> i
// 将15公里转换为经纬度范围
// 1度纬度约等于111公里
// 1度经度约等于111*cos(纬度)公里
BigDecimal range = new BigDecimal("15"); // 15公里范围
BigDecimal range = new BigDecimal(distance); // 15公里范围
BigDecimal latRange = range.divide(new BigDecimal("111"), 6, BigDecimal.ROUND_HALF_UP);
BigDecimal lngRange = range.divide(new BigDecimal("111").multiply(new BigDecimal(Math.cos(orderLat.doubleValue() * Math.PI / 180))), 6, BigDecimal.ROUND_HALF_UP);
@ -208,7 +214,7 @@ public class AppUsersServiceImpl extends ServiceImpl<AppUsersMapper, AppUsers> i
BigDecimal lngMin = orderLng.subtract(lngRange);
BigDecimal lngMax = orderLng.add(lngRange);
// 查询所有有效的地址并且在15公里范围内
// 查询所有有效的地址并且在公里范围内
addressList = appletAddressService.lambdaQuery()
.eq(AppletAddress::getStatus, "true")
.notIn(!notAddressIds.isEmpty(), AppletAddress::getId, notAddressIds)
@ -239,7 +245,7 @@ public class AppUsersServiceImpl extends ServiceImpl<AppUsersMapper, AppUsers> i
BigDecimal lngDiff = orderLng.subtract(addressLng).abs();
// 如果在范围内添加到合格地址列表
if (latDiff.compareTo(latRange) <= 0 && lngDiff.compareTo(lngRange) <= 0) {
if (latDiff.compareTo(latRange) <= 0 && lngDiff.compareTo(lngRange) <= 0 || StringUtils.isNotEmpty(filterVo.getDistance())) {
qualifiedUserId.add(address.getUserId());
}
}


+ 28
- 26
ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppletOrderDateFrequencyServiceImpl.java View File

@ -448,33 +448,35 @@ public class AppletOrderDateFrequencyServiceImpl extends ServiceImpl<AppletOrder
.eq(AppUsers::getInvitationCode, member.getInviteCode())
.one();
//平台预计收益比例
AppletConfig estimated_platform_revenue = appletConfigService.getByCode("estimated_platform_revenue");
//合伙人等级
AppletConfig petPaymentHh = appletConfigService.selectAppletConfigByClassAndNum("pet_payment_hh", users.getUserHhRole());
if (petPaymentHh != null && estimated_platform_revenue != null){
BigDecimal multiply = omsOrder.getPayAmount().multiply(new BigDecimal(estimated_platform_revenue.getParamValueText()))
.multiply(petPaymentHh.getParamValueNo());
log.info("合伙人分销 合伙人等级:{} 平台预计收益比例:{} 分销金额:{}", petPaymentHh, estimated_platform_revenue.getParamValueText(), multiply);
AppletAmountLog multiplyLog = new AppletAmountLog();
multiplyLog.setUserId(users.getUserId());
multiplyLog.setTitle("合伙人佣金");
multiplyLog.setAmount(multiply);
multiplyLog.setType(0); //收入
multiplyLog.setState(1); //到账
multiplyLog.setCreateTime(LocalDateTime.now());
multiplyLog.setMoneyType(0);//钱包类型
multiplyLog.setFormId(member.getId());//来源用户
multiplyLog.setOrderId(omsOrder.getId());//来源订单
appletAmountLogService.insertAppletAmountLog(multiplyLog);
users.setMoney(users.getMoney().add(multiply));
appUsersService.updateById(users);
if (users != null){
//平台预计收益比例
AppletConfig estimated_platform_revenue = appletConfigService.getByCode("estimated_platform_revenue");
//合伙人等级
AppletConfig petPaymentHh = appletConfigService.selectAppletConfigByClassAndNum("pet_payment_hh", users.getUserHhRole());
if (petPaymentHh != null && estimated_platform_revenue != null){
BigDecimal multiply = omsOrder.getPayAmount().multiply(new BigDecimal(estimated_platform_revenue.getParamValueText()))
.multiply(petPaymentHh.getParamValueNo());
log.info("合伙人分销 合伙人等级:{} 平台预计收益比例:{} 分销金额:{}", petPaymentHh, estimated_platform_revenue.getParamValueText(), multiply);
AppletAmountLog multiplyLog = new AppletAmountLog();
multiplyLog.setUserId(users.getUserId());
multiplyLog.setTitle("合伙人佣金");
multiplyLog.setAmount(multiply);
multiplyLog.setType(0); //收入
multiplyLog.setState(1); //到账
multiplyLog.setCreateTime(LocalDateTime.now());
multiplyLog.setMoneyType(0);//钱包类型
multiplyLog.setFormId(member.getId());//来源用户
multiplyLog.setOrderId(omsOrder.getId());//来源订单
appletAmountLogService.insertAppletAmountLog(multiplyLog);
users.setMoney(users.getMoney().add(multiply));
appUsersService.updateById(users);
}
}
}


Loading…
Cancel
Save