社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
2019.6.20著
今天突然好闲,就看了看cwasd项目的增删改查是如何操作的。
突然这么闲,项目经理是不是要给我放大招?看来加班逃不脱了,哈哈哈,让暴风雨来得更猛烈些吧!!
长话短说吧,要是被他发现,我要被打死的。不,是被开除,小生不敢、不敢
先让我们来看看项目的基本结构吧
vo:对象关系映射 ,我们公司自己封装了,所以只用继承就好了。
/**
* 第三方订单对账单
* @author lc
* @date 2019年02月24日
*/
@Entity
@Table(name="thirdparty_order_bill")
public class ThirdpartyOrderBillModel extends ThirdpartyOrderBillDTO {
}
public class ThirdpartyOrderBillQueryModel extends ThirdpartyOrderBillQueryDTO{
}
dao:基本方法框架以及封装了,也可以自定义一些需要的方法
//接口
public interface ThirdpartyOrderBillDAO <M extends ThirdpartyOrderBillModel,QM extends ThirdpartyOrderBillQueryModel> extends BaseDAO<M,QM>{
}
@Primary
@Repository
public class ThirdpartyOrderBillESCaheImpl<M extends ThirdpartyOrderBillModel,QM extends ThirdpartyOrderBillQueryModel> extends BaseESCache<M,QM> implements ThirdpartyOrderBillDAO<M,QM> {
@PostConstruct
public void InitParams() {
super.setModulePathName("finance.thirdpartyorderbill");
}
@Autowired
private ThirdpartyOrderBillDAO myDAO;
@Autowired
private ElasticsearchTemplate et;
public ThirdpartyOrderBillESCaheImpl() {
super(M.ES_INDEX, M.ES_TYPE);
}
@PostConstruct
public void postConstruct(){
super.setDao(myDAO);
super.setElasticsearchTemplate(et);
}
}
@Repository
public class ThirdpartyOrderBillH4Impl<M extends ThirdpartyOrderBillModel,QM extends ThirdpartyOrderBillQueryModel> extends BaseH4Impl<M, QM> implements ThirdpartyOrderBillDAO<M, QM> {
@PostConstruct
public void InitParams() {
super.setModulePathName("finance.thirdpartyorderbill");
}
}
service层:主要写业务逻辑的
//接口
public interface ThirdpartyOrderBillService<M extends ThirdpartyOrderBillModel,QM extends ThirdpartyOrderBillQueryModel> extends BaseService<M,QM> {
/**
* 下载订单导入模板
* @param response
*/
public void downTemplate(HttpServletResponse response);
/**
* 导入订单
* @param files
* @return
*/
public String importExcel(MultipartFile [] files,String errorMassage) throws IOException;
}
@Service
public class ThirdpartyOrderBillServiceImpl<M extends ThirdpartyOrderBillModel,QM extends ThirdpartyOrderBillQueryModel>
extends BaseServiceImpl<M,QM> implements ThirdpartyOrderBillService<M,QM> {
private ThirdpartyOrderBillDAO myDAO;
//重写接口的两个方法,实现业务逻辑
具体内容忽略。。。。。。
}
controller层:把数据传输到页面用的。一般以json格式传输
@RestController
public class ThirdpartyOrderBill4OthersController extends BaseRestController<ThirdpartyOrderBillDTO,ThirdpartyOrderBillQueryDTO> implements ThirdpartyOrderBill4OthersApi{
private ThirdpartyOrderBillService myService;
@Autowired
public void setMyService(ThirdpartyOrderBillService myService) {
this.myService = myService;
super.setBs(myService);
}
}
@RestController
public class ThirdpartyOrderBill4WebController
extends BaseRestController<ThirdpartyOrderBillDTO,ThirdpartyOrderBillQueryDTO> implements ThirdpartyOrderBill4WebApi{
private ThirdpartyOrderBillService myService;
@Autowired
public void setMyService(ThirdpartyOrderBillService myService) {
this.myService = myService;
super.setBs(myService);
}
@Override
public RetDTO downTemplate(HttpServletResponse response) {
myService.downTemplate(response);
RetDTO ret = new RetDTO();
ret.setRetStatus(RetDTO.SUCCESS);
return ret;
}
@Override
public RetDTO importExcel(MultipartFile[] files,String errorMassage) {
try {
errorMassage = myService.importExcel(files,errorMassage);
RetDTO ret = new RetDTO();
ret.setRetStatus(RetDTO.SUCCESS);
ret.setRetData(errorMassage);
return ret;
} catch (IOException e) {
e.printStackTrace();
RetDTO ret = new RetDTO();
ret.setRetStatus(RetDTO.ERROR4CUSTOMER);
return ret;
}
}
}
基本上每个项目类的名字都有一定的规律,按照名字写对应的层,以后维护也方便,阅读性会比较高
1.查询商户后台为何登陆缓慢问题,具体待那一行代码
解题思路,找到登陆的方法,添加时间,查看时间间隔,间隔大说明有问题
//获取当前时间,以自定义格式显示
new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format( new Date());
2.平台后台提现功能当发票录入时,修改状态。发票录入,修改状态为录入发票成功
解决思路:找到展示页面的list数据,找到导入发票号的代码,在导入发票时设置状态。
//service层代码
String customerUuid = m.getCustomerUuid();
RetDTO ret = customer4OthersApi.getByUuid(customerUuid);
if(ret != null && RetDTO.SUCCESS.equals(ret.getRetStatus())) {
CustomerDTO customer = JSON.parseObject(ret.getRetData(), new TypeReference<CustomerDTO>() {});
//只有服务商才能录入发票
if(customer == null || !CustomerDTO.CUSTOMER_CUSTOMERTYPE_SERVICE.equals(customer.getCustomerType())) {
throw new AppException("customer.withdrawapply.type");
}
}
m.setState(WithdrawApplyDTO.STATE_BILL);
m.setInvoiceNo(invoiceNo);
this.update(m);
// 修改结算单状态
this.changeBillState(uuid, WithdrawApplyDTO.STATE_BILL);
//状态:1.待审核 2.审核通过 3.审核不通过 4.提现成功 5.提现失败
//dto层代码
public static final String STATE_UNAUDIT = "1";
public static final String STATE_AUDITPASS = "2";
public static final String STATE_AUDITNOPASS = "3";
public static final String STATE_SUCCESS = "4";
public static final String STATE_FAIL = "5";
public static final String STATE_BILL = "6";
public static final Map<String, String> stateMap = new HashMap<>();
static {
stateMap.put(STATE_UNAUDIT, "待审核");
stateMap.put(STATE_AUDITPASS, "审核通过");
stateMap.put(STATE_AUDITNOPASS, "审核不通过");
stateMap.put(STATE_SUCCESS, "提现成功");
stateMap.put(STATE_FAIL, "提现失败");
stateMap.put(STATE_BILL, "录入发票成功");
}
总结:代码其实并不难,但是如果无厘头地去做,真的很难,解决问题前想想想解题思路,在行动,熟悉代码,按照取名规则就很容易了。细节决定成败啊,做什么事还是要心细才行啊。但是我能满足这些吗?显然不能,我想要的是既能粗犷,也能细心。放开了玩,用心办事。成年人从来都不会选择,我都要。哈哈哈哈
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!