From 2e02bcda4ab8fcc24f840e0a11492bedc2526b3d Mon Sep 17 00:00:00 2001 From: "lisai17@sina.com" Date: Thu, 27 Aug 2020 14:24:02 +0800 Subject: [PATCH] . --- .../ssjygl/customer/CustomerValidator.java | 2 +- .../TransportCompanyValidator.java | 2 +- .../receive/InvoiceReceiveSyncService.java | 2 + .../system/sysuser/SysuserController.java | 41 ++++ .../sysuser/SysuserCustomerValidator.java | 27 +++ .../system/sysuser/SysuserSyncService.java | 210 +++++++++++++++++- .../src/main/resources/job.properties | 3 +- 7 files changed, 282 insertions(+), 5 deletions(-) create mode 100644 ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/system/sysuser/SysuserCustomerValidator.java diff --git a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/customer/CustomerValidator.java b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/customer/CustomerValidator.java index 7f16ade..1b3eefd 100644 --- a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/customer/CustomerValidator.java +++ b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/customer/CustomerValidator.java @@ -25,7 +25,7 @@ public class CustomerValidator extends CrudParamValidator { validateString("name", 1, 128, "name", "name 长度 1~128"); validateString("address", 0, 256, "address", "address 长度 0~256"); validateString("phone", 0, 11, "phone", "phone 长度 0~11"); - validateString("texpayer_name", 1, 255, "texpayer_name", "texpayer_name 长度 0~255"); + validateString("texpayer_name", 1, 128, "texpayer_name", "texpayer_name 长度 0~128"); validateString("texpayer_num", 0, 20, "texpayer_num", "texpayer_num 长度 0~20"); validateString("bank_name", 0, 128, "bank_name", "bank_name 长度 0~128"); diff --git a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/transportcompany/TransportCompanyValidator.java b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/transportcompany/TransportCompanyValidator.java index a65a4bb..4b74669 100644 --- a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/transportcompany/TransportCompanyValidator.java +++ b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/transportcompany/TransportCompanyValidator.java @@ -32,7 +32,7 @@ public class TransportCompanyValidator extends CrudParamValidator { validateString("address", 0, 256, "address", "address 长度 0~256"); validateString("phone", 0, 11, "phone", "phone 长度 0~11"); - validateString("texpayer_name", 0, 255, "texpayer_name", "texpayer_name 长度 0~255"); + validateString("texpayer_name", 0, 128, "texpayer_name", "texpayer_name 长度 0~128"); validateString("texpayer_num", 0, 20, "texpayer_num", "texpayer_num 长度 0~20"); validateString("bank_name", 0, 128, "bank_name", "bank_name 长度 0~128"); validateString("bank_account", 0, 20, "bank_account", "bank_account 长度 0~20"); diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/invoice/receive/InvoiceReceiveSyncService.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/invoice/receive/InvoiceReceiveSyncService.java index a63346a..acd04a6 100644 --- a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/invoice/receive/InvoiceReceiveSyncService.java +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/invoice/receive/InvoiceReceiveSyncService.java @@ -15,6 +15,8 @@ import com.jfinal.log.Log; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.IAtom; +import java.util.List; + public class InvoiceReceiveSyncService extends BaseSyncService { private static Log log = Log.getLog(InvoiceReceiveSyncService.class); public static InvoiceReceiveSyncService me = new InvoiceReceiveSyncService(); diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/system/sysuser/SysuserController.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/system/sysuser/SysuserController.java index 116a36a..cbe4000 100644 --- a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/system/sysuser/SysuserController.java +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/system/sysuser/SysuserController.java @@ -51,6 +51,29 @@ public class SysuserController extends Controller { renderJson(SysuserSyncService.me.save(model, tokenuser)); } + + /** + * 新增 sysuser + */ + @Before(SysuserCustomerValidator.class) + public void saveCustomer() { + Sysuser tokenuser = SysuserSyncService.me.getSysuserByToken(get("token")); + + if (tokenuser == null) { + renderJson(Result.noauth()); + return; + } + + Sysuser model = getModel(Sysuser.class, "", true); // 忽略不在model中的字段 + + String texpayer_name = get("texpayer_name"); + String receiver_name = get("receiver_name"); + String receiver_phone = get("receiver_phone"); + String receiver_address = get("receiver_address"); + + renderJson(SysuserSyncService.me.saveCustomer(model, texpayer_name, receiver_name, receiver_phone, receiver_address, tokenuser)); + } + /** * 删除 sysuser */ @@ -99,6 +122,24 @@ public class SysuserController extends Controller { renderJson(SysuserSyncService.me.update(model, tokenuser)); } + @Before(SysuserCustomerValidator.class) + public void editCustomer() { + Sysuser tokenuser = SysuserSyncService.me.getSysuserByToken(get("token")); + + if (tokenuser == null) { + renderJson(Result.noauth()); + return; + } + + String texpayer_name = get("texpayer_name"); + String receiver_name = get("receiver_name"); + String receiver_phone = get("receiver_phone"); + String receiver_address = get("receiver_address"); + + Sysuser model = getModel(Sysuser.class, "", true); // 忽略不在model中的字段 + renderJson(SysuserSyncService.me.updateCustomer(model, texpayer_name, receiver_name, receiver_phone, receiver_address, tokenuser)); + } + /** * 分页查找 sysuser */ diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/system/sysuser/SysuserCustomerValidator.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/system/sysuser/SysuserCustomerValidator.java new file mode 100644 index 0000000..66207da --- /dev/null +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/system/sysuser/SysuserCustomerValidator.java @@ -0,0 +1,27 @@ +package com.cowr.service.ssjygl.system.sysuser; + +import com.cowr.common.utils.StrUtil; +import com.cowr.common.validator.CrudParamValidator; +import com.cowr.common.view.Result; +import com.jfinal.core.Controller; +import com.jfinal.kit.StrKit; + +public class SysuserCustomerValidator extends CrudParamValidator { + @Override + protected void validate(Controller c) { + validateRegex("phone", StrUtil.regphone, "phone", "phone 必须为手机号格式"); + validateString("name", 1, 8, "name", "name 长度1~8"); // 必填项,字段长度必须大于0,不能超过最大长度 + + validateString("texpayer_name", 1, 128, "texpayer_name", "texpayer_name 长度 0~128"); + validateString("receiver_name", 0, 128, "receiver_name", "receiver_name 长度 1~128"); + validateString("receiver_address", 0, 256, "receiver_address", "receiver_address 长度 0~256"); + + if (StrKit.notBlank(c.get("receiver_phone"))) { + validateRegex("receiver_phone", StrUtil.regphone, "receiver_phone", "receiver_phone 必须为手机号格式"); + } + } + + protected void handleError(Controller c) { + c.renderJson(Result.failed(getErrmsg())); + } +} diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/system/sysuser/SysuserSyncService.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/system/sysuser/SysuserSyncService.java index 8de9c38..836a524 100644 --- a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/system/sysuser/SysuserSyncService.java +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/system/sysuser/SysuserSyncService.java @@ -359,6 +359,214 @@ public class SysuserSyncService extends BaseSyncService { } + public Result saveCustomer( + Sysuser model, + String texpayer_name, + String receiver_name, + String receiver_phone, + String receiver_address, + Sysuser tokenuser + ) { + try { + if (model.checkDuplicate("phone")) { + return Result.failed(false, "手机号已存在"); + } + + model.setType(UserTypeEnum.CUSTOMER.getTypeid()); + model.setRole(RoleEnum.CUSTOMER.getRoleid()); + model.setPassword(getPwdMD5(model.getPhone(), Const.DEFAULT_PASSWORD)); + model.remove("id"); // 避免前端传 id + + Customer customer = new Customer(); + customer.setName(texpayer_name); + customer.setTexpayerName(texpayer_name); + + if (customer.checkDuplicate("name")) { + return Result.failed(false, "名称已存在"); + } + + if (customer.checkDuplicate("texpayer_name")) { + return Result.failed(false, "名称已存在"); + } + + boolean ret = Db.tx(new IAtom() { + @Override + public boolean run() throws SQLException { + try { + SyncTask synctask = new SyncTask(); + + boolean ret = customer.save(); + + if (!ret) { + return false; + } + + if(StrKit.notBlank(receiver_name, receiver_phone, receiver_address)){ + CustomerReceiver receiver = new CustomerReceiver(); + receiver.setCustomerId(model.getId()); + receiver.setName(receiver_name); + receiver.setPhone(receiver_phone); + receiver.setAddress(receiver_address); + + synctask.addSaveData(receiver); + + ret = receiver.save() && ModifyLogService.me.save(receiver, null, Enums.DataOpType.SAVE.getId(), tokenuser); + + if(!ret){ + return false; + } + } + + model.setEntityId(customer.getId()); + + synctask.addSaveData(model); + synctask.addSaveData(customer); + + return model.save() && SyncTaskService.me.save(synctask) + && ModifyLogService.me.save(model, null, Enums.DataOpType.SAVE.getId(), tokenuser); + } catch (Exception e) { + log.error(e.getMessage(), e); + return false; + } + } + }); + + if (ret) { + model.setPassword(null); + + return Result.object(model); + } + + return Result.failed(false, "新增失败"); + } catch (Exception e) { + log.error(e.getMessage(), e); + if (e.getMessage().contains("PRIMARY")) { + return Result.failed(false, "主键冲突"); + } + if (e.getMessage().contains("Duplicate entry")) { + return Result.failed(false, "存在重复数据"); + } else { + return Result.failed(false, e.getMessage()); + } + } + } + + public Result updateCustomer( + Sysuser model, + String texpayer_name, + String receiver_name, + String receiver_phone, + String receiver_address, + Sysuser tokenuser + ) { + try { + Sysuser old = model.findByColumns("phone"); + Sysuser chkobj = model.findByPk(); // 按 id 找到旧的对象 + + // 注意这里有 !,找到后才做 update 操作 + if (chkobj == null) { + return Result.failed(false, "按主键未找到对应记录"); + } + + // 按手机号查出来的记录,不是当前更新的记录 + if (old != null && !old.getId().equals(model.getId())) { + return Result.failed(false, "手机号已存在"); + } + + Customer customer = Customer.dao.findById(chkobj.getEntityId()); + + if (customer == null) { + return Result.failed(false, "entity_id 未找到对应值"); + } + + if (StrKit.notBlank(texpayer_name)) { + Customer chk = Customer.dao.findFirst("select * from customer where texpayer_name = ? limit 1 ", texpayer_name); + + if (chk != null && !customer.getId().equals(chk.getId())) { + return Result.failed("名称已存在"); + } + } + + // TODO: 修改手机号码,必须重置密码 + if (model.getPhone() != null && !model.getPhone().equals(chkobj.getPhone())) { + chkobj.setPassword(getPwdMD5(model.getPhone(), Const.DEFAULT_PASSWORD)); + } + + customer.setName(texpayer_name); + customer.setTexpayerName(texpayer_name); + model.remove("password"); // 更新用户信息,不更新密码 + + for (String key : model._getAttrNames()) { + if (model.get(key) != null) { + chkobj.set(key, model.get(key)); + } + } + + boolean ret = Db.tx(new IAtom() { + @Override + public boolean run() { + boolean ret = chkobj.update() && customer.update(); + + if (!ret) { + return false; + } + + SyncTask synctask = new SyncTask(); + synctask.addUpdateData(chkobj); + synctask.addUpdateData(customer); + + if(StrKit.notBlank(receiver_name, receiver_phone, receiver_address)) { + CustomerReceiver receiver = CustomerReceiver.dao.findFirst( + "select * from customer_receiver t where t.customer_id = ? limit 1", customer.getId()); + + if (receiver == null) { + receiver = new CustomerReceiver(); + receiver.setCustomerId(model.getId()); + receiver.setName(receiver_name); + receiver.setPhone(receiver_phone); + receiver.setAddress(receiver_address); + synctask.addSaveData(receiver); + + ret = receiver.save() + && ModifyLogService.me.save(receiver, null, Enums.DataOpType.SAVE.getId(), tokenuser); + } else { + CustomerReceiver oldreceiver = receiver.clone(); + receiver.setName(receiver_name); + receiver.setPhone(receiver_phone); + receiver.setAddress(receiver_address); + synctask.addUpdateData(receiver); + + ret = receiver.update() + && ModifyLogService.me.save(receiver, oldreceiver, Enums.DataOpType.UPDATE.getId(), tokenuser); + } + + if (!ret) { + return false; + } + } + + return SyncTaskService.me.save(synctask) + && ModifyLogService.me.save(chkobj, old, Enums.DataOpType.UPDATE.getId(), tokenuser); + } + }); + + + chkobj.remove("password"); // 更新用户信息,不更新密码 + + return ret ? Result.object(chkobj) : Result.failed(false, "编辑失败"); + } catch (Exception e) { + log.error(e.getMessage(), e); + if (e.getMessage().contains("PRIMARY")) { + return Result.failed(false, "主键冲突"); + } + if (e.getMessage().contains("Duplicate entry")) { + return Result.failed(false, "存在重复数据"); + } else { + return Result.failed(false, e.getMessage()); + } + } + } + /** * 恢复被逻辑删除的数据 * @@ -565,7 +773,7 @@ public class SysuserSyncService extends BaseSyncService { if (sysuser.getType() == UserTypeEnum.CUSTOMER.getTypeid()) { Redis.use().setex(tokenrediskey(token), customerExpireAt, sysuser); - }else{ + } else { Redis.use().setex(tokenrediskey(token), expireAt, sysuser); } diff --git a/ssjygl-xsx-service/src/main/resources/job.properties b/ssjygl-xsx-service/src/main/resources/job.properties index b66d3e3..82aeb96 100644 --- a/ssjygl-xsx-service/src/main/resources/job.properties +++ b/ssjygl-xsx-service/src/main/resources/job.properties @@ -6,6 +6,5 @@ synctask.enable=true # 在零点检查前一天未完成的集团订单,将开始执行的置为已完成,将未开始的置为取消 checkundonordercluster.job=com.cowr.service.ssjygl.jobs.CheckUndonOrderclusterJob -#checkundonordercluster.cron= 1 0 0 * * ? -checkundonordercluster.cron= 1 0 * * * ? +checkundonordercluster.cron= 1 0 0 * * ? checkundonordercluster.enable=true \ No newline at end of file