2025008071805
This commit is contained in:
parent
c3297f0eae
commit
4e9db1b5a9
|
|
@ -2242,11 +2242,11 @@ public class AppleOrderController extends BaseController {
|
|||
|
||||
queryOrderday.setMakeTimeEnd(tomorrowStart);
|
||||
List<Order> dayOrderList = orderService.selectOrderList(queryOrderday);
|
||||
dayMap.put("today", dayOrderList.size());
|
||||
dayMap.put("today",orderService.selectAllCountOrdertodayByUid(user.getId()));
|
||||
queryOrder.setMakeTimeStart(tomorrowStart);
|
||||
queryOrder.setMakeTimeEnd(tomorrowStart + 24 * 60 * 60);
|
||||
List<Order> tomorrowOrderList1 = orderService.selectOrderList(queryOrder);
|
||||
dayMap.put("tomorrow", tomorrowOrderList1.size());
|
||||
dayMap.put("tomorrow", orderService.selectAllCountOrdermingtianByUid(user.getId()));
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -2330,16 +2330,16 @@ public class AppleOrderController extends BaseController {
|
|||
List<UserDemandQuotation> quotationList =userDemandQuotationService.selectUserDemandQuotationList(quotation);
|
||||
orderMap.put("quoteCount", quotationList.size());
|
||||
orderMap.put("quotationList", buildQuotationList(quotationList));
|
||||
// if (order.getWorkerId() != null) {
|
||||
// Users worker = usersService.selectUsersById(order.getWorkerId());
|
||||
// if (worker != null) {
|
||||
// Map<String, Object> workerMap = new HashMap<>();
|
||||
// workerMap.put("workerName", worker.getName());
|
||||
// workerMap.put("workerAvatar", AppletControllerUtil.buildImageUrl(worker.getAvatar()));
|
||||
// workerMap.put("workerPhone", worker.getPhone());
|
||||
// orderMap.put("workerMap", workerMap);
|
||||
// }
|
||||
// }
|
||||
if (order.getWorkerId() != null) {
|
||||
Users worker = usersService.selectUsersById(order.getWorkerId());
|
||||
if (worker != null) {
|
||||
Map<String, Object> workerMap = new HashMap<>();
|
||||
workerMap.put("workerName", worker.getName());
|
||||
workerMap.put("workerAvatar", AppletControllerUtil.buildImageUrl(worker.getAvatar()));
|
||||
workerMap.put("workerPhone", worker.getPhone());
|
||||
orderMap.put("workerMap", workerMap);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (order.getFileData() != null && !order.getFileData().trim().isEmpty()) {
|
||||
try {
|
||||
|
|
@ -2618,25 +2618,8 @@ public class AppleOrderController extends BaseController {
|
|||
|
||||
Map<String, Object> pageResult1 = new HashMap<>();
|
||||
if(status!=null){
|
||||
|
||||
Order queryOrderday = new Order();
|
||||
queryOrderday.setStatus(Long.valueOf(status));
|
||||
Calendar cal = Calendar.getInstance();
|
||||
cal.set(Calendar.HOUR_OF_DAY, 0);
|
||||
cal.set(Calendar.MINUTE, 0);
|
||||
cal.set(Calendar.SECOND, 0);
|
||||
cal.set(Calendar.MILLISECOND, 0);
|
||||
long todayStart = cal.getTimeInMillis() / 1000;
|
||||
long tomorrowStart = todayStart + 24 * 60 * 60;
|
||||
queryOrderday.setMakeTimeStart(todayStart);
|
||||
|
||||
queryOrderday.setMakeTimeEnd(tomorrowStart);
|
||||
List<Order> dayOrderList = orderService.selectOrderList(queryOrderday);
|
||||
dayMap.put("today", dayOrderList.size());
|
||||
queryOrder.setMakeTimeStart(tomorrowStart);
|
||||
queryOrder.setMakeTimeEnd(tomorrowStart + 24 * 60 * 60);
|
||||
List<Order> tomorrowOrderList1 = orderService.selectOrderList(queryOrderday);
|
||||
dayMap.put("tomorrow", tomorrowOrderList1.size());
|
||||
dayMap.put("today",orderService.selectAllCountOrdertodayByUid(user.getId()));
|
||||
dayMap.put("tomorrow", orderService.selectAllCountOrdermingtianByUid(user.getId()));
|
||||
}
|
||||
|
||||
pageResult1.put("data", responseData);
|
||||
|
|
@ -4086,7 +4069,7 @@ public class AppleOrderController extends BaseController {
|
|||
int monthCount = orderService.selectOrderList(monthOrder).size();
|
||||
|
||||
// 4. 本月收入
|
||||
BigDecimal monthIncome = workerMoneyLogService.selectWorkerMoneySumPrice(workerId.intValue());
|
||||
BigDecimal monthIncome = workerMoneyLogService.selectWorkerMonthlyEarnings(Math.toIntExact(workerId));
|
||||
if (monthIncome == null) monthIncome = BigDecimal.ZERO;
|
||||
|
||||
// 5. 配置信息
|
||||
|
|
|
|||
|
|
@ -1644,12 +1644,14 @@ public class AppletController extends BaseController {
|
|||
if (user.getType().equals("2")) {
|
||||
BigDecimal bb= user.getCommission();
|
||||
//冻结金额
|
||||
BigDecimal lookmoney= workerMoneyLogService.selectWorkerLookMoneySum(Math.toIntExact(user.getId()));
|
||||
BigDecimal lookmoney= workerMoneyLogService.selectWorkerMoneySumPriceAsLook(Math.toIntExact(user.getId()));
|
||||
if (user.getCommission()== null) {
|
||||
bb= new BigDecimal(0);
|
||||
}
|
||||
|
||||
userInfo.put("commission", bb.subtract(lookmoney));
|
||||
// userInfo.put("commission", bb.subtract(lookmoney));
|
||||
//可提现
|
||||
userInfo.put("commission",workerMoneyLogService.selectWorkerMoneySumPriceAsnoLook(Math.toIntExact(user.getId())).subtract(user.getPropose()));
|
||||
userInfo.put("total_comm", user.getTotalComm() != null ? user.getTotalComm().toString() : "0.00");
|
||||
userInfo.put("propose", user.getPropose() != null ? user.getPropose().toString() : "0.00");
|
||||
userInfo.put("lookmoney",lookmoney);
|
||||
|
|
@ -5139,20 +5141,30 @@ public class AppletController extends BaseController {
|
|||
}
|
||||
// city_ids
|
||||
Object cityIdsObj = params.get("city_ids");
|
||||
if (cityIdsObj instanceof List) {
|
||||
List<?> cityIdsList = (List<?>) cityIdsObj;
|
||||
apply.setCityIds(cityIdsList.toString().replace(" ","")); // 存字符串如[5,7,10,11]
|
||||
} else if (cityIdsObj != null) {
|
||||
apply.setCityIds(cityIdsObj.toString());
|
||||
if (cityIdsObj != null) {
|
||||
apply.setCityIds(AppletControllerUtil.convertToJSONArray(cityIdsObj).toJSONString());
|
||||
}
|
||||
|
||||
// if (cityIdsObj instanceof List) {
|
||||
// //List<?> cityIdsList = (List<?>) cityIdsObj;
|
||||
//
|
||||
// apply.setCityIds(AppletControllerUtil.convertToJSONArray(cityIdsObj).toJSONString()); // 存字符串如[5,7,10,11]
|
||||
// } else if (cityIdsObj != null) {
|
||||
// apply.setCityIds(cityIdsObj.toString());
|
||||
// }
|
||||
// skill_id
|
||||
Object skillIdObj = params.get("skill_id");
|
||||
if (skillIdObj instanceof List) {
|
||||
List<?> skillIdList = (List<?>) skillIdObj;
|
||||
apply.setSkillId(skillIdList.toString().replace(" ",""));
|
||||
} else if (skillIdObj != null) {
|
||||
apply.setSkillId(skillIdObj.toString());
|
||||
if (cityIdsObj != null) {
|
||||
|
||||
apply.setSkillId(AppletControllerUtil.convertToJSONArray(skillIdObj).toJSONString());
|
||||
}
|
||||
|
||||
// if (skillIdObj instanceof List) {
|
||||
// List<?> skillIdList = (List<?>) skillIdObj;
|
||||
//
|
||||
// } else if (skillIdObj != null) {
|
||||
// apply.setSkillId(skillIdObj.toString());
|
||||
// }
|
||||
// 图片相关
|
||||
apply.setSkill((String) params.getOrDefault("skill", ""));
|
||||
apply.setCriminal((String) params.getOrDefault("criminal", ""));
|
||||
|
|
@ -5979,24 +5991,17 @@ public class AppletController extends BaseController {
|
|||
if (!phoneTwo.equals(lastTwo)) {
|
||||
return AppletControllerUtil.appletWarning("手机号后两位不正确");
|
||||
}
|
||||
//解绑订单虚拟号
|
||||
//需要解绑原订单上原师傅和客户的虚拟号
|
||||
VoiceResponseResult resultObj = YunXinPhoneUtilAPI.httpsPrivacyUnbind(order.getWorkerPhone(), order.getUserPhone(), order.getMiddlePhone(), order.getId());
|
||||
System.out.println("----------------------------------"+resultObj.getResult());
|
||||
System.out.println("----------------------------------"+resultObj.getResult());
|
||||
if (resultObj.getResult().equals("000000")) {
|
||||
// order.setWorkerPhone(null);
|
||||
// order.setUserPhone(null);
|
||||
// order.setMiddlePhone(null);
|
||||
// orderService.updateOrder(order);
|
||||
orderService.updateOrderPhone(order.getId());
|
||||
} // 4. 更新订单状态
|
||||
|
||||
// 4. 更新订单状态
|
||||
order.setJsonStatus(5); // 确认到达
|
||||
JSONObject typeJson = new JSONObject();
|
||||
typeJson.put("type", 4);
|
||||
order.setLogJson(typeJson.toJSONString());
|
||||
// 6. 保存
|
||||
orderService.updateOrder(order);
|
||||
//需要解绑原订单上原师傅和客户的虚拟
|
||||
YunXinPhoneUtilAPI.httpsPrivacyUnbind(order.getWorkerPhone(), order.getUserPhone(), order.getMiddlePhone(), order.getId());
|
||||
|
||||
// 5. 写订单日志
|
||||
//一口价直接开始服务,没有报价的环节
|
||||
if (order.getOdertype()!= 0){
|
||||
|
|
@ -6032,7 +6037,8 @@ public class AppletController extends BaseController {
|
|||
// 6. 保存
|
||||
orderLogService.insertOrderLog(orderLog);
|
||||
//解绑号码
|
||||
YunXinPhoneUtilAPI.httpsPrivacyUnbind(order.getWorkerPhone(), order.getUserPhone(), order.getMiddlePhone(), order.getId());
|
||||
//VoiceResponseResult resultObj = YunXinPhoneUtilAPI.httpsPrivacyUnbind(order.getWorkerPhone(), order.getUserPhone(), order.getMiddlePhone(), order.getId());
|
||||
|
||||
// 小程序推送给用户师傅已经到达
|
||||
|
||||
ServiceGoods serviceGoods = serviceGoodsService.selectServiceGoodsById(order.getProductId());
|
||||
|
|
@ -6845,10 +6851,6 @@ public class AppletController extends BaseController {
|
|||
}
|
||||
// 查询最新订单日志
|
||||
OrderLog neworderLogdata =orderLogService.selectDataTheFirstNew(order.getId());
|
||||
// neworderLogdata.setType(new BigDecimal(2.0));
|
||||
// neworderLogdata.setOid(order.getId());
|
||||
// List<OrderLog> orderLogslist = orderLogService.selectOrderLogList(neworderLogdata);
|
||||
// OrderLog neworderLog = orderLogslist.getFirst();
|
||||
if (neworderLogdata != null) {
|
||||
|
||||
String logOrderId = GenerateCustomCode.generCreateOrder("DSB");
|
||||
|
|
@ -6869,6 +6871,7 @@ public class AppletController extends BaseController {
|
|||
neworderLog.setWorkerCost( price);
|
||||
neworderLog.setWorkerLogId(user.getId());
|
||||
int insert =orderLogService.insertOrderLog(neworderLog);
|
||||
//订单金额改变,订单金额添加上门费
|
||||
if (insert > 0) {
|
||||
//上门费创建支付单
|
||||
BigDecimal totalAmount=neworderLog.getPrice();
|
||||
|
|
@ -6877,96 +6880,7 @@ public class AppletController extends BaseController {
|
|||
payBeforeUtil.createPayBefore(userinfo, totalAmount, logOrderId, neworderLog.getId(),
|
||||
null, 7L, null, null,
|
||||
null, null, null,1L,null,order.getOrderId(), null);
|
||||
|
||||
// // 9. 计算会员优惠和服务金抵扣
|
||||
// BigDecimal memberMoney = BigDecimal.ZERO;
|
||||
// BigDecimal serviceMoney = BigDecimal.ZERO;
|
||||
//
|
||||
// try {
|
||||
// // 查询config_one配置
|
||||
// SiteConfig configQuery = new SiteConfig();
|
||||
// configQuery.setName("config_one");
|
||||
// List<SiteConfig> configList = siteConfigService.selectSiteConfigList(configQuery);
|
||||
//
|
||||
// if (configList != null && !configList.isEmpty()) {
|
||||
// String configValue = configList.get(0).getValue();
|
||||
// if (configValue != null && !configValue.trim().isEmpty()) {
|
||||
// JSONObject configJson = JSONObject.parseObject(configValue);
|
||||
//
|
||||
// // 计算会员优惠金额
|
||||
// if (user.getIsmember() != null && user.getIsmember() == 1) {
|
||||
// // 用户是包年会员,计算会员优惠
|
||||
// Integer memberDiscount = configJson.getInteger("member_discount");
|
||||
// if (memberDiscount != null && memberDiscount > 0) {
|
||||
// // 会员优惠金额 = 订单金额 * (100 - 会员折扣) / 100
|
||||
// BigDecimal discountRate = BigDecimal.valueOf(memberDiscount).divide(BigDecimal.valueOf(100), 4, BigDecimal.ROUND_HALF_UP);
|
||||
// if (totalAmount != null) {
|
||||
// memberMoney = totalAmount.multiply(discountRate);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// // 计算服务金抵扣金额
|
||||
// Integer serviceFee = configJson.getInteger("servicefee");
|
||||
// if (serviceFee != null && serviceFee > 0) {
|
||||
// // 查询数据库最新用户数据
|
||||
// Users userDb = usersService.selectUsersById(user.getId());
|
||||
// if (userDb != null && userDb.getServicefee() != null && userDb.getServicefee().compareTo(BigDecimal.ZERO) > 0) {
|
||||
// // 服务金抵扣金额 = 用户服务金 * 服务金比例 / 100
|
||||
// BigDecimal serviceRate = BigDecimal.valueOf(serviceFee).divide(BigDecimal.valueOf(100), 4, BigDecimal.ROUND_HALF_UP);
|
||||
// serviceMoney = userDb.getServicefee().multiply(serviceRate);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// } catch (Exception e) {
|
||||
// logger.warn("计算会员优惠和服务金抵扣失败: " + e.getMessage());
|
||||
// memberMoney = BigDecimal.ZERO;
|
||||
// serviceMoney = BigDecimal.ZERO;
|
||||
// }
|
||||
//
|
||||
// // 10. 创建预支付记录
|
||||
// UsersPayBefor usersPayBefor = new UsersPayBefor();
|
||||
// usersPayBefor.setUid(userinfo.getId());
|
||||
// usersPayBefor.setOrderid(logOrderId);
|
||||
// usersPayBefor.setOid(neworderLog.getId());
|
||||
// usersPayBefor.setPaycode(GenerateCustomCode.generCreateOrder("PAY"));
|
||||
// usersPayBefor.setAllmoney(totalAmount);
|
||||
// usersPayBefor.setWxmoney(totalAmount);
|
||||
// usersPayBefor.setShopmoney(BigDecimal.ZERO);
|
||||
// usersPayBefor.setServicemoney(serviceMoney);
|
||||
// usersPayBefor.setMtmoney(BigDecimal.ZERO);
|
||||
// usersPayBefor.setYemoney(BigDecimal.ZERO);
|
||||
// usersPayBefor.setCouponmoney(BigDecimal.ZERO);
|
||||
// usersPayBefor.setServicetype(1L);
|
||||
// usersPayBefor.setMembermoney(memberMoney);
|
||||
// usersPayBefor.setType(7L);
|
||||
// usersPayBefor.setSku("");
|
||||
// usersPayBefor.setStatus(1L); // 1=待支付
|
||||
// usersPayBefor.setPaytype(1L); // 默认微信支付
|
||||
//
|
||||
// int payBeforResult = usersPayBeforService.insertUsersPayBefor(usersPayBefor);
|
||||
// if (payBeforResult <= 0) {
|
||||
// return AppletControllerUtil.appletWarning("预支付记录创建失败");
|
||||
// }
|
||||
}
|
||||
|
||||
// //修改订单日志添加费用
|
||||
// neworderLog.setPrice(price);
|
||||
// neworderLog.setPaid(1L);
|
||||
// neworderLog.setWorkerCost(price);
|
||||
// neworderLog.setLogId(GenerateCustomCode.generCreateOrder("FEE"));
|
||||
// //修改订单状态
|
||||
// order.setJsonStatus(3);
|
||||
// JSONObject jsonObject3 = new JSONObject();
|
||||
// jsonObject3.put("type", 2);
|
||||
// order.setLogJson(jsonObject3.toJSONString());
|
||||
// orderLogService.updateOrderLog(neworderLog);
|
||||
// orderService.updateOrder(order);
|
||||
// Users userinfo = usersService.selectUsersById(order.getUid());
|
||||
// ServiceGoods serviceGoods = serviceGoodsService.selectServiceGoodsById(order.getProductId());
|
||||
// //给用户发送微信推送消息
|
||||
// WXsendMsgUtil.sendMsgForUserDoorMoney(userinfo.getOpenid(), order, serviceGoods);
|
||||
}
|
||||
return AjaxResult.success("设置上门费成功");
|
||||
} catch (Exception e) {
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import com.ruoyi.system.ControllerUtil.AppletControllerUtil;
|
||||
import com.ruoyi.system.ControllerUtil.WorkerApplyUtil;
|
||||
import com.ruoyi.system.domain.Users;
|
||||
import com.ruoyi.system.domain.WorkerLevel;
|
||||
|
|
@ -123,47 +125,24 @@ for(WorkerApply data:list){
|
|||
if (workerApply.getPhone()==null){
|
||||
return error("手机号码不能为空");
|
||||
}
|
||||
// city_ids
|
||||
// Object cityIdsObj = params.get("city_ids");
|
||||
if (StringUtils.isNotBlank(workerApply.getCityIds())) {
|
||||
workerApply.setCityIds(AppletControllerUtil.convertToJSONArray(workerApply.getCityIds()).toJSONString());
|
||||
}
|
||||
|
||||
//同意师傅申请
|
||||
if (workerApply.getStatus()==1){
|
||||
Users users = usersService.selectUsersById(workerApply.getUid());
|
||||
//查询最低的师傅级别进行赋值
|
||||
WorkerLevel workerLevel = workerLevelService.selectWorkerLevelByLevel(1L);
|
||||
//工号
|
||||
int jobnumber=0;
|
||||
Users usersMax =usersService.selectUsersIsMaxNumber() ;
|
||||
if (usersMax!=null){
|
||||
jobnumber=usersMax.getJobNumber()+1;
|
||||
}
|
||||
//已经是师傅了,就不用处理
|
||||
if(!users.getType().equals("2")){
|
||||
users.setType("2");
|
||||
users.setCommission(new BigDecimal("0.00"));
|
||||
users.setTotalComm(new BigDecimal("0.00"));
|
||||
users.setMargin(new BigDecimal("0.00"));
|
||||
users.setProhibitTimeNum(0);
|
||||
users.setIsWork(1);
|
||||
//新增需----求师傅头像使用认证时照片 昵称使用认证时姓名
|
||||
users.setAvatar(workerApply.getImage());
|
||||
users.setLevel(Math.toIntExact(workerLevel.getLevel()));
|
||||
users.setJobNumber(jobnumber);
|
||||
users.setServiceCityIds(workerApply.getCityIds());
|
||||
users.setSkillIds(workerApply.getSkillId());
|
||||
users.setServiceCityPid(workerApply.getCityPid());
|
||||
usersService.updateUsers(users);
|
||||
Map verifyResult =WorkerApplyUtil.virtualVerify(workerApply.getImage(),
|
||||
workerApply.getPhone(),
|
||||
workerApply.getCardNo(),
|
||||
workerApply.getName(),
|
||||
"",//回调地址,暂时不用写,等需要的时候再去写吧
|
||||
"https://img.huafurenjia.cn/",//七牛云的地址
|
||||
"https://101.37.133.245:11008/voice/1.0.0/");//"实名API地址"
|
||||
if (!"000000".equals(verifyResult.get("result"))) {
|
||||
System.out.println("电子照片" + verifyResult.get("message"));
|
||||
}
|
||||
}
|
||||
// if (cityIdsObj instanceof List) {
|
||||
// //List<?> cityIdsList = (List<?>) cityIdsObj;
|
||||
//
|
||||
// apply.setCityIds(AppletControllerUtil.convertToJSONArray(cityIdsObj).toJSONString()); // 存字符串如[5,7,10,11]
|
||||
// } else if (cityIdsObj != null) {
|
||||
// apply.setCityIds(cityIdsObj.toString());
|
||||
// }
|
||||
// skill_id
|
||||
|
||||
if (StringUtils.isNotBlank(workerApply.getSkillId())) {
|
||||
|
||||
workerApply.setSkillId(AppletControllerUtil.convertToJSONArray(workerApply.getSkillId()).toJSONString());
|
||||
}
|
||||
return toAjax(workerApplyService.updateWorkerApply(workerApply));
|
||||
}
|
||||
|
|
@ -178,4 +157,183 @@ for(WorkerApply data:list){
|
|||
{
|
||||
return toAjax(workerApplyService.deleteWorkerApplyByIds(ids));
|
||||
}
|
||||
|
||||
/**
|
||||
* 审核师傅申请
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:WorkerApply:audit')")
|
||||
@Log(title = "师傅申请审核", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/audit")
|
||||
public AjaxResult audit(@RequestBody Map<String, Object> params) throws Exception {
|
||||
Long id = Long.valueOf(params.get("id").toString());
|
||||
Integer status = Integer.valueOf(params.get("status").toString());
|
||||
String remark = params.get("remark") != null ? params.get("remark").toString() : "";
|
||||
|
||||
// 获取申请记录
|
||||
WorkerApply workerApply = workerApplyService.selectWorkerApplyById(id);
|
||||
if (workerApply == null) {
|
||||
return error("申请记录不存在");
|
||||
}
|
||||
|
||||
// 检查是否已经处理过
|
||||
if (workerApply.getStatus() != 0) {
|
||||
return error("该申请已经处理过,不能重复审核");
|
||||
}
|
||||
// 根据审核状态进行不同处理
|
||||
if (status == 1) {
|
||||
Users users = usersService.selectUsersById(workerApply.getUid());
|
||||
if (users!=null) {
|
||||
users.setType("2");
|
||||
users.setName(workerApply.getName());
|
||||
users.setPhone(workerApply.getPhone());
|
||||
users.setAvatar(workerApply.getImage());
|
||||
users.setStatus(1);
|
||||
users.setLevel(1);
|
||||
users.setIsWork(1);
|
||||
users.setCommission(new BigDecimal("0.00"));
|
||||
users.setTotalComm(new BigDecimal("0.00"));
|
||||
users.setMargin(new BigDecimal("0.00"));
|
||||
int jobnumber=0;
|
||||
Users usersMax =usersService.selectUsersIsMaxNumber() ;
|
||||
if (usersMax!=null){
|
||||
jobnumber=usersMax.getJobNumber()+1;
|
||||
}
|
||||
users.setJobNumber(jobnumber);
|
||||
users.setServiceCityIds(workerApply.getCityIds());
|
||||
users.setSkillIds(workerApply.getSkillId());
|
||||
users.setServiceCityPid(workerApply.getCityPid());
|
||||
users.setPropose(new BigDecimal("0.00"));
|
||||
users.setIsStop(0);
|
||||
usersService.updateUsers(users);
|
||||
Map verifyResult =WorkerApplyUtil.virtualVerify(workerApply.getImage(),
|
||||
workerApply.getPhone(),
|
||||
workerApply.getCardNo(),
|
||||
workerApply.getName(),
|
||||
"",//回调地址,暂时不用写,等需要的时候再去写吧
|
||||
"https://img.huafurenjia.cn/",//七牛云的地址
|
||||
"https://101.37.133.245:11008/voice/1.0.0/");//"实名API地址"
|
||||
if (!"000000".equals(verifyResult.get("result"))) {
|
||||
System.out.println("电子照片" + verifyResult.get("message"));
|
||||
}
|
||||
workerApply.setStatus(1L);
|
||||
|
||||
workerApplyService.updateWorkerApply(workerApply);
|
||||
}
|
||||
// 同意申请的处理逻辑
|
||||
return success("操作成功");
|
||||
} else if (status == 2) {
|
||||
workerApply.setStatus(2L);
|
||||
workerApply.setRemarks(remark);
|
||||
workerApplyService.updateWorkerApply(workerApply);
|
||||
// 驳回申请的处理逻辑
|
||||
return success("操作成功");
|
||||
} else {
|
||||
return error("无效的审核状态");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理同意申请
|
||||
*/
|
||||
private AjaxResult handleApprove(WorkerApply workerApply) throws Exception {
|
||||
// 验证必要信息
|
||||
if (workerApply.getImage() == null || workerApply.getImage().isEmpty()) {
|
||||
return error("请上传电子照片");
|
||||
}
|
||||
if (workerApply.getCardNo() == null || workerApply.getCardNo().isEmpty()) {
|
||||
return error("身份证号不能为空");
|
||||
}
|
||||
if (workerApply.getName() == null || workerApply.getName().isEmpty()) {
|
||||
return error("真实姓名不能为空");
|
||||
}
|
||||
if (workerApply.getPhone() == null || workerApply.getPhone().isEmpty()) {
|
||||
return error("手机号码不能为空");
|
||||
}
|
||||
|
||||
// TODO: 在这里添加同意申请的具体业务逻辑
|
||||
// 1. 获取用户信息
|
||||
Users users = usersService.selectUsersById(workerApply.getUid());
|
||||
if (users == null) {
|
||||
return error("用户不存在");
|
||||
}
|
||||
|
||||
// 2. 检查是否已经是师傅
|
||||
if ("2".equals(users.getType())) {
|
||||
return error("该用户已经是师傅,无需重复处理");
|
||||
}
|
||||
|
||||
// 3. 查询最低的师傅级别进行赋值
|
||||
WorkerLevel workerLevel = workerLevelService.selectWorkerLevelByLevel(1L);
|
||||
if (workerLevel == null) {
|
||||
return error("师傅级别配置不存在");
|
||||
}
|
||||
|
||||
// 4. 生成工号
|
||||
int jobNumber = 1;
|
||||
Users usersMax = usersService.selectUsersIsMaxNumber();
|
||||
if (usersMax != null) {
|
||||
jobNumber = usersMax.getJobNumber() + 1;
|
||||
}
|
||||
|
||||
// 5. 更新用户为师傅
|
||||
users.setType("2");
|
||||
users.setCommission(new BigDecimal("0.00"));
|
||||
users.setTotalComm(new BigDecimal("0.00"));
|
||||
users.setMargin(new BigDecimal("0.00"));
|
||||
users.setProhibitTimeNum(0);
|
||||
users.setIsWork(1);
|
||||
users.setAvatar(workerApply.getImage());
|
||||
users.setLevel(Math.toIntExact(workerLevel.getLevel()));
|
||||
users.setJobNumber(jobNumber);
|
||||
users.setServiceCityIds(workerApply.getCityIds());
|
||||
users.setSkillIds(workerApply.getSkillId());
|
||||
users.setServiceCityPid(workerApply.getCityPid());
|
||||
|
||||
// 6. 实名认证验证
|
||||
Map verifyResult = WorkerApplyUtil.virtualVerify(
|
||||
workerApply.getImage(),
|
||||
workerApply.getPhone(),
|
||||
workerApply.getCardNo(),
|
||||
workerApply.getName(),
|
||||
"", // 回调地址,暂时不用写
|
||||
"https://img.huafurenjia.cn/", // 七牛云的地址
|
||||
"https://101.37.133.245:11008/voice/1.0.0/" // 实名API地址
|
||||
);
|
||||
|
||||
if (!"000000".equals(verifyResult.get("result"))) {
|
||||
System.out.println("电子照片验证失败: " + verifyResult.get("message"));
|
||||
// 可以选择是否因为验证失败而终止流程
|
||||
}
|
||||
|
||||
// 7. 保存用户信息
|
||||
usersService.updateUsers(users);
|
||||
|
||||
// 8. 更新申请状态
|
||||
int result = workerApplyService.updateWorkerApply(workerApply);
|
||||
|
||||
if (result > 0) {
|
||||
return success("审核通过,用户已成功升级为师傅");
|
||||
} else {
|
||||
return error("审核处理失败");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理驳回申请
|
||||
*/
|
||||
private AjaxResult handleReject(WorkerApply workerApply) {
|
||||
// TODO: 在这里添加驳回申请的具体业务逻辑
|
||||
// 1. 可以发送通知给用户
|
||||
// 2. 记录驳回原因
|
||||
// 3. 其他相关处理
|
||||
|
||||
// 更新申请状态
|
||||
int result = workerApplyService.updateWorkerApply(workerApply);
|
||||
|
||||
if (result > 0) {
|
||||
return success("申请已驳回");
|
||||
} else {
|
||||
return error("驳回处理失败");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6131,7 +6131,138 @@ public class AppletControllerUtil {
|
|||
|
||||
|
||||
|
||||
/**
|
||||
* 将数组或数字字符串转换为字符串数组
|
||||
* 支持的输入格式:
|
||||
* 1. [2, 5, 7, 10, 11, 12] - 数字数组
|
||||
* 2. "2, 5, 7, 10, 11, 12" - 逗号分隔的数字字符串
|
||||
* 3. ["2", "5", "7", "10", "11", "12"] - 字符串数组(直接返回)
|
||||
*
|
||||
* @param input 输入的数据,可以是数组、字符串或其他类型
|
||||
* @return 字符串数组,如果输入为null或空则返回空数组
|
||||
*/
|
||||
public static String[] convertToStringArray(Object input) {
|
||||
if (input == null) {
|
||||
return new String[0];
|
||||
}
|
||||
|
||||
// 如果已经是字符串数组,直接返回
|
||||
if (input instanceof String[]) {
|
||||
return (String[]) input;
|
||||
}
|
||||
|
||||
// 如果是List类型
|
||||
if (input instanceof List) {
|
||||
List<?> list = (List<?>) input;
|
||||
return list.stream()
|
||||
.map(Object::toString)
|
||||
.toArray(String[]::new);
|
||||
}
|
||||
|
||||
// 如果是普通数组
|
||||
if (input.getClass().isArray()) {
|
||||
Object[] array = (Object[]) input;
|
||||
String[] result = new String[array.length];
|
||||
for (int i = 0; i < array.length; i++) {
|
||||
result[i] = String.valueOf(array[i]);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
// 如果是字符串,尝试按逗号分割
|
||||
if (input instanceof String) {
|
||||
String str = (String) input;
|
||||
// 移除可能的方括号
|
||||
str = str.replaceAll("[\\[\\]]", "").trim();
|
||||
|
||||
if (str.isEmpty()) {
|
||||
return new String[0];
|
||||
}
|
||||
|
||||
// 按逗号分割并去除空格和引号
|
||||
return Arrays.stream(str.split(","))
|
||||
.map(String::trim)
|
||||
.map(s -> s.replaceAll("^\"|\"$", "")) // 移除首尾的双引号
|
||||
.filter(s -> !s.isEmpty())
|
||||
.toArray(String[]::new);
|
||||
}
|
||||
|
||||
// 其他情况,转换为单元素数组
|
||||
return new String[]{String.valueOf(input)};
|
||||
}
|
||||
|
||||
/**
|
||||
* 将数组或数字字符串转换为字符串列表
|
||||
*
|
||||
* @param input 输入的数据
|
||||
* @return 字符串列表
|
||||
*/
|
||||
public static List<String> convertToStringList(Object input) {
|
||||
return Arrays.asList(convertToStringArray(input));
|
||||
}
|
||||
|
||||
/**
|
||||
* 将数组或数字字符串转换为JSONArray
|
||||
*
|
||||
* @param input 输入的数据
|
||||
* @return JSONArray对象
|
||||
*/
|
||||
public static JSONArray convertToJSONArray(Object input) {
|
||||
String[] stringArray = convertToStringArray(input);
|
||||
JSONArray jsonArray = new JSONArray();
|
||||
for (String str : stringArray) {
|
||||
jsonArray.add(str);
|
||||
}
|
||||
return jsonArray;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.out.println(formatStringToJson("{\"image\":\"['https:img.huafurenjia.cn/images/2024-10-13/dKriAtS3HHsM0JAm6DdQEPQvAFnnuPcnOxau6SSy.jpg']\",\"num\":1,\"text\":\"你很好我爱你\" ,\"labels\":[\"技术专业\",\"作业规范\",\"价格合理\"] }"));
|
||||
|
||||
// 测试转换方法
|
||||
System.out.println("=== 测试数据类型转换方法 ===");
|
||||
|
||||
// 测试数字数组
|
||||
Integer[] intArray = {2, 5, 7, 10, 11, 12};
|
||||
System.out.println("数字数组: " + Arrays.toString(convertToStringArray(intArray)));
|
||||
|
||||
// 测试字符串
|
||||
String str = "2, 5, 7, 10, 11, 12";
|
||||
System.out.println("逗号分隔字符串: " + Arrays.toString(convertToStringArray(str)));
|
||||
|
||||
// 测试带引号的JSON字符串
|
||||
String jsonStr = "[\"2\",\"5\",\"7\",\"10\",\"11\",\"12\"]";
|
||||
System.out.println("JSON字符串: " + Arrays.toString(convertToStringArray(jsonStr)));
|
||||
|
||||
// 测试混合格式的字符串
|
||||
String mixedStr = "[\"2\",\"5\",7,\"10\",11,\"12\"]";
|
||||
System.out.println("混合格式字符串: " + Arrays.toString(convertToStringArray(mixedStr)));
|
||||
|
||||
// 测试字符串数组
|
||||
String[] strArray = {"2", "5", "7", "10", "11", "12"};
|
||||
System.out.println("字符串数组: " + Arrays.toString(convertToStringArray(strArray)));
|
||||
|
||||
// 测试List
|
||||
List<Integer> intList = Arrays.asList(2, 5, 7, 10, 11, 12);
|
||||
System.out.println("数字列表: " + Arrays.toString(convertToStringArray(intList)));
|
||||
|
||||
// 测试JSONArray转换
|
||||
System.out.println("=== 测试JSONArray转换 ===");
|
||||
JSONArray jsonArray1 = convertToJSONArray(intArray);
|
||||
System.out.println("数字数组转JSONArray: " + jsonArray1.toJSONString());
|
||||
|
||||
JSONArray jsonArray2 = convertToJSONArray(str);
|
||||
System.out.println("字符串转JSONArray: " + jsonArray2.toJSONString());
|
||||
|
||||
JSONArray jsonArray3 = convertToJSONArray(strArray);
|
||||
System.out.println("字符串数组转JSONArray: " + jsonArray3.toJSONString());
|
||||
|
||||
// 测试带引号的JSON字符串转换
|
||||
JSONArray jsonArray4 = convertToJSONArray(jsonStr);
|
||||
System.out.println("JSON字符串转JSONArray: " + jsonArray4.toJSONString());
|
||||
|
||||
// 测试混合格式转换
|
||||
JSONArray jsonArray5 = convertToJSONArray(mixedStr);
|
||||
System.out.println("混合格式转JSONArray: " + jsonArray5.toJSONString());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1340,7 +1340,7 @@ public class BenefitPointsUtil {
|
|||
userMemnerConsumptionLog.setConsumptiontype(2);
|
||||
userMemnerConsumptionLog.setConsumptiontime(new Date());
|
||||
userMemnerConsumptionLog.setConsumptionmoney(money);
|
||||
userMemnerConsumptionLog.setReamk(reamk);
|
||||
userMemnerConsumptionLog.setReamk("订单余额退款"+money+"元");
|
||||
userMemnerConsumptionLog.setBeformoney(user.getBalance().subtract(money));
|
||||
userMemnerConsumptionLog.setAftermoney(user.getBalance());
|
||||
userMemnerConsumptionLog.setNowmoney(user.getBalance());
|
||||
|
|
|
|||
|
|
@ -2962,7 +2962,9 @@ public class DispatchUtil {
|
|||
ServiceGoods serviceGoods = serviceGoodsService.selectServiceGoodsById(order.getProductId());
|
||||
//给师傅派单的时候的推送
|
||||
WXsendMsgUtil.sendMsgForWorkerInfo(worker.getOpenid(), order, serviceGoods);
|
||||
//派单的时候需要绑定虚拟号码
|
||||
Map<String, Object> map= OrderBindWorkerUtil.getOrderBindWorker(order.getId());
|
||||
//电话通知师傅接单
|
||||
YunXinPhoneUtilAPI.httpsAxbTransfer(order.getWorkerPhone(), order.getId());
|
||||
// if (map.get("code").equals("200")) {
|
||||
// //电话通知
|
||||
|
|
|
|||
|
|
@ -1367,33 +1367,8 @@ public class OrderUtil {
|
|||
userUseSecondaryCardService.updateUserUseSecondaryCard(userUseSecondaryCard);
|
||||
}
|
||||
}
|
||||
|
||||
// // 处理用户通知(可选)
|
||||
// if (order.getUid() != null) {
|
||||
// Users user = usersService.selectUsersById(order.getUid());
|
||||
// if (user != null) {
|
||||
// // 这里可以添加微信通知等逻辑
|
||||
// // ServiceGoods serviceGoods = serviceGoodsService.selectServiceGoodsById(order.getProductId());
|
||||
// // WXsendMsgUtil.sendWorkerFinishOrder(user.getOpenid(), order, serviceGoods);
|
||||
// System.out.println("用户通知处理完成,用户ID: " + order.getUid());
|
||||
// }
|
||||
// }
|
||||
|
||||
System.out.println("订单 " + orderid + " 状态修改为已完成");
|
||||
}
|
||||
|
||||
// else {
|
||||
// System.out.println("订单 " + orderid + " 不满足完成条件:剩余付款数量=" + paynum + ", 师傅是否已完成=" + isWorkerCompleted);
|
||||
//
|
||||
// // 如果还有剩余付款,但师傅已完成,可以设置为待付款状态
|
||||
// if (paynum > 0 && isWorkerCompleted) {
|
||||
// order.setStatus(6L); // 6:待付款
|
||||
// order.setJsonStatus(9); // 9:已完成
|
||||
// int updateResult = orderService.updateOrder(order);
|
||||
// System.out.println("订单状态更新为待付款,更新结果: " + updateResult);
|
||||
// }
|
||||
// }
|
||||
|
||||
return paynum;
|
||||
|
||||
} catch (Exception e) {
|
||||
|
|
|
|||
|
|
@ -833,6 +833,8 @@ public class WorkerCommissionUtil {
|
|||
}
|
||||
BigDecimal newCommission = currentCommission.add(finalCommissionWithDoorFee);
|
||||
worker.setCommission(newCommission);
|
||||
//累计分佣
|
||||
worker.setTotalComm(worker.getTotalComm().add(newCommission));
|
||||
|
||||
// 5. 更新师傅信息
|
||||
int updateResult = usersService.updateUsers(worker);
|
||||
|
|
@ -1613,8 +1615,10 @@ public class WorkerCommissionUtil {
|
|||
|
||||
// 3. 计算订单总金额(用于开票)
|
||||
// 公式:上门费 + 服务费用 + 材料费用 + 尾款 + 差价 + 定金 - 优惠费用
|
||||
// BigDecimal invoiceTotalPrice = doorFee.add(serviceFee).add(materialFee).add(totalPrice)
|
||||
// .add(finalPayment).add(priceDifference).subtract(discountAmount);
|
||||
BigDecimal invoiceTotalPrice = doorFee.add(serviceFee).add(materialFee).add(totalPrice)
|
||||
.add(finalPayment).add(priceDifference).add(deposit).subtract(discountAmount);
|
||||
.add(BigDecimal.ZERO).add(priceDifference).subtract(discountAmount);
|
||||
|
||||
logger.info("=== 订单总金额计算明细(用于开票) ===");
|
||||
logger.info("上门费: {}元", doorFee);
|
||||
|
|
|
|||
|
|
@ -163,6 +163,7 @@ public class YunXinPhoneUtilAPI {
|
|||
public static VoiceResponseResult httpsPrivacyUnbind(String phoneA, String phoneB, String phone,Long oid) throws Exception {
|
||||
VoiceResponseResult resultObj = new VoiceResponseResult();
|
||||
String url = UNBIND_URL;
|
||||
System.out.println("---------------------------------解绑执行结果: " + oid);
|
||||
try {
|
||||
PrivacyUnbindBody unbindBody = new PrivacyUnbindBody();
|
||||
long timestamp = System.currentTimeMillis();
|
||||
|
|
@ -178,11 +179,11 @@ public class YunXinPhoneUtilAPI {
|
|||
JSONObject rjson = JSONObject.parseObject(result);
|
||||
resultObj.setResult(rjson.getString("result"));
|
||||
resultObj.setMessage(rjson.getString("message"));
|
||||
System.out.println("[YunXinPhoneUtilAPI] 解绑执行结果: " + result);
|
||||
|
||||
//订单手机号码置空
|
||||
if("000000".equals(resultObj.getResult())) {
|
||||
// if("000000".equals(resultObj.getResult())) {
|
||||
orderService.updateOrderPhone(oid);
|
||||
}
|
||||
// }
|
||||
} catch (Exception e) {
|
||||
System.out.println("[YunXinPhoneUtilAPI] 解绑异常: " + e.getMessage());
|
||||
throw e;
|
||||
|
|
|
|||
|
|
@ -196,4 +196,20 @@ public interface OrderMapper
|
|||
* @return 服务订单集合
|
||||
*/
|
||||
public List<Order> selectOrderListForExport(Order order);
|
||||
|
||||
/**
|
||||
* 查询指定师傅今天的订单数量
|
||||
*
|
||||
* @param uid 师傅ID
|
||||
* @return 今天的订单数量
|
||||
*/
|
||||
public int selectAllCountOrdertodayByUid(Long uid);
|
||||
|
||||
/**
|
||||
* 查询指定师傅明天的订单数量
|
||||
*
|
||||
* @param uid 师傅ID
|
||||
* @return 明天的订单数量
|
||||
*/
|
||||
public int selectAllCountOrdermingtianByUid(Long uid);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -51,6 +51,10 @@ public interface WorkerMoneyLogMapper
|
|||
|
||||
public BigDecimal selectWorkerMoneySumPriceAsLook(Integer workerId);
|
||||
|
||||
|
||||
public BigDecimal selectWorkerMoneySumPriceAsnoLook(Integer workerId);
|
||||
|
||||
|
||||
public BigDecimal selectWorkerMoneySumPriceAsNo(Integer workerId);
|
||||
|
||||
public int updateWorkerMoneyLogStatusIfEndlookAfterNow();
|
||||
|
|
@ -62,6 +66,12 @@ public interface WorkerMoneyLogMapper
|
|||
*/
|
||||
public BigDecimal selectWorkerLookMoneySum(Integer workerId);
|
||||
|
||||
/**
|
||||
* 统计指定师傅当月收益
|
||||
* @param workerId 师傅ID
|
||||
* @return 当月收益总和
|
||||
*/
|
||||
public BigDecimal selectWorkerMonthlyEarnings(Integer workerId);
|
||||
|
||||
/**
|
||||
* 删除师傅金额明细
|
||||
|
|
|
|||
|
|
@ -194,4 +194,20 @@ public interface IOrderService
|
|||
* @return 服务订单集合
|
||||
*/
|
||||
public List<Order> selectOrderListForExport(Order order);
|
||||
|
||||
/**
|
||||
* 查询指定师傅今天的订单数量
|
||||
*
|
||||
* @param uid 师傅ID
|
||||
* @return 今天的订单数量
|
||||
*/
|
||||
public int selectAllCountOrdertodayByUid(Long uid);
|
||||
|
||||
/**
|
||||
* 查询指定师傅明天的订单数量
|
||||
*
|
||||
* @param uid 师傅ID
|
||||
* @return 明天的订单数量
|
||||
*/
|
||||
public int selectAllCountOrdermingtianByUid(Long uid);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -50,6 +50,8 @@ public interface IWorkerMoneyLogService
|
|||
|
||||
public BigDecimal selectWorkerMoneySumPriceAsLook(Integer workerId);
|
||||
|
||||
public BigDecimal selectWorkerMoneySumPriceAsnoLook(Integer workerId);
|
||||
|
||||
public BigDecimal selectWorkerMoneySumPriceAsNo(Integer workerId);
|
||||
|
||||
public int updateWorkerMoneyLogStatusIfEndlookAfterNow();
|
||||
|
|
@ -61,6 +63,13 @@ public interface IWorkerMoneyLogService
|
|||
*/
|
||||
public BigDecimal selectWorkerLookMoneySum(Integer workerId);
|
||||
|
||||
/**
|
||||
* 统计指定师傅当月收益
|
||||
* @param workerId 师傅ID
|
||||
* @return 当月收益总和
|
||||
*/
|
||||
public BigDecimal selectWorkerMonthlyEarnings(Integer workerId);
|
||||
|
||||
/**
|
||||
* 批量删除师傅金额明细
|
||||
*
|
||||
|
|
|
|||
|
|
@ -237,4 +237,28 @@ public class OrderServiceImpl implements IOrderService
|
|||
{
|
||||
return orderMapper.selectOrderListForExport(order);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询指定师傅今天的订单数量
|
||||
*
|
||||
* @param uid 师傅ID
|
||||
* @return 今天的订单数量
|
||||
*/
|
||||
@Override
|
||||
public int selectAllCountOrdertodayByUid(Long uid)
|
||||
{
|
||||
return orderMapper.selectAllCountOrdertodayByUid(uid);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询指定师傅明天的订单数量
|
||||
*
|
||||
* @param uid 师傅ID
|
||||
* @return 明天的订单数量
|
||||
*/
|
||||
@Override
|
||||
public int selectAllCountOrdermingtianByUid(Long uid)
|
||||
{
|
||||
return orderMapper.selectAllCountOrdermingtianByUid(uid);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -83,7 +83,9 @@ public class WorkerMoneyLogServiceImpl implements IWorkerMoneyLogService
|
|||
public BigDecimal selectWorkerMoneySumPriceAsLook(Integer workerId){
|
||||
return workerMoneyLogMapper.selectWorkerMoneySumPriceAsLook(workerId);
|
||||
}
|
||||
|
||||
public BigDecimal selectWorkerMoneySumPriceAsnoLook(Integer workerId){
|
||||
return workerMoneyLogMapper.selectWorkerMoneySumPriceAsnoLook(workerId);
|
||||
}
|
||||
public BigDecimal selectWorkerMoneySumPriceAsNo(Integer workerId){
|
||||
return workerMoneyLogMapper.selectWorkerMoneySumPriceAsNo(workerId);
|
||||
}
|
||||
|
|
@ -95,6 +97,18 @@ public class WorkerMoneyLogServiceImpl implements IWorkerMoneyLogService
|
|||
|
||||
return workerMoneyLogMapper.selectWorkerLookMoneySum(workerId);
|
||||
}
|
||||
|
||||
/** public BigDecimal selectWorkerMonthlyEarnings(Integer workerId);
|
||||
* 统计指定师傅当月收益
|
||||
*
|
||||
* @param workerId 师傅ID
|
||||
* @return 当月收益总和
|
||||
*/
|
||||
@Override
|
||||
public BigDecimal selectWorkerMonthlyEarnings(Integer workerId) {
|
||||
return workerMoneyLogMapper.selectWorkerMonthlyEarnings(workerId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除师傅金额明细
|
||||
*
|
||||
|
|
|
|||
|
|
@ -169,11 +169,12 @@
|
|||
|
||||
</where>
|
||||
ORDER BY
|
||||
CASE
|
||||
WHEN status = 1 AND (worker_id IS NULL OR worker_id = 0) THEN 0
|
||||
ELSE 1
|
||||
END ASC,
|
||||
updated_at DESC
|
||||
CASE
|
||||
WHEN status = 1 AND (worker_id IS NULL OR worker_id = 0) THEN 0
|
||||
WHEN status = 5 THEN 2
|
||||
ELSE 1
|
||||
END ASC,
|
||||
updated_at DESC
|
||||
</select>
|
||||
|
||||
<update id="updateOrderPhone" parameterType="Long">
|
||||
|
|
@ -271,6 +272,7 @@
|
|||
ORDER BY
|
||||
CASE
|
||||
WHEN status = 1 AND (worker_id IS NULL OR worker_id = 0) THEN 0
|
||||
WHEN status = 5 THEN 2
|
||||
ELSE 1
|
||||
END ASC,
|
||||
updated_at DESC
|
||||
|
|
@ -291,6 +293,21 @@
|
|||
</select>
|
||||
|
||||
|
||||
<select id="selectAllCountOrdertodayByUid" resultType="Integer">
|
||||
select count(1) from order_data
|
||||
where status=2
|
||||
and FROM_UNIXTIME(make_time, '%Y-%m-%d') = CURDATE()
|
||||
and worker_id = #{uid}
|
||||
</select>
|
||||
|
||||
<select id="selectAllCountOrdermingtianByUid" resultType="Integer">
|
||||
select count(1) from order_data
|
||||
where status=2
|
||||
and FROM_UNIXTIME(make_time, '%Y-%m-%d') = DATE_ADD(CURDATE(), INTERVAL 1 DAY)
|
||||
and worker_id = #{uid}
|
||||
</select>
|
||||
|
||||
|
||||
<select id="selectOrderByOrderId" parameterType="String" resultMap="OrderResult">
|
||||
<include refid="selectOrderVo"/>
|
||||
where order_id = #{orderId}
|
||||
|
|
|
|||
|
|
@ -71,6 +71,16 @@
|
|||
status = 1
|
||||
</select>
|
||||
|
||||
<select id="selectWorkerMoneySumPriceAsnoLook" parameterType="Integer" resultType="java.math.BigDecimal">
|
||||
SELECT
|
||||
COALESCE(SUM(price), 0.00) AS totalEarnings
|
||||
FROM
|
||||
worker_money_log
|
||||
WHERE
|
||||
worker_id = #{workerId} AND
|
||||
status = 2
|
||||
</select>
|
||||
|
||||
<select id="selectWorkerMoneySumPriceAsNo" parameterType="Integer" resultType="java.math.BigDecimal">
|
||||
SELECT
|
||||
COALESCE(SUM(admin_up_price), 0.00) AS totalEarnings
|
||||
|
|
@ -86,6 +96,13 @@
|
|||
WHERE worker_id = #{workerId} AND status != 0
|
||||
</select>
|
||||
|
||||
<select id="selectWorkerMonthlyEarnings" parameterType="Integer" resultType="java.math.BigDecimal">
|
||||
SELECT COALESCE(SUM(price), 0.00) AS monthlyEarnings
|
||||
FROM worker_money_log
|
||||
WHERE worker_id = #{workerId}
|
||||
AND DATE_FORMAT(created_at, '%Y-%m') = DATE_FORMAT(NOW(), '%Y-%m')
|
||||
</select>
|
||||
|
||||
<update id="updateWorkerMoneyLogStatusIfEndlookAfterNow">
|
||||
UPDATE worker_money_log
|
||||
SET status = 2
|
||||
|
|
|
|||
|
|
@ -7,35 +7,23 @@
|
|||
:close-on-click-modal="false"
|
||||
:close-on-press-escape="false"
|
||||
>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
|
||||
<el-form ref="form" :model="form" label-width="120px">
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="申请ID" prop="id">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="申请ID">
|
||||
<el-input v-model="form.id" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="申请状态" prop="status">
|
||||
<el-select v-model="form.status" placeholder="请选择审核状态" style="width: 100%">
|
||||
<el-option
|
||||
v-for="dict in dict.type.worker_apply_status"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="用户姓名" prop="name">
|
||||
<el-form-item label="用户姓名">
|
||||
<el-input v-model="form.name" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="联系电话" prop="phone">
|
||||
<el-form-item label="联系电话">
|
||||
<el-input v-model="form.phone" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
|
@ -43,18 +31,18 @@
|
|||
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="申请地区" prop="address">
|
||||
<el-form-item label="申请地区">
|
||||
<el-input v-model="form.address" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="申请时间" prop="createdAt">
|
||||
<el-form-item label="申请时间">
|
||||
<el-input v-model="form.createdAt" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form-item label="申请技能" prop="skillId">
|
||||
<el-form-item label="申请技能">
|
||||
<div v-if="form.skillId && form.skillId !== '' && isSkillListReady">
|
||||
<el-tag
|
||||
v-for="(skillId, index) in parseSkillIds(form.skillId)"
|
||||
|
|
@ -70,23 +58,23 @@
|
|||
<span v-else>-</span>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item v-if="!readonly" label="审核备注" prop="auditRemark">
|
||||
<el-form-item v-if="!readonly" label="审核结果">
|
||||
<el-radio-group v-model="auditResult">
|
||||
<el-radio label="pass">通过</el-radio>
|
||||
<el-radio label="reject">驳回</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item v-if="!readonly && auditResult === 'reject'" label="驳回理由">
|
||||
<el-input
|
||||
v-model="form.auditRemark"
|
||||
v-model="auditRemark"
|
||||
type="textarea"
|
||||
:rows="3"
|
||||
placeholder="请输入审核备注信息"
|
||||
placeholder="请输入驳回理由(必填)"
|
||||
maxlength="500"
|
||||
show-word-limit
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item v-if="!readonly" label="审核结果" prop="auditResult">
|
||||
<el-radio-group v-model="form.auditResult">
|
||||
<el-radio label="pass">通过</el-radio>
|
||||
<el-radio label="reject">拒绝</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<div slot="footer" class="dialog-footer">
|
||||
|
|
@ -123,14 +111,8 @@ export default {
|
|||
data() {
|
||||
return {
|
||||
form: {},
|
||||
rules: {
|
||||
status: [
|
||||
{ required: true, message: "请选择审核状态", trigger: "change" }
|
||||
],
|
||||
auditResult: [
|
||||
{ required: true, message: "请选择审核结果", trigger: "change" }
|
||||
]
|
||||
},
|
||||
auditResult: 'pass',
|
||||
auditRemark: '',
|
||||
submitLoading: false,
|
||||
skillList: [],
|
||||
skillNameCache: {}
|
||||
|
|
@ -152,12 +134,9 @@ export default {
|
|||
handler(val) {
|
||||
if (val) {
|
||||
this.form = { ...val };
|
||||
// 设置默认审核状态为待审核
|
||||
if (!this.form.status) {
|
||||
this.form.status = "0"; // 假设0是待审核状态
|
||||
}
|
||||
// 设置默认审核结果
|
||||
this.form.auditResult = "pass";
|
||||
// 重置审核状态
|
||||
this.auditResult = 'pass';
|
||||
this.auditRemark = '';
|
||||
// 格式化申请时间
|
||||
if (this.form.createdAt) {
|
||||
this.form.createdAt = this.parseTime(this.form.createdAt, '{y}-{m}-{d} {h}:{i}:{s}');
|
||||
|
|
@ -170,14 +149,10 @@ export default {
|
|||
methods: {
|
||||
// 初始化表单
|
||||
initForm() {
|
||||
this.form = {
|
||||
...this.data,
|
||||
auditRemark: "",
|
||||
auditResult: "pass"
|
||||
};
|
||||
if (!this.form.status) {
|
||||
this.form.status = "0";
|
||||
}
|
||||
this.form = { ...this.data };
|
||||
this.auditResult = 'pass';
|
||||
this.auditRemark = '';
|
||||
|
||||
if (this.form.createdAt) {
|
||||
this.form.createdAt = this.parseTime(this.form.createdAt, '{y}-{m}-{d} {h}:{i}:{s}');
|
||||
}
|
||||
|
|
@ -273,22 +248,24 @@ export default {
|
|||
|
||||
// 提交审核
|
||||
handleSubmit() {
|
||||
this.$refs["form"].validate((valid) => {
|
||||
if (valid) {
|
||||
this.submitLoading = true;
|
||||
|
||||
// 根据审核结果设置状态
|
||||
if (this.form.auditResult === 'pass') {
|
||||
this.form.status = "1"; // 假设1是通过状态
|
||||
} else if (this.form.auditResult === 'reject') {
|
||||
this.form.status = "2"; // 假设2是拒绝状态
|
||||
}
|
||||
// 如果选择驳回但没有输入理由,提示用户
|
||||
if (this.auditResult === 'reject' && (!this.auditRemark || this.auditRemark.trim() === '')) {
|
||||
this.$message.error('驳回时必须输入驳回理由');
|
||||
return;
|
||||
}
|
||||
|
||||
// 发送审核结果
|
||||
this.$emit('confirm', this.form);
|
||||
this.submitLoading = false;
|
||||
}
|
||||
});
|
||||
this.submitLoading = true;
|
||||
|
||||
// 构造审核数据,符合后端API格式
|
||||
const auditData = {
|
||||
id: this.form.id,
|
||||
status: this.auditResult === 'pass' ? 1 : 2, // 1=同意,2=驳回
|
||||
remark: this.auditResult === 'reject' ? this.auditRemark : '' // 只有驳回时才传理由
|
||||
};
|
||||
|
||||
// 发送审核结果
|
||||
this.$emit('confirm', auditData);
|
||||
this.submitLoading = false;
|
||||
},
|
||||
|
||||
// 时间格式化
|
||||
|
|
|
|||
|
|
@ -38,6 +38,39 @@
|
|||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="接单城市" prop="cityPid">
|
||||
<el-select
|
||||
v-model="selectedCity"
|
||||
placeholder="请选择接单城市"
|
||||
filterable
|
||||
clearable
|
||||
style="width: 100%"
|
||||
@change="handleCityChange">
|
||||
<el-option
|
||||
v-for="item in cityList"
|
||||
:key="item.id"
|
||||
:label="item.title"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="接单地区" prop="cityIds">
|
||||
<el-select
|
||||
v-model="selectedAreas"
|
||||
placeholder="请选择接单地区"
|
||||
filterable
|
||||
multiple
|
||||
style="width: 100%"
|
||||
@change="handleAreaChange">
|
||||
<el-option
|
||||
v-for="item in areaList"
|
||||
:key="item.id"
|
||||
:label="item.title"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="电子照片" prop="image">
|
||||
<image-upload v-model="form.image" :limit="1"/>
|
||||
</el-form-item>
|
||||
|
|
@ -56,7 +89,7 @@
|
|||
<el-form-item label="驾照" prop="drive">
|
||||
<image-upload v-model="form.drive" :limit="1"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="status">
|
||||
<!-- <el-form-item label="状态" prop="status">
|
||||
<el-radio-group v-model="form.status">
|
||||
<el-radio
|
||||
v-for="dict in dict.type.worker_apply_status"
|
||||
|
|
@ -64,27 +97,12 @@
|
|||
:label="parseInt(dict.value)"
|
||||
>{{dict.label}}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-form-item> -->
|
||||
<el-form-item label="备注" prop="remarks">
|
||||
<el-input v-model="form.remarks" placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
<el-form-item label="接单地区" prop="cityIds">
|
||||
<el-select
|
||||
v-model="selectedAreas"
|
||||
multiple
|
||||
filterable
|
||||
clearable
|
||||
placeholder="请选择接单地区"
|
||||
@change="handleAreaChange"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in areaOptions"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
|
|
@ -95,6 +113,7 @@
|
|||
|
||||
<script>
|
||||
import { getSiteSkillList } from "@/api/system/SiteSkill"
|
||||
import { datalist } from "@/api/system/DiyCity"
|
||||
|
||||
export default {
|
||||
name: "WorkerApplyEdit",
|
||||
|
|
@ -161,35 +180,32 @@ export default {
|
|||
]
|
||||
},
|
||||
|
||||
areaOptions: [
|
||||
{ id: 1, name: '未央区' },
|
||||
{ id: 2, name: '莲湖区' },
|
||||
{ id: 3, name: '新城区' },
|
||||
{ id: 4, name: '碑林区' },
|
||||
{ id: 5, name: '雁塔区' },
|
||||
{ id: 6, name: '灞桥区' },
|
||||
{ id: 7, name: '长安区' },
|
||||
{ id: 8, name: '高新区' },
|
||||
{ id: 9, name: '临潼区' },
|
||||
{ id: 10, name: '阎良区' }
|
||||
], // 地区选项数据
|
||||
selectedAreas: [], // 已选择的地区
|
||||
// 城市相关数据
|
||||
cityList: [],
|
||||
selectedCity: undefined,
|
||||
cityNameCache: {},
|
||||
|
||||
// 地区相关数据
|
||||
areaList: [],
|
||||
selectedAreas: [],
|
||||
areaNameCache: {},
|
||||
|
||||
// 技能相关数据
|
||||
skillList: [],
|
||||
selectedSkills: []
|
||||
selectedSkills: [],
|
||||
|
||||
// 标记是否正在初始化数据
|
||||
isInitializing: false
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
data: {
|
||||
handler(val) {
|
||||
if (val) {
|
||||
console.log('WorkerApplyEdit - 接收到数据:', val);
|
||||
this.form = { ...val }
|
||||
// 如果有已选择的地区数据,转换为数组格式
|
||||
if (this.form.cityIds) {
|
||||
this.selectedAreas = this.form.cityIds.split(',').map(Number)
|
||||
}
|
||||
// 如果有已选择的技能数据,转换为数组格式
|
||||
|
||||
// 处理技能数据
|
||||
if (this.form.skillId) {
|
||||
this.selectedSkills = this.parseSkillIds(this.form.skillId).map(Number)
|
||||
}
|
||||
|
|
@ -199,9 +215,49 @@ export default {
|
|||
},
|
||||
visible(val) {
|
||||
if (val) {
|
||||
// 弹窗打开时加载技能列表
|
||||
this.loadSkillList();
|
||||
console.log('WorkerApplyEdit - 弹窗打开,开始加载数据');
|
||||
this.isInitializing = true;
|
||||
// 先加载基础数据,然后处理已选择的数据
|
||||
Promise.all([
|
||||
this.loadCityList(),
|
||||
this.loadSkillList()
|
||||
]).then(() => {
|
||||
console.log('WorkerApplyEdit - 基础数据加载完成,开始处理已选择的数据');
|
||||
// 处理接单城市ID
|
||||
this.processSelectedCity();
|
||||
|
||||
// 如果有选中的城市,加载对应的地区数据
|
||||
if (this.selectedCity) {
|
||||
this.loadAreaList().then(() => {
|
||||
// 处理接单地区ID
|
||||
this.processSelectedAreas();
|
||||
this.isInitializing = false;
|
||||
});
|
||||
} else {
|
||||
this.isInitializing = false;
|
||||
}
|
||||
}).catch(() => {
|
||||
this.isInitializing = false;
|
||||
});
|
||||
} else {
|
||||
// 弹窗关闭时重置数据
|
||||
this.resetDialogData();
|
||||
}
|
||||
},
|
||||
selectedCity(val) {
|
||||
this.form.cityPid = val;
|
||||
this.updateCityNameCache();
|
||||
// 只有在用户主动选择时才重新加载地区列表(非初始化状态)
|
||||
if (!this.isInitializing && this.visible && this.cityList.length > 0) {
|
||||
// 清空当前选中的地区,因为城市变化了
|
||||
this.selectedAreas = [];
|
||||
this.areaList = [];
|
||||
this.loadAreaList();
|
||||
}
|
||||
},
|
||||
selectedAreas(val) {
|
||||
this.form.cityIds = JSON.stringify(val.map(String));
|
||||
this.updateAreaNameCache();
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
|
@ -237,15 +293,201 @@ export default {
|
|||
}
|
||||
},
|
||||
|
||||
// 处理地区选择变化
|
||||
handleAreaChange(value) {
|
||||
if (value && value.length > 0) {
|
||||
this.form.cityIds = value.join(',')
|
||||
this.form.cityPid = value[0] // 第一个选择的作为主要城市
|
||||
} else {
|
||||
this.form.cityIds = undefined
|
||||
this.form.cityPid = undefined
|
||||
// 加载城市列表
|
||||
loadCityList() {
|
||||
console.log('WorkerApplyEdit - 开始加载城市列表');
|
||||
const queryParams = {
|
||||
parentId: 0 // 查询一级城市(省份)
|
||||
}
|
||||
return datalist(queryParams).then(response => {
|
||||
console.log('WorkerApplyEdit - 获取城市列表成功:', response);
|
||||
if (response.code === 200) {
|
||||
this.cityList = response.data || [];
|
||||
console.log('WorkerApplyEdit - 城市列表:', this.cityList);
|
||||
this.updateCityNameCache();
|
||||
} else {
|
||||
console.warn('WorkerApplyEdit - 获取城市列表失败,使用默认数据');
|
||||
this.cityList = [
|
||||
{ id: 1, title: '陕西省' },
|
||||
{ id: 27, title: '上海市' },
|
||||
{ id: 44, title: '湖南省' },
|
||||
{ id: 52, title: '安徽省' }
|
||||
];
|
||||
}
|
||||
return response;
|
||||
}).catch((error) => {
|
||||
console.error('WorkerApplyEdit - 获取城市列表异常:', error);
|
||||
this.cityList = [
|
||||
{ id: 1, title: '陕西省' },
|
||||
{ id: 27, title: '上海市' },
|
||||
{ id: 44, title: '湖南省' },
|
||||
{ id: 52, title: '安徽省' }
|
||||
];
|
||||
return Promise.reject(error);
|
||||
});
|
||||
},
|
||||
|
||||
// 加载地区列表
|
||||
loadAreaList() {
|
||||
console.log('WorkerApplyEdit - 开始加载地区列表,选中的城市:', this.selectedCity);
|
||||
this.areaList = [];
|
||||
this.areaNameCache = {};
|
||||
|
||||
if (!this.selectedCity) {
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
const queryParams = {
|
||||
parentId: this.selectedCity
|
||||
}
|
||||
return datalist(queryParams).then(response => {
|
||||
console.log(`WorkerApplyEdit - 获取城市${this.selectedCity}的地区数据成功:`, response);
|
||||
if (response.code === 200) {
|
||||
this.areaList = response.data || [];
|
||||
}
|
||||
console.log('WorkerApplyEdit - 地区数据加载完成,地区列表:', this.areaList);
|
||||
this.updateAreaNameCache();
|
||||
return response;
|
||||
}).catch((error) => {
|
||||
console.error(`WorkerApplyEdit - 获取城市${this.selectedCity}的地区数据失败:`, error);
|
||||
// 使用默认数据
|
||||
let defaultAreas = [];
|
||||
if (this.selectedCity === 1) {
|
||||
defaultAreas = [
|
||||
{ id: 2, title: '新城区' },
|
||||
{ id: 5, title: '碑林区' },
|
||||
{ id: 7, title: '莲湖区' },
|
||||
{ id: 10, title: '灞桥区' },
|
||||
{ id: 11, title: '未央区' },
|
||||
{ id: 12, title: '雁塔区' },
|
||||
{ id: 13, title: '阎良区' },
|
||||
{ id: 14, title: '临潼区' },
|
||||
{ id: 15, title: '长安区' },
|
||||
{ id: 16, title: '高陵区' },
|
||||
{ id: 17, title: '鄠邑区' }
|
||||
];
|
||||
} else if (this.selectedCity === 52) {
|
||||
defaultAreas = [
|
||||
{ id: 53, title: '瑶海区' },
|
||||
{ id: 54, title: '庐阳区' },
|
||||
{ id: 55, title: '蜀山区' },
|
||||
{ id: 56, title: '包河区' },
|
||||
{ id: 57, title: '经开区' },
|
||||
{ id: 58, title: '高新区' }
|
||||
];
|
||||
}
|
||||
|
||||
this.areaList = defaultAreas;
|
||||
this.updateAreaNameCache();
|
||||
return Promise.resolve();
|
||||
});
|
||||
},
|
||||
|
||||
// 处理已选择的城市
|
||||
processSelectedCity() {
|
||||
console.log('处理接单城市数据:', this.form.cityPid, '类型:', typeof this.form.cityPid);
|
||||
this.selectedCity = undefined;
|
||||
|
||||
if (this.form.cityPid) {
|
||||
try {
|
||||
let cityId = this.form.cityPid;
|
||||
if (typeof this.form.cityPid === 'string') {
|
||||
cityId = parseInt(this.form.cityPid);
|
||||
}
|
||||
|
||||
if (!isNaN(cityId) && cityId > 0) {
|
||||
this.selectedCity = cityId;
|
||||
console.log('解析后的接单城市:', this.selectedCity);
|
||||
|
||||
this.$nextTick(() => {
|
||||
this.updateCityNameCache();
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('解析接单城市数据失败:', error);
|
||||
this.selectedCity = undefined;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// 处理已选择的地区
|
||||
processSelectedAreas() {
|
||||
console.log('处理接单地区数据:', this.form.cityIds, '类型:', typeof this.form.cityIds);
|
||||
this.selectedAreas = [];
|
||||
|
||||
if (this.form.cityIds) {
|
||||
try {
|
||||
let areaIds = [];
|
||||
if (typeof this.form.cityIds === 'string') {
|
||||
if (this.form.cityIds.startsWith('[') && this.form.cityIds.endsWith(']')) {
|
||||
areaIds = JSON.parse(this.form.cityIds);
|
||||
} else {
|
||||
areaIds = this.form.cityIds.split(',').map(id => id.trim()).filter(id => id);
|
||||
}
|
||||
} else if (Array.isArray(this.form.cityIds)) {
|
||||
areaIds = this.form.cityIds;
|
||||
} else if (typeof this.form.cityIds === 'number') {
|
||||
areaIds = [this.form.cityIds];
|
||||
}
|
||||
|
||||
this.selectedAreas = areaIds.map(id => parseInt(id)).filter(id => !isNaN(id) && id > 0);
|
||||
console.log('解析后的接单地区:', this.selectedAreas);
|
||||
|
||||
this.$nextTick(() => {
|
||||
this.updateAreaNameCache();
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('解析接单地区数据失败:', error);
|
||||
this.selectedAreas = [];
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// 更新城市名称缓存
|
||||
updateCityNameCache() {
|
||||
console.log('更新城市名称缓存,已选择城市:', this.selectedCity, '城市列表:', this.cityList);
|
||||
this.cityNameCache = {};
|
||||
if (this.selectedCity) {
|
||||
const city = this.cityList.find(item => item.id === this.selectedCity);
|
||||
if (city) {
|
||||
this.cityNameCache[this.selectedCity] = city.title;
|
||||
}
|
||||
}
|
||||
console.log('城市名称缓存:', this.cityNameCache);
|
||||
},
|
||||
|
||||
// 更新地区名称缓存
|
||||
updateAreaNameCache() {
|
||||
console.log('更新地区名称缓存,已选择地区:', this.selectedAreas, '地区列表:', this.areaList);
|
||||
this.areaNameCache = {};
|
||||
this.selectedAreas.forEach(areaId => {
|
||||
const area = this.areaList.find(item => item.id === areaId);
|
||||
if (area) {
|
||||
this.areaNameCache[areaId] = area.title;
|
||||
}
|
||||
});
|
||||
console.log('地区名称缓存:', this.areaNameCache);
|
||||
},
|
||||
|
||||
// 城市选择变化
|
||||
handleCityChange() {
|
||||
console.log('城市选择变化:', this.selectedCity);
|
||||
this.updateCityNameCache();
|
||||
|
||||
// 清空当前选中的地区,因为城市变化了
|
||||
this.selectedAreas = [];
|
||||
this.areaList = [];
|
||||
|
||||
// 重新加载地区列表
|
||||
if (this.selectedCity) {
|
||||
this.loadAreaList();
|
||||
}
|
||||
},
|
||||
|
||||
// 地区选择变化
|
||||
handleAreaChange() {
|
||||
console.log('地区选择变化:', this.selectedAreas);
|
||||
this.updateAreaNameCache();
|
||||
},
|
||||
// 处理技能选择变化
|
||||
handleSkillChange(value) {
|
||||
|
|
@ -292,6 +534,17 @@ export default {
|
|||
this.reset()
|
||||
this.$emit('update:visible', false)
|
||||
},
|
||||
// 重置弹窗数据
|
||||
resetDialogData() {
|
||||
this.isInitializing = false;
|
||||
this.cityList = [];
|
||||
this.selectedCity = undefined;
|
||||
this.cityNameCache = {};
|
||||
this.areaList = [];
|
||||
this.selectedAreas = [];
|
||||
this.areaNameCache = {};
|
||||
},
|
||||
|
||||
reset() {
|
||||
this.form = {
|
||||
id: undefined,
|
||||
|
|
@ -314,6 +567,7 @@ export default {
|
|||
}
|
||||
this.selectedAreas = []
|
||||
this.selectedSkills = []
|
||||
this.resetDialogData()
|
||||
this.resetForm("form")
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -388,6 +388,8 @@ export default {
|
|||
},
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
// 关闭所有弹窗
|
||||
this.closeAllDialogs();
|
||||
this.queryParams.pageNum = 1
|
||||
this.getList()
|
||||
},
|
||||
|
|
@ -512,12 +514,16 @@ export default {
|
|||
},
|
||||
/** 新增按钮操作 */
|
||||
handleAdd() {
|
||||
// 确保关闭其他弹窗
|
||||
this.closeAllDialogs();
|
||||
this.reset()
|
||||
this.open = true
|
||||
this.title = "添加师傅申请记录"
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
// 确保关闭其他弹窗
|
||||
this.closeAllDialogs();
|
||||
this.reset()
|
||||
const id = row.id || this.ids
|
||||
getWorkerApply(id).then(response => {
|
||||
|
|
@ -547,6 +553,13 @@ export default {
|
|||
forceRefreshSkills() {
|
||||
this.$forceUpdate();
|
||||
},
|
||||
|
||||
// 关闭所有弹窗
|
||||
closeAllDialogs() {
|
||||
this.open = false;
|
||||
this.auditOpen = false;
|
||||
this.batchAuditOpen = false;
|
||||
},
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const ids = row.id || this.ids
|
||||
|
|
@ -565,6 +578,8 @@ export default {
|
|||
},
|
||||
/** 查看详情 */
|
||||
handleViewDetail(row) {
|
||||
// 确保关闭其他弹窗
|
||||
this.closeAllDialogs();
|
||||
this.auditForm = row;
|
||||
this.auditTitle = "查看师傅申请详情";
|
||||
this.auditOpen = true;
|
||||
|
|
@ -572,6 +587,8 @@ export default {
|
|||
/** 审核按钮操作 */
|
||||
handleAudit(row) {
|
||||
this.$modal.confirm(`是否确认审核师傅申请记录"${row.name}"?`).then(() => {
|
||||
// 确保关闭其他弹窗
|
||||
this.closeAllDialogs();
|
||||
this.auditForm = row;
|
||||
this.auditTitle = "审核师傅申请记录";
|
||||
this.auditOpen = true;
|
||||
|
|
@ -595,6 +612,8 @@ export default {
|
|||
return;
|
||||
}
|
||||
this.$modal.confirm(`是否确认批量审核选中的 ${ids.length} 条师傅申请记录?`).then(() => {
|
||||
// 确保关闭其他弹窗
|
||||
this.closeAllDialogs();
|
||||
this.batchAuditOpen = true;
|
||||
}).catch(() => {});
|
||||
},
|
||||
|
|
@ -610,7 +629,7 @@ export default {
|
|||
},
|
||||
/** 查看待审核 */
|
||||
handleViewPending() {
|
||||
this.queryParams.status = 1; // 待审核状态
|
||||
this.queryParams.status = 0; // 待审核状态
|
||||
this.queryParams.pageNum = 1;
|
||||
this.getList();
|
||||
},
|
||||
|
|
@ -635,11 +654,11 @@ export default {
|
|||
// 根据状态获取标签类型
|
||||
getStatusTagType(status) {
|
||||
switch (status) {
|
||||
case 1: // 待审核
|
||||
case 0: // 待审核
|
||||
return 'info';
|
||||
case 2: // 已通过
|
||||
case 1: // 已通过
|
||||
return 'success';
|
||||
case 3: // 已拒绝
|
||||
case 2: // 已驳回
|
||||
return 'danger';
|
||||
default:
|
||||
return 'info';
|
||||
|
|
@ -648,9 +667,9 @@ export default {
|
|||
// 更新统计信息
|
||||
updateStatistics() {
|
||||
this.statistics.total = this.WorkerApplyList.length;
|
||||
this.statistics.pending = this.WorkerApplyList.filter(item => item.status === 1).length;
|
||||
this.statistics.approved = this.WorkerApplyList.filter(item => item.status === 2).length;
|
||||
this.statistics.rejected = this.WorkerApplyList.filter(item => item.status === 3).length;
|
||||
this.statistics.pending = this.WorkerApplyList.filter(item => item.status === 0).length;
|
||||
this.statistics.approved = this.WorkerApplyList.filter(item => item.status === 1).length;
|
||||
this.statistics.rejected = this.WorkerApplyList.filter(item => item.status === 2).length;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue