Browse Source

快递dome

v1
前端-胡立永 2 months ago
parent
commit
f1296fca60
34 changed files with 1399 additions and 90 deletions
  1. BIN
      JAVASDK.zip
  2. +16
    -16
      admin-pc/src/views/commonDistributionRatio/CommonDistributionRatioList.vue
  3. +3
    -3
      admin-pc/src/views/commonDistributionRatio/modules/CommonDistributionRatioForm.vue
  4. +22
    -12
      admin-pc/src/views/commonShopClass/CommonShopClassList.vue
  5. +15
    -5
      admin-pc/src/views/commonShopClass/modules/CommonShopClassForm.vue
  6. +2
    -2
      module-base/base-core/src/main/java/org/jeecg/modules/hanHaiMember/entity/HanHaiMember.java
  7. +0
    -7
      module-common/src/main/java/org/jeecg/api/controller/AppletInfoTeamController.java
  8. +14
    -0
      module-common/src/main/java/org/jeecg/api/controller/AppletOrderTeamController.java
  9. +0
    -2
      module-common/src/main/java/org/jeecg/api/service/AppletInfoTeamService.java
  10. +4
    -0
      module-common/src/main/java/org/jeecg/api/service/AppletOrderTeamService.java
  11. +1
    -12
      module-common/src/main/java/org/jeecg/api/service/impl/AppletInfoTeamServiceImpl.java
  12. +15
    -0
      module-common/src/main/java/org/jeecg/api/service/impl/AppletLoginServiceImpl.java
  13. +0
    -1
      module-common/src/main/java/org/jeecg/api/service/impl/AppletMoneyLogServiceImpl.java
  14. +23
    -9
      module-common/src/main/java/org/jeecg/api/service/impl/AppletOrderServiceImpl.java
  15. +229
    -13
      module-common/src/main/java/org/jeecg/api/service/impl/AppletOrderTeamServiceImpl.java
  16. +0
    -2
      module-common/src/main/java/org/jeecg/api/service/impl/AppletPromotionServiceImpl.java
  17. +6
    -2
      module-common/src/main/java/org/jeecg/api/wxUtils/LogisticsUtil.java
  18. +171
    -0
      module-common/src/main/java/org/jeecg/modules/commonAdminOrderBrowseRecord/controller/CommonAdminOrderBrowseRecordController.java
  19. +61
    -0
      module-common/src/main/java/org/jeecg/modules/commonAdminOrderBrowseRecord/entity/CommonAdminOrderBrowseRecord.java
  20. +17
    -0
      module-common/src/main/java/org/jeecg/modules/commonAdminOrderBrowseRecord/mapper/CommonAdminOrderBrowseRecordMapper.java
  21. +5
    -0
      module-common/src/main/java/org/jeecg/modules/commonAdminOrderBrowseRecord/mapper/xml/CommonAdminOrderBrowseRecordMapper.xml
  22. +16
    -0
      module-common/src/main/java/org/jeecg/modules/commonAdminOrderBrowseRecord/service/ICommonAdminOrderBrowseRecordService.java
  23. +19
    -0
      module-common/src/main/java/org/jeecg/modules/commonAdminOrderBrowseRecord/service/impl/CommonAdminOrderBrowseRecordServiceImpl.java
  24. +177
    -0
      module-common/src/main/java/org/jeecg/modules/commonAdminOrderBrowseRecord/vue/CommonAdminOrderBrowseRecordList.vue
  25. +109
    -0
      module-common/src/main/java/org/jeecg/modules/commonAdminOrderBrowseRecord/vue/modules/CommonAdminOrderBrowseRecordForm.vue
  26. +84
    -0
      module-common/src/main/java/org/jeecg/modules/commonAdminOrderBrowseRecord/vue/modules/CommonAdminOrderBrowseRecordModal.Style#Drawer.vue
  27. +60
    -0
      module-common/src/main/java/org/jeecg/modules/commonAdminOrderBrowseRecord/vue/modules/CommonAdminOrderBrowseRecordModal.vue
  28. +61
    -0
      module-common/src/main/java/org/jeecg/modules/commonAdminOrderBrowseRecord/vue3/CommonAdminOrderBrowseRecord.api.ts
  29. +33
    -0
      module-common/src/main/java/org/jeecg/modules/commonAdminOrderBrowseRecord/vue3/CommonAdminOrderBrowseRecord.data.ts
  30. +162
    -0
      module-common/src/main/java/org/jeecg/modules/commonAdminOrderBrowseRecord/vue3/CommonAdminOrderBrowseRecordList.vue
  31. +58
    -0
      module-common/src/main/java/org/jeecg/modules/commonAdminOrderBrowseRecord/vue3/components/CommonAdminOrderBrowseRecordModal.vue
  32. +3
    -0
      module-common/src/main/java/org/jeecg/modules/commonOrder/entity/CommonOrder.java
  33. +9
    -0
      module-common/src/main/java/org/jeecg/modules/commonShopClass/entity/CommonShopClass.java
  34. +4
    -4
      module-system/src/main/resources/application-dev.yml

BIN
JAVASDK.zip View File


+ 16
- 16
admin-pc/src/views/commonDistributionRatio/CommonDistributionRatioList.vue View File

@ -10,27 +10,27 @@
<!-- 查询区域-END -->
<!-- 操作按钮区域 -->
<div class="table-operator">
<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
<a-button type="primary" icon="download" @click="handleExportXls('分销比例')">导出</a-button>
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
<a-button type="primary" icon="import">导入</a-button>
</a-upload>
<!-- 高级查询区域 -->
<j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
<a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay">
<a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
</a-menu>
<a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
</a-dropdown>
</div>
<!-- <div class="table-operator">-->
<!-- <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>-->
<!-- <a-button type="primary" icon="download" @click="handleExportXls('分销比例')">导出</a-button>-->
<!-- <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">-->
<!-- <a-button type="primary" icon="import">导入</a-button>-->
<!-- </a-upload>-->
<!-- &lt;!&ndash; 高级查询区域 &ndash;&gt;-->
<!-- <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>-->
<!-- <a-dropdown v-if="selectedRowKeys.length > 0">-->
<!-- <a-menu slot="overlay">-->
<!-- <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>-->
<!-- </a-menu>-->
<!-- <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>-->
<!-- </a-dropdown>-->
<!-- </div>-->
<!-- table区域-begin -->
<div>
<div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
<i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>
<a style="margin-left: 24px" @click="onClearSelected">清空</a>
<!-- <a style="margin-left: 24px" @click="onClearSelected">清空</a>-->
</div>
<a-table


+ 3
- 3
admin-pc/src/views/commonDistributionRatio/modules/CommonDistributionRatioForm.vue View File

@ -19,9 +19,9 @@
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="排序" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="sort">
<a-input-number v-model="model.sort" placeholder="请输入排序" style="width: 100%" />
</a-form-model-item>
<!-- <a-form-model-item label="排序" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="sort">-->
<!-- <a-input-number v-model="model.sort" placeholder="请输入排序" style="width: 100%" />-->
<!-- </a-form-model-item>-->
</a-col>
</a-row>
</a-form-model>


+ 22
- 12
admin-pc/src/views/commonShopClass/CommonShopClassList.vue View File

@ -12,18 +12,18 @@
<!-- 操作按钮区域 -->
<div class="table-operator">
<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
<a-button type="primary" icon="download" @click="handleExportXls('商品分类表')">导出</a-button>
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
<a-button type="primary" icon="import">导入</a-button>
</a-upload>
<!-- 高级查询区域 -->
<j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
<a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay">
<a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
</a-menu>
<a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
</a-dropdown>
<!-- <a-button type="primary" icon="download" @click="handleExportXls('商品分类表')">导出</a-button>-->
<!-- <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">-->
<!-- <a-button type="primary" icon="import">导入</a-button>-->
<!-- </a-upload>-->
<!-- &lt;!&ndash; 高级查询区域 &ndash;&gt;-->
<!-- <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>-->
<!-- <a-dropdown v-if="selectedRowKeys.length > 0">-->
<!-- <a-menu slot="overlay">-->
<!-- <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>-->
<!-- </a-menu>-->
<!-- <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>-->
<!-- </a-dropdown>-->
</div>
<!-- table区域-begin -->
@ -148,6 +148,16 @@
align:"center",
dataIndex: 'unit'
},
{
title:'其他标题',
align:"center",
dataIndex: 'otherTitle'
},
{
title:'其他副标题',
align:"center",
dataIndex: 'otherSubTitle'
},
{
title: '操作',
dataIndex: 'action',


+ 15
- 5
admin-pc/src/views/commonShopClass/modules/CommonShopClassForm.vue View File

@ -13,11 +13,11 @@
<a-input-number v-model="model.sort" placeholder="请输入分类排序" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="父级节点" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="pid">
<a-input v-model="model.pid" placeholder="请输入父级节点" ></a-input>
</a-form-model-item>
</a-col>
<!-- <a-col :span="24">-->
<!-- <a-form-model-item label="父级节点" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="pid">-->
<!-- <a-input v-model="model.pid" placeholder="请输入父级节点" ></a-input>-->
<!-- </a-form-model-item>-->
<!-- </a-col>-->
<a-col :span="24">
<a-form-model-item label="图片" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="icon">
<j-image-upload isMultiple v-model="model.icon" ></j-image-upload>
@ -33,6 +33,16 @@
<a-input v-model="model.unit" placeholder="请输入单位" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="其他标题" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="otherTitle">
<a-input v-model="model.otherTitle" placeholder="请输入其他标题" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="其他副标题" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="otherSubTitle">
<a-input v-model="model.otherSubTitle" placeholder="请输入其他副标题" ></a-input>
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</j-form-container>


+ 2
- 2
module-base/base-core/src/main/java/org/jeecg/modules/hanHaiMember/entity/HanHaiMember.java View File

@ -283,9 +283,9 @@ public class HanHaiMember implements Serializable {
@Excel(name = "推广官类型", width = 15)
@ApiModelProperty(value = "推广官类型")
@Dict(dictTable = "common_distribution_ratio", dicCode = "id", dicText = "title")
private java.lang.String isTuiType;
private java.lang.String isTuiType;//0用户 1推广官 2达人 3大使
//推广官类型名字
@TableField(exist = false)
private java.lang.String isTuiTypeTitle;
private java.lang.String isTuiTypeTitle;//推广身份名称
}

+ 0
- 7
module-common/src/main/java/org/jeecg/api/controller/AppletInfoTeamController.java View File

@ -52,12 +52,5 @@ public class AppletInfoTeamController {
}
//查询订单详情
@ApiOperation(value="查询订单详情", notes="查询订单详情")
@GetMapping(value = "/getOrderDetail")
public Result<?> getOrderDetail(@RequestHeader("X-Access-Token") String token,String orderId) {
return appletInfoTeamService.getOrderDetail(token,orderId);
}
}

+ 14
- 0
module-common/src/main/java/org/jeecg/api/controller/AppletOrderTeamController.java View File

@ -85,5 +85,19 @@ public class AppletOrderTeamController {
return appletOrderTeamService.updateOrderPrice(token,commonOrder);
}
//管理员记录管理员查看订单记录
@ApiOperation(value="管理员:记录管理员查看订单", notes="管理员:记录管理员查看订单记录")
@GetMapping(value = "/adminOrderBrowseRecord")
public Result<?> adminOrderBrowseRecord(@RequestHeader("X-Access-Token")String token, String orderIds) {
return appletOrderTeamService.adminOrderBrowseRecord(token, orderIds);
}
//管理员根据快递单号查询订单号
@ApiOperation(value="管理员:根据快递单号查询订单号", notes="管理员:根据快递单号查询订单号")
@GetMapping(value = "/getOrderIdBywliuNo")
public Result<?> getOrderIdBywliuNo(@RequestHeader("X-Access-Token")String token, String wliuNo) {
return appletOrderTeamService.getOrderIdBywliuNo(token, wliuNo);
}
}

+ 0
- 2
module-common/src/main/java/org/jeecg/api/service/AppletInfoTeamService.java View File

@ -16,8 +16,6 @@ public interface AppletInfoTeamService {
Result<?> getOrderListPage(String token,String userId,PageBean pageBean);
//获取订单详情
Result<?> getOrderDetail(String token,String orderId);
//获取员工信息列表
Result<?> getMyTeamList(String token,String name,PageBean pageBean);


+ 4
- 0
module-common/src/main/java/org/jeecg/api/service/AppletOrderTeamService.java View File

@ -32,4 +32,8 @@ public interface AppletOrderTeamService {
Result<?> orderStatusStatistics(String token);
Result<?> submitQualityInfo2(String token, String id, String list);
Result<?> adminOrderBrowseRecord(String token, String orderIds);
Result<?> getOrderIdBywliuNo(String token, String wliuNo);
}

+ 1
- 12
module-common/src/main/java/org/jeecg/api/service/impl/AppletInfoTeamServiceImpl.java View File

@ -73,6 +73,7 @@ public class AppletInfoTeamServiceImpl implements AppletInfoTeamService {
if ("Y".equals(record.getIsUser()) && StringUtils.isNotBlank(record.getIsTuiType())){
CommonDistributionRatio ratio = commonDistributionRatioService.getById(record.getIsTuiType());
record.setIsTuiTypeTitle(ratio.getTitle());
record.setIsTuiType(ratio.getSort().toString());
}
}
@ -138,18 +139,6 @@ public class AppletInfoTeamServiceImpl implements AppletInfoTeamService {
}
@Override
public Result<?> getOrderDetail(String token,String orderId){
HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token);
CommonOrder commonOrder = commonOrderService.getById(orderId);
List<CommonOrder> children = commonOrderService
.lambdaQuery()
.eq(CommonOrder::getPid,commonOrder.getId())
.list();
commonOrder.setCommonOrderList(children);
return Result.OK("订单详情",commonOrder);
}


+ 15
- 0
module-common/src/main/java/org/jeecg/api/service/impl/AppletLoginServiceImpl.java View File

@ -107,7 +107,21 @@ public class AppletLoginServiceImpl implements AppletLoginService {
member.setPrice(new BigDecimal(0));
member.setMoney(new BigDecimal(0));
member.setIntegerPrice(new BigDecimal(0));
// 设置默认用户名
String randomStr = UUID.randomUUID().toString().substring(0, 6);
member.setNickName("用户" + randomStr);
member.setHeadImage("https://oss.ddmhs.top/2025-07-06/55163a0d-6e3b-41ec-83a8-8f787b5160bb.jpg");
// 设置推广官
List<CommonDistributionRatio> list = commonDistributionRatioService
.lambdaQuery()
.orderByAsc(CommonDistributionRatio::getSort)
.list();
member.setIsUser("Y");
member.setIsTuiType(list.get(0).getId());
//查询直推间推
if (StringUtils.isNotBlank(loginReq.getShareId())){
@ -243,6 +257,7 @@ public class AppletLoginServiceImpl implements AppletLoginService {
if ("Y".equals(hanHaiMember.getIsUser()) && StringUtils.isNotBlank(hanHaiMember.getIsTuiType())){
CommonDistributionRatio ratio = commonDistributionRatioService.getById(hanHaiMember.getIsTuiType());
hanHaiMember.setIsTuiTypeTitle(ratio.getTitle());
hanHaiMember.setIsTuiType(ratio.getSort().toString());
}
//查询我的所有的提现记录


+ 0
- 1
module-common/src/main/java/org/jeecg/api/service/impl/AppletMoneyLogServiceImpl.java View File

@ -255,7 +255,6 @@ public class AppletMoneyLogServiceImpl implements AppletMoneyLogService {
map.put("infoContent1","衣服");
return map;
}
@Override


+ 23
- 9
module-common/src/main/java/org/jeecg/api/service/impl/AppletOrderServiceImpl.java View File

@ -3,6 +3,7 @@ package org.jeecg.api.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.commons.lang.StringUtils;
import org.jeecg.api.bean.PageBean;
@ -11,6 +12,8 @@ import org.jeecg.common.api.vo.Result;
import org.jeecg.config.shiro.ShiroRealm;
import org.jeecg.modules.commonAddress.entity.CommonAddress;
import org.jeecg.modules.commonAddress.service.ICommonAddressService;
import org.jeecg.modules.commonAdminOrderBrowseRecord.entity.CommonAdminOrderBrowseRecord;
import org.jeecg.modules.commonAdminOrderBrowseRecord.service.ICommonAdminOrderBrowseRecordService;
import org.jeecg.modules.commonConfig.service.ICommonConfigService;
import org.jeecg.modules.commonMoneyLog.service.ICommonMoneyLogService;
import org.jeecg.modules.commonOrder.entity.CommonOrder;
@ -64,6 +67,8 @@ public class AppletOrderServiceImpl implements AppletOrderService {
private ICommonConfigService commonConfigService;
@Autowired
private org.jeecg.api.service.impl.LogisticsUtil logisticsUtil;
@Autowired
private ICommonAdminOrderBrowseRecordService commonAdminOrderBrowseRecordService;
// 联系客服问题相关列表数据带分页
@Override
@ -172,19 +177,28 @@ public class AppletOrderServiceImpl implements AppletOrderService {
CommonOrder commonOrder = commonOrderService.lambdaQuery()
.eq(CommonOrder::getId,orderId)
.one();
if(commonOrder.getState() == 0){
// TODO 如果下单物流了 取消物流
if (commonOrder == null){
return Result.error("订单不存在");
}
if(StringUtils.isNotBlank(commonOrder.getWliuNo())){
logisticsUtil.cancelOrder(hanHaiMember.getAppletOpenid(), commonOrder, null);
}
if(commonOrder.getState() != 0){
return Result.error("已取件后联系客服取消");
}
commonOrder.setState(3);//取消订单
commonOrderService.updateById(commonOrder);
return Result.OK("取消订单成功");
if(StringUtils.isNotBlank(commonOrder.getWliuNo())){
logisticsUtil.cancelOrder(hanHaiMember.getAppletOpenid(), commonOrder, null);
}
return Result.error("已取件后联系客服取消");
commonOrder.setState(3);//取消订单
commonOrderService.updateById(commonOrder);
// 删除用户的浏览记录
commonAdminOrderBrowseRecordService
.remove(Wrappers.<CommonAdminOrderBrowseRecord>lambdaQuery()
.eq(CommonAdminOrderBrowseRecord::getOrderId, orderId));
return Result.OK("取消订单成功");
}


+ 229
- 13
module-common/src/main/java/org/jeecg/api/service/impl/AppletOrderTeamServiceImpl.java View File

@ -2,13 +2,15 @@ package org.jeecg.api.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.commons.lang.StringUtils;
import org.jeecg.api.bean.PageBean;
import org.jeecg.api.service.AppletOrderTeamService;
import org.jeecg.common.api.vo.Result;
import org.jeecg.config.shiro.ShiroRealm;
import org.jeecg.modules.CommonRecyclingDestination.service.ICommonRecyclingDestinationService;
import org.jeecg.modules.commonAdminOrderBrowseRecord.entity.CommonAdminOrderBrowseRecord;
import org.jeecg.modules.commonAdminOrderBrowseRecord.service.ICommonAdminOrderBrowseRecordService;
import org.jeecg.modules.commonDistributionRatio.entity.CommonDistributionRatio;
import org.jeecg.modules.commonDistributionRatio.service.ICommonDistributionRatioService;
import org.jeecg.modules.commonGet.entity.CommonGet;
@ -22,7 +24,6 @@ import org.jeecg.modules.commonShop.service.ICommonShopService;
import org.jeecg.modules.commonText.service.ICommonTextService;
import org.jeecg.modules.commonVip.entity.CommonVip;
import org.jeecg.modules.commonVip.service.ICommonVipService;
import org.jeecg.modules.common_reasons.entity.CommonReasons;
import org.jeecg.modules.common_reasons.service.ICommonReasonsService;
import org.jeecg.modules.hanHaiMember.entity.HanHaiMember;
import org.jeecg.modules.hanHaiMember.service.IHanHaiMemberService;
@ -59,6 +60,8 @@ public class AppletOrderTeamServiceImpl implements AppletOrderTeamService {
private ICommonShopService commonShopService;
@Autowired
private org.jeecg.api.service.impl.LogisticsUtil logisticsUtil;
@Autowired
private ICommonAdminOrderBrowseRecordService commonAdminOrderBrowseRecordService;
//管理员订单列表带分页搜索
@Override
@ -76,27 +79,45 @@ public class AppletOrderTeamServiceImpl implements AppletOrderTeamService {
} else if (status === 1 && state === 3) {
return { label: '已驳回', class: 'red' }
}
订单管理栏目修改
待审核不包邮待审核订单
已预约下单了以及甚于的订单
待质检快递送达我们这里签收了
已结款质检完成
已驳回
已取消取消订单
*/
IPage<CommonOrder> pageList = commonOrderService
.lambdaQuery()
.eq(userId != null,CommonOrder::getUserId,userId)
.and(status != null && status > 0 && status < 5, n -> {
if (status == 1){//已预约
n.in(CommonOrder::getStatus, 0, 1);
.and(status != null && status >= 0 && status <= 5, n -> {
/*
订单流程 待取件+在线预约 = 待取件+快递上门 = 已取件+快递上门 = 已取件+透明质检 = 已完成+现金打款
*/
if (status == 0){//待审核 待取件+在线预约
n.eq(CommonOrder::getStatus, 0);
n.eq(CommonOrder::getState, 0);
}
if (status == 1){//已预约 待取件+快递上门 or 已取件+快递上门
n.eq(CommonOrder::getStatus, 1);
n.eq(CommonOrder::getState, 0);
}
if (status == 2){//待质检
if (status == 2){//待质检 已取件+透明质检
n.eq(CommonOrder::getStatus, 2);
n.eq(CommonOrder::getState, 1);
}
if (status == 3){//已结款
if (status == 3){//已结款 已完成+现金打款
n.eq(CommonOrder::getStatus, 3);
n.eq(CommonOrder::getState, 2);
}
if (status == 4){//已驳回
n.eq(CommonOrder::getState, 4);
}
if (status == 5){//已取消
n.eq(CommonOrder::getState, 3);
}
})
//订单状态不为空则搜索
.and(StringUtils.isNotBlank(pageBean.getTitle()), n -> {
@ -110,7 +131,6 @@ public class AppletOrderTeamServiceImpl implements AppletOrderTeamService {
.or()
.like(CommonOrder::getOrdeNo, pageBean.getTitle());
})
.ne(CommonOrder::getState, 3)
.orderByDesc(CommonOrder::getCreateTime)
.eq(CommonOrder::getPid,"0")
.page(page);
@ -186,6 +206,11 @@ public class AppletOrderTeamServiceImpl implements AppletOrderTeamService {
public Result<?> passOrder(String token, String orderId){
HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token);
CommonOrder commonOrder = commonOrderService.getById(orderId);
if (commonOrder == null){
return Result.error("订单不存在");
}
commonOrder.setStatus(1);//快递上门
HanHaiMember member = hanHaiMemberService.getById(commonOrder.getUserId());
@ -195,6 +220,12 @@ public class AppletOrderTeamServiceImpl implements AppletOrderTeamService {
commonOrderService.updateById(commonOrder);
// 删除其他用户的浏览记录
commonAdminOrderBrowseRecordService
.remove(Wrappers.<CommonAdminOrderBrowseRecord>lambdaQuery()
.eq(CommonAdminOrderBrowseRecord::getOrderId, orderId)
.ne(CommonAdminOrderBrowseRecord::getUserId, hanHaiMember.getId()));
return Result.OK("订单审核通过");
}
@ -204,8 +235,20 @@ public class AppletOrderTeamServiceImpl implements AppletOrderTeamService {
public Result<?> rejectOrder(String token, String orderId){
HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token);
CommonOrder commonOrder = commonOrderService.getById(orderId);
if (commonOrder == null){
return Result.error("订单不存在");
}
commonOrder.setState(4);//驳回
commonOrderService.updateById(commonOrder);
// 删除其他用户的浏览记录
commonAdminOrderBrowseRecordService
.remove(Wrappers.<CommonAdminOrderBrowseRecord>lambdaQuery()
.eq(CommonAdminOrderBrowseRecord::getOrderId, orderId)
.ne(CommonAdminOrderBrowseRecord::getUserId, hanHaiMember.getId()));
return Result.OK("订单审核拒绝");
}
@ -276,12 +319,60 @@ public class AppletOrderTeamServiceImpl implements AppletOrderTeamService {
@Override
public Result<?> getUserOrderNum(String userId){
Map<String,Object> map = new HashMap<>();
//查询用户信息
HanHaiMember hanHaiMember = hanHaiMemberService.getById(userId);
if (hanHaiMember == null) {
return Result.error("用户不存在");
}
int sum = 0;
//总订单id
List<String> idCount = commonOrderService.
lambdaQuery()
.eq(CommonOrder::getUserId, hanHaiMember.getId())
.eq(CommonOrder::getPid, "0") // 只查询主订单
.select(CommonOrder::getId)
.list()
.stream().map(n -> n.getId())
.collect(Collectors.toList());
// 如果没有订单直接返回0统计
if (idCount.isEmpty()) {
map.put("sum", 0);//总件数
map.put("unit_num", 0);//总回收订单
map.put("order_money", BigDecimal.ZERO);//回收总金额
return Result.OK("该用户的总回收统计",map);
}
//查询子订单获得总件数
List<CommonOrder> list = commonOrderService
.lambdaQuery()
.in(CommonOrder::getPid, idCount)
.eq(CommonOrder::getType, 1)//质检订单
.select(
CommonOrder::getQualifiedNum,//合格数量
CommonOrder::getNoQualifiedNum,//不合格数量
CommonOrder::getUnrecyclable//不可回收数量
)
.list();
// 计算总件数合格数量 + 不合格数量 + 不可回收数量
for (CommonOrder order : list) {
Integer qualifiedNum = order.getQualifiedNum() != null ? order.getQualifiedNum() : 0;
Integer noQualifiedNum = order.getNoQualifiedNum() != null ? order.getNoQualifiedNum() : 0;
Integer unrecyclable = order.getUnrecyclable() != null ? order.getUnrecyclable() : 0;
sum += qualifiedNum + noQualifiedNum + unrecyclable;
}
map.put("sum",100);
map.put("unit_num",200);
map.put("order_money",10000);
// 设置回收总金额如果为null则设置为0
BigDecimal orderMoney = hanHaiMember.getPayRole() != null ? hanHaiMember.getPayRole() : BigDecimal.ZERO;
map.put("sum", sum);//总件数
map.put("unit_num", idCount.size());//总回收订单
map.put("order_money", orderMoney);//回收总金额
return Result.OK("该用户的总回收统计",map);
}
@ -306,10 +397,30 @@ public class AppletOrderTeamServiceImpl implements AppletOrderTeamService {
HashMap<String, Long> map = new HashMap<>();
// 统计已预约数量 (status=0或1, state=0)
// 获取当前用户已查看的订单ID列表
List<String> viewedOrderIds = commonAdminOrderBrowseRecordService.lambdaQuery()
.eq(org.jeecg.modules.commonAdminOrderBrowseRecord.entity.CommonAdminOrderBrowseRecord::getUserId, hanHaiMember.getId())
.select(org.jeecg.modules.commonAdminOrderBrowseRecord.entity.CommonAdminOrderBrowseRecord::getOrderId)
.list()
.stream()
.map(org.jeecg.modules.commonAdminOrderBrowseRecord.entity.CommonAdminOrderBrowseRecord::getOrderId)
.collect(Collectors.toList());
// 统计待审核数量 (status=0, state=0)
Long pendingAuditCount = commonOrderService.lambdaQuery()
.eq(CommonOrder::getStatus, 0)
.eq(CommonOrder::getState, 0)
.eq(CommonOrder::getPid, "0")
.and(!viewedOrderIds.isEmpty(), n -> n.notIn(CommonOrder::getId, viewedOrderIds))
.count();
map.put("pendingAudit", pendingAuditCount);
// 统计已预约数量 (status=1, state=0)
Long appointedCount = commonOrderService.lambdaQuery()
.in(CommonOrder::getStatus, 0, 1)
.eq(CommonOrder::getStatus, 1)
.eq(CommonOrder::getState, 0)
.eq(CommonOrder::getPid, "0")
.and(!viewedOrderIds.isEmpty(), n -> n.notIn(CommonOrder::getId, viewedOrderIds))
.count();
map.put("appointed", appointedCount);
@ -317,6 +428,8 @@ public class AppletOrderTeamServiceImpl implements AppletOrderTeamService {
Long waitingInspectionCount = commonOrderService.lambdaQuery()
.eq(CommonOrder::getStatus, 2)
.eq(CommonOrder::getState, 1)
.eq(CommonOrder::getPid, "0")
.and(!viewedOrderIds.isEmpty(), n -> n.notIn(CommonOrder::getId, viewedOrderIds))
.count();
map.put("waitingInspection", waitingInspectionCount);
@ -324,15 +437,27 @@ public class AppletOrderTeamServiceImpl implements AppletOrderTeamService {
Long completedCount = commonOrderService.lambdaQuery()
.eq(CommonOrder::getStatus, 3)
.eq(CommonOrder::getState, 2)
.eq(CommonOrder::getPid, "0")
.and(!viewedOrderIds.isEmpty(), n -> n.notIn(CommonOrder::getId, viewedOrderIds))
.count();
map.put("completed", completedCount);
// 统计已驳回数量 (state=4)
Long rejectedCount = commonOrderService.lambdaQuery()
.eq(CommonOrder::getState, 4)
.eq(CommonOrder::getPid, "0")
.and(!viewedOrderIds.isEmpty(), n -> n.notIn(CommonOrder::getId, viewedOrderIds))
.count();
map.put("rejected", rejectedCount);
// 统计已取消数量 (state=3)
Long cancelledCount = commonOrderService.lambdaQuery()
.eq(CommonOrder::getState, 3)
.eq(CommonOrder::getPid, "0")
.and(!viewedOrderIds.isEmpty(), n -> n.notIn(CommonOrder::getId, viewedOrderIds))
.count();
map.put("cancelled", cancelledCount);
return Result.OK("订单状态统计", map);
}
@ -436,6 +561,97 @@ public class AppletOrderTeamServiceImpl implements AppletOrderTeamService {
return Result.OK("提交成功");
}
@Override
public Result<?> adminOrderBrowseRecord(String token, String orderIds) {
// 验证token
if (StringUtils.isBlank(token)) {
return Result.error("token不能为空");
}
HanHaiMember member = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token);
if (member == null) {
return Result.error("用户token无效");
}
// 验证orderIds参数
if (StringUtils.isBlank(orderIds)) {
return Result.error("订单ID不能为空");
}
// 分割订单ID字符串
String[] orderIdArray = orderIds.split(",");
if (orderIdArray.length == 0) {
return Result.error("订单ID格式不正确");
}
// 去重并过滤空值
List<String> validOrderIds = Arrays.stream(orderIdArray)
.filter(StringUtils::isNotBlank)
.map(String::trim)
.distinct()
.collect(Collectors.toList());
if (validOrderIds.isEmpty()) {
return Result.error("没有有效的订单ID");
}
// 查询已存在的浏览记录避免重复添加
List<String> existingOrderIds = commonAdminOrderBrowseRecordService.lambdaQuery()
.eq(CommonAdminOrderBrowseRecord::getUserId, member.getId())
.in(CommonAdminOrderBrowseRecord::getOrderId, validOrderIds)
.select(CommonAdminOrderBrowseRecord::getOrderId)
.list()
.stream()
.map(CommonAdminOrderBrowseRecord::getOrderId)
.collect(Collectors.toList());
// 过滤出需要新增的订单ID
List<String> newOrderIds = validOrderIds.stream()
.filter(orderId -> !existingOrderIds.contains(orderId))
.collect(Collectors.toList());
if (newOrderIds.isEmpty()) {
return Result.OK("所有订单均已记录浏览");
}
// 批量创建浏览记录
List<CommonAdminOrderBrowseRecord> browseRecords = new ArrayList<>();
Date now = new Date();
for (String orderId : newOrderIds) {
CommonAdminOrderBrowseRecord record = new CommonAdminOrderBrowseRecord();
record.setUserId(member.getId());
record.setOrderId(orderId);
record.setCreateTime(now);
record.setCreateBy(member.getId());
browseRecords.add(record);
}
// 批量保存
boolean success = commonAdminOrderBrowseRecordService.saveBatch(browseRecords);
if (success) {
return Result.OK("成功记录 " + newOrderIds.size() + " 条订单浏览记录");
} else {
return Result.error("保存浏览记录失败");
}
}
@Override
public Result<?> getOrderIdBywliuNo(String token, String wliuNo) {
List<CommonOrder> list = commonOrderService.lambdaQuery()
.eq(CommonOrder::getWliuNo, wliuNo)
.select(CommonOrder::getId)
.list();
if (list.size() > 0){
return Result.ok(list.get(0).getId());
}
return Result.error("系统中不存在该运单号");
}
// 添加最近回收
public void addCommonGet(CommonOrder order, HanHaiMember member){
CommonGet commonGet = new CommonGet();


+ 0
- 2
module-common/src/main/java/org/jeecg/api/service/impl/AppletPromotionServiceImpl.java View File

@ -380,8 +380,6 @@ public class AppletPromotionServiceImpl implements AppletPromotionService {
Long count = hanHaiMemberService.
lambdaQuery()
.eq(HanHaiMember::getShareId, member.getId())
.or()
.eq(HanHaiMember::getVid, member.getId())
.count();
return Result.OK(count);


+ 6
- 2
module-common/src/main/java/org/jeecg/api/wxUtils/LogisticsUtil.java View File

@ -33,7 +33,8 @@ public class LogisticsUtil {
ArrayList<String> address = getAddress(order.getAddress());
// 获取上门时间
String goTimeStr = order.getGoTime();
String goTimeStr = "2025-07-10 13:00-15:00";
// String goTimeStr = order.getGoTime();
long goTimeStamp;
try {
// 将字符串时间转换为时间戳
@ -104,7 +105,7 @@ public class LogisticsUtil {
1大件快递3.60
2特准快件
*/
.serviceWithExpectTime(1, "test_service_name", goTimeStamp) // 上门取件时间
.serviceWithExpectTime(2, "特准快件", goTimeStamp) // 上门取件时间
.build();
log.info("测试下单请求:{}", request);
@ -169,6 +170,9 @@ public class LogisticsUtil {
// 使用正则表达式解析地址字符串提取省市区
if (address != null && !address.isEmpty()) {
// 去除地址中的空格
address = address.replaceAll("\\s+", "");
// 匹配省份以省自治区直辖市结尾
java.util.regex.Pattern provincePattern = java.util.regex.Pattern.compile("^(.*?省|.*?自治区|北京市|天津市|上海市|重庆市)");
java.util.regex.Matcher provinceMatcher = provincePattern.matcher(address);


+ 171
- 0
module-common/src/main/java/org/jeecg/modules/commonAdminOrderBrowseRecord/controller/CommonAdminOrderBrowseRecordController.java View File

@ -0,0 +1,171 @@
package org.jeecg.modules.commonAdminOrderBrowseRecord.controller;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.commonAdminOrderBrowseRecord.entity.CommonAdminOrderBrowseRecord;
import org.jeecg.modules.commonAdminOrderBrowseRecord.service.ICommonAdminOrderBrowseRecordService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.jeecg.common.system.base.controller.JeecgController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.jeecg.common.aspect.annotation.AutoLog;
/**
* @Description: 管理员订单浏览记录
* @Author: jeecg-boot
* @Date: 2025-07-08
* @Version: V1.0
*/
@Api(tags="管理员订单浏览记录")
@RestController
@RequestMapping("/commonAdminOrderBrowseRecord/commonAdminOrderBrowseRecord")
@Slf4j
public class CommonAdminOrderBrowseRecordController extends JeecgController<CommonAdminOrderBrowseRecord, ICommonAdminOrderBrowseRecordService> {
@Autowired
private ICommonAdminOrderBrowseRecordService commonAdminOrderBrowseRecordService;
/**
* 分页列表查询
*
* @param commonAdminOrderBrowseRecord
* @param pageNo
* @param pageSize
* @param req
* @return
*/
//@AutoLog(value = "管理员订单浏览记录-分页列表查询")
@ApiOperation(value="管理员订单浏览记录-分页列表查询", notes="管理员订单浏览记录-分页列表查询")
@GetMapping(value = "/list")
public Result<IPage<CommonAdminOrderBrowseRecord>> queryPageList(CommonAdminOrderBrowseRecord commonAdminOrderBrowseRecord,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<CommonAdminOrderBrowseRecord> queryWrapper = QueryGenerator.initQueryWrapper(commonAdminOrderBrowseRecord, req.getParameterMap());
Page<CommonAdminOrderBrowseRecord> page = new Page<CommonAdminOrderBrowseRecord>(pageNo, pageSize);
IPage<CommonAdminOrderBrowseRecord> pageList = commonAdminOrderBrowseRecordService.page(page, queryWrapper);
return Result.OK(pageList);
}
/**
* 添加
*
* @param commonAdminOrderBrowseRecord
* @return
*/
@AutoLog(value = "管理员订单浏览记录-添加")
@ApiOperation(value="管理员订单浏览记录-添加", notes="管理员订单浏览记录-添加")
@PostMapping(value = "/add")
public Result<String> add(@RequestBody CommonAdminOrderBrowseRecord commonAdminOrderBrowseRecord) {
commonAdminOrderBrowseRecordService.save(commonAdminOrderBrowseRecord);
return Result.OK("添加成功!");
}
/**
* 编辑
*
* @param commonAdminOrderBrowseRecord
* @return
*/
@AutoLog(value = "管理员订单浏览记录-编辑")
@ApiOperation(value="管理员订单浏览记录-编辑", notes="管理员订单浏览记录-编辑")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<String> edit(@RequestBody CommonAdminOrderBrowseRecord commonAdminOrderBrowseRecord) {
commonAdminOrderBrowseRecordService.updateById(commonAdminOrderBrowseRecord);
return Result.OK("编辑成功!");
}
/**
* 通过id删除
*
* @param id
* @return
*/
@AutoLog(value = "管理员订单浏览记录-通过id删除")
@ApiOperation(value="管理员订单浏览记录-通过id删除", notes="管理员订单浏览记录-通过id删除")
@DeleteMapping(value = "/delete")
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
commonAdminOrderBrowseRecordService.removeById(id);
return Result.OK("删除成功!");
}
/**
* 批量删除
*
* @param ids
* @return
*/
@AutoLog(value = "管理员订单浏览记录-批量删除")
@ApiOperation(value="管理员订单浏览记录-批量删除", notes="管理员订单浏览记录-批量删除")
@DeleteMapping(value = "/deleteBatch")
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.commonAdminOrderBrowseRecordService.removeByIds(Arrays.asList(ids.split(",")));
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
*
* @param id
* @return
*/
//@AutoLog(value = "管理员订单浏览记录-通过id查询")
@ApiOperation(value="管理员订单浏览记录-通过id查询", notes="管理员订单浏览记录-通过id查询")
@GetMapping(value = "/queryById")
public Result<CommonAdminOrderBrowseRecord> queryById(@RequestParam(name="id",required=true) String id) {
CommonAdminOrderBrowseRecord commonAdminOrderBrowseRecord = commonAdminOrderBrowseRecordService.getById(id);
if(commonAdminOrderBrowseRecord==null) {
return Result.error("未找到对应数据");
}
return Result.OK(commonAdminOrderBrowseRecord);
}
/**
* 导出excel
*
* @param request
* @param commonAdminOrderBrowseRecord
*/
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, CommonAdminOrderBrowseRecord commonAdminOrderBrowseRecord) {
return super.exportXls(request, commonAdminOrderBrowseRecord, CommonAdminOrderBrowseRecord.class, "管理员订单浏览记录");
}
/**
* 通过excel导入数据
*
* @param request
* @param response
* @return
*/
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, CommonAdminOrderBrowseRecord.class);
}
}

+ 61
- 0
module-common/src/main/java/org/jeecg/modules/commonAdminOrderBrowseRecord/entity/CommonAdminOrderBrowseRecord.java View File

@ -0,0 +1,61 @@
package org.jeecg.modules.commonAdminOrderBrowseRecord.entity;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.jeecg.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @Description: 管理员订单浏览记录
* @Author: jeecg-boot
* @Date: 2025-07-08
* @Version: V1.0
*/
@Data
@TableName("common_admin_order_browse_record")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="common_admin_order_browse_record对象", description="管理员订单浏览记录")
public class CommonAdminOrderBrowseRecord implements Serializable {
private static final long serialVersionUID = 1L;
/**主键*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键")
private java.lang.String id;
/**创建人*/
@ApiModelProperty(value = "创建人")
private java.lang.String createBy;
/**创建日期*/
@ApiModelProperty(value = "创建日期")
private java.util.Date createTime;
/**更新人*/
@ApiModelProperty(value = "更新人")
private java.lang.String updateBy;
/**更新日期*/
@ApiModelProperty(value = "更新日期")
private java.util.Date updateTime;
/**所属部门*/
@ApiModelProperty(value = "所属部门")
private java.lang.String sysOrgCode;
/**用户id*/
@Excel(name = "用户id", width = 15)
@ApiModelProperty(value = "用户id")
private java.lang.String userId;
/**订单id*/
@Excel(name = "订单id", width = 15)
@ApiModelProperty(value = "订单id")
private java.lang.String orderId;
}

+ 17
- 0
module-common/src/main/java/org/jeecg/modules/commonAdminOrderBrowseRecord/mapper/CommonAdminOrderBrowseRecordMapper.java View File

@ -0,0 +1,17 @@
package org.jeecg.modules.commonAdminOrderBrowseRecord.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.commonAdminOrderBrowseRecord.entity.CommonAdminOrderBrowseRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 管理员订单浏览记录
* @Author: jeecg-boot
* @Date: 2025-07-08
* @Version: V1.0
*/
public interface CommonAdminOrderBrowseRecordMapper extends BaseMapper<CommonAdminOrderBrowseRecord> {
}

+ 5
- 0
module-common/src/main/java/org/jeecg/modules/commonAdminOrderBrowseRecord/mapper/xml/CommonAdminOrderBrowseRecordMapper.xml View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.jeecg.modules.commonAdminOrderBrowseRecord.mapper.CommonAdminOrderBrowseRecordMapper">
</mapper>

+ 16
- 0
module-common/src/main/java/org/jeecg/modules/commonAdminOrderBrowseRecord/service/ICommonAdminOrderBrowseRecordService.java View File

@ -0,0 +1,16 @@
package org.jeecg.modules.commonAdminOrderBrowseRecord.service;
import org.jeecg.modules.commonAdminOrderBrowseRecord.entity.CommonAdminOrderBrowseRecord;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description: 管理员订单浏览记录
* @Author: jeecg-boot
* @Date: 2025-07-08
* @Version: V1.0
*/
public interface ICommonAdminOrderBrowseRecordService extends IService<CommonAdminOrderBrowseRecord> {
}

+ 19
- 0
module-common/src/main/java/org/jeecg/modules/commonAdminOrderBrowseRecord/service/impl/CommonAdminOrderBrowseRecordServiceImpl.java View File

@ -0,0 +1,19 @@
package org.jeecg.modules.commonAdminOrderBrowseRecord.service.impl;
import org.jeecg.modules.commonAdminOrderBrowseRecord.entity.CommonAdminOrderBrowseRecord;
import org.jeecg.modules.commonAdminOrderBrowseRecord.mapper.CommonAdminOrderBrowseRecordMapper;
import org.jeecg.modules.commonAdminOrderBrowseRecord.service.ICommonAdminOrderBrowseRecordService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: 管理员订单浏览记录
* @Author: jeecg-boot
* @Date: 2025-07-08
* @Version: V1.0
*/
@Service
public class CommonAdminOrderBrowseRecordServiceImpl extends ServiceImpl<CommonAdminOrderBrowseRecordMapper, CommonAdminOrderBrowseRecord> implements ICommonAdminOrderBrowseRecordService {
}

+ 177
- 0
module-common/src/main/java/org/jeecg/modules/commonAdminOrderBrowseRecord/vue/CommonAdminOrderBrowseRecordList.vue View File

@ -0,0 +1,177 @@
<template>
<a-card :bordered="false">
<!-- 查询区域 -->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
</a-row>
</a-form>
</div>
<!-- 查询区域-END -->
<!-- 操作按钮区域 -->
<div class="table-operator">
<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
<a-button type="primary" icon="download" @click="handleExportXls('管理员订单浏览记录')">导出</a-button>
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
<a-button type="primary" icon="import">导入</a-button>
</a-upload>
<!-- 高级查询区域 -->
<j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
<a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay">
<a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
</a-menu>
<a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
</a-dropdown>
</div>
<!-- table区域-begin -->
<div>
<div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
<i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>
<a style="margin-left: 24px" @click="onClearSelected">清空</a>
</div>
<a-table
ref="table"
size="middle"
:scroll="{x:true}"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
class="j-table-force-nowrap"
@change="handleTableChange">
<template slot="htmlSlot" slot-scope="text">
<div v-html="text"></div>
</template>
<template slot="imgSlot" slot-scope="text,record">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
<img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/>
</template>
<template slot="fileSlot" slot-scope="text">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
<a-button
v-else
:ghost="true"
type="primary"
icon="download"
size="small"
@click="downloadFile(text)">
下载
</a-button>
</template>
<span slot="action" slot-scope="text, record">
<a @click="handleEdit(record)">编辑</a>
<a-divider type="vertical" />
<a-dropdown>
<a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
<a-menu slot="overlay">
<a-menu-item>
<a @click="handleDetail(record)">详情</a>
</a-menu-item>
<a-menu-item>
<a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
<a>删除</a>
</a-popconfirm>
</a-menu-item>
</a-menu>
</a-dropdown>
</span>
</a-table>
</div>
<common-admin-order-browse-record-modal ref="modalForm" @ok="modalFormOk"></common-admin-order-browse-record-modal>
</a-card>
</template>
<script>
import '@/assets/less/TableExpand.less'
import { mixinDevice } from '@/utils/mixin'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import CommonAdminOrderBrowseRecordModal from './modules/CommonAdminOrderBrowseRecordModal'
export default {
name: 'CommonAdminOrderBrowseRecordList',
mixins:[JeecgListMixin, mixinDevice],
components: {
CommonAdminOrderBrowseRecordModal
},
data () {
return {
description: '管理员订单浏览记录管理页面',
//
columns: [
{
title: '#',
dataIndex: '',
key:'rowIndex',
width:60,
align:"center",
customRender:function (t,r,index) {
return parseInt(index)+1;
}
},
{
title:'用户id',
align:"center",
dataIndex: 'userId'
},
{
title:'订单id',
align:"center",
dataIndex: 'orderId'
},
{
title: '操作',
dataIndex: 'action',
align:"center",
fixed:"right",
width:147,
scopedSlots: { customRender: 'action' }
}
],
url: {
list: "/commonAdminOrderBrowseRecord/commonAdminOrderBrowseRecord/list",
delete: "/commonAdminOrderBrowseRecord/commonAdminOrderBrowseRecord/delete",
deleteBatch: "/commonAdminOrderBrowseRecord/commonAdminOrderBrowseRecord/deleteBatch",
exportXlsUrl: "/commonAdminOrderBrowseRecord/commonAdminOrderBrowseRecord/exportXls",
importExcelUrl: "commonAdminOrderBrowseRecord/commonAdminOrderBrowseRecord/importExcel",
},
dictOptions:{},
superFieldList:[],
}
},
created() {
this.getSuperFieldList();
},
computed: {
importExcelUrl: function(){
return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
},
},
methods: {
initDictConfig(){
},
getSuperFieldList(){
let fieldList=[];
fieldList.push({type:'string',value:'userId',text:'用户id',dictCode:''})
fieldList.push({type:'string',value:'orderId',text:'订单id',dictCode:''})
this.superFieldList = fieldList
}
}
}
</script>
<style scoped>
@import '~@assets/less/common.less';
</style>

+ 109
- 0
module-common/src/main/java/org/jeecg/modules/commonAdminOrderBrowseRecord/vue/modules/CommonAdminOrderBrowseRecordForm.vue View File

@ -0,0 +1,109 @@
<template>
<a-spin :spinning="confirmLoading">
<j-form-container :disabled="formDisabled">
<a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
<a-row>
<a-col :span="24">
<a-form-model-item label="用户id" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="userId">
<a-input v-model="model.userId" placeholder="请输入用户id" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="订单id" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderId">
<a-input v-model="model.orderId" placeholder="请输入订单id" ></a-input>
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</j-form-container>
</a-spin>
</template>
<script>
import { httpAction, getAction } from '@/api/manage'
import { validateDuplicateValue } from '@/utils/util'
export default {
name: 'CommonAdminOrderBrowseRecordForm',
components: {
},
props: {
//
disabled: {
type: Boolean,
default: false,
required: false
}
},
data () {
return {
model:{
},
labelCol: {
xs: { span: 24 },
sm: { span: 5 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 },
},
confirmLoading: false,
validatorRules: {
},
url: {
add: "/commonAdminOrderBrowseRecord/commonAdminOrderBrowseRecord/add",
edit: "/commonAdminOrderBrowseRecord/commonAdminOrderBrowseRecord/edit",
queryById: "/commonAdminOrderBrowseRecord/commonAdminOrderBrowseRecord/queryById"
}
}
},
computed: {
formDisabled(){
return this.disabled
},
},
created () {
//model
this.modelDefault = JSON.parse(JSON.stringify(this.model));
},
methods: {
add () {
this.edit(this.modelDefault);
},
edit (record) {
this.model = Object.assign({}, record);
this.visible = true;
},
submitForm () {
const that = this;
//
this.$refs.form.validate(valid => {
if (valid) {
that.confirmLoading = true;
let httpurl = '';
let method = '';
if(!this.model.id){
httpurl+=this.url.add;
method = 'post';
}else{
httpurl+=this.url.edit;
method = 'put';
}
httpAction(httpurl,this.model,method).then((res)=>{
if(res.success){
that.$message.success(res.message);
that.$emit('ok');
}else{
that.$message.warning(res.message);
}
}).finally(() => {
that.confirmLoading = false;
})
}
})
},
}
}
</script>

+ 84
- 0
module-common/src/main/java/org/jeecg/modules/commonAdminOrderBrowseRecord/vue/modules/CommonAdminOrderBrowseRecordModal.Style#Drawer.vue View File

@ -0,0 +1,84 @@
<template>
<a-drawer
:title="title"
:width="width"
placement="right"
:closable="false"
@close="close"
destroyOnClose
:visible="visible">
<common-admin-order-browse-record-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit" normal></common-admin-order-browse-record-form>
<div class="drawer-footer">
<a-button @click="handleCancel" style="margin-bottom: 0;">关闭</a-button>
<a-button v-if="!disableSubmit" @click="handleOk" type="primary" style="margin-bottom: 0;">提交</a-button>
</div>
</a-drawer>
</template>
<script>
import CommonAdminOrderBrowseRecordForm from './CommonAdminOrderBrowseRecordForm'
export default {
name: 'CommonAdminOrderBrowseRecordModal',
components: {
CommonAdminOrderBrowseRecordForm
},
data () {
return {
title:"操作",
width:800,
visible: false,
disableSubmit: false
}
},
methods: {
add () {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.add();
})
},
edit (record) {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.edit(record);
});
},
close () {
this.$emit('close');
this.visible = false;
},
submitCallback(){
this.$emit('ok');
this.visible = false;
},
handleOk () {
this.$refs.realForm.submitForm();
},
handleCancel () {
this.close()
}
}
}
</script>
<style lang="less" scoped>
/** Button按钮间距 */
.ant-btn {
margin-left: 30px;
margin-bottom: 30px;
float: right;
}
.drawer-footer{
position: absolute;
bottom: -8px;
width: 100%;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
text-align: right;
left: 0;
background: #fff;
border-radius: 0 0 2px 2px;
}
</style>

+ 60
- 0
module-common/src/main/java/org/jeecg/modules/commonAdminOrderBrowseRecord/vue/modules/CommonAdminOrderBrowseRecordModal.vue View File

@ -0,0 +1,60 @@
<template>
<j-modal
:title="title"
:width="width"
:visible="visible"
switchFullscreen
@ok="handleOk"
:okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
@cancel="handleCancel"
cancelText="关闭">
<common-admin-order-browse-record-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></common-admin-order-browse-record-form>
</j-modal>
</template>
<script>
import CommonAdminOrderBrowseRecordForm from './CommonAdminOrderBrowseRecordForm'
export default {
name: 'CommonAdminOrderBrowseRecordModal',
components: {
CommonAdminOrderBrowseRecordForm
},
data () {
return {
title:'',
width:800,
visible: false,
disableSubmit: false
}
},
methods: {
add () {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.add();
})
},
edit (record) {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.edit(record);
})
},
close () {
this.$emit('close');
this.visible = false;
},
handleOk () {
this.$refs.realForm.submitForm();
},
submitCallback(){
this.$emit('ok');
this.visible = false;
},
handleCancel () {
this.close()
}
}
}
</script>

+ 61
- 0
module-common/src/main/java/org/jeecg/modules/commonAdminOrderBrowseRecord/vue3/CommonAdminOrderBrowseRecord.api.ts View File

@ -0,0 +1,61 @@
import {defHttp} from '/@/utils/http/axios';
import {Modal} from 'ant-design-vue';
enum Api {
list = '/commonAdminOrderBrowseRecord/commonAdminOrderBrowseRecord/list',
save='/commonAdminOrderBrowseRecord/commonAdminOrderBrowseRecord/add',
edit='/commonAdminOrderBrowseRecord/commonAdminOrderBrowseRecord/edit',
deleteOne = '/commonAdminOrderBrowseRecord/commonAdminOrderBrowseRecord/delete',
deleteBatch = '/commonAdminOrderBrowseRecord/commonAdminOrderBrowseRecord/deleteBatch',
importExcel = '/commonAdminOrderBrowseRecord/commonAdminOrderBrowseRecord/importExcel',
exportXls = '/commonAdminOrderBrowseRecord/commonAdminOrderBrowseRecord/exportXls',
}
/**
* api
* @param params
*/
export const getExportUrl = Api.exportXls;
/**
* api
*/
export const getImportUrl = Api.importExcel;
/**
*
* @param params
*/
export const list = (params) =>
defHttp.get({url: Api.list, params});
/**
*
*/
export const deleteOne = (params,handleSuccess) => {
return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => {
handleSuccess();
});
}
/**
*
* @param params
*/
export const batchDelete = (params, handleSuccess) => {
Modal.confirm({
title: '确认删除',
content: '是否删除选中数据',
okText: '确认',
cancelText: '取消',
onOk: () => {
return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => {
handleSuccess();
});
}
});
}
/**
*
* @param params
*/
export const saveOrUpdate = (params, isUpdate) => {
let url = isUpdate ? Api.edit : Api.save;
return defHttp.post({url: url, params});
}

+ 33
- 0
module-common/src/main/java/org/jeecg/modules/commonAdminOrderBrowseRecord/vue3/CommonAdminOrderBrowseRecord.data.ts View File

@ -0,0 +1,33 @@
import {BasicColumn} from '/@/components/Table';
import {FormSchema} from '/@/components/Table';
import { rules} from '/@/utils/helper/validator';
import { render } from '/@/utils/common/renderUtils';
//列表数据
export const columns: BasicColumn[] = [
{
title: '用户id',
align:"center",
dataIndex: 'userId'
},
{
title: '订单id',
align:"center",
dataIndex: 'orderId'
},
];
//查询数据
export const searchFormSchema: FormSchema[] = [
];
//表单数据
export const formSchema: FormSchema[] = [
{
label: '用户id',
field: 'userId',
component: 'Input',
},
{
label: '订单id',
field: 'orderId',
component: 'Input',
},
];

+ 162
- 0
module-common/src/main/java/org/jeecg/modules/commonAdminOrderBrowseRecord/vue3/CommonAdminOrderBrowseRecordList.vue View File

@ -0,0 +1,162 @@
<template>
<div>
<!--引用表格-->
<BasicTable @register="registerTable" :rowSelection="rowSelection">
<!--插槽:table标题-->
<template #tableTitle>
<a-button type="primary" @click="handleAdd" preIcon="ant-design:plus-outlined"> 新增</a-button>
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button>
<j-upload-button type="primary" preIcon="ant-design:import-outlined" @click="onImportXls">导入</j-upload-button>
<a-dropdown v-if="checkedKeys.length > 0">
<template #overlay>
<a-menu>
<a-menu-item key="1" @click="batchHandleDelete">
<Icon icon="ant-design:delete-outlined"></Icon>
删除
</a-menu-item>
</a-menu>
</template>
<a-button>批量操作
<Icon icon="mdi:chevron-down"></Icon>
</a-button>
</a-dropdown>
</template>
<!--操作栏-->
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)"/>
</template>
<!--字段回显插槽-->
<template #htmlSlot="{text}">
<div v-html="text"></div>
</template>
<template #fileSlot="{text}">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
<a-button v-else :ghost="true" type="primary" preIcon="ant-design:download-outlined" size="small" @click="downloadFile(text)">下载</a-button>
</template>
</BasicTable>
<!-- 表单区域 -->
<CommonAdminOrderBrowseRecordModal @register="registerModal" @success="handleSuccess"></CommonAdminOrderBrowseRecordModal>
</div>
</template>
<script lang="ts" name="commonAdminOrderBrowseRecord-commonAdminOrderBrowseRecord" setup>
import {ref, computed, unref} from 'vue';
import {BasicTable, useTable, TableAction} from '/@/components/Table';
import {useModal} from '/@/components/Modal';
import { useListPage } from '/@/hooks/system/useListPage'
import CommonAdminOrderBrowseRecordModal from './components/CommonAdminOrderBrowseRecordModal.vue'
import {columns, searchFormSchema} from './commonAdminOrderBrowseRecord.data';
import {list, deleteOne, batchDelete, getImportUrl,getExportUrl} from './commonAdminOrderBrowseRecord.api';
const checkedKeys = ref<Array<string | number>>([]);
//model
const [registerModal, {openModal}] = useModal();
//table
const { prefixCls,tableContext,onExportXls,onImportXls } = useListPage({
tableProps:{
title: '管理员订单浏览记录',
api: list,
columns,
canResize:false,
formConfig: {
labelWidth: 120,
schemas: searchFormSchema,
autoSubmitOnEnter:true,
showAdvancedButton:true,
fieldMapToTime: [
],
},
actionColumn: {
width: 120,
},
},
exportConfig: {
name:"管理员订单浏览记录",
url: getExportUrl,
},
importConfig: {
url: getImportUrl
},
})
const [registerTable, {reload},{ rowSelection, selectedRowKeys }] = tableContext
/**
* 新增事件
*/
function handleAdd() {
openModal(true, {
isUpdate: false,
showFooter: true,
});
}
/**
* 编辑事件
*/
function handleEdit(record: Recordable) {
openModal(true, {
record,
isUpdate: true,
showFooter: true,
});
}
/**
* 详情
*/
function handleDetail(record: Recordable) {
openModal(true, {
record,
isUpdate: true,
showFooter: false,
});
}
/**
* 删除事件
*/
async function handleDelete(record) {
await deleteOne({id: record.id}, reload);
}
/**
* 批量删除事件
*/
async function batchHandleDelete() {
await batchDelete({ids: checkedKeys.value}, reload);
}
/**
* 成功回调
*/
function handleSuccess() {
reload();
}
/**
* 操作栏
*/
function getTableAction(record){
return [
{
label: '编辑',
onClick: handleEdit.bind(null, record),
}
]
}
/**
* 下拉操作栏
*/
function getDropDownAction(record){
return [
{
label: '详情',
onClick: handleDetail.bind(null, record),
}, {
label: '删除',
popConfirm: {
title: '是否确认删除',
confirm: handleDelete.bind(null, record),
}
}
]
}
</script>
<style scoped>
</style>

+ 58
- 0
module-common/src/main/java/org/jeecg/modules/commonAdminOrderBrowseRecord/vue3/components/CommonAdminOrderBrowseRecordModal.vue View File

@ -0,0 +1,58 @@
<template>
<BasicModal v-bind="$attrs" @register="registerModal" :title="title" @ok="handleSubmit">
<BasicForm @register="registerForm"/>
</BasicModal>
</template>
<script lang="ts" setup>
import {ref, computed, unref} from 'vue';
import {BasicModal, useModalInner} from '/@/components/Modal';
import {BasicForm, useForm} from '/@/components/Form/index';
import {formSchema} from '../commonAdminOrderBrowseRecord.data';
import {saveOrUpdate} from '../commonAdminOrderBrowseRecord.api';
// Emits
const emit = defineEmits(['register','success']);
const isUpdate = ref(true);
//
const [registerForm, {setProps,resetFields, setFieldsValue, validate}] = useForm({
labelWidth: 150,
schemas: formSchema,
showActionButtonGroup: false,
});
//
const [registerModal, {setModalProps, closeModal}] = useModalInner(async (data) => {
//
await resetFields();
setModalProps({confirmLoading: false,showCancelBtn:!!data?.showFooter,showOkBtn:!!data?.showFooter});
isUpdate.value = !!data?.isUpdate;
if (unref(isUpdate)) {
//
await setFieldsValue({
...data.record,
});
}
//
setProps({ disabled: !data?.showFooter })
});
//
const title = computed(() => (!unref(isUpdate) ? '新增' : '编辑'));
//
async function handleSubmit(v) {
try {
let values = await validate();
setModalProps({confirmLoading: true});
//
await saveOrUpdate(values, isUpdate.value);
//
closeModal();
//
emit('success');
} finally {
setModalProps({confirmLoading: false});
}
}
</script>
<style lang="less" scoped>
</style>

+ 3
- 0
module-common/src/main/java/org/jeecg/modules/commonOrder/entity/CommonOrder.java View File

@ -67,6 +67,9 @@ public class CommonOrder implements Serializable {
透明质检 2
现金打款 3
*/
/*
订单流程 待取件+在线预约 = 待取件+快递上门 = 已取件+快递上门 = 已取件+透明质检 = 已完成+现金打款
*/
private java.lang.Integer status;
/**下单用户*/
@Excel(name = "下单用户", width = 15, dictTable = "han_hai_member", dicText = "nick_name", dicCode = "id")


+ 9
- 0
module-common/src/main/java/org/jeecg/modules/commonShopClass/entity/CommonShopClass.java View File

@ -76,4 +76,13 @@ public class CommonShopClass implements Serializable {
@Excel(name = "单位", width = 15)
@ApiModelProperty(value = "单位")
private java.lang.String unit;
/**其他标题*/
@Excel(name = "其他标题", width = 15)
@ApiModelProperty(value = "其他标题")
private String otherTitle;
/**其他副标题*/
@Excel(name = "其他副标题", width = 15)
@ApiModelProperty(value = "其他副标题")
private String otherSubTitle;
}

+ 4
- 4
module-system/src/main/resources/application-dev.yml View File

@ -356,8 +356,8 @@ dop:
logistics:
# 正式配置
# deliveryId: DP
# bizId: 1102311359
deliveryId: DB
bizId: 1102311359
# 测试配置
deliveryId: TEST
bizId: test_biz_id
# deliveryId: TEST
# bizId: test_biz_id

Loading…
Cancel
Save