lisai17@sina.com 2020-08-27 14:24:02 +08:00
parent 8ecb4619e1
commit 2e02bcda4a
7 changed files with 282 additions and 5 deletions

View File

@ -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");

View File

@ -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");

View File

@ -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();

View File

@ -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
*/

View File

@ -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()));
}
}

View File

@ -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);
}

View File

@ -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