dev
parent
64ad813649
commit
c2894722ac
|
|
@ -90,7 +90,7 @@ public class Config extends JFinalConfig {
|
|||
public static DeviceThread deviceThread = new DeviceThread();
|
||||
public static SocketIOService socketio = null;
|
||||
private static boolean client_run = true;
|
||||
public static final String CLINET_VERSION = "20200930";
|
||||
public static final String CLINET_VERSION = "20201009";
|
||||
|
||||
public static String getRootPath() {
|
||||
return PathKit.getWebRootPath()
|
||||
|
|
|
|||
|
|
@ -7,4 +7,5 @@ import java.util.Map;
|
|||
|
||||
public class SvrCacheData {
|
||||
public static Map<Integer, Supermarket> SUP_CACHE = new HashMap<>(); // 砂站基础信息缓存,常用配置数据,避免重复请求数据库
|
||||
public static Map<Integer, Long> SUP_HEARTBEAT = new HashMap<>(); // 砂站客户端心跳时间戳
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@ package com.cowr.service.ssjygl.netty;
|
|||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.cowr.common.enums.Enums;
|
||||
import com.cowr.model.Supermarket;
|
||||
import com.cowr.service.ssjygl.main.SvrCacheData;
|
||||
import com.cowr.service.ssjygl.synctask.SyncTaskService;
|
||||
import com.jfinal.log.Log;
|
||||
import io.netty.bootstrap.ServerBootstrap;
|
||||
|
|
@ -186,6 +188,17 @@ public class NettyServer {
|
|||
log.debug("supermarket_id %s 注册成功, client version %s", supermarket_id, json.get("clinet_version"));
|
||||
} else if (Enums.MsgTarget.HEARTBEAT.name().equals(target)) {
|
||||
printlog("收到心跳 supermarket " + map.get(ctx.channel()) + ", 已连接客户端总数: " + map.size());
|
||||
|
||||
if(map.containsKey(ctx.channel())){
|
||||
Integer supermarket_id = map.get(ctx.channel());
|
||||
|
||||
if(SvrCacheData.SUP_CACHE.containsKey(supermarket_id)){
|
||||
Supermarket supermarket = SvrCacheData.SUP_CACHE.get(supermarket_id);
|
||||
|
||||
// 只保存有效 supermarket_id
|
||||
SvrCacheData.SUP_HEARTBEAT.put(supermarket.getId(), System.currentTimeMillis());
|
||||
}
|
||||
}
|
||||
} else if (Enums.MsgTarget.SYNCTASK.name().equals(target)) {
|
||||
JSONObject data = json.getJSONObject("data");
|
||||
boolean ret = SyncTaskService.me.recv(data, map.get(ctx.channel()));
|
||||
|
|
|
|||
|
|
@ -0,0 +1,165 @@
|
|||
package com.cowr.service.ssjygl.order.ordertemp;
|
||||
|
||||
import com.cowr.common.enums.Enums;
|
||||
import com.cowr.common.enums.OrderStateEnum;
|
||||
import com.cowr.common.view.Result;
|
||||
import com.cowr.model.*;
|
||||
import com.cowr.service.ssjygl.synctask.SyncTaskService;
|
||||
import com.cowr.service.ssjygl.system.sysuser.SysuserSyncService;
|
||||
import com.cowr.ssjygl.modifylog.ModifyLogService;
|
||||
import com.cowr.ssjygl.prepay.prepaycustomer.PrepayCustomerService;
|
||||
import com.jfinal.log.Log;
|
||||
import com.jfinal.plugin.activerecord.Db;
|
||||
import com.jfinal.plugin.activerecord.IAtom;
|
||||
import com.jfinal.plugin.activerecord.Record;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
public class OrderTempSyncService {
|
||||
public static OrderTempSyncService me = new OrderTempSyncService();
|
||||
private static Log log = Log.getLog(OrderTempSyncService.class);
|
||||
|
||||
public Result cancel(String sn, String invalid_memo, Sysuser sysuser, String password) {
|
||||
// TODO: 判断权限
|
||||
|
||||
OrderTemp order = OrderTemp.dao.findById(sn);
|
||||
|
||||
if (order == null) {
|
||||
return Result.failedstr("按订单号【%s】未找到记录", sn);
|
||||
}
|
||||
|
||||
int orderstate = order.getState();
|
||||
|
||||
// 订单已经完成
|
||||
if (orderstate == OrderStateEnum.RECEIVED.getStateid()) {
|
||||
// 已完成订单,再删除时需要重新验证密码
|
||||
Sysuser chkuser = SysuserSyncService.me.getUserByWhere(null, sysuser.getPhone(), password);
|
||||
|
||||
if (chkuser == null) {
|
||||
log.debug("用户输入密码错误");
|
||||
return Result.permissionDenied();
|
||||
}
|
||||
}
|
||||
|
||||
if (orderstate == OrderStateEnum.INVALID.getStateid()) {
|
||||
return Result.failed("订单已经取消");
|
||||
}
|
||||
|
||||
order.setState(OrderStateEnum.INVALID.getStateid()); // 将订单状态置为 9
|
||||
|
||||
Record logrecord = new Record();
|
||||
logrecord.set("sn", sn);
|
||||
logrecord.set("state", OrderStateEnum.INVALID.getStateid());
|
||||
|
||||
boolean ret = Db.tx(new IAtom() {
|
||||
@Override
|
||||
public boolean run() {
|
||||
try {
|
||||
SyncTask synctask = new SyncTask();
|
||||
synctask.addUpdateData(order);
|
||||
|
||||
boolean ret = order.update();
|
||||
|
||||
if (!ret) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// if(oldstate == OrderStateEnum.LEAVE.getStateid() ){
|
||||
// Bocomm bocomm = Bocomm.dao.findFirst(
|
||||
// "select * from bocomm t where t.order_sn = ? and t.state <= ? limit 0,1",
|
||||
// sn,
|
||||
// OrderStateEnum.RECEIVED.getStateid()
|
||||
// );
|
||||
//
|
||||
// if(bocomm != null){
|
||||
// ret = BocommService.me.closeTran(bocomm);
|
||||
// }
|
||||
// }
|
||||
|
||||
// 是集团客户订单
|
||||
// if (order.getOrderclusterId() != null) {
|
||||
// Ordercluster ordercluster = Ordercluster.dao.findById(order.getOrderclusterId());
|
||||
//
|
||||
// if (ordercluster == null) {
|
||||
// log.error("关联集团订单信息未找到,ordercluster_id:【%s】", order.getOrderclusterId());
|
||||
// return false;
|
||||
// }
|
||||
// }
|
||||
|
||||
// 已开具发票
|
||||
if (order.getInvoiceCode() != null) {
|
||||
InvoiceLog invoiceLog = InvoiceLog.dao.findFirst(
|
||||
"select * from invoice_log t where invoice_number = ? and code = ? limit 1 ",
|
||||
order.getInvoiceNumber(), order.getInvoiceCode());
|
||||
|
||||
if (invoiceLog != null) {
|
||||
invoiceLog.setInvalidUserId(sysuser.getId());
|
||||
invoiceLog.setInvalidUserName(sysuser.getName());
|
||||
invoiceLog.setInvalidTime(new Date());
|
||||
invoiceLog.setInvalidMemo(invalid_memo);
|
||||
invoiceLog.setState(OrderStateEnum.INVALID.getStateid());
|
||||
|
||||
ret = invoiceLog.update();
|
||||
|
||||
if (!ret) {
|
||||
return false;
|
||||
}
|
||||
|
||||
synctask.addUpdateData(invoiceLog);
|
||||
} else {
|
||||
log.error("订单[%s]没有找到开票记录", order.getSn());
|
||||
}
|
||||
}
|
||||
|
||||
// 是预付费订单
|
||||
if (order.getIsprepaid() == 1) {
|
||||
Customer customer = Customer.dao.findById(order.getCustomerId());
|
||||
|
||||
if (customer == null) {
|
||||
log.error("关联预付费客户信息未找到,customer_id:【%s】", order.getCustomerId());
|
||||
return false;
|
||||
}
|
||||
|
||||
PrepayCustomer prepayCustomer = PrepayCustomerService.me.getPrepayCustomer(customer.getId());
|
||||
|
||||
if (prepayCustomer != null) {
|
||||
|
||||
if (prepayCustomer.getSurplus() == null) {
|
||||
prepayCustomer.setSurplus(order.getTotalPrice());
|
||||
} else {
|
||||
prepayCustomer.setSurplus(prepayCustomer.getSurplus().add(order.getTotalPrice()));
|
||||
}
|
||||
|
||||
synctask.addUpdateData(prepayCustomer);
|
||||
|
||||
ret = prepayCustomer.update();
|
||||
}
|
||||
}
|
||||
|
||||
if (!ret) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Stock stock = Stock.dao.findByIds(order.getSupermarketId(), order.getProductId());
|
||||
if (stock == null) {
|
||||
log.error("未找到库存信息 %s, %s", order.getSupermarketId(), order.getProductId());
|
||||
return false;
|
||||
}
|
||||
|
||||
stock.setStockWeight(stock.getStockWeight().add(order.getWeight())); // 取消销售加库存
|
||||
ret = stock.update();
|
||||
|
||||
synctask.addUpdateData(stock);
|
||||
|
||||
return ret && SyncTaskService.me.save(synctask)
|
||||
&& ModifyLogService.me.save(order.tablename, "sn", logrecord.toJson(), Enums.DataOpType.UPDATE.getId(), sysuser);
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return ret ? Result.success(order) : Result.failed("取消失败");
|
||||
}
|
||||
}
|
||||
|
|
@ -70,8 +70,9 @@ public class SysuserController extends Controller {
|
|||
String receiver_name = get("receiver_name");
|
||||
String receiver_phone = get("receiver_phone");
|
||||
String receiver_address = get("receiver_address");
|
||||
Integer invoice_type = getInt("invoice_type", 1);
|
||||
|
||||
renderJson(SysuserSyncService.me.saveCustomer(model, texpayer_name, receiver_name, receiver_phone, receiver_address, tokenuser));
|
||||
renderJson(SysuserSyncService.me.saveCustomer(model, texpayer_name, receiver_name, receiver_phone, receiver_address, invoice_type, tokenuser));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -135,9 +136,10 @@ public class SysuserController extends Controller {
|
|||
String receiver_name = get("receiver_name");
|
||||
String receiver_phone = get("receiver_phone");
|
||||
String receiver_address = get("receiver_address");
|
||||
Integer invoice_type = getInt("invoice_type", 1);
|
||||
|
||||
Sysuser model = getModel(Sysuser.class, "", true); // 忽略不在model中的字段
|
||||
renderJson(SysuserSyncService.me.updateCustomer(model, texpayer_name, receiver_name, receiver_phone, receiver_address, tokenuser));
|
||||
renderJson(SysuserSyncService.me.updateCustomer(model, texpayer_name, receiver_name, receiver_phone, receiver_address, invoice_type, tokenuser));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -152,6 +154,7 @@ public class SysuserController extends Controller {
|
|||
Integer entity_id = getInt("entity_id");
|
||||
renderJson(Result.object(SysuserSyncService.me.find(pp, name, phone, del, type, entity_id)));
|
||||
}
|
||||
|
||||
/**
|
||||
* sysuser 用户列表
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@ public class SysuserCustomerValidator extends CrudParamValidator {
|
|||
if (StrKit.notBlank(c.get("receiver_phone"))) {
|
||||
validateRegex("receiver_phone", StrUtil.regphone, "receiver_phone", "receiver_phone 必须为手机号格式");
|
||||
}
|
||||
|
||||
if (StrKit.notBlank(c.get("invoice_type"))) {
|
||||
validateInteger("invoice_type", 1, 2, "invoice_type", "invoice_type 范围 1~2");
|
||||
}
|
||||
}
|
||||
|
||||
protected void handleError(Controller c) {
|
||||
|
|
|
|||
|
|
@ -356,6 +356,7 @@ public class SysuserSyncService extends BaseSyncService {
|
|||
String receiver_name,
|
||||
String receiver_phone,
|
||||
String receiver_address,
|
||||
Integer invoice_type,
|
||||
Sysuser tokenuser
|
||||
) {
|
||||
try {
|
||||
|
|
@ -371,6 +372,7 @@ public class SysuserSyncService extends BaseSyncService {
|
|||
Customer customer = new Customer();
|
||||
customer.setName(texpayer_name);
|
||||
customer.setTexpayerName(texpayer_name);
|
||||
customer.setInvoiceType(invoice_type);
|
||||
|
||||
if (customer.checkDuplicate("name")) {
|
||||
return Result.failed(false, "名称已存在");
|
||||
|
|
@ -448,6 +450,7 @@ public class SysuserSyncService extends BaseSyncService {
|
|||
String receiver_name,
|
||||
String receiver_phone,
|
||||
String receiver_address,
|
||||
Integer invoice_type,
|
||||
Sysuser tokenuser
|
||||
) {
|
||||
try {
|
||||
|
|
@ -485,6 +488,7 @@ public class SysuserSyncService extends BaseSyncService {
|
|||
|
||||
customer.setName(texpayer_name);
|
||||
customer.setTexpayerName(texpayer_name);
|
||||
customer.setInvoiceType(invoice_type);
|
||||
|
||||
chkobj.setName(model.getName());
|
||||
chkobj.setPhone(model.getPhone());
|
||||
|
|
|
|||
Loading…
Reference in New Issue