202505291740
This commit is contained in:
parent
332f65334b
commit
268dc896a4
|
|
@ -155,6 +155,44 @@ public class CouponsController extends BaseController
|
||||||
return toAjax(couponsService.deleteCouponsByIds(ids));
|
return toAjax(couponsService.deleteCouponsByIds(ids));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据优惠券ID查询userIds对应的用户列表,只返回name、phone、userId字段
|
||||||
|
*/
|
||||||
|
@PreAuthorize("@ss.hasPermi('system:Coupons:query')")
|
||||||
|
@GetMapping("/userListByCoupon/{id}")
|
||||||
|
public AjaxResult getUserListByCoupon(@PathVariable("id") Long id) {
|
||||||
|
Coupons coupon = couponsService.selectCouponsById(id);
|
||||||
|
if (coupon == null || coupon.getUserIds() == null) {
|
||||||
|
return error("优惠券不存在");
|
||||||
|
}
|
||||||
|
List<Long> userIdList;
|
||||||
|
try {
|
||||||
|
// 假设userIds存储为JSON数组字符串
|
||||||
|
userIdList = com.alibaba.fastjson2.JSON.parseArray(coupon.getUserIds(), Long.class);
|
||||||
|
} catch (Exception e) {
|
||||||
|
// 如果不是JSON格式,尝试逗号分隔
|
||||||
|
userIdList = new java.util.ArrayList<>();
|
||||||
|
for (String s : coupon.getUserIds().split(",")) {
|
||||||
|
try {
|
||||||
|
userIdList.add(Long.parseLong(s.trim()));
|
||||||
|
} catch (Exception ignore) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (userIdList.isEmpty()) {
|
||||||
|
return error("优惠券不存在");
|
||||||
|
}
|
||||||
|
// 查询用户列表
|
||||||
|
List<Users> usersList = usersService.selectUsersByIds(userIdList);
|
||||||
|
// 只返回name、phone、userId字段
|
||||||
|
List<java.util.Map<String, Object>> simpleList = new java.util.ArrayList<>();
|
||||||
|
for (Users user : usersList) {
|
||||||
|
java.util.Map<String, Object> map = new java.util.HashMap<>();
|
||||||
|
map.put("userId", user.getId());
|
||||||
|
map.put("name", user.getName());
|
||||||
|
map.put("phone", user.getPhone());
|
||||||
|
simpleList.add(map);
|
||||||
|
}
|
||||||
|
return success(simpleList);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,8 @@ public class Coupons extends BaseEntity
|
||||||
@Excel(name = "面值")
|
@Excel(name = "面值")
|
||||||
private BigDecimal price;
|
private BigDecimal price;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** 最低消费 */
|
/** 最低消费 */
|
||||||
@Excel(name = "最低消费")
|
@Excel(name = "最低消费")
|
||||||
private BigDecimal minPrice;
|
private BigDecimal minPrice;
|
||||||
|
|
|
||||||
|
|
@ -58,4 +58,11 @@ public interface UsersMapper
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int deleteUsersByIds(Long[] ids);
|
public int deleteUsersByIds(Long[] ids);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量根据ID查询用户
|
||||||
|
* @param ids 用户ID列表
|
||||||
|
* @return 用户对象列表
|
||||||
|
*/
|
||||||
|
public List<Users> selectUsersByIds(List<Long> ids);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -58,4 +58,13 @@ public interface IUsersService
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int deleteUsersById(Long id);
|
public int deleteUsersById(Long id);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量根据ID查询用户
|
||||||
|
* @param ids 用户ID列表
|
||||||
|
* @return 用户对象列表
|
||||||
|
*/
|
||||||
|
public List<Users> selectUsersByIds(List<Long> ids);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -90,4 +90,10 @@ public class UsersServiceImpl implements IUsersService
|
||||||
{
|
{
|
||||||
return usersMapper.deleteUsersById(id);
|
return usersMapper.deleteUsersById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Users> selectUsersByIds(List<Long> ids) {
|
||||||
|
if (ids == null || ids.isEmpty()) return java.util.Collections.emptyList();
|
||||||
|
return usersMapper.selectUsersByIds(ids);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -216,4 +216,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
#{id}
|
#{id}
|
||||||
</foreach>
|
</foreach>
|
||||||
</delete>
|
</delete>
|
||||||
|
|
||||||
|
<select id="selectUsersByIds" parameterType="java.util.List" resultMap="UsersResult">
|
||||||
|
<include refid="selectUsersVo"/>
|
||||||
|
where id in
|
||||||
|
<foreach collection="list" item="id" open="(" separator="," close=")">
|
||||||
|
#{id}
|
||||||
|
</foreach>
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
@ -17,6 +17,31 @@ export function getCoupons(id) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getGoodsDataList() {
|
||||||
|
return request({
|
||||||
|
url: '/system/QuoteType/goodsDataList',
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 查询用户列表列表
|
||||||
|
export function getUserDataList(query) {
|
||||||
|
return request({
|
||||||
|
url: '/system/users/list',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// // 获取接单记录列表
|
||||||
|
// export function getUserDataList(type) {
|
||||||
|
// return request({
|
||||||
|
// url: '/system/transfer/getUsersDataList/'+type,
|
||||||
|
// method: 'get'
|
||||||
|
// })
|
||||||
|
// }
|
||||||
|
|
||||||
// 查询优惠券详细
|
// 查询优惠券详细
|
||||||
export function getTypeList() {
|
export function getTypeList() {
|
||||||
return request({
|
return request({
|
||||||
|
|
@ -25,6 +50,14 @@ export function getTypeList() {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getUserListByCoupon(id) {
|
||||||
|
return request({
|
||||||
|
url: '/system/Coupons/userListByCoupon/'+id,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 任务状态修改
|
// 任务状态修改
|
||||||
export function changetypeStatus(id, status) {
|
export function changetypeStatus(id, status) {
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -77,7 +77,7 @@
|
||||||
v-hasPermi="['system:IntegralOrder:edit']"
|
v-hasPermi="['system:IntegralOrder:edit']"
|
||||||
>修改</el-button>
|
>修改</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<!-- <el-col :span="1.5">
|
||||||
<el-button
|
<el-button
|
||||||
type="danger"
|
type="danger"
|
||||||
plain
|
plain
|
||||||
|
|
@ -97,7 +97,7 @@
|
||||||
@click="handleExport"
|
@click="handleExport"
|
||||||
v-hasPermi="['system:IntegralOrder:export']"
|
v-hasPermi="['system:IntegralOrder:export']"
|
||||||
>导出</el-button>
|
>导出</el-button>
|
||||||
</el-col>
|
</el-col> -->
|
||||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
|
|
@ -154,13 +154,13 @@
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- 添加或修改积分订单对话框 -->
|
<!-- 添加或修改积分订单对话框 -->
|
||||||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
<el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
|
||||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||||
<el-form-item label="订单号" prop="orderId">
|
<el-form-item label="订单号" prop="orderId">
|
||||||
<el-input v-model="form.orderId" placeholder="请输入订单号" />
|
<el-input v-model="form.orderId" placeholder="请输入订单号" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="用户" prop="uid">
|
<el-form-item label="用户" prop="uid">
|
||||||
<el-select v-model="form.uid" placeholder="请选择用户" clearable filterable>
|
<el-select v-model="form.uid" placeholder="请选择用户" clearable filterable style="width: 100%">
|
||||||
<el-option v-for="item in users" :key="item.userId" :label="item.userName" :value="item.userId" />
|
<el-option v-for="item in users" :key="item.userId" :label="item.userName" :value="item.userId" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
@ -174,40 +174,69 @@
|
||||||
<el-input v-model="form.userAddress" placeholder="请输入地址" />
|
<el-input v-model="form.userAddress" placeholder="请输入地址" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="商品" prop="productId">
|
<el-form-item label="商品" prop="productId">
|
||||||
<el-select v-model="form.productId" placeholder="请选择商品" clearable filterable>
|
<el-select v-model="form.productId" placeholder="请选择商品" clearable filterable style="width: 100%">
|
||||||
<el-option v-for="item in serviceGoods" :key="item.id" :label="item.title" :value="item.id" />
|
<el-option v-for="item in serviceGoods" :key="item.id" :label="item.title" :value="item.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="规格" prop="sku">
|
|
||||||
<el-input v-model="form.sku" type="textarea" placeholder="请输入内容" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="数量" prop="num">
|
<el-form-item label="数量" prop="num">
|
||||||
<el-input v-model="form.num" placeholder="请输入数量" />
|
<el-input-number
|
||||||
|
v-model="form.num"
|
||||||
|
:min="1"
|
||||||
|
:max="9999"
|
||||||
|
controls-position="right"
|
||||||
|
style="width: 100%"
|
||||||
|
placeholder="请输入数量"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="单价" prop="price">
|
<el-form-item label="单价" prop="price">
|
||||||
<el-input v-model="form.price" placeholder="请输入单价" />
|
<el-input-number
|
||||||
|
v-model="form.price"
|
||||||
|
:min="0"
|
||||||
|
:precision="2"
|
||||||
|
:step="0.01"
|
||||||
|
controls-position="right"
|
||||||
|
style="width: 100%"
|
||||||
|
placeholder="请输入单价"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="总积分" prop="totalPrice">
|
<el-form-item label="支付积分" prop="totalPrice">
|
||||||
<el-input v-model="form.totalPrice" placeholder="请输入总积分" />
|
<el-input-number
|
||||||
</el-form-item>
|
v-model="form.totalPrice"
|
||||||
<el-form-item label="快递" prop="deliveryId">
|
:min="0"
|
||||||
<el-input v-model="form.deliveryId" placeholder="请输入快递" />
|
:max="999999"
|
||||||
</el-form-item>
|
controls-position="right"
|
||||||
<el-form-item label="单号" prop="deliveryNum">
|
style="width: 100%"
|
||||||
<el-input v-model="form.deliveryNum" placeholder="请输入单号" />
|
placeholder="请输入支付积分"
|
||||||
</el-form-item>
|
/>
|
||||||
<el-form-item label="备注" prop="mark">
|
|
||||||
<el-input v-model="form.mark" placeholder="请输入备注" />
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="状态" prop="status">
|
<el-form-item label="状态" prop="status">
|
||||||
<el-select v-model="form.status" placeholder="请选择状态" clearable>
|
<el-radio-group v-model="form.status">
|
||||||
<el-option v-for="item in statusOptions" :key="item.value" :label="item.label" :value="item.value" />
|
<el-radio :label="1">待发货</el-radio>
|
||||||
</el-select>
|
<el-radio :label="2">发货</el-radio>
|
||||||
|
<el-radio :label="3">完成</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- 当选择发货状态时显示的字段 -->
|
||||||
|
<template v-if="form.status === 2">
|
||||||
|
<el-form-item label="快递" prop="deliveryId">
|
||||||
|
<el-input v-model="form.deliveryId" placeholder="请输入快递公司" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="单号" prop="deliveryNum">
|
||||||
|
<el-input v-model="form.deliveryNum" placeholder="请输入快递单号" />
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
<el-form-item label="备注">
|
||||||
|
<el-input
|
||||||
|
v-model="form.mark"
|
||||||
|
type="textarea"
|
||||||
|
:rows="3"
|
||||||
|
placeholder="请输入备注"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div slot="footer" class="dialog-footer">
|
<div slot="footer" class="dialog-footer">
|
||||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
|
||||||
<el-button @click="cancel">取 消</el-button>
|
<el-button @click="cancel">取 消</el-button>
|
||||||
|
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||||
</div>
|
</div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -260,7 +289,7 @@ export default {
|
||||||
{ required: true, message: "订单号不能为空", trigger: "blur" }
|
{ required: true, message: "订单号不能为空", trigger: "blur" }
|
||||||
],
|
],
|
||||||
uid: [
|
uid: [
|
||||||
{ required: true, message: "用户不能为空", trigger: "blur" }
|
{ required: true, message: "用户不能为空", trigger: "change" }
|
||||||
],
|
],
|
||||||
userName: [
|
userName: [
|
||||||
{ required: true, message: "姓名不能为空", trigger: "blur" }
|
{ required: true, message: "姓名不能为空", trigger: "blur" }
|
||||||
|
|
@ -272,10 +301,7 @@ export default {
|
||||||
{ required: true, message: "地址不能为空", trigger: "blur" }
|
{ required: true, message: "地址不能为空", trigger: "blur" }
|
||||||
],
|
],
|
||||||
productId: [
|
productId: [
|
||||||
{ required: true, message: "商品不能为空", trigger: "blur" }
|
{ required: true, message: "商品不能为空", trigger: "change" }
|
||||||
],
|
|
||||||
sku: [
|
|
||||||
{ required: true, message: "规格不能为空", trigger: "blur" }
|
|
||||||
],
|
],
|
||||||
num: [
|
num: [
|
||||||
{ required: true, message: "数量不能为空", trigger: "blur" }
|
{ required: true, message: "数量不能为空", trigger: "blur" }
|
||||||
|
|
@ -284,10 +310,34 @@ export default {
|
||||||
{ required: true, message: "单价不能为空", trigger: "blur" }
|
{ required: true, message: "单价不能为空", trigger: "blur" }
|
||||||
],
|
],
|
||||||
totalPrice: [
|
totalPrice: [
|
||||||
{ required: true, message: "总积分不能为空", trigger: "blur" }
|
{ required: true, message: "支付积分不能为空", trigger: "blur" }
|
||||||
],
|
],
|
||||||
status: [
|
status: [
|
||||||
{ required: true, message: "1:待发货 2:待收货 3:已完成不能为空", trigger: "change" }
|
{ required: true, message: "状态不能为空", trigger: "change" }
|
||||||
|
],
|
||||||
|
deliveryId: [
|
||||||
|
{
|
||||||
|
validator: (rule, value, callback) => {
|
||||||
|
if (this.form.status === 2 && (!value || value.trim() === '')) {
|
||||||
|
callback(new Error('快递公司不能为空'));
|
||||||
|
} else {
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
trigger: "blur"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
deliveryNum: [
|
||||||
|
{
|
||||||
|
validator: (rule, value, callback) => {
|
||||||
|
if (this.form.status === 2 && (!value || value.trim() === '')) {
|
||||||
|
callback(new Error('快递单号不能为空'));
|
||||||
|
} else {
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
trigger: "blur"
|
||||||
|
}
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
users: [],
|
users: [],
|
||||||
|
|
@ -329,7 +379,6 @@ export default {
|
||||||
userPhone: null,
|
userPhone: null,
|
||||||
userAddress: null,
|
userAddress: null,
|
||||||
productId: null,
|
productId: null,
|
||||||
sku: null,
|
|
||||||
num: null,
|
num: null,
|
||||||
price: null,
|
price: null,
|
||||||
totalPrice: null,
|
totalPrice: null,
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
<el-row :gutter="10" class="mb8">
|
<!-- <el-row :gutter="10" class="mb8">
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button
|
<el-button
|
||||||
type="primary"
|
type="primary"
|
||||||
|
|
@ -93,7 +93,7 @@
|
||||||
>导出</el-button>
|
>导出</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||||
</el-row>
|
</el-row> -->
|
||||||
|
|
||||||
<el-table v-loading="loading" :data="WorkerApplyList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="WorkerApplyList" @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column type="selection" width="55" align="center" />
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
<el-row :gutter="10" class="mb8">
|
<!-- <el-row :gutter="10" class="mb8">
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button
|
<el-button
|
||||||
type="primary"
|
type="primary"
|
||||||
|
|
@ -94,7 +94,7 @@
|
||||||
>导出</el-button>
|
>导出</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||||
</el-row>
|
</el-row> -->
|
||||||
|
|
||||||
<el-table v-loading="loading" :data="transferList" @selection-change="handleSelectionChange" border>
|
<el-table v-loading="loading" :data="transferList" @selection-change="handleSelectionChange" border>
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column type="selection" width="55" align="center" />
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue