202505291740
This commit is contained in:
parent
332f65334b
commit
268dc896a4
|
|
@ -155,6 +155,44 @@ public class CouponsController extends BaseController
|
|||
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 = "面值")
|
||||
private BigDecimal price;
|
||||
|
||||
|
||||
|
||||
/** 最低消费 */
|
||||
@Excel(name = "最低消费")
|
||||
private BigDecimal minPrice;
|
||||
|
|
|
|||
|
|
@ -58,4 +58,11 @@ public interface UsersMapper
|
|||
* @return 结果
|
||||
*/
|
||||
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 结果
|
||||
*/
|
||||
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);
|
||||
}
|
||||
|
||||
@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}
|
||||
</foreach>
|
||||
</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>
|
||||
|
|
@ -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() {
|
||||
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) {
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -77,7 +77,7 @@
|
|||
v-hasPermi="['system:IntegralOrder:edit']"
|
||||
>修改</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<!-- <el-col :span="1.5">
|
||||
<el-button
|
||||
type="danger"
|
||||
plain
|
||||
|
|
@ -97,7 +97,7 @@
|
|||
@click="handleExport"
|
||||
v-hasPermi="['system:IntegralOrder:export']"
|
||||
>导出</el-button>
|
||||
</el-col>
|
||||
</el-col> -->
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</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-item label="订单号" prop="orderId">
|
||||
<el-input v-model="form.orderId" placeholder="请输入订单号" />
|
||||
</el-form-item>
|
||||
<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-select>
|
||||
</el-form-item>
|
||||
|
|
@ -174,40 +174,69 @@
|
|||
<el-input v-model="form.userAddress" placeholder="请输入地址" />
|
||||
</el-form-item>
|
||||
<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-select>
|
||||
</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-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 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 label="总积分" prop="totalPrice">
|
||||
<el-input v-model="form.totalPrice" placeholder="请输入总积分" />
|
||||
</el-form-item>
|
||||
<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>
|
||||
<el-form-item label="备注" prop="mark">
|
||||
<el-input v-model="form.mark" placeholder="请输入备注" />
|
||||
<el-form-item label="支付积分" prop="totalPrice">
|
||||
<el-input-number
|
||||
v-model="form.totalPrice"
|
||||
:min="0"
|
||||
:max="999999"
|
||||
controls-position="right"
|
||||
style="width: 100%"
|
||||
placeholder="请输入支付积分"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-select v-model="form.status" placeholder="请选择状态" clearable>
|
||||
<el-option v-for="item in statusOptions" :key="item.value" :label="item.label" :value="item.value" />
|
||||
</el-select>
|
||||
<el-radio-group v-model="form.status">
|
||||
<el-radio :label="1">待发货</el-radio>
|
||||
<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>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
|
@ -260,7 +289,7 @@ export default {
|
|||
{ required: true, message: "订单号不能为空", trigger: "blur" }
|
||||
],
|
||||
uid: [
|
||||
{ required: true, message: "用户不能为空", trigger: "blur" }
|
||||
{ required: true, message: "用户不能为空", trigger: "change" }
|
||||
],
|
||||
userName: [
|
||||
{ required: true, message: "姓名不能为空", trigger: "blur" }
|
||||
|
|
@ -272,10 +301,7 @@ export default {
|
|||
{ required: true, message: "地址不能为空", trigger: "blur" }
|
||||
],
|
||||
productId: [
|
||||
{ required: true, message: "商品不能为空", trigger: "blur" }
|
||||
],
|
||||
sku: [
|
||||
{ required: true, message: "规格不能为空", trigger: "blur" }
|
||||
{ required: true, message: "商品不能为空", trigger: "change" }
|
||||
],
|
||||
num: [
|
||||
{ required: true, message: "数量不能为空", trigger: "blur" }
|
||||
|
|
@ -284,10 +310,34 @@ export default {
|
|||
{ required: true, message: "单价不能为空", trigger: "blur" }
|
||||
],
|
||||
totalPrice: [
|
||||
{ required: true, message: "总积分不能为空", trigger: "blur" }
|
||||
{ required: true, message: "支付积分不能为空", trigger: "blur" }
|
||||
],
|
||||
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: [],
|
||||
|
|
@ -329,7 +379,6 @@ export default {
|
|||
userPhone: null,
|
||||
userAddress: null,
|
||||
productId: null,
|
||||
sku: null,
|
||||
num: null,
|
||||
price: null,
|
||||
totalPrice: null,
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@
|
|||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<!-- <el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
|
|
@ -93,7 +93,7 @@
|
|||
>导出</el-button>
|
||||
</el-col>
|
||||
<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-column type="selection" width="55" align="center" />
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@
|
|||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<!-- <el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
|
|
@ -94,7 +94,7 @@
|
|||
>导出</el-button>
|
||||
</el-col>
|
||||
<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-column type="selection" width="55" align="center" />
|
||||
|
|
|
|||
Loading…
Reference in New Issue