202507251746
This commit is contained in:
parent
8c064d6657
commit
4f8fe174ad
|
|
@ -99,8 +99,8 @@ public class CommonController
|
||||||
// 使用七牛云上传
|
// 使用七牛云上传
|
||||||
String fileUrl = QiniuUploadUtil.uploadFile(file);
|
String fileUrl = QiniuUploadUtil.uploadFile(file);
|
||||||
AjaxResult ajax = AjaxResult.success();
|
AjaxResult ajax = AjaxResult.success();
|
||||||
ajax.put("url", fileUrl);
|
ajax.put("url", fileUrl);
|
||||||
ajax.put("EditorURL", "https://" + getQiniuConfig().getDomain() + "/" +fileUrl);
|
ajax.put("EditorURL",fileUrl);
|
||||||
ajax.put("fileName", fileUrl);
|
ajax.put("fileName", fileUrl);
|
||||||
ajax.put("newFileName", FileUtils.getName(file.getOriginalFilename()));
|
ajax.put("newFileName", FileUtils.getName(file.getOriginalFilename()));
|
||||||
ajax.put("originalFilename", file.getOriginalFilename());
|
ajax.put("originalFilename", file.getOriginalFilename());
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,7 @@ import com.ruoyi.system.domain.GoodsCart;
|
||||||
import com.ruoyi.system.service.IGoodsCartService;
|
import com.ruoyi.system.service.IGoodsCartService;
|
||||||
import com.ruoyi.system.domain.OrderTypeCount;
|
import com.ruoyi.system.domain.OrderTypeCount;
|
||||||
import com.ruoyi.system.service.IQuoteMaterialTypeService;
|
import com.ruoyi.system.service.IQuoteMaterialTypeService;
|
||||||
|
import com.ruoyi.system.service.IQuoteMaterialService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 苹果订单控制器
|
* 苹果订单控制器
|
||||||
|
|
@ -114,6 +115,13 @@ public class AppleOrderController extends BaseController {
|
||||||
@Autowired
|
@Autowired
|
||||||
private IQuoteMaterialTypeService quoteMaterialTypeService;
|
private IQuoteMaterialTypeService quoteMaterialTypeService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IQuoteMaterialService quoteMaterialService;
|
||||||
|
|
||||||
|
// 1. 注入IWorkerMoneyLogService
|
||||||
|
@Autowired
|
||||||
|
private IWorkerMoneyLogService workerMoneyLogService;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -1832,72 +1840,112 @@ public class AppleOrderController extends BaseController {
|
||||||
@PostMapping("/api/service/create/order")
|
@PostMapping("/api/service/create/order")
|
||||||
public AjaxResult submitCartOrder(@RequestBody Map<String, Object> params, HttpServletRequest request) {
|
public AjaxResult submitCartOrder(@RequestBody Map<String, Object> params, HttpServletRequest request) {
|
||||||
try {
|
try {
|
||||||
|
// 兼容前端传 {"0":{...}} 的情况
|
||||||
|
// if (!params.containsKey("carid") && params.size() == 1 && params.containsKey("0") && params.get("0") instanceof Map) {
|
||||||
|
// params = (Map<String, Object>) params.get("0");
|
||||||
|
// }
|
||||||
|
// 打印前端传递的参数
|
||||||
|
System.out.println("submitCartOrder params: " + params);
|
||||||
PayBeforeUtil payBeforeUtil = new PayBeforeUtil();
|
PayBeforeUtil payBeforeUtil = new PayBeforeUtil();
|
||||||
String token = request.getHeader("token");
|
String token = request.getHeader("token");
|
||||||
Map<String, Object> userValidation = AppletLoginUtil.validateUserToken(token, usersService);
|
Map<String, Object> userValidation = AppletLoginUtil.validateUserToken(token, usersService);
|
||||||
if (!(Boolean) userValidation.get("valid")) {
|
if (!(Boolean) userValidation.get("valid")) {
|
||||||
return AppletControllerUtil.appletdengluWarning("用户信息获取失败");
|
return AppletControllerUtil.appletdengluWarning("用户信息获取失败");
|
||||||
}
|
}
|
||||||
String maincorid=GenerateCustomCode.generCreateOrder("MC");
|
String maincorid=GenerateCustomCode.generCreateOrder("ALL");
|
||||||
Users user = (Users) userValidation.get("user");
|
Users user = (Users) userValidation.get("user");
|
||||||
if (user == null) {
|
if (user == null) {
|
||||||
return AppletControllerUtil.appletdengluWarning("用户信息获取失败");
|
return AppletControllerUtil.appletdengluWarning("用户信息获取失败");
|
||||||
}
|
}
|
||||||
if (params == null || params.get("carid") == null || params.get("address_id") == null) {
|
// 检查carid和address_id参数
|
||||||
return AppletControllerUtil.appletWarning("carid和address_id不能为空");
|
Object carIdsObj = params.get("carid");
|
||||||
|
Object addressIdObj = params.get("address_id");
|
||||||
|
// if (params.get("product_id") == null || params.get("num") == null) {
|
||||||
|
// return AppletControllerUtil.appletWarning("单品下单参数(product_id, num, sku, mark)不能为空");
|
||||||
|
// }
|
||||||
|
if (addressIdObj == null) {
|
||||||
|
return AppletControllerUtil.appletWarning("address_id不能为空");
|
||||||
}
|
}
|
||||||
List<Integer> carIds;
|
Long addressId;
|
||||||
try {
|
try {
|
||||||
carIds = (List<Integer>) params.get("carid");
|
addressId = Long.valueOf(addressIdObj.toString());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
return AppletControllerUtil.appletWarning("carid参数格式错误,必须为整型数组");
|
return AppletControllerUtil.appletWarning("address_id格式错误");
|
||||||
}
|
}
|
||||||
Long addressId = Long.valueOf(params.get("address_id").toString());
|
|
||||||
String makeTime = params.get("make_time") != null ? params.get("make_time").toString() : "";
|
|
||||||
|
|
||||||
UserAddress userAddress = userAddressService.selectUserAddressById(addressId);
|
UserAddress userAddress = userAddressService.selectUserAddressById(addressId);
|
||||||
if (userAddress == null) {
|
if (userAddress == null) {
|
||||||
return AppletControllerUtil.appletWarning("地址不存在");
|
return AppletControllerUtil.appletWarning("地址不存在");
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Map<String, Object>> orderList = new ArrayList<>();
|
List<Map<String, Object>> orderList = new ArrayList<>();
|
||||||
BigDecimal totalAmount = BigDecimal.ZERO;
|
BigDecimal totalAmount = BigDecimal.ZERO;
|
||||||
for (Integer carId : carIds) {
|
if(carIdsObj==null){
|
||||||
GoodsCart cart = goodsCartService.selectGoodsCartById(carId);
|
// 单品下单参数校验
|
||||||
if (cart == null || !user.getId().equals(cart.getUid())) {
|
if (params.get("num") == null || params.get("product_id") == null || params.get("sku") == null || params.get("mark") == null) {
|
||||||
return AppletControllerUtil.appletWarning("购物车ID " + carId + " 不存在或无权操作");
|
return AppletControllerUtil.appletWarning("num、product_id、sku、mark参数不能为空");
|
||||||
}
|
}
|
||||||
ServiceGoods serviceGoods = serviceGoodsService.selectServiceGoodsById(cart.getGoodId());
|
int num;
|
||||||
|
try { num = Integer.parseInt(params.get("num").toString()); } catch (Exception e) { return AppletControllerUtil.appletWarning("num格式错误"); }
|
||||||
|
Long product_id;
|
||||||
|
try { product_id = Long.valueOf(params.get("product_id").toString()); } catch (Exception e) { return AppletControllerUtil.appletWarning("product_id格式错误"); }
|
||||||
|
String sku = params.get("sku").toString();
|
||||||
|
String mark = params.get("mark").toString();
|
||||||
|
ServiceGoods serviceGoods = serviceGoodsService.selectServiceGoodsById(product_id);
|
||||||
if (serviceGoods == null) {
|
if (serviceGoods == null) {
|
||||||
return AppletControllerUtil.appletWarning("商品ID " + cart.getGoodId() + " 不存在");
|
return AppletControllerUtil.appletWarning("商品ID " + product_id + " 不存在");
|
||||||
}
|
}
|
||||||
Map<String, Object> orderResult;
|
Map<String, Object> orderResult = Map.of();
|
||||||
if (cart.getGoodstype() != null && cart.getGoodstype() == 2) {
|
if (serviceGoods.getType() == 2) {
|
||||||
// 商品类下单
|
orderResult= CartOrderUtil.createGoodsOrderFromOnes(user, sku,num, mark,serviceGoods, userAddress, goodsOrderService,maincorid) ;
|
||||||
orderResult = CartOrderUtil.createGoodsOrderFromCart(user, cart, serviceGoods, userAddress, goodsOrderService,maincorid);
|
|
||||||
} else {
|
|
||||||
// 服务类下单
|
|
||||||
orderResult = CartOrderUtil.createServiceOrderFromCart(user, cart, serviceGoods, userAddress, makeTime, orderService, orderLogService,maincorid);
|
|
||||||
}
|
}
|
||||||
if (!(Boolean) orderResult.getOrDefault("success", false)) {
|
if (!(Boolean) orderResult.getOrDefault("success", false)) {
|
||||||
return AppletControllerUtil.appletWarning(orderResult.getOrDefault("msg", "下单失败").toString());
|
return AppletControllerUtil.appletWarning(orderResult.getOrDefault("msg", "下单失败").toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
orderList.add(orderResult);
|
orderList.add(orderResult);
|
||||||
totalAmount = totalAmount.add(new BigDecimal(orderResult.get("allprice").toString()));
|
totalAmount = totalAmount.add(new BigDecimal(orderResult.get("allprice").toString()));
|
||||||
//一口价
|
}else{
|
||||||
if (cart.getGoodstype()==1&&cart.getOrdertype()==2){
|
List<Integer> carIds;
|
||||||
String payBeforeId = payBeforeUtil.createPayBefore(user, totalAmount, maincorid, null, cart.getGoodId(), 6L, cart.getSku(), null, null, null, null,1L, null, null);
|
try {
|
||||||
Map<String, Object> result1 = new HashMap<>();
|
carIds = (List<Integer>) carIdsObj;
|
||||||
result1.put("type", "2");
|
} catch (Exception e) {
|
||||||
result1.put("orderid", maincorid);
|
return AppletControllerUtil.appletWarning("carid参数格式错误,必须为整型数组");
|
||||||
return AppletControllerUtil.appletSuccess(result1);
|
}
|
||||||
|
String makeTime = params.get("make_time") != null ? params.get("make_time").toString() : "";
|
||||||
|
for (Integer carId : carIds) {
|
||||||
|
GoodsCart cart = goodsCartService.selectGoodsCartById(carId);
|
||||||
|
if (cart == null || !user.getId().equals(cart.getUid())) {
|
||||||
|
return AppletControllerUtil.appletWarning("购物车ID " + carId + " 不存在或无权操作");
|
||||||
|
}
|
||||||
|
ServiceGoods serviceGoods = serviceGoodsService.selectServiceGoodsById(cart.getGoodId());
|
||||||
|
if (serviceGoods == null) {
|
||||||
|
return AppletControllerUtil.appletWarning("商品ID " + cart.getGoodId() + " 不存在");
|
||||||
|
}
|
||||||
|
Map<String, Object> orderResult;
|
||||||
|
if (cart.getGoodstype() != null && cart.getGoodstype() == 2) {
|
||||||
|
orderResult = CartOrderUtil.createGoodsOrderFromCart(user, cart, serviceGoods, userAddress, goodsOrderService,maincorid);
|
||||||
|
// String payBeforeId = payBeforeUtil.createPayBefore(user, totalAmount, maincorid, null, cart.getGoodId(), 6L, cart.getSku(), null, null, null, null,1L, null, null);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
orderResult = CartOrderUtil.createServiceOrderFromCart(user, cart, serviceGoods, userAddress, makeTime, orderService, orderLogService,maincorid);
|
||||||
|
//String payBeforeId = payBeforeUtil.createPayBefore(user, totalAmount, maincorid, null, cart.getGoodId(), 6L, cart.getSku(), null, null, null, null,1L, null, null);
|
||||||
|
|
||||||
|
}
|
||||||
|
if (!(Boolean) orderResult.getOrDefault("success", false)) {
|
||||||
|
//删除购物车记录
|
||||||
|
goodsCartService.deleteGoodsCartById(cart.getId());
|
||||||
|
return AppletControllerUtil.appletWarning(orderResult.getOrDefault("msg", "下单失败").toString());
|
||||||
|
}
|
||||||
|
orderList.add(orderResult);
|
||||||
|
totalAmount = totalAmount.add(new BigDecimal(orderResult.get("allprice").toString()));
|
||||||
|
if (cart.getGoodstype()==1&&cart.getOrdertype()==2){
|
||||||
|
String payBeforeId = payBeforeUtil.createPayBefore(user, totalAmount, maincorid, null, cart.getGoodId(), 6L, cart.getSku(), null, null, null, null,1L, null, null);
|
||||||
|
Map<String, Object> result1 = new HashMap<>();
|
||||||
|
result1.put("type", "2");
|
||||||
|
result1.put("orderid", maincorid);
|
||||||
|
return AppletControllerUtil.appletSuccess(result1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (totalAmount.compareTo(BigDecimal.ZERO) > 0) {
|
if (totalAmount.compareTo(BigDecimal.ZERO) > 0) {
|
||||||
//插入预支付订单,随后进行支付
|
|
||||||
String payBeforeId = payBeforeUtil.createPayBefore(user, totalAmount, maincorid, null, null, 5L, null, null, null, null, null,2L,null,null);
|
String payBeforeId = payBeforeUtil.createPayBefore(user, totalAmount, maincorid, null, null, 5L, null, null, null, null, null,2L,null,null);
|
||||||
Map<String, Object> result1 = new HashMap<>();
|
Map<String, Object> result1 = new HashMap<>();
|
||||||
result1.put("type", "2");
|
result1.put("type", "2");
|
||||||
|
|
@ -1908,10 +1956,7 @@ public class AppleOrderController extends BaseController {
|
||||||
result1.put("type", "1");
|
result1.put("type", "1");
|
||||||
result1.put("orderid", maincorid);
|
result1.put("orderid", maincorid);
|
||||||
return AppletControllerUtil.appletSuccess(result1);
|
return AppletControllerUtil.appletSuccess(result1);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("购物车下单失败:", e);
|
logger.error("购物车下单失败:", e);
|
||||||
return AppletControllerUtil.appletError("购物车下单失败:" + e.getMessage());
|
return AppletControllerUtil.appletError("购物车下单失败:" + e.getMessage());
|
||||||
|
|
@ -2489,9 +2534,9 @@ public class AppleOrderController extends BaseController {
|
||||||
List<Order> orderList = new ArrayList<>();
|
List<Order> orderList = new ArrayList<>();
|
||||||
Order queryOrder = new Order();
|
Order queryOrder = new Order();
|
||||||
// 直接用dayDate字符串查
|
// 直接用dayDate字符串查
|
||||||
if (org.apache.commons.lang3.StringUtils.isNotBlank(dayDate)) {
|
if (StringUtils.isNotBlank(dayDate)) {
|
||||||
queryOrder.setDayDate(dayDate);
|
queryOrder.setDayDate(dayDate);
|
||||||
} else if (org.apache.commons.lang3.StringUtils.isNotBlank(day)) {
|
} else if (StringUtils.isNotBlank(day)) {
|
||||||
Calendar cal = Calendar.getInstance();
|
Calendar cal = Calendar.getInstance();
|
||||||
cal.set(Calendar.HOUR_OF_DAY, 0);
|
cal.set(Calendar.HOUR_OF_DAY, 0);
|
||||||
cal.set(Calendar.MINUTE, 0);
|
cal.set(Calendar.MINUTE, 0);
|
||||||
|
|
@ -2717,7 +2762,7 @@ public class AppleOrderController extends BaseController {
|
||||||
}
|
}
|
||||||
for (String cityId : cityIds) {
|
for (String cityId : cityIds) {
|
||||||
if (cityId != null && !cityId.trim().isEmpty()) {
|
if (cityId != null && !cityId.trim().isEmpty()) {
|
||||||
DiyCity city = diyCityService.selectDiyCityById(Math.toIntExact(Long.parseLong(cityId.replaceAll("\"", "").trim())));
|
DiyCity city = diyCityService.selectDiyCityById(Long.valueOf(cityId.replaceAll("\"", "").trim()).intValue());
|
||||||
if (city != null) {
|
if (city != null) {
|
||||||
Map<String, Object> cityMap = new HashMap<>();
|
Map<String, Object> cityMap = new HashMap<>();
|
||||||
cityMap.put("id", city.getId());
|
cityMap.put("id", city.getId());
|
||||||
|
|
@ -3452,8 +3497,8 @@ public class AppleOrderController extends BaseController {
|
||||||
String hourStr = arr[1];
|
String hourStr = arr[1];
|
||||||
Long makeTimeStamp = null;
|
Long makeTimeStamp = null;
|
||||||
try {
|
try {
|
||||||
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd");
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||||
java.util.Date date = sdf.parse(dateStr);
|
Date date = sdf.parse(dateStr);
|
||||||
makeTimeStamp = date.getTime() / 1000;
|
makeTimeStamp = date.getTime() / 1000;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
return AjaxResult.error("日期格式错误");
|
return AjaxResult.error("日期格式错误");
|
||||||
|
|
@ -3497,7 +3542,7 @@ public class AppleOrderController extends BaseController {
|
||||||
return AppletControllerUtil.appletWarning("订单不存在");
|
return AppletControllerUtil.appletWarning("订单不存在");
|
||||||
}
|
}
|
||||||
// 3. 查询最新一条日志,获取type
|
// 3. 查询最新一条日志,获取type
|
||||||
java.math.BigDecimal logType = null;
|
BigDecimal logType = null;
|
||||||
try {
|
try {
|
||||||
OrderLog latestLog = orderLogService.selectDataTheFirstNew(oid);
|
OrderLog latestLog = orderLogService.selectDataTheFirstNew(oid);
|
||||||
if (latestLog != null && latestLog.getType() != null) {
|
if (latestLog != null && latestLog.getType() != null) {
|
||||||
|
|
@ -3515,7 +3560,7 @@ public class AppleOrderController extends BaseController {
|
||||||
orderLog.setTitle("师傅跟单");
|
orderLog.setTitle("师傅跟单");
|
||||||
orderLog.setType(logType); // 跟单type与最新日志一致
|
orderLog.setType(logType); // 跟单type与最新日志一致
|
||||||
// content格式为{"name":内容}
|
// content格式为{"name":内容}
|
||||||
com.alibaba.fastjson2.JSONObject json = new com.alibaba.fastjson2.JSONObject();
|
JSONObject json = new JSONObject();
|
||||||
json.put("name", content);
|
json.put("name", content);
|
||||||
orderLog.setContent(json.toJSONString());
|
orderLog.setContent(json.toJSONString());
|
||||||
// 5. 插入日志
|
// 5. 插入日志
|
||||||
|
|
@ -3544,9 +3589,9 @@ public class AppleOrderController extends BaseController {
|
||||||
int total = allList.size();
|
int total = allList.size();
|
||||||
int fromIndex = Math.max(0, (pageNum - 1) * pageSize);
|
int fromIndex = Math.max(0, (pageNum - 1) * pageSize);
|
||||||
int toIndex = Math.min(fromIndex + pageSize, total);
|
int toIndex = Math.min(fromIndex + pageSize, total);
|
||||||
List<DiyCity> pageList = fromIndex < toIndex ? allList.subList(fromIndex, toIndex) : new java.util.ArrayList<>();
|
List<DiyCity> pageList = fromIndex < toIndex ? allList.subList(fromIndex, toIndex) : new ArrayList<>();
|
||||||
// 只返回title和id
|
// 只返回title和id
|
||||||
List<Map<String, Object>> simpleList = new java.util.ArrayList<>();
|
List<Map<String, Object>> simpleList = new ArrayList<>();
|
||||||
for (DiyCity city : pageList) {
|
for (DiyCity city : pageList) {
|
||||||
Map<String, Object> map = new HashMap<>();
|
Map<String, Object> map = new HashMap<>();
|
||||||
map.put("id", city.getId());
|
map.put("id", city.getId());
|
||||||
|
|
@ -3579,9 +3624,9 @@ public class AppleOrderController extends BaseController {
|
||||||
int total = allList.size();
|
int total = allList.size();
|
||||||
int fromIndex = Math.max(0, (pageNum - 1) * pageSize);
|
int fromIndex = Math.max(0, (pageNum - 1) * pageSize);
|
||||||
int toIndex = Math.min(fromIndex + pageSize, total);
|
int toIndex = Math.min(fromIndex + pageSize, total);
|
||||||
List<SiteSkill> pageList = fromIndex < toIndex ? allList.subList(fromIndex, toIndex) : new java.util.ArrayList<>();
|
List<SiteSkill> pageList = fromIndex < toIndex ? allList.subList(fromIndex, toIndex) : new ArrayList<>();
|
||||||
// 只返回title和id
|
// 只返回title和id
|
||||||
List<Map<String, Object>> simpleList = new java.util.ArrayList<>();
|
List<Map<String, Object>> simpleList = new ArrayList<>();
|
||||||
for (SiteSkill skill : pageList) {
|
for (SiteSkill skill : pageList) {
|
||||||
Map<String, Object> map = new HashMap<>();
|
Map<String, Object> map = new HashMap<>();
|
||||||
map.put("id", skill.getId());
|
map.put("id", skill.getId());
|
||||||
|
|
@ -3665,8 +3710,8 @@ public class AppleOrderController extends BaseController {
|
||||||
String[] arr = makeTimeStr.split(" ");
|
String[] arr = makeTimeStr.split(" ");
|
||||||
if (arr.length == 2) {
|
if (arr.length == 2) {
|
||||||
try {
|
try {
|
||||||
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd");
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||||
java.util.Date date = sdf.parse(arr[0]);
|
Date date = sdf.parse(arr[0]);
|
||||||
makeTime = date.getTime() / 1000;
|
makeTime = date.getTime() / 1000;
|
||||||
makeHour = arr[1];
|
makeHour = arr[1];
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
@ -3696,8 +3741,8 @@ public class AppleOrderController extends BaseController {
|
||||||
orderLog.setOid(order.getId());
|
orderLog.setOid(order.getId());
|
||||||
orderLog.setOrderId(order.getOrderId());
|
orderLog.setOrderId(order.getOrderId());
|
||||||
orderLog.setTitle("拼团预约");
|
orderLog.setTitle("拼团预约");
|
||||||
orderLog.setType(java.math.BigDecimal.valueOf(1.0));
|
orderLog.setType(BigDecimal.valueOf(1.0));
|
||||||
com.alibaba.fastjson2.JSONObject json = new com.alibaba.fastjson2.JSONObject();
|
JSONObject json = new JSONObject();
|
||||||
json.put("name", "拼团预约成功,待接单");
|
json.put("name", "拼团预约成功,待接单");
|
||||||
orderLog.setContent(json.toJSONString());
|
orderLog.setContent(json.toJSONString());
|
||||||
orderLogService.insertOrderLog(orderLog);
|
orderLogService.insertOrderLog(orderLog);
|
||||||
|
|
@ -3829,6 +3874,18 @@ public class AppleOrderController extends BaseController {
|
||||||
return AjaxResult.success(data);
|
return AjaxResult.success(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 协议类型接口,返回写死的数据
|
||||||
|
*/
|
||||||
|
@GetMapping("/api/public/getusertest/{id}")
|
||||||
|
public AjaxResult getusertest(@PathVariable("id") Long id) {
|
||||||
|
|
||||||
|
List<Users> data = OrderUtil.getDispatchWorkerList(id);
|
||||||
|
return AjaxResult.success(data);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询内容详情接口
|
* 查询内容详情接口
|
||||||
* @param id 内容ID
|
* @param id 内容ID
|
||||||
|
|
@ -3880,21 +3937,35 @@ public class AppleOrderController extends BaseController {
|
||||||
@GetMapping("/api/material/detail")
|
@GetMapping("/api/material/detail")
|
||||||
public AjaxResult getMaterialDetail(@RequestParam("id") Long id) {
|
public AjaxResult getMaterialDetail(@RequestParam("id") Long id) {
|
||||||
try {
|
try {
|
||||||
QuoteMaterialType material = quoteMaterialTypeService.selectQuoteMaterialTypeById(id);
|
QuoteMaterial material = quoteMaterialService.selectQuoteMaterialById(id);
|
||||||
if (material == null) {
|
if (material == null) {
|
||||||
return AjaxResult.error("物料不存在");
|
return AjaxResult.error("物料不存在");
|
||||||
}
|
}
|
||||||
// 构建返回数据(可根据实际字段调整)
|
|
||||||
Map<String, Object> result = new HashMap<>();
|
Map<String, Object> result = new HashMap<>();
|
||||||
result.put("id", material.getId());
|
result.put("id", material.getId());
|
||||||
result.put("name", material.getName());
|
result.put("title", material.getTitle());
|
||||||
result.put("type", material.getType());
|
result.put("typeId", material.getTypeId());
|
||||||
|
result.put("typeName", material.getTypeName());
|
||||||
|
result.put("goodId", material.getGoodId());
|
||||||
|
result.put("serviceName", material.getServiceName());
|
||||||
result.put("price", material.getPrice());
|
result.put("price", material.getPrice());
|
||||||
result.put("unit", material.getUnit());
|
result.put("unit", material.getUnit());
|
||||||
result.put("desc", material.getDesc());
|
result.put("image", material.getImage());
|
||||||
result.put("status", material.getStatus());
|
// 格式化manyimages为数组
|
||||||
result.put("createdAt", material.getCreatedAt());
|
if (material.getManyimages() != null && !material.getManyimages().trim().isEmpty()) {
|
||||||
result.put("updatedAt", material.getUpdatedAt());
|
result.put("manyimages", JSONArray.parseArray(material.getManyimages()));
|
||||||
|
} else {
|
||||||
|
result.put("manyimages", new JSONArray());
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(material.getContent())&&StringUtils.isNotBlank(material.getManyimages())){
|
||||||
|
result.put("showtype", 1);
|
||||||
|
}else{
|
||||||
|
result.put("showtype", 2);
|
||||||
|
}
|
||||||
|
result.put("content", material.getContent());
|
||||||
|
result.put("profit", material.getProfit());
|
||||||
|
result.put("commissions", material.getCommissions());
|
||||||
|
result.put("iscommissions", material.getIscommissions());
|
||||||
// 可根据需要添加更多字段
|
// 可根据需要添加更多字段
|
||||||
return AjaxResult.success(result);
|
return AjaxResult.success(result);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
@ -3903,4 +3974,221 @@ public class AppleOrderController extends BaseController {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/api/worker/stat")
|
||||||
|
public AjaxResult getWorkerStat(HttpServletRequest request) {
|
||||||
|
try {
|
||||||
|
// 1. 校验用户登录
|
||||||
|
String token = request.getHeader("token");
|
||||||
|
Map<String, Object> userValidation = AppletLoginUtil.validateUserToken(token, usersService);
|
||||||
|
if (!(Boolean) userValidation.get("valid")) {
|
||||||
|
return AppletControllerUtil.appletdengluWarning("用户信息获取失败");
|
||||||
|
}
|
||||||
|
Users user = (Users) userValidation.get("user");
|
||||||
|
if (user == null) {
|
||||||
|
return AppletControllerUtil.appletdengluWarning("用户信息获取失败");
|
||||||
|
}
|
||||||
|
Long workerId = user.getId();
|
||||||
|
|
||||||
|
// 2. 今日单量
|
||||||
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||||
|
String todayStr = sdf.format(new Date());
|
||||||
|
Date todayStart = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(todayStr + " 00:00:00");
|
||||||
|
Date todayEnd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(todayStr + " 23:59:59");
|
||||||
|
Order dayOrder = new Order();
|
||||||
|
dayOrder.setWorkerId(workerId);
|
||||||
|
dayOrder.setReceiveTimeStart(todayStart);
|
||||||
|
dayOrder.setReceiveTimeEnd(todayEnd);
|
||||||
|
int dayCount = orderService.selectOrderList(dayOrder).size();
|
||||||
|
|
||||||
|
// 3. 本月单量
|
||||||
|
String monthStartStr = todayStr.substring(0, 8) + "01 00:00:00";
|
||||||
|
Date monthStart = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(monthStartStr);
|
||||||
|
Order monthOrder = new Order();
|
||||||
|
monthOrder.setWorkerId(workerId);
|
||||||
|
monthOrder.setType(1);
|
||||||
|
monthOrder.setReceiveTimeStart(monthStart);
|
||||||
|
monthOrder.setReceiveTimeEnd(todayEnd);
|
||||||
|
int monthCount = orderService.selectOrderList(monthOrder).size();
|
||||||
|
|
||||||
|
// 4. 本月收入
|
||||||
|
BigDecimal monthIncome = workerMoneyLogService.selectWorkerMoneySumPrice(workerId.intValue());
|
||||||
|
if (monthIncome == null) monthIncome = BigDecimal.ZERO;
|
||||||
|
|
||||||
|
// 5. 配置信息
|
||||||
|
SiteConfig config = new SiteConfig();
|
||||||
|
config.setName("config_one");
|
||||||
|
List<SiteConfig> configList = siteConfigService.selectSiteConfigList(config);
|
||||||
|
Map<String, Object> configValue = new HashMap<>();
|
||||||
|
if (configList != null && !configList.isEmpty()) {
|
||||||
|
String value = configList.get(0).getValue();
|
||||||
|
if (value != null && !value.trim().isEmpty()) {
|
||||||
|
configValue = com.alibaba.fastjson.JSONObject.parseObject(value, Map.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 6. 是否需要签到
|
||||||
|
boolean sign = true;
|
||||||
|
if (user.getWorkerTime() != null) {
|
||||||
|
if (sdf.format(user.getWorkerTime()).equals(todayStr)) {
|
||||||
|
sign = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 7. 返回数据
|
||||||
|
Map<String, Object> data = new HashMap<>();
|
||||||
|
data.put("day_count", dayCount);
|
||||||
|
data.put("mouth_count", monthCount);
|
||||||
|
data.put("income", monthIncome);
|
||||||
|
data.put("user", user);
|
||||||
|
data.put("sign", sign);
|
||||||
|
data.put("config", configValue);
|
||||||
|
|
||||||
|
return AppletControllerUtil.appletSuccess(data);
|
||||||
|
} catch (Exception e) {
|
||||||
|
return AppletControllerUtil.appletError("首页统计异常:" + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/api/workerdata/index")
|
||||||
|
public AjaxResult workerdataIndex(@RequestBody Map<String, Object> params, HttpServletRequest request) {
|
||||||
|
try {
|
||||||
|
// 1. 校验用户登录
|
||||||
|
String token = request.getHeader("token");
|
||||||
|
Map<String, Object> userValidation = AppletLoginUtil.validateUserToken(token, usersService);
|
||||||
|
if (!(Boolean) userValidation.get("valid")) {
|
||||||
|
return AppletControllerUtil.appletdengluWarning("用户信息获取失败");
|
||||||
|
}
|
||||||
|
Users user = (Users) userValidation.get("user");
|
||||||
|
if (user == null) {
|
||||||
|
return AppletControllerUtil.appletdengluWarning("用户信息获取失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
int limit = 10;
|
||||||
|
if (params.get("limit") != null) {
|
||||||
|
try { limit = Integer.parseInt(params.get("limit").toString()); } catch (Exception ignore) {}
|
||||||
|
}
|
||||||
|
int pageNum = params.get("pageNum") != null ? Integer.parseInt(params.get("pageNum").toString()) : 1;
|
||||||
|
int offset = (pageNum - 1) * limit;
|
||||||
|
|
||||||
|
// 2. 师傅等级图片
|
||||||
|
if (user.getLevel() != null) {
|
||||||
|
WorkerLevel levelInfo = workerLevelService.selectWorkerLevelByLevel(Long.valueOf(user.getLevel()));
|
||||||
|
if (levelInfo != null) {
|
||||||
|
user.setLevelInfo(levelInfo);
|
||||||
|
user.setLevelImg(levelInfo.getImage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. 质保金、累计佣金、佣金为0处理
|
||||||
|
if (user.getMargin() == null) user.setMargin(BigDecimal.ZERO);
|
||||||
|
if (user.getTotalComm() == null) user.setTotalComm(BigDecimal.ZERO);
|
||||||
|
if (user.getCommission() == null) user.setCommission(BigDecimal.ZERO);
|
||||||
|
|
||||||
|
// 4. 师傅技能
|
||||||
|
if (user.getSkillIds() != null && !user.getSkillIds().trim().isEmpty()) {
|
||||||
|
List<String> skillArr = new ArrayList<>();
|
||||||
|
List<String> skillIds = parseJsonIdList(user.getSkillIds());
|
||||||
|
for (String sid : skillIds) {
|
||||||
|
SiteSkill skill = siteSkillService.selectSiteSkillById(Long.valueOf(sid));
|
||||||
|
if (skill != null) {
|
||||||
|
Map<String, Object> skillMap = new HashMap<>();
|
||||||
|
skillMap.put("id", skill.getId());
|
||||||
|
skillMap.put("title", skill.getTitle());
|
||||||
|
skillArr.add(skillMap.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
user.setSkillArr(skillArr);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 5. 师傅服务地区
|
||||||
|
if (user.getServiceCityIds() != null && !user.getServiceCityIds().trim().isEmpty()) {
|
||||||
|
List<Object> cityArr = new ArrayList<>();
|
||||||
|
List<String> cityIds = parseJsonIdList(user.getServiceCityIds());
|
||||||
|
for (String cid : cityIds) {
|
||||||
|
DiyCity city = diyCityService.selectDiyCityById(Long.valueOf(cid).intValue());
|
||||||
|
if (city != null) {
|
||||||
|
Map<String, Object> cityMap = new HashMap<>();
|
||||||
|
cityMap.put("id", city.getId());
|
||||||
|
cityMap.put("title", city.getTitle());
|
||||||
|
cityArr.add(cityMap);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
user.setServiceCityArr(cityArr);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 6. 禁止接单剩余时间
|
||||||
|
if (user.getProhibitTime() != null && user.getProhibitTimeNum() != null) {
|
||||||
|
long now = System.currentTimeMillis() / 1000;
|
||||||
|
long prohibitStart = user.getProhibitTime().getTime() / 1000;
|
||||||
|
long prohibitEnd = prohibitStart + user.getProhibitTimeNum() * 3600;
|
||||||
|
if (prohibitStart < now && prohibitEnd > now) {
|
||||||
|
long residue = prohibitEnd - now;
|
||||||
|
long hours = residue / 3600;
|
||||||
|
long minutes = (residue % 3600) / 60;
|
||||||
|
long seconds = residue % 60;
|
||||||
|
StringBuilder str = new StringBuilder();
|
||||||
|
if (hours > 0) str.append(hours).append("小时");
|
||||||
|
if (minutes > 0) str.append(minutes).append("分钟");
|
||||||
|
if (seconds > 0) str.append(seconds).append("秒");
|
||||||
|
user.setProhibit("因违反平台规定," + user.getProhibitTimeNum() + "小时内禁止接单,剩余" + str);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 7. 查询师傅所有服务订单ID(Log表,worker_id=当前师傅,取oid)
|
||||||
|
List<Long> oids = orderLogService.selectOidListByWorkerId(user.getId());
|
||||||
|
|
||||||
|
// 8. 查询评价(Comment表,oid in oids,支持type筛选,分页)
|
||||||
|
List<Map<String, Object>> dataList = new ArrayList<>();
|
||||||
|
Map<String, Object> commentStat = new HashMap<>();
|
||||||
|
double totalNum = 0;
|
||||||
|
int totalCount = 0;
|
||||||
|
Long type = params.get("type") != null ? Long.valueOf(params.get("type").toString()) : null;
|
||||||
|
if (!oids.isEmpty()) {
|
||||||
|
List<OrderComment> comments = orderCommentService.selectOrderCommentListByOidsAndType(oids, type, offset, limit);
|
||||||
|
for (OrderComment c : comments) {
|
||||||
|
Map<String, Object> cMap = new HashMap<>();
|
||||||
|
Users u = usersService.selectUsersById(c.getUid());
|
||||||
|
cMap.put("id", c.getId());
|
||||||
|
cMap.put("uid", c.getUid());
|
||||||
|
cMap.put("images", c.getImages());
|
||||||
|
cMap.put("content", c.getContent());
|
||||||
|
cMap.put("num", c.getNum());
|
||||||
|
cMap.put("time", c.getCreatedAt());
|
||||||
|
cMap.put("user", u != null ? Map.of("id", u.getId(), "name", u.getName(), "avatar", u.getAvatar()) : null);
|
||||||
|
dataList.add(cMap);
|
||||||
|
totalNum += c.getNum() != null ? c.getNum() : 0;
|
||||||
|
totalCount++;
|
||||||
|
}
|
||||||
|
// 统计好评/中评/差评数量
|
||||||
|
commentStat.put("one", orderCommentService.countByOidsAndType(oids, 1L));
|
||||||
|
commentStat.put("two", orderCommentService.countByOidsAndType(oids, 2L));
|
||||||
|
commentStat.put("three", orderCommentService.countByOidsAndType(oids, 3L));
|
||||||
|
commentStat.put("total", totalCount > 0 ? Math.round(totalNum / totalCount * 10.0) / 10.0 : 0);
|
||||||
|
} else {
|
||||||
|
commentStat.put("one", 0);
|
||||||
|
commentStat.put("two", 0);
|
||||||
|
commentStat.put("three", 0);
|
||||||
|
commentStat.put("total", 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, Object> result = new HashMap<>();
|
||||||
|
result.put("user", user);
|
||||||
|
result.put("data", dataList);
|
||||||
|
result.put("comment", commentStat);
|
||||||
|
|
||||||
|
return AppletControllerUtil.appletSuccess(result);
|
||||||
|
} catch (Exception e) {
|
||||||
|
return AppletControllerUtil.appletError("获取个人中心信息失败:" + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 辅助方法:解析JSON数组字符串为List<String>
|
||||||
|
private List<String> parseJsonIdList(String json) {
|
||||||
|
try {
|
||||||
|
return com.alibaba.fastjson.JSONArray.parseArray(json, String.class);
|
||||||
|
} catch (Exception e) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4327,15 +4327,13 @@ public class AppletController extends BaseController {
|
||||||
return AppletControllerUtil.appletError("查询师傅订单列表失败:" + e.getMessage());
|
return AppletControllerUtil.appletError("查询师傅订单列表失败:" + e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取师傅工作台统计数据
|
* 师傅签到
|
||||||
* 返回格式见json.txt
|
|
||||||
*/
|
*/
|
||||||
@GetMapping("/api/worker/stat")
|
@GetMapping("/api/worker/sign/")
|
||||||
public AjaxResult getWorkerStat(HttpServletRequest request) {
|
public AjaxResult workerSign(HttpServletRequest request) {
|
||||||
try {
|
try {
|
||||||
// 1. 校验token并获取用户
|
// 1. 校验用户登录
|
||||||
String token = request.getHeader("token");
|
String token = request.getHeader("token");
|
||||||
Map<String, Object> userValidation = AppletLoginUtil.validateUserToken(token, usersService);
|
Map<String, Object> userValidation = AppletLoginUtil.validateUserToken(token, usersService);
|
||||||
if (!(Boolean) userValidation.get("valid")) {
|
if (!(Boolean) userValidation.get("valid")) {
|
||||||
|
|
@ -4345,47 +4343,225 @@ public class AppletController extends BaseController {
|
||||||
if (user == null) {
|
if (user == null) {
|
||||||
return AppletControllerUtil.appletdengluWarning("用户信息获取失败");
|
return AppletControllerUtil.appletdengluWarning("用户信息获取失败");
|
||||||
}
|
}
|
||||||
// 2. 查询config_one配置
|
// 2. 判断是否为师傅
|
||||||
SiteConfig configQuery = new SiteConfig();
|
if (user.getType() == null || user.getType().equals(2)) {
|
||||||
configQuery.setName("config_one");
|
return AppletControllerUtil.appletWarning("您还不是师傅");
|
||||||
List<SiteConfig> configList = siteConfigService.selectSiteConfigList(configQuery);
|
|
||||||
Object configObj = null;
|
|
||||||
if (configList != null && !configList.isEmpty()) {
|
|
||||||
String configValue = configList.get(0).getValue();
|
|
||||||
if (configValue != null && !configValue.trim().isEmpty()) {
|
|
||||||
configObj = JSONObject.parse(configValue);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// 3. 判断今日是否签到
|
// 3. 更新worker_time
|
||||||
|
user.setWorkerTime(new Date());
|
||||||
|
int updateResult = usersService.updateUsers(user);
|
||||||
|
// 4. 插入签到记录
|
||||||
|
WorkerSign workerSign = new WorkerSign();
|
||||||
|
|
||||||
|
workerSign.setUid(String.valueOf(user.getId()));
|
||||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||||
String todayStr = sdf.format(new Date());
|
workerSign.setTime(new Date());
|
||||||
WorkerSign signQuery = new WorkerSign();
|
workerSign.setCreatedAt(new Date());
|
||||||
signQuery.setUid(String.valueOf(user.getId()));
|
workerSign.setUpdatedAt(new Date());
|
||||||
signQuery.setTime(sdf.parse(todayStr));
|
workerSignService.insertWorkerSign(workerSign);
|
||||||
boolean signed = false;
|
// 5. 返回
|
||||||
List<WorkerSign> signList = workerSignService.selectWorkerSignList(signQuery);
|
if (updateResult > 0) {
|
||||||
if (signList != null && !signList.isEmpty()) {
|
return AppletControllerUtil.appletSuccess("签到成功");
|
||||||
signed = true;
|
} else {
|
||||||
|
return AppletControllerUtil.appletWarning("签到失败");
|
||||||
}
|
}
|
||||||
// 4. 构建user数据
|
|
||||||
Map<String, Object> userMap = buildUserInfoResponse(user);
|
|
||||||
// 5. 构建返回结构
|
|
||||||
Map<String, Object> data = new HashMap<>();
|
|
||||||
data.put("day_count", 0);
|
|
||||||
data.put("mouth_count", 0);
|
|
||||||
data.put("income", 0);
|
|
||||||
data.put("user", userMap);
|
|
||||||
data.put("sign", signed);
|
|
||||||
data.put("config", configObj);
|
|
||||||
Map<String, Object> result = new HashMap<>();
|
|
||||||
result.put("code", 200);
|
|
||||||
result.put("msg", "OK");
|
|
||||||
result.put("data", data);
|
|
||||||
return AjaxResult.success(result);
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
return AppletControllerUtil.appletError("获取师傅统计数据失败:" + e.getMessage());
|
return AppletControllerUtil.appletError("签到异常:" + e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@PostMapping("/api/worker/stop")
|
||||||
|
public AjaxResult stopWorker(@RequestBody Map<String, Object> params, HttpServletRequest request) {
|
||||||
|
try {
|
||||||
|
// 1. 校验用户登录
|
||||||
|
String token = request.getHeader("token");
|
||||||
|
Map<String, Object> userValidation = AppletLoginUtil.validateUserToken(token, usersService);
|
||||||
|
if (!(Boolean) userValidation.get("valid")) {
|
||||||
|
return AppletControllerUtil.appletdengluWarning("用户信息获取失败");
|
||||||
|
}
|
||||||
|
Users user = (Users) userValidation.get("user");
|
||||||
|
if (user == null) {
|
||||||
|
return AppletControllerUtil.appletdengluWarning("用户信息获取失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. 获取参数 is_stop
|
||||||
|
Object isStopObj = params.get("is_stop");
|
||||||
|
int isStop = (isStopObj != null && ("1".equals(isStopObj.toString()) || "true".equalsIgnoreCase(isStopObj.toString()))) ? 1 : 0;
|
||||||
|
|
||||||
|
// 3. 更新用户 is_stop 字段
|
||||||
|
user.setIsStop(isStop);
|
||||||
|
int result = usersService.updateUsers(user);
|
||||||
|
|
||||||
|
// 4. 返回
|
||||||
|
if (result > 0) {
|
||||||
|
return AppletControllerUtil.appletSuccess("成功");
|
||||||
|
} else {
|
||||||
|
return AppletControllerUtil.appletError("失败");
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
return AppletControllerUtil.appletError("操作异常:" + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * 师傅签到
|
||||||
|
// */
|
||||||
|
// @GetMapping("/api/worker/stop")
|
||||||
|
// public AjaxResult workerSignstop(HttpServletRequest request) {
|
||||||
|
// try {
|
||||||
|
// // 1. 校验用户登录
|
||||||
|
// String token = request.getHeader("token");
|
||||||
|
// Map<String, Object> userValidation = AppletLoginUtil.validateUserToken(token, usersService);
|
||||||
|
// if (!(Boolean) userValidation.get("valid")) {
|
||||||
|
// return AppletControllerUtil.appletdengluWarning("用户信息获取失败");
|
||||||
|
// }
|
||||||
|
// Users user = (Users) userValidation.get("user");
|
||||||
|
// if (user == null) {
|
||||||
|
// return AppletControllerUtil.appletdengluWarning("用户信息获取失败");
|
||||||
|
// }
|
||||||
|
// // 2. 判断是否为师傅
|
||||||
|
// if (user.getType() == null || user.getType().equals(2)) {
|
||||||
|
// return AppletControllerUtil.appletWarning("您还不是师傅");
|
||||||
|
// }
|
||||||
|
// // 3. 更新worker_time
|
||||||
|
// user.setIsStop(1);
|
||||||
|
// int updateResult = usersService.updateUsers(user);
|
||||||
|
//
|
||||||
|
// // 5. 返回
|
||||||
|
// if (updateResult > 0) {
|
||||||
|
// return AppletControllerUtil.appletSuccess("关闭成功");
|
||||||
|
// } else {
|
||||||
|
// return AppletControllerUtil.appletWarning("关闭失败");
|
||||||
|
// }
|
||||||
|
// } catch (Exception e) {
|
||||||
|
// return AppletControllerUtil.appletError("关闭异常:" + e.getMessage());
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @GetMapping("/api/worker/stat")
|
||||||
|
// public AjaxResult getWorkerStat(HttpServletRequest request) {
|
||||||
|
// try {
|
||||||
|
// // 1. 校验用户登录
|
||||||
|
// String token = request.getHeader("token");
|
||||||
|
// Map<String, Object> userValidation = AppletLoginUtil.validateUserToken(token, usersService);
|
||||||
|
// if (!(Boolean) userValidation.get("valid")) {
|
||||||
|
// return AppletControllerUtil.appletdengluWarning("用户信息获取失败");
|
||||||
|
// }
|
||||||
|
// Users user = (Users) userValidation.get("user");
|
||||||
|
// if (user == null) {
|
||||||
|
// return AppletControllerUtil.appletdengluWarning("用户信息获取失败");
|
||||||
|
// }
|
||||||
|
// Long workerId = user.getId();
|
||||||
|
//
|
||||||
|
// // 2. 今日单量
|
||||||
|
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||||
|
// String todayStr = sdf.format(new Date());
|
||||||
|
// String todayStart = todayStr + " 00:00:00";
|
||||||
|
// String todayEnd = todayStr + " 23:59:59";
|
||||||
|
//
|
||||||
|
// int dayCount = orderService.countByWorkerIdAndReceiveTime(workerId, todayStart, todayEnd, null);
|
||||||
|
//
|
||||||
|
// // 3. 本月单量
|
||||||
|
// String monthStart = todayStr.substring(0, 8) + "01 00:00:00";
|
||||||
|
// int monthCount = orderService.countByWorkerIdAndReceiveTime(workerId, monthStart, todayEnd, 1);
|
||||||
|
//
|
||||||
|
// // 4. 本月收入
|
||||||
|
// BigDecimal monthIncome = moneyLogService.sumPriceByWorkerIdAndCreatedAt(workerId, monthStart, todayEnd, 1);
|
||||||
|
//
|
||||||
|
// // 5. 配置信息
|
||||||
|
// SiteConfig config = new SiteConfig();
|
||||||
|
// config.setName("config_one");
|
||||||
|
// List<SiteConfig> configList = siteConfigService.selectSiteConfigList(config);
|
||||||
|
// Map<String, Object> configValue = new HashMap<>();
|
||||||
|
// if (configList != null && !configList.isEmpty()) {
|
||||||
|
// String value = configList.get(0).getValue();
|
||||||
|
// if (value != null && !value.trim().isEmpty()) {
|
||||||
|
// configValue = JSONObject.parseObject(value, Map.class);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// // 6. 是否需要签到
|
||||||
|
// boolean sign = true;
|
||||||
|
// if (user.getWorkerTime() != null) {
|
||||||
|
// String workerTimeStr = sdf.format(user.getWorkerTime());
|
||||||
|
// if (workerTimeStr.equals(todayStr)) {
|
||||||
|
// sign = false;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// // 7. 返回数据
|
||||||
|
// Map<String, Object> data = new HashMap<>();
|
||||||
|
// data.put("day_count", dayCount);
|
||||||
|
// data.put("mouth_count", monthCount);
|
||||||
|
// data.put("income", monthIncome);
|
||||||
|
// data.put("user", user);
|
||||||
|
// data.put("sign", sign);
|
||||||
|
// data.put("config", configValue);
|
||||||
|
//
|
||||||
|
// return AppletControllerUtil.appletSuccess(data);
|
||||||
|
// } catch (Exception e) {
|
||||||
|
// return AppletControllerUtil.appletError("首页统计异常:" + e.getMessage());
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * 获取师傅工作台统计数据
|
||||||
|
// * 返回格式见json.txt
|
||||||
|
// */
|
||||||
|
// @GetMapping("/api/worker/stat")
|
||||||
|
// public AjaxResult getWorkerStat(HttpServletRequest request) {
|
||||||
|
// try {
|
||||||
|
// // 1. 校验token并获取用户
|
||||||
|
// String token = request.getHeader("token");
|
||||||
|
// Map<String, Object> userValidation = AppletLoginUtil.validateUserToken(token, usersService);
|
||||||
|
// if (!(Boolean) userValidation.get("valid")) {
|
||||||
|
// return AppletControllerUtil.appletdengluWarning("用户信息获取失败");
|
||||||
|
// }
|
||||||
|
// Users user = (Users) userValidation.get("user");
|
||||||
|
// if (user == null) {
|
||||||
|
// return AppletControllerUtil.appletdengluWarning("用户信息获取失败");
|
||||||
|
// }
|
||||||
|
// // 2. 查询config_one配置
|
||||||
|
// SiteConfig configQuery = new SiteConfig();
|
||||||
|
// configQuery.setName("config_one");
|
||||||
|
// List<SiteConfig> configList = siteConfigService.selectSiteConfigList(configQuery);
|
||||||
|
// Object configObj = null;
|
||||||
|
// if (configList != null && !configList.isEmpty()) {
|
||||||
|
// String configValue = configList.get(0).getValue();
|
||||||
|
// if (configValue != null && !configValue.trim().isEmpty()) {
|
||||||
|
// configObj = JSONObject.parse(configValue);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// // 3. 判断今日是否签到
|
||||||
|
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||||
|
// String todayStr = sdf.format(new Date());
|
||||||
|
// WorkerSign signQuery = new WorkerSign();
|
||||||
|
// signQuery.setUid(String.valueOf(user.getId()));
|
||||||
|
// signQuery.setTime(sdf.parse(todayStr));
|
||||||
|
// boolean signed = false;
|
||||||
|
// List<WorkerSign> signList = workerSignService.selectWorkerSignList(signQuery);
|
||||||
|
// if (signList != null && !signList.isEmpty()) {
|
||||||
|
// signed = true;
|
||||||
|
// }
|
||||||
|
// // 4. 构建user数据
|
||||||
|
// Map<String, Object> userMap = buildUserInfoResponse(user);
|
||||||
|
// // 5. 构建返回结构
|
||||||
|
// Map<String, Object> data = new HashMap<>();
|
||||||
|
// data.put("day_count", 0);
|
||||||
|
// data.put("mouth_count", 0);
|
||||||
|
// data.put("income", 0);
|
||||||
|
// data.put("user", userMap);
|
||||||
|
// data.put("sign", signed);
|
||||||
|
// data.put("config", configObj);
|
||||||
|
// Map<String, Object> result = new HashMap<>();
|
||||||
|
// result.put("code", 200);
|
||||||
|
// result.put("msg", "OK");
|
||||||
|
// result.put("data", data);
|
||||||
|
// return AjaxResult.success(result);
|
||||||
|
// } catch (Exception e) {
|
||||||
|
// return AppletControllerUtil.appletError("获取师傅统计数据失败:" + e.getMessage());
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
// /**
|
// /**
|
||||||
// * 师傅端订单详情接口
|
// * 师傅端订单详情接口
|
||||||
|
|
@ -4557,8 +4733,9 @@ public class AppletController extends BaseController {
|
||||||
jsonObject.put("status",0);
|
jsonObject.put("status",0);
|
||||||
contentObj=jsonObject;
|
contentObj=jsonObject;
|
||||||
}
|
}
|
||||||
|
}else if (log.getTitle().equals("已检查评估报价")){
|
||||||
|
JSONObject jsonObject = JSONObject.from(OrderUtil.getbaojiajson(log.getContent()));
|
||||||
|
contentObj = jsonObject;
|
||||||
}else{
|
}else{
|
||||||
try {
|
try {
|
||||||
if (log.getContent() != null) {
|
if (log.getContent() != null) {
|
||||||
|
|
@ -4980,6 +5157,52 @@ public class AppletController extends BaseController {
|
||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
// }
|
// }
|
||||||
|
// logMap.put("content", contentObj);
|
||||||
|
// Object contentObj = null;
|
||||||
|
// // content字段为json字符串,需转为对象
|
||||||
|
// if (log.getTitle().equals("订单评价")) {
|
||||||
|
// OrderComment comment = new OrderComment();
|
||||||
|
// comment.setOid(log.getOid());
|
||||||
|
// List<OrderComment> commentList = orderCommentService.selectOrderCommentList(comment);
|
||||||
|
// if(!commentList.isEmpty()){
|
||||||
|
// OrderComment commentDATA = commentList.getFirst();
|
||||||
|
// JSONObject jsonObject = new JSONObject();
|
||||||
|
// jsonObject.put("num",commentDATA.getNum());
|
||||||
|
// jsonObject.put("status",commentDATA.getStatus());
|
||||||
|
// jsonObject.put("text",commentDATA.getContent());
|
||||||
|
// if (commentDATA.getImages()!=null){
|
||||||
|
// jsonObject.put("image",JSONArray.parseArray(commentDATA.getImages()));
|
||||||
|
// }
|
||||||
|
// if (commentDATA.getLabels()!=null){
|
||||||
|
// jsonObject.put("labels",JSONArray.parseArray(commentDATA.getLabels()));
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// contentObj=jsonObject;
|
||||||
|
// }else{
|
||||||
|
// JSONObject jsonObject = new JSONObject();
|
||||||
|
//
|
||||||
|
// jsonObject.put("status",0);
|
||||||
|
// contentObj=jsonObject;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// }else{
|
||||||
|
// try {
|
||||||
|
// if (log.getContent() != null) {
|
||||||
|
// contentObj = JSONObject.parse(log.getContent());
|
||||||
|
// }
|
||||||
|
// } catch (Exception e) {
|
||||||
|
//
|
||||||
|
// if (AppletControllerUtil.canParseToJSONArray(log.getContent())) {
|
||||||
|
// contentObj = JSONArray.parseArray(log.getContent());
|
||||||
|
// } else {
|
||||||
|
// contentObj = log.getContent();
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//
|
||||||
// logMap.put("content", contentObj);
|
// logMap.put("content", contentObj);
|
||||||
Object contentObj = null;
|
Object contentObj = null;
|
||||||
// content字段为json字符串,需转为对象
|
// content字段为json字符串,需转为对象
|
||||||
|
|
@ -5007,8 +5230,9 @@ public class AppletController extends BaseController {
|
||||||
jsonObject.put("status",0);
|
jsonObject.put("status",0);
|
||||||
contentObj=jsonObject;
|
contentObj=jsonObject;
|
||||||
}
|
}
|
||||||
|
}else if (log.getTitle().equals("已检查评估报价")){
|
||||||
|
JSONObject jsonObject = JSONObject.from(OrderUtil.getbaojiajson(log.getContent()));
|
||||||
|
contentObj = jsonObject;
|
||||||
}else{
|
}else{
|
||||||
try {
|
try {
|
||||||
if (log.getContent() != null) {
|
if (log.getContent() != null) {
|
||||||
|
|
@ -5524,7 +5748,7 @@ public class AppletController extends BaseController {
|
||||||
* 返回结构见json.txt
|
* 返回结构见json.txt
|
||||||
*/
|
*/
|
||||||
@PostMapping("/api/worker/index")
|
@PostMapping("/api/worker/index")
|
||||||
public AjaxResult getWorkerIndex(@RequestBody Map<String, Object> params, HttpServletRequest request) {
|
public AjaxResult getWorkerdataIndex(@RequestBody Map<String, Object> params, HttpServletRequest request) {
|
||||||
try {
|
try {
|
||||||
// 1. 校验token并获取师傅信息
|
// 1. 校验token并获取师傅信息
|
||||||
String token = request.getHeader("token");
|
String token = request.getHeader("token");
|
||||||
|
|
@ -5536,6 +5760,23 @@ public class AppletController extends BaseController {
|
||||||
if (user == null) {
|
if (user == null) {
|
||||||
return AppletControllerUtil.appletdengluWarning("用户信息获取失败");
|
return AppletControllerUtil.appletdengluWarning("用户信息获取失败");
|
||||||
}
|
}
|
||||||
|
// 6. 禁止接单剩余时间
|
||||||
|
if (user.getProhibitTime() != null && user.getProhibitTimeNum() != null) {
|
||||||
|
long now = System.currentTimeMillis() / 1000;
|
||||||
|
long prohibitStart = user.getProhibitTime().getTime() / 1000;
|
||||||
|
long prohibitEnd = prohibitStart + user.getProhibitTimeNum() * 3600;
|
||||||
|
if (prohibitStart < now && prohibitEnd > now) {
|
||||||
|
long residue = prohibitEnd - now;
|
||||||
|
long hours = residue / 3600;
|
||||||
|
long minutes = (residue % 3600) / 60;
|
||||||
|
long seconds = residue % 60;
|
||||||
|
StringBuilder str = new StringBuilder();
|
||||||
|
if (hours > 0) str.append(hours).append("小时");
|
||||||
|
if (minutes > 0) str.append(minutes).append("分钟");
|
||||||
|
if (seconds > 0) str.append(seconds).append("秒");
|
||||||
|
user.setProhibit("因违反平台规定," + user.getProhibitTimeNum() + "小时内禁止接单,剩余" + str);
|
||||||
|
}
|
||||||
|
}
|
||||||
// 2. 查询等级信息
|
// 2. 查询等级信息
|
||||||
Object levelInfo = null;
|
Object levelInfo = null;
|
||||||
String levelImg = null;
|
String levelImg = null;
|
||||||
|
|
@ -6063,166 +6304,7 @@ public class AppletController extends BaseController {
|
||||||
// return AppletControllerUtil.appletError("设置上门费失败:" + e.getMessage());
|
// return AppletControllerUtil.appletError("设置上门费失败:" + e.getMessage());
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
/**
|
|
||||||
* 师傅设置上门费接口
|
|
||||||
* 参数:{"id":订单id,"price":金额}
|
|
||||||
* 逻辑:查找订单最新日志,设置workerCost和price,并设置paid=1
|
|
||||||
*/
|
|
||||||
@PostMapping("/api/worker/set/price")
|
|
||||||
public AjaxResult setWorkerPrice(@RequestBody Map<String, Object> params, HttpServletRequest request) {
|
|
||||||
try {
|
|
||||||
// 1. 校验token并获取用户
|
|
||||||
String token = request.getHeader("token");
|
|
||||||
Map<String, Object> userValidation = AppletLoginUtil.validateUserToken(token, usersService);
|
|
||||||
if (!(Boolean) userValidation.get("valid")) {
|
|
||||||
return AppletControllerUtil.appletdengluWarning("用户信息获取失败");
|
|
||||||
}
|
|
||||||
Users user = (Users) userValidation.get("user");
|
|
||||||
if (user == null) {
|
|
||||||
return AppletControllerUtil.appletdengluWarning("用户信息获取失败");
|
|
||||||
}
|
|
||||||
|
|
||||||
Long orderId = params.get("id") != null ? Long.parseLong(params.get("id").toString()) : null;
|
|
||||||
String priceStr = params.get("price") != null ? params.get("price").toString() : null;
|
|
||||||
if (orderId == null || StringUtils.isEmpty(priceStr)) {
|
|
||||||
return AppletControllerUtil.appletWarning("参数错误");
|
|
||||||
}
|
|
||||||
BigDecimal price = new BigDecimal(priceStr);
|
|
||||||
// 查询订单
|
|
||||||
Order order = orderService.selectOrderById(orderId);
|
|
||||||
if (order == null) {
|
|
||||||
return AppletControllerUtil.appletWarning("订单不存在");
|
|
||||||
}
|
|
||||||
// 查询最新订单日志
|
|
||||||
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");
|
|
||||||
OrderLog neworderLog =new OrderLog();
|
|
||||||
neworderLog.setOid(order.getId());
|
|
||||||
neworderLog.setOrderId(order.getOrderId());
|
|
||||||
neworderLog.setLogOrderId(logOrderId);
|
|
||||||
neworderLog.setTitle("上门费");
|
|
||||||
neworderLog.setType(neworderLogdata.getType());
|
|
||||||
JSONObject jsonObject = new JSONObject();
|
|
||||||
jsonObject.put("name", "师傅"+user.getName()+"设置上门费"+ price+"元");
|
|
||||||
neworderLog.setContent(jsonObject.toJSONString());
|
|
||||||
neworderLog.setPaid(1L);
|
|
||||||
neworderLog.setPrice( price);
|
|
||||||
neworderLog.setLogId(GenerateCustomCode.generCreateOrder("FEE"));
|
|
||||||
|
|
||||||
neworderLog.setWorkerId(user.getId());
|
|
||||||
neworderLog.setWorkerCost( price);
|
|
||||||
neworderLog.setWorkerLogId(user.getId());
|
|
||||||
int insert =orderLogService.insertOrderLog(neworderLog);
|
|
||||||
if (insert > 0) {
|
|
||||||
//上门费创建支付单
|
|
||||||
BigDecimal totalAmount=neworderLog.getPrice();
|
|
||||||
Users userinfo = usersService.selectUsersById(order.getUid());
|
|
||||||
PayBeforeUtil payBeforeUtil = new PayBeforeUtil();
|
|
||||||
payBeforeUtil.createPayBefore(userinfo, totalAmount, logOrderId, neworderLog.getId(),
|
|
||||||
null, 7L, null, null,
|
|
||||||
null, null, null,1L,null,order.getOrderId());
|
|
||||||
|
|
||||||
// // 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) {
|
|
||||||
return AppletControllerUtil.appletError("设置上门费失败:" + e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 师傅设置出发上门
|
* 师傅设置出发上门
|
||||||
|
|
@ -6573,6 +6655,18 @@ public class AppletController extends BaseController {
|
||||||
materialMap.put("image",AppletControllerUtil.buildImageUrl(material.getImage()));
|
materialMap.put("image",AppletControllerUtil.buildImageUrl(material.getImage()));
|
||||||
materialMap.put("price", material.getPrice() != null ? material.getPrice().toString() : "0.00");
|
materialMap.put("price", material.getPrice() != null ? material.getPrice().toString() : "0.00");
|
||||||
materialMap.put("unit", material.getUnit());
|
materialMap.put("unit", material.getUnit());
|
||||||
|
// 格式化manyimages为数组
|
||||||
|
if (material.getManyimages() != null && !material.getManyimages().trim().isEmpty()) {
|
||||||
|
materialMap.put("manyimages", JSONArray.parseArray(material.getManyimages()));
|
||||||
|
} else {
|
||||||
|
materialMap.put("manyimages", new JSONArray());
|
||||||
|
}
|
||||||
|
if (org.apache.commons.lang3.StringUtils.isNotBlank(material.getContent())&& org.apache.commons.lang3.StringUtils.isNotBlank(material.getManyimages())){
|
||||||
|
materialMap.put("showtype", 1);
|
||||||
|
}else{
|
||||||
|
materialMap.put("showtype", 2);
|
||||||
|
}
|
||||||
|
materialMap.put("content", material.getContent());
|
||||||
// type_id为数组,需解析
|
// type_id为数组,需解析
|
||||||
List<String> typeIdList = new ArrayList<>();
|
List<String> typeIdList = new ArrayList<>();
|
||||||
String typeIdStr = material.getTypeId();
|
String typeIdStr = material.getTypeId();
|
||||||
|
|
@ -7147,6 +7241,171 @@ public class AppletController extends BaseController {
|
||||||
return AppletControllerUtil.appletSuccess("服务已完成");
|
return AppletControllerUtil.appletSuccess("服务已完成");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 师傅设置上门费接口
|
||||||
|
* 参数:{"id":订单id,"price":金额}
|
||||||
|
* 逻辑:查找订单最新日志,设置workerCost和price,并设置paid=1
|
||||||
|
*/
|
||||||
|
@PostMapping("/api/worker/set/price")
|
||||||
|
public AjaxResult setWorkerPrice(@RequestBody Map<String, Object> params, HttpServletRequest request) {
|
||||||
|
try {
|
||||||
|
// 1. 校验token并获取用户
|
||||||
|
String token = request.getHeader("token");
|
||||||
|
Map<String, Object> userValidation = AppletLoginUtil.validateUserToken(token, usersService);
|
||||||
|
if (!(Boolean) userValidation.get("valid")) {
|
||||||
|
return AppletControllerUtil.appletdengluWarning("用户信息获取失败");
|
||||||
|
}
|
||||||
|
Users user = (Users) userValidation.get("user");
|
||||||
|
if (user == null) {
|
||||||
|
return AppletControllerUtil.appletdengluWarning("用户信息获取失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
Long orderId = params.get("id") != null ? Long.parseLong(params.get("id").toString()) : null;
|
||||||
|
String priceStr = params.get("price") != null ? params.get("price").toString() : null;
|
||||||
|
if (orderId == null || StringUtils.isEmpty(priceStr)) {
|
||||||
|
return AppletControllerUtil.appletWarning("参数错误");
|
||||||
|
}
|
||||||
|
BigDecimal price = new BigDecimal(priceStr);
|
||||||
|
// 查询订单
|
||||||
|
Order order = orderService.selectOrderById(orderId);
|
||||||
|
if (order == null) {
|
||||||
|
return AppletControllerUtil.appletWarning("订单不存在");
|
||||||
|
}
|
||||||
|
// 查询最新订单日志
|
||||||
|
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");
|
||||||
|
OrderLog neworderLog =new OrderLog();
|
||||||
|
neworderLog.setOid(order.getId());
|
||||||
|
neworderLog.setOrderId(order.getOrderId());
|
||||||
|
neworderLog.setLogOrderId(logOrderId);
|
||||||
|
neworderLog.setTitle("上门费");
|
||||||
|
neworderLog.setType(neworderLogdata.getType());
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
jsonObject.put("name", "师傅"+user.getName()+"设置上门费"+ price+"元");
|
||||||
|
neworderLog.setContent(jsonObject.toJSONString());
|
||||||
|
neworderLog.setPaid(1L);
|
||||||
|
neworderLog.setPrice( price);
|
||||||
|
neworderLog.setLogId(GenerateCustomCode.generCreateOrder("FEE"));
|
||||||
|
|
||||||
|
neworderLog.setWorkerId(user.getId());
|
||||||
|
neworderLog.setWorkerCost( price);
|
||||||
|
neworderLog.setWorkerLogId(user.getId());
|
||||||
|
int insert =orderLogService.insertOrderLog(neworderLog);
|
||||||
|
if (insert > 0) {
|
||||||
|
//上门费创建支付单
|
||||||
|
BigDecimal totalAmount=neworderLog.getPrice();
|
||||||
|
Users userinfo = usersService.selectUsersById(order.getUid());
|
||||||
|
PayBeforeUtil payBeforeUtil = new PayBeforeUtil();
|
||||||
|
payBeforeUtil.createPayBefore(userinfo, totalAmount, logOrderId, neworderLog.getId(),
|
||||||
|
null, 7L, null, null,
|
||||||
|
null, null, null,1L,null,order.getOrderId());
|
||||||
|
|
||||||
|
// // 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) {
|
||||||
|
return AppletControllerUtil.appletError("设置上门费失败:" + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 结束订单
|
* 结束订单
|
||||||
* POST
|
* POST
|
||||||
|
|
@ -7163,6 +7422,11 @@ public class AppletController extends BaseController {
|
||||||
if (orderInfo == null) {
|
if (orderInfo == null) {
|
||||||
return AjaxResult.error("订单不存在");
|
return AjaxResult.error("订单不存在");
|
||||||
}
|
}
|
||||||
|
String shangmenprice = params.get("price").toString();
|
||||||
|
// Order orderInfo = orderService.selectOrderById(id);
|
||||||
|
// if (orderInfo == null) {
|
||||||
|
// return AjaxResult.error("订单不存在");
|
||||||
|
// }
|
||||||
Users workerInfo = usersService.selectUsersById(orderInfo.getWorkerId());
|
Users workerInfo = usersService.selectUsersById(orderInfo.getWorkerId());
|
||||||
if (workerInfo == null) {
|
if (workerInfo == null) {
|
||||||
return AjaxResult.error("师傅记录不存在");
|
return AjaxResult.error("师傅记录不存在");
|
||||||
|
|
@ -7196,20 +7460,44 @@ public class AppletController extends BaseController {
|
||||||
updateOrder.setId(id);
|
updateOrder.setId(id);
|
||||||
updateOrder.setStatus(7L);
|
updateOrder.setStatus(7L);
|
||||||
orderService.updateOrder(updateOrder);
|
orderService.updateOrder(updateOrder);
|
||||||
|
String logOrderId = GenerateCustomCode.generCreateOrder("DSB");
|
||||||
// 3.2 插入订单日志
|
// 3.2 插入订单日志
|
||||||
OrderLog log = new OrderLog();
|
OrderLog log = new OrderLog();
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
if (StringUtils.isNotBlank(shangmenprice)){
|
||||||
|
log.setPaid(1L);
|
||||||
|
log.setPrice(new BigDecimal(shangmenprice));
|
||||||
|
jsonObject.put("name","师傅提前结束订单,上门费"+shangmenprice+"元");
|
||||||
|
// BigDecimal totalAmount=log.getPrice();
|
||||||
|
//
|
||||||
|
// Users userinfo = usersService.selectUsersById(orderInfo.getUid());
|
||||||
|
// PayBeforeUtil payBeforeUtil = new PayBeforeUtil();
|
||||||
|
// payBeforeUtil.createPayBefore(userinfo, totalAmount, logOrderId, log.getId(),
|
||||||
|
// null, 7L, null, null,
|
||||||
|
// null, null, null,1L,null,order.getOrderId());
|
||||||
|
}else{
|
||||||
|
jsonObject.put("name","师傅提前结束订单,无其他费用");
|
||||||
|
}
|
||||||
|
|
||||||
|
log.setLogOrderId(logOrderId);
|
||||||
log.setOid(orderInfo.getId());
|
log.setOid(orderInfo.getId());
|
||||||
log.setOrderId(orderInfo.getOrderId());
|
log.setOrderId(orderInfo.getOrderId());
|
||||||
log.setTitle("结束订单");
|
log.setTitle("结束订单");
|
||||||
log.setType(BigDecimal.valueOf(10));
|
log.setType(BigDecimal.valueOf(10));
|
||||||
log.setContent("{\"name\":\"师傅提前结束订单\"}");
|
log.setContent(jsonObject.toJSONString());
|
||||||
//Long workerId = getCurrentWorkerId(request); // 需实现
|
//Long workerId = getCurrentWorkerId(request); // 需实现
|
||||||
log.setWorkerId(workerInfo.getId());
|
log.setWorkerId(workerInfo.getId());
|
||||||
log.setCreatedAt(new Date());
|
log.setCreatedAt(new Date());
|
||||||
log.setUpdatedAt(new Date());
|
log.setUpdatedAt(new Date());
|
||||||
orderLogService.insertOrderLog(log);
|
orderLogService.insertOrderLog(log);
|
||||||
|
if (StringUtils.isNotBlank(shangmenprice)){
|
||||||
|
BigDecimal totalAmount=log.getPrice();
|
||||||
|
Users userinfo = usersService.selectUsersById(orderInfo.getUid());
|
||||||
|
PayBeforeUtil payBeforeUtil = new PayBeforeUtil();
|
||||||
|
payBeforeUtil.createPayBefore(userinfo, totalAmount, logOrderId, log.getId(),
|
||||||
|
null, 7L, null, null,
|
||||||
|
null, null, null,1L,null,orderInfo.getOrderId());
|
||||||
|
}
|
||||||
// 3.3 查询是否有上门费(type=2, paid=2)
|
// 3.3 查询是否有上门费(type=2, paid=2)
|
||||||
OrderLog doorPriceLogself = new OrderLog();
|
OrderLog doorPriceLogself = new OrderLog();
|
||||||
doorPriceLogself.setOid(orderInfo.getId());
|
doorPriceLogself.setOid(orderInfo.getId());
|
||||||
|
|
@ -7251,6 +7539,7 @@ public class AppletController extends BaseController {
|
||||||
moneyLog.setLookday(7);
|
moneyLog.setLookday(7);
|
||||||
moneyLog.setLookMoney(price);
|
moneyLog.setLookMoney(price);
|
||||||
workerMoneyLogService.insertWorkerMoneyLog(moneyLog);
|
workerMoneyLogService.insertWorkerMoneyLog(moneyLog);
|
||||||
|
|
||||||
}
|
}
|
||||||
// 3.4 解绑虚拟号
|
// 3.4 解绑虚拟号
|
||||||
if (orderInfo.getMiddlePhone() != null) {
|
if (orderInfo.getMiddlePhone() != null) {
|
||||||
|
|
|
||||||
|
|
@ -1,53 +1,92 @@
|
||||||
// 评价订单
|
// 个人中心
|
||||||
public function comment(Request $request)
|
public function index(Request $request)
|
||||||
{
|
{
|
||||||
|
|
||||||
$validator = Validator::make($request->all(),$this->comment_rule()['rules'],$this->comment_rule()['messages']);
|
|
||||||
if($validator->fails()){
|
|
||||||
return $this->error($validator->errors()->all()[0]);
|
|
||||||
}
|
|
||||||
$param = $request->post();
|
$param = $request->post();
|
||||||
// 是否已经评价过
|
$limit = isset($param['limit']) && $param['limit'] ? $param['limit'] : env('PAGE_LIMIT');
|
||||||
$info = Comment::where(['uid'=>$this->user_info['id'],'order_id'=>$param['order_id']])->first();
|
|
||||||
if($info){
|
if($this->user_info['level'])
|
||||||
return $this->error('请勿重复提交');
|
{
|
||||||
|
$this->user_info['level_info'] = WorkerLevel::select('id','image')->find($this->user_info['level']);
|
||||||
}
|
}
|
||||||
$num_type = $param['num'] == 1 ? 3 : (in_array($param['num'],[2,3]) ? 2 : 1);
|
// 个人基本信息
|
||||||
// 商品id
|
$data['user'] = $this->user_info;
|
||||||
$order_info = Order::select('product_id','id','worker_id')->where(['order_id'=>$param['order_id']])->first();
|
// 质保金
|
||||||
$data = [
|
if(!$this->user_info['margin']){
|
||||||
'oid' => $order_info['id'],
|
$data['user']['margin'] = 0;
|
||||||
'order_id' => $param['order_id'],
|
|
||||||
'product_id' => $order_info['product_id'],
|
|
||||||
'content' => $param['content'],
|
|
||||||
'num' => $param['num'],
|
|
||||||
'uid' => $this->user_info['id'],
|
|
||||||
'images' => $param['images'] ? json_encode($param['images']) : null,
|
|
||||||
'num_type' => $num_type,
|
|
||||||
'worker_id' => $order_info['worker_id'],
|
|
||||||
'created_at' => date('Y-m-d H:i:s'),
|
|
||||||
'updated_at' => date('Y-m-d H:i:s'),
|
|
||||||
];
|
|
||||||
DB::beginTransaction();
|
|
||||||
try{
|
|
||||||
Comment::insert($data);
|
|
||||||
// 订单评价记录
|
|
||||||
$log_data = [
|
|
||||||
'oid' => $order_info['id'],
|
|
||||||
'order_id' => $param['order_id'],
|
|
||||||
'title' => '订单评价',
|
|
||||||
'type' => 8,
|
|
||||||
'content' => json_encode(['text'=>$param['content'],'image'=>$param['images'],'num'=>$data['num']]),
|
|
||||||
'created_at'=> date('Y-m-d H:i:s'),
|
|
||||||
'updated_at'=> date('Y-m-d H:i:s'),
|
|
||||||
];
|
|
||||||
Log::insert($log_data);
|
|
||||||
// 更改订单状态为完成--评价状态改为已评价
|
|
||||||
Order::where(['order_id'=>$param['order_id']])->update(['status'=>4,'is_comment'=>1]);
|
|
||||||
DB::commit();
|
|
||||||
return $this->success();
|
|
||||||
}catch(\Exception $e){
|
|
||||||
DB::rollBack();
|
|
||||||
return $this->error('操作失败'.$e->getMessage());
|
|
||||||
}
|
}
|
||||||
|
// 累计佣金
|
||||||
|
if(!$this->user_info['total_comm'])
|
||||||
|
{
|
||||||
|
$data['user']['total_comm'] = 0;
|
||||||
|
}
|
||||||
|
// 佣金
|
||||||
|
if(!$this->user_info['commission'])
|
||||||
|
{
|
||||||
|
$data['user']['commission'] = 0;
|
||||||
|
}
|
||||||
|
// 师傅技能
|
||||||
|
if($this->user_info['skill_ids'])
|
||||||
|
{
|
||||||
|
$skill_ids = array_filter(json_decode($this->user_info['skill_ids'],true));
|
||||||
|
$this->user_info['skill_arr'] = skill::whereIn('id',$skill_ids)->select('id','title')->get();
|
||||||
|
}
|
||||||
|
// 师傅服务地区
|
||||||
|
if($this->user_info['service_city_ids'])
|
||||||
|
{
|
||||||
|
$this->user_info['service_city_arr'] = DiyCity::whereIn('id',json_decode($this->user_info['service_city_ids'],true))->select('id','title')->get();
|
||||||
|
}
|
||||||
|
// 等级信息
|
||||||
|
if($this->user_info['level'])
|
||||||
|
{
|
||||||
|
$level = WorkerLevel::select('image')->find($this->user_info['level']);
|
||||||
|
if($level) $data['user']['level_img'] = $level['image'];
|
||||||
|
}
|
||||||
|
// 是否禁止接单
|
||||||
|
if(strtotime($this->user_info['prohibit_time']) < time() && strtotime($this->user_info['prohibit_time']) + $this->user_info['prohibit_time_num']*3600 > time()){
|
||||||
|
// 禁止剩余是啊金
|
||||||
|
$residue_time = strtotime($this->user_info['prohibit_time']) + $this->user_info['prohibit_time_num']*3600 - time();
|
||||||
|
$hours = intval($residue_time / 3600);
|
||||||
|
$minutes = intval(($residue_time % 3600) / 60);
|
||||||
|
$seconds = $residue_time % 60;
|
||||||
|
$str = '';
|
||||||
|
if($hours > 0) $str .= $hours.'小时';
|
||||||
|
if($minutes > 0) $str .= $minutes.'分钟';
|
||||||
|
if($seconds > 0) $str .= $seconds.'秒';
|
||||||
|
|
||||||
|
$this->user_info['prohibit'] = '因违反平台规定,'.$this->user_info['prohibit_time_num'].'小时内禁止接单,剩余'.$str;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 我的服务订单
|
||||||
|
// $oids = Log::where(['worker_id'=>$this->user_info['id'],'type'=>8])->pluck('oid')->toArray();
|
||||||
|
$oids = Log::where(['worker_id'=>$this->user_info['id']])->pluck('oid')->toArray();
|
||||||
|
|
||||||
|
// 我的评价
|
||||||
|
if($oids){
|
||||||
|
$model = new Comment();
|
||||||
|
if(isset($param['type']) && $param['type'])
|
||||||
|
{
|
||||||
|
$model = $model->where(['num_type'=>$param['type']]);
|
||||||
|
}
|
||||||
|
$data['data'] = $model->whereIn('oid',$oids)
|
||||||
|
->with(['user'=>function($query){
|
||||||
|
$query->select('id','name','avatar');
|
||||||
|
}])
|
||||||
|
->select('id','uid','images','content','num','created_at')
|
||||||
|
->paginate($limit);
|
||||||
|
// 总评分
|
||||||
|
$total_num = 0;
|
||||||
|
foreach($data['data'] as &$val)
|
||||||
|
{
|
||||||
|
// 时间转换
|
||||||
|
$val['time'] = $this->mdate($val['created_at']);
|
||||||
|
$total_num += $val['num'];
|
||||||
|
}
|
||||||
|
// 评价数量
|
||||||
|
$data['comment']['one'] = Comment::where(['num_type'=>1])->whereIn('oid',$oids)->count();
|
||||||
|
$data['comment']['two'] = Comment::where(['num_type'=>2])->whereIn('oid',$oids)->count();
|
||||||
|
$data['comment']['three'] = Comment::where(['num_type'=>3])->whereIn('oid',$oids)->count();
|
||||||
|
if(count($data['data']) < 1) $data['comment']['total'] = 0;
|
||||||
|
else $data['comment']['total'] = round($total_num/count($data['data']),1);
|
||||||
|
}
|
||||||
|
return $this->success($data);
|
||||||
}
|
}
|
||||||
|
|
@ -42,8 +42,12 @@ public class AppletControllerUtil {
|
||||||
|
|
||||||
|
|
||||||
private static final IUsersService usersService = SpringUtils.getBean(IUsersService.class);
|
private static final IUsersService usersService = SpringUtils.getBean(IUsersService.class);
|
||||||
|
private static final IOrderService orderService = SpringUtils.getBean(IOrderService.class);
|
||||||
private static final IUserAddressService userAddressService = SpringUtils.getBean(IUserAddressService.class);
|
private static final IUserAddressService userAddressService = SpringUtils.getBean(IUserAddressService.class);
|
||||||
private static final IOrderCommentService orderCommentService = SpringUtils.getBean(IOrderCommentService.class);
|
private static final IOrderCommentService orderCommentService = SpringUtils.getBean(IOrderCommentService.class);
|
||||||
|
private static final IOrderLogService orderLogService = SpringUtils.getBean(IOrderLogService.class);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ============================== 统一响应处理方法 ==============================
|
// ============================== 统一响应处理方法 ==============================
|
||||||
|
|
||||||
|
|
@ -94,7 +98,19 @@ public class AppletControllerUtil {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 业务提示响应 - code: 422
|
||||||
|
*
|
||||||
|
* @param message 提示消息
|
||||||
|
* @return AjaxResult
|
||||||
|
*/
|
||||||
|
public static AjaxResult appletdengluWarning(String message) {
|
||||||
|
AjaxResult result = new AjaxResult();
|
||||||
|
result.put("code", 422);
|
||||||
|
result.put("msg", message);
|
||||||
|
result.put("data", new ArrayList<>());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 业务提示响应 - code:500
|
* 业务提示响应 - code:500
|
||||||
|
|
@ -126,28 +142,28 @@ public class AppletControllerUtil {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* Token验证失败响应 - code: 332
|
// * Token验证失败响应 - code: 332
|
||||||
*
|
// *
|
||||||
* @return AjaxResult
|
// * @return AjaxResult
|
||||||
*/
|
// */
|
||||||
public static AjaxResult appletUnauthorized() {
|
// public static AjaxResult appletUnauthorized() {
|
||||||
return appletUnauthorized("用户未登录或token无效,请重新登录");
|
// return appletUnauthorized("用户未登录或token无效,请重新登录");
|
||||||
}
|
// }
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* Token验证失败响应 - code: 332,自定义消息
|
// * Token验证失败响应 - code: 332,自定义消息
|
||||||
*
|
// *
|
||||||
* @param message 提示消息
|
// * @param message 提示消息
|
||||||
* @return AjaxResult
|
// * @return AjaxResult
|
||||||
*/
|
// */
|
||||||
public static AjaxResult appletUnauthorized(String message) {
|
// public static AjaxResult appletUnauthorized(String message) {
|
||||||
AjaxResult result = new AjaxResult();
|
// AjaxResult result = new AjaxResult();
|
||||||
result.put("code", 332);
|
// result.put("code", 422);
|
||||||
result.put("msg", message);
|
// result.put("msg", message);
|
||||||
result.put("data", new ArrayList<>());
|
// result.put("data", new ArrayList<>());
|
||||||
return result;
|
// return result;
|
||||||
}
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 系统错误响应 - code: 500
|
* 系统错误响应 - code: 500
|
||||||
|
|
@ -2625,22 +2641,74 @@ public class AppletControllerUtil {
|
||||||
* @param order 订单主键
|
* @param order 订单主键
|
||||||
* @return 是否可用
|
* @return 是否可用
|
||||||
*/
|
*/
|
||||||
public static Users creatWorkerForOrder(Order order) {
|
public static Users creatWorkerForOrder(Order order,Users worker) {
|
||||||
GaoDeMapUtil gaoDeMapUtil = new GaoDeMapUtil();
|
|
||||||
|
order.setWorkerId(worker.getId());
|
||||||
|
order.setStatus(1L);
|
||||||
|
order.setIsPause(1);
|
||||||
|
order.setReceiveTime(new Date());
|
||||||
|
order.setWorkerPhone(worker.getPhone());
|
||||||
UserAddress userAddress = userAddressService.selectUserAddressById(order.getAddressId());
|
UserAddress userAddress = userAddressService.selectUserAddressById(order.getAddressId());
|
||||||
// if (userAddress != null){
|
if (userAddress != null){
|
||||||
// String city = gaoDeMapUtil.getCityByLocation(userAddress.getLongitude(), userAddress.getLatitude());
|
order.setUserPhone(userAddress.getPhone());
|
||||||
// if (city != null){
|
}
|
||||||
//
|
order.setMiddlePhone("18339212639");
|
||||||
// }else{
|
order.setReceiveType(3l);
|
||||||
//
|
order.setLogStatus(9);
|
||||||
// }
|
JSONObject jSONObject = new JSONObject();
|
||||||
// }
|
jSONObject.put("type", 9);
|
||||||
Users worker = usersService.selectUsersById(2l);
|
order.setLogJson(jSONObject.toJSONString());
|
||||||
|
orderService.updateOrder(order);
|
||||||
|
|
||||||
|
|
||||||
|
OrderLog orderLognew = new OrderLog();
|
||||||
|
orderLognew.setOid(order.getId());
|
||||||
|
orderLognew.setOrderId(order.getOrderId());
|
||||||
|
orderLognew.setTitle("系统派单");
|
||||||
|
orderLognew.setType(new BigDecimal(1.1));
|
||||||
|
JSONObject jSONObject1 = new JSONObject();
|
||||||
|
jSONObject1.put("name", "师傅收到派单信息");
|
||||||
|
orderLognew.setContent(jSONObject1.toJSONString());
|
||||||
|
orderLognew.setWorkerId(worker.getId());
|
||||||
|
orderLognew.setWorkerLogId(worker.getId());
|
||||||
|
orderLogService.insertOrderLog(orderLognew);
|
||||||
|
|
||||||
|
// GaoDeMapUtil gaoDeMapUtil = new GaoDeMapUtil();
|
||||||
|
// UserAddress userAddress = userAddressService.selectUserAddressById(order.getAddressId());
|
||||||
|
//// if (userAddress != null){
|
||||||
|
//// String city = gaoDeMapUtil.getCityByLocation(userAddress.getLongitude(), userAddress.getLatitude());
|
||||||
|
//// if (city != null){
|
||||||
|
////
|
||||||
|
//// }else{
|
||||||
|
////
|
||||||
|
//// }
|
||||||
|
//// }
|
||||||
|
// // Users worker = usersService.selectUsersById(2l);
|
||||||
return worker;
|
return worker;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Users worker = AppletControllerUtil.creatWorkerForOrder(orderNewData);
|
||||||
|
//
|
||||||
|
// if (worker != null) {
|
||||||
|
// // 更新订单状态为已派单
|
||||||
|
|
||||||
|
// // 添加派单日志
|
||||||
|
|
||||||
|
// // 发送通知
|
||||||
|
// WXsendMsgUtil.sendMsgForWorkerInfo(worker.getOpenid(), orderNewData, serviceGoods);
|
||||||
|
// YunXinPhoneUtilAPI.httpsAxbTransfer(worker.getPhone());
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 判断时间段是否可用
|
* 判断时间段是否可用
|
||||||
*
|
*
|
||||||
|
|
@ -4492,7 +4560,7 @@ public class AppletControllerUtil {
|
||||||
// 1. 验证用户token
|
// 1. 验证用户token
|
||||||
Map<String, Object> tokenValidation = validateUserToken(token, usersService);
|
Map<String, Object> tokenValidation = validateUserToken(token, usersService);
|
||||||
if (!(Boolean) tokenValidation.get("valid")) {
|
if (!(Boolean) tokenValidation.get("valid")) {
|
||||||
return appletUnauthorized((String) tokenValidation.get("message"));
|
return appletdengluWarning((String) tokenValidation.get("message"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 从tokenValidation中获取用户信息Map,然后提取userId
|
// 从tokenValidation中获取用户信息Map,然后提取userId
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ import com.ruoyi.common.utils.AmapUtils;
|
||||||
import com.ruoyi.common.utils.spring.SpringUtils;
|
import com.ruoyi.common.utils.spring.SpringUtils;
|
||||||
import com.ruoyi.system.domain.*;
|
import com.ruoyi.system.domain.*;
|
||||||
import com.ruoyi.system.service.*;
|
import com.ruoyi.system.service.*;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
|
@ -25,6 +26,8 @@ public class OrderUtil {
|
||||||
private static IOrderLogService orderLogService = SpringUtils.getBean(IOrderLogService.class);
|
private static IOrderLogService orderLogService = SpringUtils.getBean(IOrderLogService.class);
|
||||||
private static IGoodsOrderService goodsOrderService = SpringUtils.getBean(IGoodsOrderService.class);
|
private static IGoodsOrderService goodsOrderService = SpringUtils.getBean(IGoodsOrderService.class);
|
||||||
private static IUserDemandQuotationService userDemandQuotationService = SpringUtils.getBean(IUserDemandQuotationService.class);
|
private static IUserDemandQuotationService userDemandQuotationService = SpringUtils.getBean(IUserDemandQuotationService.class);
|
||||||
|
private static IUsersPayBeforService usersPayBeforService = SpringUtils.getBean(IUsersPayBeforService.class);
|
||||||
|
private static IQuoteMaterialService quoteMaterialService = SpringUtils.getBean(IQuoteMaterialService.class);
|
||||||
|
|
||||||
private static OrderLogHandler orderLogHandler = SpringUtils.getBean(OrderLogHandler.class);
|
private static OrderLogHandler orderLogHandler = SpringUtils.getBean(OrderLogHandler.class);
|
||||||
|
|
||||||
|
|
@ -32,6 +35,43 @@ public class OrderUtil {
|
||||||
private static final String PREFIX = "C";
|
private static final String PREFIX = "C";
|
||||||
private static final int FIXED_LENGTH = 15; // 总长度为15
|
private static final int FIXED_LENGTH = 15; // 总长度为15
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建新用户对象
|
||||||
|
*
|
||||||
|
* @return 新用户对象
|
||||||
|
*/
|
||||||
|
public static JSONObject getbaojiajson(String json) {
|
||||||
|
if (StringUtils.isNotBlank(json)) {
|
||||||
|
JSONObject jsonObject = JSONObject.parseObject(json);
|
||||||
|
JSONArray material = jsonObject.getJSONArray("material");
|
||||||
|
if (material != null) {
|
||||||
|
for (int i = 0; i < material.size(); i++) {
|
||||||
|
JSONObject jsonObjectmaterial = material.getJSONObject(i);
|
||||||
|
String id = jsonObjectmaterial.getString("id");
|
||||||
|
if (StringUtils.isNotBlank(id)) {
|
||||||
|
QuoteMaterial quoteMaterial = quoteMaterialService.selectQuoteMaterialById(Long.parseLong(id));
|
||||||
|
if (quoteMaterial != null) {
|
||||||
|
jsonObjectmaterial.put("manyimages", JSONArray.parseArray(quoteMaterial.getManyimages()));
|
||||||
|
jsonObjectmaterial.put("image", AppletControllerUtil.buildImageUrl(quoteMaterial.getImage()));
|
||||||
|
if (StringUtils.isNotBlank(quoteMaterial.getContent()) && StringUtils.isNotBlank(quoteMaterial.getManyimages())) {
|
||||||
|
jsonObjectmaterial.put("showtype", 1);
|
||||||
|
} else {
|
||||||
|
jsonObjectmaterial.put("showtype", 2);
|
||||||
|
}
|
||||||
|
jsonObjectmaterial.put("content", quoteMaterial.getContent());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 直接返回原始jsonObject,其他字段都保留
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
return new JSONObject();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 生成订单编码的工具
|
* 生成订单编码的工具
|
||||||
*
|
*
|
||||||
|
|
@ -601,8 +641,7 @@ public class OrderUtil {
|
||||||
IOrderService orderService = SpringUtils.getBean(IOrderService.class);
|
IOrderService orderService = SpringUtils.getBean(IOrderService.class);
|
||||||
|
|
||||||
// 拼团
|
// 拼团
|
||||||
if (payBefor.getServicetype()==2){
|
if (type == 6){
|
||||||
System.out.println("=== 处理拼团商品订单 ===");
|
|
||||||
GoodsOrder gorder = new GoodsOrder();
|
GoodsOrder gorder = new GoodsOrder();
|
||||||
gorder.setMainOrderId(payBefor.getOrderid());
|
gorder.setMainOrderId(payBefor.getOrderid());
|
||||||
System.out.println("查询拼团商品订单 - orderid: " + payBefor.getOrderid());
|
System.out.println("查询拼团商品订单 - orderid: " + payBefor.getOrderid());
|
||||||
|
|
@ -626,6 +665,15 @@ public class OrderUtil {
|
||||||
return payBefor.getOrderid();
|
return payBefor.getOrderid();
|
||||||
}
|
}
|
||||||
// 7上门费 8定金 9尾款 10差价
|
// 7上门费 8定金 9尾款 10差价
|
||||||
|
if (type == 11) {
|
||||||
|
GoodsOrder order = goodsOrderService.selectGoodsOrderByorderId(payBefor.getOrderid());
|
||||||
|
if (order != null) {
|
||||||
|
order.setStatus(2L);
|
||||||
|
order.setTransactionId(payBefor.getPaycode());
|
||||||
|
int updateResult = goodsOrderService.updateGoodsOrder(order);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
if (type == 7) {
|
if (type == 7) {
|
||||||
// 4. 查询对应的订单日志(上门费记录)
|
// 4. 查询对应的订单日志(上门费记录)
|
||||||
OrderLog orderLog = orderLogService.selectOrderLogById(payBefor.getOid());
|
OrderLog orderLog = orderLogService.selectOrderLogById(payBefor.getOid());
|
||||||
|
|
@ -639,7 +687,7 @@ public class OrderUtil {
|
||||||
if (updateResult > 0){
|
if (updateResult > 0){
|
||||||
ISTOPAYSIZE(payBefor.getLastorderid());
|
ISTOPAYSIZE(payBefor.getLastorderid());
|
||||||
}
|
}
|
||||||
|
// int paynum=usersPayBeforService.countByLastOrderIdAndStatus(order.getOrderId(), 1);
|
||||||
// Order order = orderService.selectOrderByOrderId(payBefor.getLastorderid());
|
// Order order = orderService.selectOrderByOrderId(payBefor.getLastorderid());
|
||||||
// if (order != null) {
|
// if (order != null) {
|
||||||
// if (order.getStatus() == 6){
|
// if (order.getStatus() == 6){
|
||||||
|
|
@ -672,17 +720,17 @@ public class OrderUtil {
|
||||||
OrderLog orderLog = orderLogService.selectDataTheFirstNew(order.getId());
|
OrderLog orderLog = orderLogService.selectDataTheFirstNew(order.getId());
|
||||||
orderLog.setPayTime(System.currentTimeMillis()/1000);
|
orderLog.setPayTime(System.currentTimeMillis()/1000);
|
||||||
orderLog.setPaid(2L);
|
orderLog.setPaid(2L);
|
||||||
orderLogService.updateOrderLog(orderLog);
|
int updateResult = orderLogService.updateOrderLog(orderLog);
|
||||||
OrderLog orderLog1 = orderLogService.selectOrderLogById(payBefor.getOid());
|
// OrderLog orderLog1 = orderLogService.selectOrderLogById(payBefor.getOid());
|
||||||
// 6. 更新订单支付状态
|
// 6. 更新订单支付状态
|
||||||
order.setStatus(4L); // 2:已支付
|
// order.setStatus(4L); // 2:已支付
|
||||||
// order.setTransactionId(transactionId);
|
// // order.setTransactionId(transactionId);
|
||||||
order.setPayTime(new Date());
|
// order.setPayTime(new Date());
|
||||||
//order.setUpdateTime(new Date());
|
// //order.setUpdateTime(new Date());
|
||||||
// 计算实际支付金额(分转换为元)
|
// // 计算实际支付金额(分转换为元)
|
||||||
BigDecimal paidAmount = orderLog1.getPrice();
|
// BigDecimal paidAmount = orderLog1.getPrice();
|
||||||
order.setPayPrice(paidAmount);
|
// order.setPayPrice(paidAmount);
|
||||||
int updateResult = orderService.updateOrder(order);
|
// int updateResult = orderService.updateOrder(order);
|
||||||
if (updateResult > 0){
|
if (updateResult > 0){
|
||||||
ISTOPAYSIZE(payBefor.getLastorderid());
|
ISTOPAYSIZE(payBefor.getLastorderid());
|
||||||
}
|
}
|
||||||
|
|
@ -768,6 +816,21 @@ public class OrderUtil {
|
||||||
System.out.println("需求报价订单处理失败,返回null");
|
System.out.println("需求报价订单处理失败,返回null");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
if (type == 2) {
|
||||||
|
System.out.println("处理次卡订单");
|
||||||
|
IUserUseSecondaryCardService userUseSecondaryCardService = SpringUtils.getBean(IUserUseSecondaryCardService.class);
|
||||||
|
UserUseSecondaryCard userUseSecondaryCard = userUseSecondaryCardService.selectUserUseSecondaryCardByorderId(payBefor.getOrderid());
|
||||||
|
System.out.println("查询到的次卡记录: " + (userUseSecondaryCard != null ? userUseSecondaryCard.toString() : "null"));
|
||||||
|
|
||||||
|
if (userUseSecondaryCard != null) {
|
||||||
|
System.out.println("更新次卡状态");
|
||||||
|
userUseSecondaryCard.setStatus(1L);
|
||||||
|
int cardUpdateResult = userUseSecondaryCardService.updateUserUseSecondaryCard(userUseSecondaryCard);
|
||||||
|
System.out.println("次卡状态更新结果: " + cardUpdateResult);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
if (type == 1) {
|
if (type == 1) {
|
||||||
System.out.println("=== 处理拼团订单 ===");
|
System.out.println("=== 处理拼团订单 ===");
|
||||||
String ptorderid= payBefor.getOrderid();
|
String ptorderid= payBefor.getOrderid();
|
||||||
|
|
@ -875,22 +938,22 @@ public class OrderUtil {
|
||||||
UserGroupBuying userGroupBuyingData = new UserGroupBuying();
|
UserGroupBuying userGroupBuyingData = new UserGroupBuying();
|
||||||
userGroupBuyingData.setOrderid(payBefor.getGrouporderid());
|
userGroupBuyingData.setOrderid(payBefor.getGrouporderid());
|
||||||
userGroupBuyingData.setPaystatus(1L);
|
userGroupBuyingData.setPaystatus(1L);
|
||||||
userGroupBuyingData.setStatus(2L);
|
userGroupBuyingData.setStatus(1L);
|
||||||
List<UserGroupBuying> userGroupBuyingList = userGroupBuyingService.selectUserGroupBuyingList(userGroupBuyingData);
|
List<UserGroupBuying> userGroupBuyingList = userGroupBuyingService.selectUserGroupBuyingList(userGroupBuyingData);
|
||||||
System.out.println("已支付的拼团人数: " + (userGroupBuyingList != null ? userGroupBuyingList.size() : 0));
|
System.out.println("已支付的拼团人数: " + (userGroupBuyingList != null ? userGroupBuyingList.size() : 0));
|
||||||
|
|
||||||
if (userGroupBuyingList.size() >= serviceGoods.getGroupnum()) {
|
if (userGroupBuyingList != null && serviceGoods != null && userGroupBuyingList.size() >= serviceGoods.getGroupnum()) {
|
||||||
System.out.println("拼团人数已满足要求,开始更新所有拼团订单状态");
|
System.out.println("拼团人数已满足要求,开始更新所有拼团订单状态");
|
||||||
for (UserGroupBuying groupBuying1 : userGroupBuyingList){
|
for (UserGroupBuying groupBuying1 : userGroupBuyingList) {
|
||||||
System.out.println("更新拼团记录 - ID: " + groupBuying1.getId() + ", 订单ID: " + groupBuying1.getPtorderid());
|
System.out.println("更新拼团记录 - ID: " + groupBuying1.getId() + ", 订单ID: " + groupBuying1.getPtorderid());
|
||||||
groupBuying1.setStatus(2L);
|
groupBuying1.setStatus(2L);
|
||||||
groupBuying1.setPaystatus(1L);
|
groupBuying1.setPaystatus(1L);
|
||||||
int groupUpdateResult = userGroupBuyingService.updateUserGroupBuying(groupBuying1);
|
int groupUpdateResult = userGroupBuyingService.updateUserGroupBuying(groupBuying1);
|
||||||
System.out.println("拼团记录更新结果: " + groupUpdateResult);
|
System.out.println("拼团记录更新结果: " + groupUpdateResult);
|
||||||
|
|
||||||
Order orderdata = orderService.selectOrderByOrderId(groupBuying1.getPtorderid());
|
Order orderdata = orderService.selectOrderByOrderId(groupBuying1.getPtorderid());
|
||||||
System.out.println("查询到的订单: " + (orderdata != null ? orderdata.getOrderId() : "null"));
|
System.out.println("查询到的订单: " + (orderdata != null ? orderdata.getOrderId() : "null"));
|
||||||
if (orderdata != null){
|
if (orderdata != null) {
|
||||||
System.out.println("更新订单状态为已成团待预约");
|
System.out.println("更新订单状态为已成团待预约");
|
||||||
orderdata.setStatus(10L);//已成团待预约
|
orderdata.setStatus(10L);//已成团待预约
|
||||||
int orderUpdateResult = orderService.updateOrder(orderdata);
|
int orderUpdateResult = orderService.updateOrder(orderdata);
|
||||||
|
|
@ -898,8 +961,6 @@ public class OrderUtil {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
System.out.println("拼团成功,所有订单状态已更新");
|
System.out.println("拼团成功,所有订单状态已更新");
|
||||||
} else {
|
|
||||||
System.out.println("拼团人数未满足要求,继续等待");
|
|
||||||
}
|
}
|
||||||
System.out.println("拼团订单处理完成,返回order: " + order.getOrderId());
|
System.out.println("拼团订单处理完成,返回order: " + order.getOrderId());
|
||||||
dispatchOrderCheck(order);
|
dispatchOrderCheck(order);
|
||||||
|
|
@ -1033,21 +1094,22 @@ public class OrderUtil {
|
||||||
public static int ISTOPAYSIZE(String orderid) {
|
public static int ISTOPAYSIZE(String orderid) {
|
||||||
IUsersPayBeforService usersPayBeforService = SpringUtils.getBean(IUsersPayBeforService.class);
|
IUsersPayBeforService usersPayBeforService = SpringUtils.getBean(IUsersPayBeforService.class);
|
||||||
IOrderService orderService = SpringUtils.getBean(IOrderService.class);
|
IOrderService orderService = SpringUtils.getBean(IOrderService.class);
|
||||||
UsersPayBefor payBefore = new UsersPayBefor();
|
int count = usersPayBeforService.countByLastOrderIdAndStatus(orderid);
|
||||||
payBefore.setLastorderid(orderid);
|
System.out.println("count订单日志: " +count);
|
||||||
payBefore.setStatus(1L);
|
if(count <= 0){
|
||||||
List<UsersPayBefor> payBeforeList = usersPayBeforService.selectUsersPayBeforList(payBefore);
|
Order order = orderService.selectOrderByOrderId(orderid);
|
||||||
Order order = orderService.selectOrderByOrderId(orderid);
|
if(order != null){
|
||||||
if (order != null) {
|
OrderLog orderLog = orderLogService.selectDataTheFirstNew(order.getId());
|
||||||
if (order.getStatus() == 6){
|
System.out.println("订单日志: " + (orderLog != null ? orderLog.toString() : "null"));
|
||||||
if (payBeforeList.isEmpty()){
|
System.out.println("orderLog.getType()订单日志: " + orderLog.getType());
|
||||||
order.setStatus(4L);
|
if(orderLog.getType().compareTo(new BigDecimal("6")) > 0){
|
||||||
|
// 修改订单状态为6
|
||||||
|
order.setStatus(6L);
|
||||||
orderService.updateOrder(order);
|
orderService.updateOrder(order);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return payBeforeList.size();
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1113,4 +1175,87 @@ public class OrderUtil {
|
||||||
result.put("msg", "无需指定工人派单");
|
result.put("msg", "无需指定工人派单");
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取维修订单派单师傅列表
|
||||||
|
* @param orderId 订单id
|
||||||
|
* @return 符合条件的师傅列表
|
||||||
|
*/
|
||||||
|
public static List<Users> getDispatchWorkerList(Long orderId) {
|
||||||
|
IUsersService usersService = SpringUtils.getBean(IUsersService.class);
|
||||||
|
IOrderService orderService = SpringUtils.getBean(IOrderService.class);
|
||||||
|
IServiceGoodsService serviceGoodsService = SpringUtils.getBean(IServiceGoodsService.class);
|
||||||
|
IUserAddressService userAddressService = SpringUtils.getBean(IUserAddressService.class);
|
||||||
|
List<Users> result = new ArrayList<>();
|
||||||
|
// 2. 查询订单、服务、地址
|
||||||
|
Order order = orderService.selectOrderById(orderId);
|
||||||
|
if (order == null) return result;
|
||||||
|
ServiceGoods serviceGoods = serviceGoodsService.selectServiceGoodsById(order.getProductId());
|
||||||
|
if (serviceGoods == null) return result;
|
||||||
|
UserAddress address = userAddressService.selectUserAddressById(order.getAddressId());
|
||||||
|
if (address == null) return result;
|
||||||
|
// 服务技能要求
|
||||||
|
List<String> requiredSkills = new ArrayList<>();
|
||||||
|
if (serviceGoods.getSkillIds() != null && !serviceGoods.getSkillIds().trim().isEmpty()) {
|
||||||
|
requiredSkills = JSONArray.parseArray(serviceGoods.getSkillIds(), String.class);
|
||||||
|
}
|
||||||
|
// 1. 查找当日签到过的师傅(type=2,is_stop=0,worker_time为当天)
|
||||||
|
String today = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
|
||||||
|
Users query = new Users();
|
||||||
|
query.setType("2");
|
||||||
|
query.setWorkerTimeStr(today);
|
||||||
|
query.setSkillArr(requiredSkills);
|
||||||
|
query.setIsStop(0);
|
||||||
|
List<Users> signedWorkers = usersService.selectUsersList(query);
|
||||||
|
if (signedWorkers.isEmpty()) return result;
|
||||||
|
// 3. 逐个师傅筛选技能和服务区域
|
||||||
|
for (Users worker : signedWorkers) {
|
||||||
|
// // 技能匹配
|
||||||
|
// boolean skillMatch = false;
|
||||||
|
// if (worker.getSkillIds() != null && !worker.getSkillIds().trim().isEmpty() && !requiredSkills.isEmpty()) {
|
||||||
|
// List<String> workerSkills = com.alibaba.fastjson.JSONArray.parseArray(worker.getSkillIds(), String.class);
|
||||||
|
// for (String s : requiredSkills) {
|
||||||
|
// if (workerSkills.contains(s)) {
|
||||||
|
// skillMatch = true;
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// if (!skillMatch) continue;
|
||||||
|
// // 区域匹配
|
||||||
|
// boolean areaMatch = false;
|
||||||
|
// // 假设addressInfo字段中包含城市ID(如有cityId字段请替换)
|
||||||
|
// String addressCityId = null;
|
||||||
|
// if (address.getAddressInfo() != null) {
|
||||||
|
// addressCityId = address.getAddressInfo(); // 这里请根据实际情况提取城市ID
|
||||||
|
// }
|
||||||
|
// if (worker.getServiceCityIds() != null && !worker.getServiceCityIds().trim().isEmpty() && addressCityId != null) {
|
||||||
|
// List<String> workerAreas = com.alibaba.fastjson.JSONArray.parseArray(worker.getServiceCityIds(), String.class);
|
||||||
|
// if (workerAreas.contains(addressCityId)) {
|
||||||
|
// areaMatch = true;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// if (!areaMatch) continue;
|
||||||
|
result.add(worker);
|
||||||
|
}
|
||||||
|
// 排序:先按等级降序,再按质保金降序
|
||||||
|
result.sort((a, b) -> {
|
||||||
|
int levelA = a.getLevel() != null ? a.getLevel() : 0;
|
||||||
|
int levelB = b.getLevel() != null ? b.getLevel() : 0;
|
||||||
|
int cmp = Integer.compare(levelB, levelA);
|
||||||
|
if (cmp != 0) return cmp;
|
||||||
|
BigDecimal marginA = a.getMargin() != null ? a.getMargin() : BigDecimal.ZERO;
|
||||||
|
BigDecimal marginB = b.getMargin() != null ? b.getMargin() : BigDecimal.ZERO;
|
||||||
|
return marginB.compareTo(marginA);
|
||||||
|
});
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// 构造一个测试用的json字符串
|
||||||
|
String testJson = "{\"project\":{\"name\":\"项目费用\",\"price\":1132.00},\"reduction\":{\"name\":\"优惠金额\",\"price\":\"1\"},\"deposit\":{\"name\":\"定金\",\"price\":\"10\"},\"basic\":[{\"name\":\"测试基建2\",\"select\":true},{\"name\":\"测试基建5\",\"select\":true},{\"name\":\"测试基建8\",\"select\":true}],\"craft\":[{\"name\":\"三挂一方柜\",\"price\":\"336.00\",\"pid\":192,\"id\":1889,\"count\":3}],\"material\":[{\"name\":\"其他辅料面议项\",\"price\":\"1.00\",\"id\":1241,\"pid\":93,\"count\":1},{\"name\":\"除味剂\",\"price\":\"28.00\",\"id\":1240,\"pid\":93,\"count\":1},{\"name\":\"除味剂\",\"price\":\"28.00\",\"id\":1196,\"pid\":93,\"count\":1},{\"name\":\"其他辅料面议项\",\"price\":\"1.00\",\"id\":1197,\"pid\":93,\"count\":1},{\"name\":\"其他辅料面议项\",\"price\":\"1.00\",\"id\":1197,\"pid\":92,\"count\":1},{\"name\":\"111\",\"price\":\"10.00\",\"id\":1250,\"pid\":92,\"count\":1},{\"name\":\"除味剂\",\"price\":\"28.00\",\"id\":1196,\"pid\":92,\"count\":2}]}";
|
||||||
|
OrderUtil util = new OrderUtil();
|
||||||
|
JSONObject result = util.getbaojiajson(testJson);
|
||||||
|
System.out.println("处理后的结果: " + result.toJSONString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -345,7 +345,7 @@ public class PayBeforeUtil {
|
||||||
* @param orderLog 订单日志实体
|
* @param orderLog 订单日志实体
|
||||||
* @param baojiajson 报价json字符串
|
* @param baojiajson 报价json字符串
|
||||||
*/
|
*/
|
||||||
public void handleQuotationPayBefore(Users user, OrderLog orderLog, String baojiajson) {
|
public void handleQuotationPayBefore(Users user, OrderLog orderLog, String baojiajson,String lastorderid) {
|
||||||
if (user == null || orderLog == null || baojiajson == null || baojiajson.trim().isEmpty()) {
|
if (user == null || orderLog == null || baojiajson == null || baojiajson.trim().isEmpty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -368,7 +368,7 @@ public class PayBeforeUtil {
|
||||||
orderLog.getId(), // oid
|
orderLog.getId(), // oid
|
||||||
null, // serviceId
|
null, // serviceId
|
||||||
8L, // type=8 定金
|
8L, // type=8 定金
|
||||||
null, null, null, null, null, 1L, null, orderLog.getOrderId()
|
null, null, null, null, null, 1L, null, lastorderid
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -403,7 +403,7 @@ public class PayBeforeUtil {
|
||||||
orderLog.getId(), // oid
|
orderLog.getId(), // oid
|
||||||
null, // serviceId
|
null, // serviceId
|
||||||
9L, // type=9 尾款
|
9L, // type=9 尾款
|
||||||
null, null, null, null, null, 1L, null, orderLog.getOrderId()
|
null, null, null, null, null, 1L, null, lastorderid
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -279,6 +279,13 @@ public class Order extends BaseEntity
|
||||||
public String getDayDate() { return dayDate; }
|
public String getDayDate() { return dayDate; }
|
||||||
public void setDayDate(String dayDate) { this.dayDate = dayDate; }
|
public void setDayDate(String dayDate) { this.dayDate = dayDate; }
|
||||||
|
|
||||||
|
private Date receiveTimeStart;
|
||||||
|
private Date receiveTimeEnd;
|
||||||
|
public Date getReceiveTimeStart() { return receiveTimeStart; }
|
||||||
|
public void setReceiveTimeStart(Date receiveTimeStart) { this.receiveTimeStart = receiveTimeStart; }
|
||||||
|
public Date getReceiveTimeEnd() { return receiveTimeEnd; }
|
||||||
|
public void setReceiveTimeEnd(Date receiveTimeEnd) { this.receiveTimeEnd = receiveTimeEnd; }
|
||||||
|
|
||||||
public void setId(Long id)
|
public void setId(Long id)
|
||||||
{
|
{
|
||||||
this.id = id;
|
this.id = id;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
package com.ruoyi.system.domain;
|
||||||
|
|
||||||
|
public class OrderTypeCount {
|
||||||
|
private int bigtype;
|
||||||
|
private int count;
|
||||||
|
|
||||||
|
public OrderTypeCount() {}
|
||||||
|
|
||||||
|
public OrderTypeCount(int bigtype, int count) {
|
||||||
|
this.bigtype = bigtype;
|
||||||
|
this.count = count;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getBigtype() { return bigtype; }
|
||||||
|
public void setBigtype(int bigtype) { this.bigtype = bigtype; }
|
||||||
|
public int getCount() { return count; }
|
||||||
|
public void setCount(int count) { this.count = count; }
|
||||||
|
}
|
||||||
|
|
@ -66,6 +66,14 @@ public class QuoteMaterial extends BaseEntity
|
||||||
@Excel(name = "附件图片")
|
@Excel(name = "附件图片")
|
||||||
private String image;
|
private String image;
|
||||||
|
|
||||||
|
@Excel(name = "附件图片")
|
||||||
|
private String manyimages;
|
||||||
|
|
||||||
|
@Excel(name = "附件图片")
|
||||||
|
private String content;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Excel(name = "是否有分佣 1:有 2:无 (默认有分佣)")
|
@Excel(name = "是否有分佣 1:有 2:无 (默认有分佣)")
|
||||||
private Integer iscommissions;
|
private Integer iscommissions;
|
||||||
|
|
||||||
|
|
@ -249,6 +257,23 @@ public class QuoteMaterial extends BaseEntity
|
||||||
this.image = image;
|
this.image = image;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String getContent() {
|
||||||
|
return content;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setContent(String content) {
|
||||||
|
this.content = content;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getManyimages() {
|
||||||
|
return manyimages;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setManyimages(String manyimages) {
|
||||||
|
this.manyimages = manyimages;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||||
|
|
|
||||||
|
|
@ -183,15 +183,40 @@ public class Users extends BaseEntity
|
||||||
private BigDecimal commissionMin;
|
private BigDecimal commissionMin;
|
||||||
private BigDecimal commissionMax;
|
private BigDecimal commissionMax;
|
||||||
private String remember_token;
|
private String remember_token;
|
||||||
|
private String workerTimeStr;
|
||||||
private Map<String, Object> order_num;
|
private Map<String, Object> order_num;
|
||||||
private Map<String, Object> goods_order_num;
|
private Map<String, Object> goods_order_num;
|
||||||
|
|
||||||
private List<String> areaList;
|
private List<String> areaList;
|
||||||
private String skill;
|
private String skill;
|
||||||
|
|
||||||
|
// 个人中心接口扩展字段
|
||||||
|
private Object levelInfo;
|
||||||
|
private String levelImg;
|
||||||
|
private String prohibit;
|
||||||
|
private List<String> skillArr;
|
||||||
|
private List<Object> serviceCityArr;
|
||||||
|
|
||||||
public void setId(Long id)
|
public Object getLevelInfo() { return levelInfo; }
|
||||||
|
public void setLevelInfo(Object levelInfo) { this.levelInfo = levelInfo; }
|
||||||
|
public String getLevelImg() { return levelImg; }
|
||||||
|
public void setLevelImg(String levelImg) { this.levelImg = levelImg; }
|
||||||
|
public String getProhibit() { return prohibit; }
|
||||||
|
public void setProhibit(String prohibit) { this.prohibit = prohibit; }
|
||||||
|
public List<String> getSkillArr() { return skillArr; }
|
||||||
|
public void setSkillArr(List<String> skillArr) { this.skillArr = skillArr; }
|
||||||
|
public List<Object> getServiceCityArr() { return serviceCityArr; }
|
||||||
|
public void setServiceCityArr(List<Object> serviceCityArr) { this.serviceCityArr = serviceCityArr; }
|
||||||
|
|
||||||
|
public String getWorkerTimeStr() {
|
||||||
|
return workerTimeStr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWorkerTimeStr(String workerTimeStr) {
|
||||||
|
this.workerTimeStr = workerTimeStr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(Long id)
|
||||||
{
|
{
|
||||||
this.id = id;
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -64,4 +64,22 @@ public interface OrderCommentMapper
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int deleteOrderCommentByIds(Long[] ids);
|
public int deleteOrderCommentByIds(Long[] ids);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据oid列表和type分页查询评价
|
||||||
|
* @param oids 订单id列表
|
||||||
|
* @param type 评价类型,可为null
|
||||||
|
* @param offset 分页起始
|
||||||
|
* @param limit 分页大小
|
||||||
|
* @return 评价列表
|
||||||
|
*/
|
||||||
|
List<OrderComment> selectOrderCommentListByOidsAndType(List<Long> oids, Long type, int offset, int limit);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据oid列表和type统计数量
|
||||||
|
* @param oids 订单id列表
|
||||||
|
* @param type 评价类型
|
||||||
|
* @return 数量
|
||||||
|
*/
|
||||||
|
int countByOidsAndType(List<Long> oids, Long type);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -70,4 +70,11 @@ public interface OrderLogMapper
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int deleteOrderLogByIds(Long[] ids);
|
public int deleteOrderLogByIds(Long[] ids);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据师傅ID查询所有服务订单oid
|
||||||
|
* @param workerId 师傅ID
|
||||||
|
* @return oid列表
|
||||||
|
*/
|
||||||
|
List<Long> selectOidListByWorkerId(Long workerId);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -59,4 +59,22 @@ public interface IOrderCommentService
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int deleteOrderCommentById(Long id);
|
public int deleteOrderCommentById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据oid列表和type分页查询评价
|
||||||
|
* @param oids 订单id列表
|
||||||
|
* @param type 评价类型,可为null
|
||||||
|
* @param offset 分页起始
|
||||||
|
* @param limit 分页大小
|
||||||
|
* @return 评价列表
|
||||||
|
*/
|
||||||
|
List<OrderComment> selectOrderCommentListByOidsAndType(List<Long> oids, Long type, int offset, int limit);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据oid列表和type统计数量
|
||||||
|
* @param oids 订单id列表
|
||||||
|
* @param type 评价类型
|
||||||
|
* @return 数量
|
||||||
|
*/
|
||||||
|
int countByOidsAndType(List<Long> oids, Long type);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -85,4 +85,11 @@ public interface IOrderLogService
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int deleteOrderLogById(Long id);
|
public int deleteOrderLogById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据师傅ID查询所有服务订单oid
|
||||||
|
* @param workerId 师傅ID
|
||||||
|
* @return oid列表
|
||||||
|
*/
|
||||||
|
List<Long> selectOidListByWorkerId(Long workerId);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,16 @@ public class OrderCommentServiceImpl implements IOrderCommentService
|
||||||
return orderCommentMapper.selectOrderCommentList(orderComment);
|
return orderCommentMapper.selectOrderCommentList(orderComment);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<OrderComment> selectOrderCommentListByOidsAndType(List<Long> oids, Long type, int offset, int limit) {
|
||||||
|
return orderCommentMapper.selectOrderCommentListByOidsAndType(oids, type, offset, limit);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int countByOidsAndType(List<Long> oids, Long type) {
|
||||||
|
return orderCommentMapper.countByOidsAndType(oids, type);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增订单评价
|
* 新增订单评价
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -130,4 +130,14 @@ public class OrderLogServiceImpl implements IOrderLogService
|
||||||
{
|
{
|
||||||
return orderLogMapper.deleteOrderLogById(id);
|
return orderLogMapper.deleteOrderLogById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据师傅ID查询所有服务订单oid
|
||||||
|
* @param workerId 师傅ID
|
||||||
|
* @return oid列表
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<Long> selectOidListByWorkerId(Long workerId) {
|
||||||
|
return orderLogMapper.selectOidListByWorkerId(workerId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -121,4 +121,36 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
#{id}
|
#{id}
|
||||||
</foreach>
|
</foreach>
|
||||||
</delete>
|
</delete>
|
||||||
|
|
||||||
|
<select id="selectOrderCommentListByOidsAndType" resultMap="OrderCommentResult">
|
||||||
|
select * from order_comment
|
||||||
|
<where>
|
||||||
|
<if test="oids != null and oids.size > 0">
|
||||||
|
and oid in
|
||||||
|
<foreach collection="oids" item="item" open="(" separator="," close=")">
|
||||||
|
#{item}
|
||||||
|
</foreach>
|
||||||
|
</if>
|
||||||
|
<if test="type != null">
|
||||||
|
and num_type = #{type}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
order by id desc
|
||||||
|
limit #{offset}, #{limit}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="countByOidsAndType" resultType="int">
|
||||||
|
select count(1) from order_comment
|
||||||
|
<where>
|
||||||
|
<if test="oids != null and oids.size > 0">
|
||||||
|
and oid in
|
||||||
|
<foreach collection="oids" item="item" open="(" separator="," close=")">
|
||||||
|
#{item}
|
||||||
|
</foreach>
|
||||||
|
</if>
|
||||||
|
<if test="type != null">
|
||||||
|
and num_type = #{type}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
@ -116,6 +116,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
select * from order_log where order_id = #{orderId} order by id DESC
|
select * from order_log where order_id = #{orderId} order by id DESC
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectOidListByWorkerId" parameterType="java.lang.Long" resultType="java.lang.Long">
|
||||||
|
select DISTINCT oid from order_log where worker_id = #{workerId}
|
||||||
|
</select>
|
||||||
|
|
||||||
<insert id="insertOrderLog" parameterType="OrderLog" useGeneratedKeys="true" keyProperty="id">
|
<insert id="insertOrderLog" parameterType="OrderLog" useGeneratedKeys="true" keyProperty="id">
|
||||||
insert into order_log
|
insert into order_log
|
||||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||||
|
|
|
||||||
|
|
@ -238,6 +238,10 @@
|
||||||
<!-- -->
|
<!-- -->
|
||||||
<!-- </if>-->
|
<!-- </if>-->
|
||||||
|
|
||||||
|
<if test="receiveTimeStart != null and receiveTimeEnd != null">
|
||||||
|
and receive_time BETWEEN #{receiveTimeStart} AND #{receiveTimeEnd}
|
||||||
|
</if>
|
||||||
|
|
||||||
</where>
|
</where>
|
||||||
order by id desc
|
order by id desc
|
||||||
</select>
|
</select>
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<result property="price" column="price" />
|
<result property="price" column="price" />
|
||||||
<result property="unit" column="unit" />
|
<result property="unit" column="unit" />
|
||||||
<result property="image" column="image" />
|
<result property="image" column="image" />
|
||||||
|
<result property="manyimages" column="manyimages" />
|
||||||
|
<result property="content" column="content" />
|
||||||
<result property="iscommissions" column="iscommissions" />
|
<result property="iscommissions" column="iscommissions" />
|
||||||
<result property="commissions" column="commissions" />
|
<result property="commissions" column="commissions" />
|
||||||
<result property="profit" column="profit" />
|
<result property="profit" column="profit" />
|
||||||
|
|
@ -19,7 +21,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<result property="updatedAt" column="updated_at" />
|
<result property="updatedAt" column="updated_at" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
<sql id="selectQuoteMaterialVo">
|
<sql id="selectQuoteMaterialVo">
|
||||||
select id, good_id, type_id, title, price, unit,profit,commissions,iscommissions,image, created_at, updated_at from quote_material
|
select id, good_id, type_id, title, price, unit,manyimages,content,profit,commissions,iscommissions,image, created_at, updated_at from quote_material
|
||||||
</sql>
|
</sql>
|
||||||
<select id="selectQuoteMaterialList" parameterType="QuoteMaterial" resultMap="QuoteMaterialResult">
|
<select id="selectQuoteMaterialList" parameterType="QuoteMaterial" resultMap="QuoteMaterialResult">
|
||||||
<include refid="selectQuoteMaterialVo"/>
|
<include refid="selectQuoteMaterialVo"/>
|
||||||
|
|
@ -58,6 +60,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<if test="title != null and title != ''">title,</if>
|
<if test="title != null and title != ''">title,</if>
|
||||||
<if test="price != null">price,</if>
|
<if test="price != null">price,</if>
|
||||||
<if test="unit != null and unit != ''">unit,</if>
|
<if test="unit != null and unit != ''">unit,</if>
|
||||||
|
<if test="manyimages != null and manyimages != ''">manyimages,</if>
|
||||||
|
<if test="content != null and content != ''">content,</if>
|
||||||
<if test="image != null and image != ''">image,</if>
|
<if test="image != null and image != ''">image,</if>
|
||||||
<if test="iscommissions != null and iscommissions != ''">iscommissions,</if>
|
<if test="iscommissions != null and iscommissions != ''">iscommissions,</if>
|
||||||
<if test="commissions != null and commissions != ''">commissions,</if>
|
<if test="commissions != null and commissions != ''">commissions,</if>
|
||||||
|
|
@ -71,6 +75,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<if test="title != null and title != ''">#{title},</if>
|
<if test="title != null and title != ''">#{title},</if>
|
||||||
<if test="price != null">#{price},</if>
|
<if test="price != null">#{price},</if>
|
||||||
<if test="unit != null and unit != ''">#{unit},</if>
|
<if test="unit != null and unit != ''">#{unit},</if>
|
||||||
|
<if test="manyimages != null and manyimages != ''">#{manyimages},</if>
|
||||||
|
<if test="content != null and content != ''">#{content},</if>
|
||||||
<if test="image != null and image != ''">#{image},</if>
|
<if test="image != null and image != ''">#{image},</if>
|
||||||
<if test="iscommissions != null and iscommissions != ''">#{iscommissions},</if>
|
<if test="iscommissions != null and iscommissions != ''">#{iscommissions},</if>
|
||||||
<if test="commissions != null and commissions != ''">#{commissions},</if>
|
<if test="commissions != null and commissions != ''">#{commissions},</if>
|
||||||
|
|
@ -88,6 +94,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<if test="title != null and title != ''">title = #{title},</if>
|
<if test="title != null and title != ''">title = #{title},</if>
|
||||||
<if test="price != null">price = #{price},</if>
|
<if test="price != null">price = #{price},</if>
|
||||||
<if test="unit != null and unit != ''">unit = #{unit},</if>
|
<if test="unit != null and unit != ''">unit = #{unit},</if>
|
||||||
|
<if test="manyimages != null and manyimages != ''">manyimages = #{manyimages},</if>
|
||||||
|
<if test="content != null and content != ''">content = #{content},</if>
|
||||||
<if test="image != null and image != ''">image = #{image},</if>
|
<if test="image != null and image != ''">image = #{image},</if>
|
||||||
<if test="iscommissions != null and iscommissions != ''">iscommissions = #{iscommissions},</if>
|
<if test="iscommissions != null and iscommissions != ''">iscommissions = #{iscommissions},</if>
|
||||||
<if test="commissions != null and commissions != ''">commissions = #{commissions},</if>
|
<if test="commissions != null and commissions != ''">commissions = #{commissions},</if>
|
||||||
|
|
|
||||||
|
|
@ -201,6 +201,18 @@
|
||||||
<if test="skill != null and skill != ''">
|
<if test="skill != null and skill != ''">
|
||||||
and skill_ids like concat('%"', #{skill}, '"%')
|
and skill_ids like concat('%"', #{skill}, '"%')
|
||||||
</if>
|
</if>
|
||||||
|
<if test="workerTimeStr != null and workerTimeStr != ''">
|
||||||
|
and DATE_FORMAT(worker_time, '%Y-%m-%d') = #{workerTimeStr}
|
||||||
|
</if>
|
||||||
|
<if test="skillArr != null and skillArr.size > 0">
|
||||||
|
and (
|
||||||
|
<foreach collection="skillArr" item="sid" separator=" OR ">
|
||||||
|
JSON_CONTAINS(skill_ids, CONCAT('"', #{sid}, '"'), '$')
|
||||||
|
OR FIND_IN_SET(#{sid}, REPLACE(REPLACE(REPLACE(skill_ids, '[', ''), ']', ''), '"', ''))
|
||||||
|
OR skill_ids = #{sid}
|
||||||
|
</foreach>
|
||||||
|
)
|
||||||
|
</if>
|
||||||
</where>
|
</where>
|
||||||
order by id desc
|
order by id desc
|
||||||
</select>
|
</select>
|
||||||
|
|
|
||||||
|
|
@ -750,4 +750,65 @@ export default {
|
||||||
handleExport() {
|
handleExport() {
|
||||||
this.download('system/ServiceGoods/export', {
|
this.download('system/ServiceGoods/export', {
|
||||||
...this.queryParams
|
...this.queryParams
|
||||||
}, `
|
});
|
||||||
|
},
|
||||||
|
// 添加问答
|
||||||
|
addQuestion() {
|
||||||
|
this.form.questionsArray.push({
|
||||||
|
question: '',
|
||||||
|
answer: ''
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 删除问答
|
||||||
|
removeQuestion(index) {
|
||||||
|
this.form.questionsArray.splice(index, 1);
|
||||||
|
},
|
||||||
|
// 问答内容变化
|
||||||
|
handleQuestionChange() {
|
||||||
|
// 当问答内容变化时,重新验证表单
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.form.validateField('questionsArray');
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 打开编辑对话框
|
||||||
|
openEditDialog(row, field, label) {
|
||||||
|
// 深拷贝,避免直接引用导致视图未更新
|
||||||
|
this.editRow = JSON.parse(JSON.stringify(row));
|
||||||
|
this.editField = field;
|
||||||
|
this.editFieldLabel = label;
|
||||||
|
this.editFieldValue = row[field];
|
||||||
|
this.editDialogVisible = true;
|
||||||
|
},
|
||||||
|
// 保存编辑的值
|
||||||
|
saveEditField() {
|
||||||
|
// 更新本地数据
|
||||||
|
this.editRow[this.editField] = this.editFieldValue;
|
||||||
|
// 调用后端接口保存
|
||||||
|
updateServiceGoods(this.editRow).then(response => {
|
||||||
|
this.$modal.msgSuccess("保存成功");
|
||||||
|
this.editDialogVisible = false;
|
||||||
|
this.getList(); // 刷新主表
|
||||||
|
}).catch(error => {
|
||||||
|
this.$modal.msgError("保存失败,请稍后重试");
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 取消编辑
|
||||||
|
cancelEdit() {
|
||||||
|
this.editDialogVisible = false;
|
||||||
|
},
|
||||||
|
// 获取关联服务列表
|
||||||
|
getForServiceList(callback) {
|
||||||
|
getselectTypeList(1).then(response => {
|
||||||
|
this.forServiceList = response.data;
|
||||||
|
if (callback) {
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
/* 你的样式代码 */
|
||||||
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -124,6 +124,16 @@
|
||||||
<image-preview :src="scope.row.image" :width="50" :height="50"/>
|
<image-preview :src="scope.row.image" :width="50" :height="50"/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column label="轮播图" align="center" prop="manyimages" width="120">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<image-preview v-for="img in (scope.row.manyimages ? scope.row.manyimages.split(',') : [])" :key="img" :src="img" :width="40" :height="40" style="margin-right:2px;" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="简介" align="center" prop="content" width="200">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div v-html="scope.row.content"></div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column label="是否有分佣" align="center" prop="iscommissions">
|
<el-table-column label="是否有分佣" align="center" prop="iscommissions">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<dict-tag :options="dict.type.iscommissions" :value="scope.row.iscommissions"/>
|
<dict-tag :options="dict.type.iscommissions" :value="scope.row.iscommissions"/>
|
||||||
|
|
@ -161,68 +171,75 @@
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- 添加或修改项目报价--物料信息对话框 -->
|
<!-- 添加或修改项目报价--物料信息对话框 -->
|
||||||
<el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
|
<el-drawer :title="title" :visible.sync="open" size="600px" direction="rtl" :with-header="true" append-to-body>
|
||||||
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
|
<div style="padding: 0 20px;">
|
||||||
<el-form-item label="服务项目" prop="goodsintids">
|
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
|
||||||
<el-select v-model="form.goodsintids" multiple filterable placeholder="请选择服务项目" style="width: 100%">
|
<el-form-item label="服务项目" prop="goodsintids">
|
||||||
<el-option
|
<el-select v-model="form.goodsintids" multiple filterable placeholder="请选择服务项目" style="width: 100%">
|
||||||
v-for="type in typeDataList"
|
<el-option
|
||||||
:key="type.id"
|
v-for="type in typeDataList"
|
||||||
:label="type.title"
|
:key="type.id"
|
||||||
:value="type.id"
|
:label="type.title"
|
||||||
></el-option>
|
:value="type.id"
|
||||||
</el-select>
|
></el-option>
|
||||||
</el-form-item>
|
</el-select>
|
||||||
<el-form-item label="类型" prop="typeintids">
|
|
||||||
<el-select v-model="form.typeintids" multiple filterable placeholder="请选择类型" style="width: 100%">
|
|
||||||
<el-option
|
|
||||||
v-for="type in materialTypeList"
|
|
||||||
:key="type.id"
|
|
||||||
:label="type.title"
|
|
||||||
:value="type.id"
|
|
||||||
></el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="标题" prop="title">
|
|
||||||
<el-input v-model="form.title" placeholder="请输入标题" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="价格" prop="price">
|
|
||||||
<div style="position: relative;">
|
|
||||||
<el-input v-model="form.price" placeholder="请输入价格" />
|
|
||||||
<span style="position: absolute; left: 10px; top: 50%; transform: translateY(-50%); color: #E6A23C; font-weight: bold; pointer-events: none;">¥</span>
|
|
||||||
</div>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="单位" prop="unit">
|
|
||||||
<el-input v-model="form.unit" placeholder="请输入单位" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="附件图片" prop="image">
|
|
||||||
<image-upload v-model="form.image"/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="是否有分佣" prop="iscommissions">
|
|
||||||
<el-radio-group v-model="form.iscommissions" >
|
|
||||||
<el-radio
|
|
||||||
v-for="dict in dict.type.iscommissions"
|
|
||||||
:key="dict.value"
|
|
||||||
:label="parseInt(dict.value)"
|
|
||||||
>{{dict.label}}</el-radio>
|
|
||||||
</el-radio-group>
|
|
||||||
</el-form-item>
|
|
||||||
<template v-if="form.iscommissions == 1">
|
|
||||||
<el-form-item label="分佣比例" prop="commissions">
|
|
||||||
<el-input-number v-model="form.commissions" placeholder="请输入分佣比例" />
|
|
||||||
<span style="margin-left: 8px; color: #888; font-size: 12px;">系统默认分佣比例为 {{ material_commissions }}%</span>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="净利润" prop="profit">
|
<el-form-item label="类型" prop="typeintids">
|
||||||
<el-input-number v-model="form.profit" placeholder="请输入净利润" />
|
<el-select v-model="form.typeintids" multiple filterable placeholder="请选择类型" style="width: 100%">
|
||||||
|
<el-option
|
||||||
|
v-for="type in materialTypeList"
|
||||||
|
:key="type.id"
|
||||||
|
:label="type.title"
|
||||||
|
:value="type.id"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
<el-form-item label="标题" prop="title">
|
||||||
|
<el-input v-model="form.title" placeholder="请输入标题" />
|
||||||
</el-form>
|
</el-form-item>
|
||||||
<div class="dialog-footer" style="text-align:left;margin-top:20px;">
|
<el-form-item label="价格" prop="price">
|
||||||
<el-button @click="reset">重置</el-button>
|
<div style="position: relative;">
|
||||||
<el-button type="primary" @click="submitForm">提交</el-button>
|
<el-input v-model="form.price" placeholder="请输入价格" />
|
||||||
|
<span style="position: absolute; left: 10px; top: 50%; transform: translateY(-50%); color: #E6A23C; font-weight: bold; pointer-events: none;">¥</span>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="单位" prop="unit">
|
||||||
|
<el-input v-model="form.unit" placeholder="请输入单位" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="附件图片" prop="image">
|
||||||
|
<image-upload v-model="form.image"/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="轮播图" prop="manyimages">
|
||||||
|
<image-upload v-model="form.manyimages" multiple />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="简介" prop="content">
|
||||||
|
<editor v-model="form.content" :height="200" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="是否有分佣" prop="iscommissions">
|
||||||
|
<el-radio-group v-model="form.iscommissions" >
|
||||||
|
<el-radio
|
||||||
|
v-for="dict in dict.type.iscommissions"
|
||||||
|
:key="dict.value"
|
||||||
|
:label="parseInt(dict.value)"
|
||||||
|
>{{dict.label}}</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
<template v-if="form.iscommissions == 1">
|
||||||
|
<el-form-item label="分佣比例" prop="commissions">
|
||||||
|
<el-input-number v-model="form.commissions" placeholder="请输入分佣比例" />
|
||||||
|
<span style="margin-left: 8px; color: #888; font-size: 12px;">系统默认分佣比例为 {{ material_commissions }}%</span>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="净利润" prop="profit">
|
||||||
|
<el-input-number v-model="form.profit" placeholder="请输入净利润" />
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
</el-form>
|
||||||
|
<div class="dialog-footer" style="text-align:left;margin-top:20px;">
|
||||||
|
<el-button @click="reset">重置</el-button>
|
||||||
|
<el-button type="primary" @click="submitForm">提交</el-button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-dialog>
|
</el-drawer>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
@ -286,6 +303,8 @@ export default {
|
||||||
iscommissions: null,
|
iscommissions: null,
|
||||||
commissions: null,
|
commissions: null,
|
||||||
profit: null,
|
profit: null,
|
||||||
|
manyimages: [],
|
||||||
|
content: '',
|
||||||
createdAt: null,
|
createdAt: null,
|
||||||
updatedAt: null
|
updatedAt: null
|
||||||
},
|
},
|
||||||
|
|
@ -344,6 +363,8 @@ export default {
|
||||||
iscommissions: null,
|
iscommissions: null,
|
||||||
commissions: null,
|
commissions: null,
|
||||||
profit: null,
|
profit: null,
|
||||||
|
manyimages: [],
|
||||||
|
content: '',
|
||||||
createdAt: null,
|
createdAt: null,
|
||||||
updatedAt: null
|
updatedAt: null
|
||||||
}
|
}
|
||||||
|
|
@ -418,7 +439,9 @@ export default {
|
||||||
this.form = {
|
this.form = {
|
||||||
...response.data,
|
...response.data,
|
||||||
goodsintids: response.data.goodsintids || [],
|
goodsintids: response.data.goodsintids || [],
|
||||||
typeintids: response.data.typeintids || []
|
typeintids: response.data.typeintids || [],
|
||||||
|
manyimages: Array.isArray(response.data.manyimages) ? response.data.manyimages : (typeof response.data.manyimages === 'string' && response.data.manyimages ? response.data.manyimages.split(',') : []),
|
||||||
|
content: response.data.content || ''
|
||||||
}
|
}
|
||||||
// 如果分佣比例为空,设置为 material_commissions
|
// 如果分佣比例为空,设置为 material_commissions
|
||||||
if (this.form.commissions === null || this.form.commissions === undefined || this.form.commissions === '') {
|
if (this.form.commissions === null || this.form.commissions === undefined || this.form.commissions === '') {
|
||||||
|
|
@ -436,6 +459,10 @@ export default {
|
||||||
submitForm() {
|
submitForm() {
|
||||||
this.$refs["form"].validate(valid => {
|
this.$refs["form"].validate(valid => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
|
// 处理轮播图为JSON字符串(数组形式)
|
||||||
|
if (Array.isArray(this.form.manyimages)) {
|
||||||
|
this.form.manyimages = JSON.stringify(this.form.manyimages.filter(Boolean));
|
||||||
|
}
|
||||||
if (this.form.id != null) {
|
if (this.form.id != null) {
|
||||||
updateQuoteMaterial(this.form).then(response => {
|
updateQuoteMaterial(this.form).then(response => {
|
||||||
this.$modal.msgSuccess("修改成功")
|
this.$modal.msgSuccess("修改成功")
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue