puzhibing
2023-03-11 b088628cf9be70c36e34032bb0d024548351541b
Merge remote-tracking branch 'origin/master'
67个文件已修改
81个文件已添加
11563 ■■■■■ 已修改文件
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAgentController.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAppUserController.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TBranchOfficeController.java 222 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCancelOrderController.java 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TComplaintController.java 177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCouponController.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TEvaluateController.java 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java 267 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TRechargeRecordController.java 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TSystemConfigController.java 244 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TYouTuiController.java 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/req/CouponSendReq.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TBranchOfficeResp.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TComplaintResp.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TEvaluateResp.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TOrderResp.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TRechargeRecordAgentResp.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TRechargeRecordUserResp.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TCancelOrderMapper.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TComplaintMapper.java 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TEvaluateMapper.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderMapper.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TRechargeRecordMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TSystemConfigMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TUserToCouponMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TYouTuiMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TCancelOrderMapper.xml 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TComplaintMapper.xml 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TEvaluateMapper.xml 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderMapper.xml 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TRechargeRecordMapper.xml 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TSystemConfigMapper.xml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TUserToCouponMapper.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TYouTuiMapper.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/enums/OrderStateEnum.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TAppUser.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TBranchOffice.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCancelOrder.java 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TComplaint.java 133 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCoupon.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TEvaluate.java 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrder.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TRechargeRecord.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TSystemConfig.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TUserToCoupon.java 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TYouTui.java 176 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITBranchOfficeService.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITCancelOrderService.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITComplaintService.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITEvaluateService.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderService.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITRechargeRecordService.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITSystemConfigService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITUserToCouponService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITYouTuiService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAgentServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAppUserServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBranchOfficeServiceImpl.java 222 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCancelOrderServiceImpl.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TComplaintServiceImpl.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverServiceImpl.java 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TEvaluateServiceImpl.java 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TRechargeRecordServiceImpl.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TSystemConfigServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TUserToCouponServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TYouTuiServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushMinistryOfTransportUtil.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgentArea.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgent_add.html 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tCoupon.html 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tCouponException.html 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOffice.html 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOfficeAreaAdd.html 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOfficeAreaUpdate.html 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOfficeDetail.html 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOffice_add.html 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOffice_edit.html 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tCancelOrder/tCancelOrder.html 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tCancelOrder/tCancelOrderDetail.html 212 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tCancelOrder/tCancelOrder_add.html 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tCancelOrder/tCancelOrder_edit.html 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tComplaint/tComplaint.html 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tComplaint/tComplaintAudit.html 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tComplaint/tComplaint_add.html 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tComplaint/tComplaint_edit.html 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tCoupon/tCoupon.html 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tCoupon/tCoupon_add.html 200 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverAreaAdd.html 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverAreaUpdate.html 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver_add.html 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver_edit.html 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tEvaluate/tEvaluate.html 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tEvaluate/tEvaluateDetail.html 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tEvaluate/tEvaluate_add.html 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tEvaluate/tEvaluate_edit.html 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tCancelOrder.html 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrder.html 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrderDetail.html 196 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrderException.html 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrderExceptionDetail.html 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrderStartAndStopException.html 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tRechargeRecord/tRechargeRecordAgent.html 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tRechargeRecord/tRechargeRecordUser.html 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfig.html 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigBalanceRules.html 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigCommissionShareRules.html 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigDispatchRules.html 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigExtractionRules.html 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigIntegralRules.html 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigPriceRules.html 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigServiceMgmt.html 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfig_add.html 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfig_edit.html 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tYouTui/tYouTui.html 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tYouTui/tYouTui_add.html 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tYouTui/tYouTui_edit.html 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tAgent/tAgent.js 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tAgent/tAgent_info.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tAppUser/tAppUserException.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tAppUser/tCoupon.js 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tBranchOffice/tBranchOffice.js 332 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tBranchOffice/tBranchOffice_info.js 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tCancelOrder/tCancelOrder.js 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tCancelOrder/tCancelOrder_info.js 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tComplaint/tComplaint.js 263 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tComplaint/tComplaint_info.js 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tCoupon/tCoupon.js 108 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tCoupon/tCoupon_info.js 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tDriver/tDriver.js 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tDriver/tDriver_info.js 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tEvaluate/tEvaluate.js 176 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tEvaluate/tEvaluate_info.js 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tOrder/tAppUser.js 281 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tOrder/tCancelOrder.js 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tOrder/tOrder.js 186 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tOrder/tOrderException.js 295 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tOrder/tOrderExceptionDetailCancelOrder.js 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tOrder/tOrder_info.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tRechargeRecord/tRechargeRecordAgent.js 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tRechargeRecord/tRechargeRecordUser.js 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tSystemConfig/tSystemConfig.js 313 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tSystemConfig/tSystemConfig_info.js 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tYouTui/tYouTui.js 166 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tYouTui/tYouTui_info.js 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAgentController.java
@@ -97,9 +97,28 @@
     * 跳转区域页面
     */
    @RequestMapping("/areaDetail")
    public String areaDetail(Model model) {
    public String areaDetail(String area,String areaId,Model model) {
        String[] split1 = areaId.split("/");
        List<TRegion> tRegions = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", 0));
        model.addAttribute("province",tRegions);
        List<Integer> provinceIds = tRegions.stream().map(TRegion::getId).collect(Collectors.toList());
        // 查询市
        List<TRegion> tRegions1 = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", split1[0]));
        model.addAttribute("cityList",tRegions1);
        if(StringUtils.hasLength(area) && StringUtils.hasLength(areaId)){
            String[] split = area.split("/");
            model.addAttribute("provinceName",split[0]);
            model.addAttribute("cityName",split[1]);
            model.addAttribute("provinceId",split1[0]);
            model.addAttribute("cityId",split1[1]);
        }else {
            model.addAttribute("provinceName","");
            model.addAttribute("cityName","");
            model.addAttribute("provinceId","");
            model.addAttribute("cityId","");
        }
        return PREFIX + "tAgentArea.html";
    }
@@ -131,7 +150,9 @@
    @ResponseBody
    public Object add(TAgent tAgent) {
        int count = tAgentService.selectCount(new EntityWrapper<TAgent>().eq("principalPhone", tAgent.getPrincipalPhone()));
        String[] split1 = tAgent.getArea().split("/");
        int count = tAgentService.selectCount(new EntityWrapper<TAgent>().eq("provinceName", split1[0]).eq("cityName",split1[1]));
        if(count>0){
            return new SuccessTip(500,"该代理商已存在!");
        }
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAppUserController.java
@@ -11,9 +11,11 @@
import com.stylefeng.guns.modular.system.model.TAppUser;
import com.stylefeng.guns.modular.system.model.TCoupon;
import com.stylefeng.guns.modular.system.model.TOrder;
import com.stylefeng.guns.modular.system.model.TUserToCoupon;
import com.stylefeng.guns.modular.system.service.ITAppUserService;
import com.stylefeng.guns.modular.system.service.ITCouponService;
import com.stylefeng.guns.modular.system.service.ITOrderService;
import com.stylefeng.guns.modular.system.service.ITUserToCouponService;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
@@ -54,6 +56,8 @@
    private ITCouponService tCouponService;
    @Autowired
    private ITOrderService tOrderService;
    @Autowired
    private ITUserToCouponService tUserToCouponService;
    /**
     * 跳转到首页
@@ -176,10 +180,17 @@
        for (TAppUser tAppUser : tAppUsers) {
            TAppUserResp tAppUserResp = new TAppUserResp();
            BeanUtils.copyProperties(tAppUser,tAppUserResp);
            List<TCoupon> tCoupons = tCouponService.selectList(new EntityWrapper<TCoupon>().eq("user_id", tAppUser.getId()));
            List<TCoupon> notUsedList = tCoupons.stream().filter(coupon -> coupon.getCouponStatus().equals(CouponStatusEnum.NOT_USED.getCode())).collect(Collectors.toList());
            tAppUserResp.setCouponSum(tCoupons.size());
            tAppUserResp.setNotUsedCount(notUsedList.size());
            // 查询当前用户优惠券数量
            List<TUserToCoupon> tUserToCoupons = tUserToCouponService.selectList(new EntityWrapper<TUserToCoupon>().eq("userId", tAppUser.getId()));
            int couponTotal = tUserToCoupons.stream().mapToInt(TUserToCoupon::getCouponTotal).sum();
            int validCount = tUserToCoupons.stream().mapToInt(TUserToCoupon::getValidCount).sum();
//            List<TCoupon> tCoupons = tCouponService.selectList(new EntityWrapper<TCoupon>().eq("user_id", tAppUser.getId()));
//            List<TCoupon> notUsedList = tCoupons.stream().filter(coupon -> coupon.getCouponStatus().equals(CouponStatusEnum.NOT_USED.getCode())).collect(Collectors.toList());
            tAppUserResp.setCouponSum(couponTotal);
            tAppUserResp.setNotUsedCount(validCount);
            List<TOrder> orders = tOrderService.selectList(new EntityWrapper<TOrder>().eq("userId", tAppUser.getId()).orderBy(true,"createTime",false));
            if(!CollectionUtils.isEmpty(orders)){
                List<TOrder> collect1 = orders.stream().filter(order->Objects.nonNull(order.getState()))
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TBranchOfficeController.java
@@ -1,7 +1,20 @@
package com.stylefeng.guns.modular.system.controller.general;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.core.base.controller.BaseController;
import com.stylefeng.guns.core.base.tips.SuccessTip;
import com.stylefeng.guns.core.shiro.ShiroKit;
import com.stylefeng.guns.modular.system.controller.resp.TBranchOfficeResp;
import com.stylefeng.guns.modular.system.controller.resp.TDriverResp;
import com.stylefeng.guns.modular.system.model.*;
import com.stylefeng.guns.modular.system.service.ITRegionService;
import com.stylefeng.guns.modular.system.service.ITSystemConfigService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.ui.Model;
@@ -9,8 +22,11 @@
import org.springframework.beans.factory.annotation.Autowired;
import com.stylefeng.guns.core.log.LogObjectHolder;
import org.springframework.web.bind.annotation.RequestParam;
import com.stylefeng.guns.modular.system.model.TBranchOffice;
import com.stylefeng.guns.modular.system.service.ITBranchOfficeService;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
 * 控制器
@@ -26,6 +42,11 @@
    @Autowired
    private ITBranchOfficeService tBranchOfficeService;
    @Autowired
    private ITSystemConfigService tSystemConfigService;
    @Autowired
    private ITRegionService tRegionService;
    /**
     * 跳转到首页
@@ -48,10 +69,134 @@
     */
    @RequestMapping("/tBranchOffice_update/{tBranchOfficeId}")
    public String tBranchOfficeUpdate(@PathVariable Integer tBranchOfficeId, Model model) {
        TBranchOffice tBranchOffice = tBranchOfficeService.selectById(tBranchOfficeId);
        model.addAttribute("item",tBranchOffice);
        TBranchOfficeResp tBranchOfficeResp = new TBranchOfficeResp();
        BeanUtils.copyProperties(tBranchOffice,tBranchOfficeResp);
        // 查询区域
        TRegion city = tRegionService.selectOne(new EntityWrapper<TRegion>().eq("code", tBranchOffice.getCityCode())
                .last("LIMIT 1"));
        TRegion district = tRegionService.selectOne(new EntityWrapper<TRegion>().eq("code", tBranchOffice.getDistrictCode())
                .last("LIMIT 1"));
        if(StringUtils.hasLength(tBranchOffice.getDistrictName())){
            tBranchOfficeResp.setArea(tBranchOffice.getProvinceName()+"/"+tBranchOffice.getCityName()+"/"+tBranchOffice.getDistrictName());
        }else {
            tBranchOfficeResp.setArea(tBranchOffice.getProvinceName()+"/"+tBranchOffice.getCityName());
        }
        if(Objects.nonNull(city)){
            if(Objects.nonNull(district)){
                tBranchOfficeResp.setAreaId(city.getParentId()+"/"+city.getId()+"/"+district.getId());
            }else {
                tBranchOfficeResp.setAreaId(city.getParentId()+"/"+city.getId());
            }
        }
        model.addAttribute("item",tBranchOfficeResp);
        LogObjectHolder.me().set(tBranchOffice);
        return PREFIX + "tBranchOffice_edit.html";
    }
    /**
     * 跳转到详情
     */
    @RequestMapping("/tBranchOfficeDetail")
    public String tBranchOfficeDetail(Integer tBranchOfficeId, Model model) {
        tBranchOfficeService.tBranchOfficeDetail(tBranchOfficeId,model);
        TSystemConfig tSystemConfig = tSystemConfigService.selectOne(new EntityWrapper<TSystemConfig>().eq("type", 3));
        JSONObject jsonObject = JSONObject.parseObject(tSystemConfig.getContent());
        model.addAttribute("num2",jsonObject.getInteger("num2"));
        model.addAttribute("num3",jsonObject.getInteger("num3"));
        return PREFIX + "tBranchOfficeDetail.html";
    }
    /**
     * 跳转区域页面新增
     */
    @RequestMapping("/areaPageAdd")
    public String areaPageAdd(String area,String areaId,Model model) {
        String[] split1 = areaId.split("/");
        List<TRegion> tRegions = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", 0));
        model.addAttribute("provinceList",tRegions);
        List<Integer> provinceIds = tRegions.stream().map(TRegion::getId).collect(Collectors.toList());
        // 查询市
        List<TRegion> tRegions1 = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", split1[0]));
        model.addAttribute("cityList",tRegions1);
        // 查询区
        List<Integer> cityIds = tRegions1.stream().map(TRegion::getId).collect(Collectors.toList());
        List<TRegion> tRegions2 = tRegionService.selectList(new EntityWrapper<TRegion>().in("parent_id", cityIds));
        model.addAttribute("districtList",tRegions2);
        if(StringUtils.hasLength(area) && StringUtils.hasLength(areaId)){
            String[] split = area.split("/");
            model.addAttribute("provinceName",split[0]);
            model.addAttribute("cityName",split[1]);
            if(split.length>2){
                model.addAttribute("districtName",split[2]);
            }else {
                model.addAttribute("districtName","");
            }
            model.addAttribute("provinceId",split1[0]);
            model.addAttribute("cityId",split1[1]);
            if(split1.length>2) {
                model.addAttribute("districtId", split1[2]);
            }else {
                model.addAttribute("districtId", "");
            }
        }else {
            model.addAttribute("provinceName","");
            model.addAttribute("cityName","split[1]");
            model.addAttribute("districtName","");
            model.addAttribute("provinceId","");
            model.addAttribute("cityId","split1[1]");
            model.addAttribute("districtId", "");
        }
        return PREFIX + "tBranchOfficeAreaAdd.html";
    }
    /**
     * 跳转区域页面编辑
     */
    @RequestMapping("/areaPageUpdate")
    public String areaPageUpdate(String area,String areaId,Model model) {
        String[] split = area.split("/");
        model.addAttribute("provinceName",split[0]);
        model.addAttribute("cityName",split[1]);
        if(split.length>2){
            model.addAttribute("districtName",split[2]);
        }else {
            model.addAttribute("districtName","");
        }
        String[] split1 = areaId.split("/");
        String provinceId = split1[0];
        model.addAttribute("provinceId",split1[0]);
        model.addAttribute("cityId",split1[1]);
        if(split1.length>2) {
            model.addAttribute("districtId", split1[2]);
        }else {
            model.addAttribute("districtId", "");
        }
        List<TRegion> tRegions = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", 0));
        model.addAttribute("provinceList",tRegions);
//        List<Integer> provinceIds = tRegions.stream().map(TRegion::getId).collect(Collectors.toList());
        // 查询市
        List<TRegion> tRegions1 = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", provinceId));
        model.addAttribute("cityList",tRegions1);
        // 查询区
        List<Integer> cityIds = tRegions1.stream().map(TRegion::getId).collect(Collectors.toList());
        List<TRegion> tRegions2 = tRegionService.selectList(new EntityWrapper<TRegion>().in("parent_id", cityIds));
        model.addAttribute("districtList",tRegions2);
        return PREFIX + "tBranchOfficeAreaUpdate.html";
    }
    /**
@@ -59,7 +204,56 @@
     */
    @RequestMapping(value = "/list")
    @ResponseBody
    public Object list(String condition) {
    public Object list(String branchOfficeName,String principal,String principalPhone,Integer operatingBusiness ,Integer status) {
        List<TBranchOfficeResp> tBranchOfficeRespList = tBranchOfficeService.getPageList(branchOfficeName,principal,principalPhone,operatingBusiness,status);
        // 分公司查询优惠券,订单,司机等信息
        tBranchOfficeService.queryOtherInfo(tBranchOfficeRespList);
        return tBranchOfficeRespList;
    }
    @ApiOperation(value = "市区查询",notes="市区查询")
    @RequestMapping(value = "/areaCity")
    @ResponseBody
    public Object areaCity(Integer parentId,Model model) {
        List<TRegion> tRegions = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", parentId));
        /*if(CollectionUtils.isEmpty(tRegions) && StringUtils.hasLength(parentName)){
            TRegion parent = tRegionService.selectOne(new EntityWrapper<TRegion>().eq("name", parentName));
            tRegions = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", parentId));
        }*/
        model.addAttribute("list",tRegions);
        return tRegions;
    }
    /**
     * 启用分公司
     */
    @RequestMapping(value = "/start")
    @ResponseBody
    public Object start(Integer id) {
        TBranchOffice tBranchOffice = tBranchOfficeService.selectById(id);
        tBranchOffice.setStatus(1);
        tBranchOfficeService.updateById(tBranchOffice);
        return SUCCESS_TIP;
    }
    /**
     * 冻结分公司
     */
    @RequestMapping(value = "/stop")
    @ResponseBody
    public Object updateStatus(Integer id) {
        TBranchOffice tBranchOffice = tBranchOfficeService.selectById(id);
        tBranchOffice.setStatus(2);
        tBranchOfficeService.updateById(tBranchOffice);
        return SUCCESS_TIP;
    }
    /**
     * 获取列表
     */
    @RequestMapping(value = "/list-back")
    @ResponseBody
    public Object listBack(String condition) {
        return tBranchOfficeService.selectList(null);
    }
@@ -69,6 +263,17 @@
    @RequestMapping(value = "/add")
    @ResponseBody
    public Object add(TBranchOffice tBranchOffice) {
        int count = tBranchOfficeService.selectCount(new EntityWrapper<TBranchOffice>().eq("branchOfficeName", tBranchOffice.getBranchOfficeName()));
        if(count>0){
            return new SuccessTip(500,"该分公司名称已存在!");
        }
        Object o = tBranchOfficeService.addOrUpdate(tBranchOffice);
        if(Objects.nonNull(o)){
            return o;
        }
        tBranchOffice.setStatus(1);
        tBranchOfficeService.insert(tBranchOffice);
        return SUCCESS_TIP;
    }
@@ -89,6 +294,17 @@
    @RequestMapping(value = "/update")
    @ResponseBody
    public Object update(TBranchOffice tBranchOffice) {
        TBranchOffice office = tBranchOfficeService.selectOne(new EntityWrapper<TBranchOffice>().eq("branchOfficeName", tBranchOffice.getBranchOfficeName())
                .last("LIMIT 1"));
        if(Objects.nonNull(office) && !tBranchOffice.getId().equals(office.getId())){
            return new SuccessTip(500,"该分公司名称已存在!");
        }
//        Object ocr = ocr("E:\\071bf986db0b00355c0ed190bbd3b16.png");
//        System.err.println(ocr);
        Object o = tBranchOfficeService.addOrUpdate(tBranchOffice);
        if(Objects.nonNull(o)){
            return o;
        }
        tBranchOfficeService.updateById(tBranchOffice);
        return SUCCESS_TIP;
    }
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCancelOrderController.java
New file
@@ -0,0 +1,201 @@
package com.stylefeng.guns.modular.system.controller.general;
import com.stylefeng.guns.core.base.controller.BaseController;
import com.stylefeng.guns.modular.system.controller.resp.TOrderResp;
import com.stylefeng.guns.modular.system.controller.util.ExcelUtil;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.beans.factory.annotation.Autowired;
import com.stylefeng.guns.core.log.LogObjectHolder;
import org.springframework.web.bind.annotation.RequestParam;
import com.stylefeng.guns.modular.system.model.TCancelOrder;
import com.stylefeng.guns.modular.system.service.ITCancelOrderService;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
 * 控制器
 *
 * @author fengshuonan
 * @Date 2023-02-27 15:52:01
 */
@Controller
@RequestMapping("/tCancelOrder")
public class TCancelOrderController extends BaseController {
    private String PREFIX = "/system/tCancelOrder/";
    @Autowired
    private ITCancelOrderService tCancelOrderService;
    /**
     * 跳转到首页
     */
    @RequestMapping("")
    public String index() {
        return PREFIX + "tCancelOrder.html";
    }
    /**
     * 跳转到添加
     */
    @RequestMapping("/tCancelOrder_add")
    public String tCancelOrderAdd() {
        return PREFIX + "tCancelOrder_add.html";
    }
    /**
     * 跳转到修改
     */
    @RequestMapping("/tCancelOrder_update/{tCancelOrderId}")
    public String tCancelOrderUpdate(@PathVariable Integer tCancelOrderId, Model model) {
        TCancelOrder tCancelOrder = tCancelOrderService.selectById(tCancelOrderId);
        model.addAttribute("item",tCancelOrder);
        LogObjectHolder.me().set(tCancelOrder);
        return PREFIX + "tCancelOrder_edit.html";
    }
    /**
     * 跳转详情页面
     */
    @RequestMapping("/cancelOrderDetail")
    public String cancelOrderDetail(Integer cancelOrderId, Model model) {
        tCancelOrderService.cancelOrderDetail(cancelOrderId,model);
        return PREFIX + "tCancelOrderDetail.html";
    }
    /**
     * 获取列表
     */
    @RequestMapping(value = "/list")
    @ResponseBody
    public Object list(String condition) {
        return tCancelOrderService.selectList(null);
    }
    /**
     * 获取列表
     */
    @ApiOperation(value = "获取取消订单列表")
    @RequestMapping(value = "/cancelOrderList")
    @ResponseBody
    public Object cancelOrderList(String createTime,
                            String code,
                            Integer source,
                            String userName,
                            String userPhone,
                            Integer state,
                            String driverName) {
        return tCancelOrderService.getCancelOrderList(createTime, code, source, userName, userPhone, state, driverName);
    }
    /**
     * 获取取消订单列表(订单异常详情页面使用)
     */
    @ApiOperation(value = "获取取消订单列表(订单异常详情页面使用)")
    @RequestMapping(value = "/userCancelOrderList")
    @ResponseBody
    public Object userCancelOrderList(Integer userId,Integer orderId) {
        return tCancelOrderService.userCancelOrderList(userId,orderId);
    }
    /**
     * 新增
     */
    @RequestMapping(value = "/add")
    @ResponseBody
    public Object add(TCancelOrder tCancelOrder) {
        tCancelOrderService.insert(tCancelOrder);
        return SUCCESS_TIP;
    }
    /**
     * 删除
     */
    @RequestMapping(value = "/delete")
    @ResponseBody
    public Object delete(@RequestParam Integer tCancelOrderId) {
        tCancelOrderService.deleteById(tCancelOrderId);
        return SUCCESS_TIP;
    }
    /**
     * 修改
     */
    @RequestMapping(value = "/update")
    @ResponseBody
    public Object update(TCancelOrder tCancelOrder) {
        tCancelOrderService.updateById(tCancelOrder);
        return SUCCESS_TIP;
    }
    /**
     * 详情
     */
    @RequestMapping(value = "/detail/{tCancelOrderId}")
    @ResponseBody
    public Object detail(@PathVariable("tCancelOrderId") Integer tCancelOrderId) {
        return tCancelOrderService.selectById(tCancelOrderId);
    }
    @ApiOperation(value = "导出取消订单列表",notes="导出取消订单列表")
    @RequestMapping(value = "/export")
    @ResponseBody
    public void export(String createTime,
                       String code,
                       Integer source,
                       String userName,
                       String userPhone,
                       Integer state,
                       String driverName, HttpServletResponse response) {
        try {
            Date date = new Date();
            DateFormat format = new SimpleDateFormat("yyyyMMdd");
            String time1 = format.format(date);
            String fileName = "CancelOrderInfo"+time1+".xls";
            String[] title = new String[] {"下单时间","订单编号","订单来源","下单用户昵称",
                    "下单用户手机","起点地址","终点地址","接单司机","司机电话","转单原因","取消时间"};
            List<TOrderResp> orderList = tCancelOrderService.getCancelOrderList(createTime, code, source, userName, userPhone, state, driverName);
            String[][] values = new String[orderList.size()][];
            for (int i = 0; i < orderList.size(); i++) {
                TOrderResp d = orderList.get(i);
                values[i] = new String[title.length];
                values[i][0] = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d.getPlaceTime());
                values[i][1] = d.getCode();
                Integer source1 = d.getSource();
                if(1 == source1){
                    values[i][2] = "小程序";
                }else if(2 == source1){
                    values[i][2] = "司机创建";
                }
                values[i][3] = d.getUserName();
                values[i][4] = d.getUserPhone();
                values[i][5] = d.getStartAddress();
                values[i][6] = d.getEndAddress();
                values[i][7] = d.getDriverName();
                values[i][8] = d.getDriverPhone();
                values[i][9] = d.getCause();
                values[i][10] = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d.getCreateTime());
            }
            HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook("Variance"+time1, title, values, null);
            ExcelUtil.setResponseHeader(response, fileName);
            OutputStream os = response.getOutputStream();
            wb.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TComplaintController.java
@@ -1,15 +1,11 @@
package com.stylefeng.guns.modular.system.controller.general;
import com.baomidou.mybatisplus.plugins.Page;
import com.stylefeng.guns.core.base.controller.BaseController;
import com.stylefeng.guns.core.common.constant.factory.PageFactory;
import com.stylefeng.guns.core.base.tips.SuccessTip;
import com.stylefeng.guns.core.shiro.ShiroKit;
import com.stylefeng.guns.core.util.SinataUtil;
import com.stylefeng.guns.modular.system.model.TProblem;
import com.stylefeng.guns.modular.system.model.TSystemNotice;
import com.stylefeng.guns.modular.system.service.ITSystemNoticeService;
import com.stylefeng.guns.modular.system.util.PushMinistryOfTransportUtil;
import org.springframework.beans.factory.annotation.Value;
import com.stylefeng.guns.core.shiro.ShiroUser;
import com.stylefeng.guns.modular.system.model.TDriver;
import org.apache.shiro.subject.Subject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@@ -21,16 +17,13 @@
import com.stylefeng.guns.modular.system.model.TComplaint;
import com.stylefeng.guns.modular.system.service.ITComplaintService;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.Date;
import java.util.Map;
/**
 * 投诉列表控制器
 * 控制器
 *
 * @author fengshuonan
 * @Date 2020-06-09 17:31:24
 * @Date 2023-03-02 10:14:46
 */
@Controller
@RequestMapping("/tComplaint")
@@ -41,19 +34,8 @@
    @Autowired
    private ITComplaintService tComplaintService;
    @Autowired
    private ITSystemNoticeService tSystemNoticeService;
    @Autowired
    private PushMinistryOfTransportUtil pushMinistryOfTransportUtil;
    @Value("${pushMinistryOfTransport}")
    private boolean pushMinistryOfTransport;
    /**
     * 跳转到投诉列表首页
     * 跳转到首页
     */
    @RequestMapping("")
    public String index() {
@@ -61,112 +43,91 @@
    }
    /**
     * 跳转到查看详情
     * 跳转到添加
     */
    @RequestMapping("/lookDetail/{id}/{type}")
    public String lookDetail(@PathVariable Integer id, @PathVariable Integer type, Model model) {
        TComplaint tComplaint = tComplaintService.selectById(id);
        String str = "";
        if (1 == type){
            str = tComplaint.getReason();
        }else if (2 == type){
            str = tComplaint.getDescription();
        }else if (3 == type){
            str = tComplaint.getHandleResult();
        }
        model.addAttribute("str",str);
        return "/system/tComplaint/lookDetail.html";
    @RequestMapping("/tComplaint_add")
    public String tComplaintAdd() {
        return PREFIX + "tComplaint_add.html";
    }
    /**
     * 跳转到立即处理页面
     * 跳转到修改
     */
    @RequestMapping("/tComplaint_immediately/{tComplaintId}")
    @RequestMapping("/tComplaint_update/{tComplaintId}")
    public String tComplaintUpdate(@PathVariable Integer tComplaintId, Model model) {
        TComplaint tComplaint = tComplaintService.selectById(tComplaintId);
        model.addAttribute("item",tComplaint);
        LogObjectHolder.me().set(tComplaint);
        return PREFIX + "tComplaint_edit.html";
    }
    /**
     * 跳转到投诉处理
     */
    @RequestMapping("/immediatelyAudit")
    public String immediatelyAudit(Integer tComplaintId,Model model) {
        model.addAttribute("tComplaintId",tComplaintId);
        return PREFIX + "tComplaint_immediately.html";
        return PREFIX + "tComplaintAudit.html";
    }
    /**
     * 跳转到查看详情
     * 审核
     */
    @RequestMapping("/lookDetail/{str}")
    public String lookDetail(@PathVariable String str, Model model) {
        System.out.println(str);
        model.addAttribute("str",str);
        return PREFIX + "lookDetail.html";
    }
    /**
     * 获取投诉列表列表
     */
    @RequestMapping(value = "/list")
    @RequestMapping(value = "/audit")
    @ResponseBody
    public Object list(String insertTime,
                       String userName,
                       String userPhone,
                       String driverPhone,
                       Integer isHandle) {
        String beginTime = null;
        String endTime = null;
        if (SinataUtil.isNotEmpty(insertTime)){
            String[] timeArray = insertTime.split(" - ");
            beginTime = timeArray[0];
            endTime = timeArray[1];
        }
        Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
        page.setRecords(tComplaintService.getComplaintList(page,ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),beginTime,endTime,userName,userPhone,driverPhone,isHandle));
        return super.packForBT(page);
    }
    /**
     * 删除投诉列表
     */
    @RequestMapping(value = "/immediately")
    @ResponseBody
    public Object immediately(@RequestParam Integer id,@RequestParam String handleResult) {
        TComplaint tComplaint = tComplaintService.selectById(id);
        if(SinataUtil.isNotEmpty(tComplaint)){
            tComplaint.setHandleResult(handleResult);
            tComplaint.setHandleUserId(ShiroKit.getUser().getId());
            tComplaint.setIsHandle(1);
            tComplaint.setHandleTime(new Date());
            tComplaintService.updateById(tComplaint);
            //增加系统消息
            TSystemNotice notice = new TSystemNotice();
            notice.setType(2);
            notice.setUserType(1);
            notice.setContent("投诉处理结果:【"+handleResult+"】。");
            notice.setUserId(tComplaint.getUserId());
            notice.setInsertTime(new Date());
            notice.setRead(1);
            tSystemNoticeService.insert(notice);
            new Thread(new Runnable() {
                @Override
                public void run() {
                    if(pushMinistryOfTransport){//上传数据
                        pushMinistryOfTransportUtil.ratedPassengerComplaint(tComplaint.getId());
                    }
                }
            }).start();
        }
    public Object audit(Integer tComplaintId,String notes) {
        TComplaint tComplaint = tComplaintService.selectById(tComplaintId);
        tComplaint.setNotes(notes);
        tComplaint.setState(2);
        // 审核用户id
        Subject subject = ShiroKit.getSubject();
        ShiroUser shiroUser = (ShiroUser)subject.getPrincipal();
        tComplaint.setAuditId(shiroUser.getId());
        tComplaint.setAuditPersonName(shiroUser.getName());
        tComplaint.setAuditTime(new Date());
        tComplaintService.updateById(tComplaint);
        return SUCCESS_TIP;
    }
    /**
     * 删除投诉
     * 获取列表
     */
    @RequestMapping(value = "/list")
    @ResponseBody
    public Object list(String createTime,String userName,String userPhone,String driverPhone,Integer state) {
        return tComplaintService.getPageList(createTime,userName,userPhone,driverPhone,state);
    }
    /**
     * 获取列表
     */
    @RequestMapping(value = "/list-back")
    @ResponseBody
    public Object listBack(String condition) {
        return tComplaintService.selectList(null);
    }
    /**
     * 新增
     */
    @RequestMapping(value = "/add")
    @ResponseBody
    public Object add(TComplaint tComplaint) {
        tComplaintService.insert(tComplaint);
        return SUCCESS_TIP;
    }
    /**
     * 删除
     */
    @RequestMapping(value = "/delete")
    @ResponseBody
    public Object delete(Integer tComplaintId) {
    public Object delete(@RequestParam Integer tComplaintId) {
        tComplaintService.deleteById(tComplaintId);
        return SUCCESS_TIP;
    }
    /**
     * 修改投诉列表
     * 修改
     */
    @RequestMapping(value = "/update")
    @ResponseBody
@@ -176,7 +137,7 @@
    }
    /**
     * 投诉列表详情
     * 详情
     */
    @RequestMapping(value = "/detail/{tComplaintId}")
    @ResponseBody
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCouponController.java
@@ -6,7 +6,11 @@
import com.stylefeng.guns.core.util.DateUtil;
import com.stylefeng.guns.modular.system.controller.req.CouponSendReq;
import com.stylefeng.guns.modular.system.enums.CouponStatusEnum;
import com.stylefeng.guns.modular.system.model.TAgent;
import com.stylefeng.guns.modular.system.model.TUserToCoupon;
import com.stylefeng.guns.modular.system.service.ITUserToCouponService;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.hdf.extractor.TC;
import org.springframework.stereotype.Controller;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
@@ -21,6 +25,8 @@
import com.stylefeng.guns.modular.system.model.TCoupon;
import com.stylefeng.guns.modular.system.service.ITCouponService;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.*;
/**
@@ -37,6 +43,8 @@
    @Autowired
    private ITCouponService tCouponService;
    @Autowired
    private ITUserToCouponService tUserToCouponService;
    /**
     * 跳转到首页
@@ -86,8 +94,22 @@
            wrapper.between("create_time",startTime,endTime);
        }
        wrapper.orderBy(true,"create_time",false);
        wrapper.groupBy(true,"coupon_name");
        wrapper.groupBy(true,"coupon_type");
        return tCouponService.selectList(wrapper);
    }
    /**
     * 获取活动券列表
     */
    @RequestMapping(value = "/activityCouponList")
    @ResponseBody
    public Object activityCouponList(String couponName) {
        EntityWrapper<TCoupon> wrapper = new EntityWrapper<>();
        if(StringUtils.hasLength(couponName)){
            wrapper.like("coupon_name",couponName);
        }
        wrapper.eq("coupon_type",1);
        wrapper.eq("coupon_state",1);
        wrapper.orderBy(true,"create_time",false);
        return tCouponService.selectList(wrapper);
    }
@@ -126,6 +148,33 @@
    }
    /**
     * 修改优惠券状态
     */
    @RequestMapping(value = "/update-status")
    @ResponseBody
    public Object updateStatus(Integer id,Integer status) {
        TCoupon tCoupon = tCouponService.selectById(id);
        // 查询已启用的新人券数量
        int count = tCouponService.selectCount(new EntityWrapper<TCoupon>().eq("coupon_state", 1)
                .eq("coupon_type",2));
        // 判断是否为新人券,新人券只可启用一条记录
        if(count > 0 && 2 == tCoupon.getCouponType() && 2 == status){
            return new SuccessTip(500,"已有启动的新人券!");
        }
        if(1 == status){
            tCoupon.setCouponState(2);
        }
        if(2 == status){
            tCoupon.setCouponState(1);
        }
        tCouponService.updateById(tCoupon);
        return SUCCESS_TIP;
    }
    /**
     * 修改
     */
    @RequestMapping(value = "/update")
@@ -154,8 +203,27 @@
        List<Integer> userIds = couponSendReq.getUserIds();
        // 查询选择的优惠券
        TCoupon tCoupon = tCouponService.selectById(couponSendReq.getCouponId());
        List<TUserToCoupon> tUserToCoupons = new ArrayList<>(userIds.size());
        for (Integer userId : userIds) {
            // 创建用户优惠券关联表
            TUserToCoupon tUserToCoupon = new TUserToCoupon();
            tUserToCoupon.setCouponId(tCoupon.getId());
            tUserToCoupon.setUserId(userId);
            tUserToCoupon.setCouponTotal(1);
            tUserToCoupon.setValidCount(1);
            Date expireTime = Date.from(LocalDate.now().plusDays(tCoupon.getCouponValidity()).atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
            System.err.println(expireTime);
            tUserToCoupon.setExpireTime(expireTime);
            tUserToCoupons.add(tUserToCoupon);
        }
        tUserToCouponService.insertBatch(tUserToCoupons);
        // 查询该优惠券的列表
        List<TCoupon> tCoupons = tCouponService.selectList(new EntityWrapper<TCoupon>().eq("coupon_name", couponSendReq.getCouponName())
        /*List<TCoupon> tCoupons = tCouponService.selectList(new EntityWrapper<TCoupon>().eq("coupon_name", couponSendReq.getCouponName())
                .eq("coupon_status",CouponStatusEnum.UNISSUED.getCode()));
        Assert.isTrue(!CollectionUtils.isEmpty(tCoupons),"该优惠券不存在!");
        List<TCoupon> tCouponList = new ArrayList<>();
@@ -186,7 +254,7 @@
        }
        if(!CollectionUtils.isEmpty(tCouponList)){
            tCouponService.updateBatchById(tCouponList);
        }
        }*/
        return SUCCESS_TIP;
    }
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java
@@ -211,11 +211,46 @@
     */
    @RequestMapping("/areaPageUpdate")
    public String areaPageUpdate(String area,String areaId,Model model) {
        String[] split = area.split("/");
        model.addAttribute("provinceName",split[0]);
        model.addAttribute("cityName",split[1]);
        model.addAttribute("districtName",split[2]);
        String[] split1 = areaId.split("/");
        model.addAttribute("provinceId",split1[0]);
        model.addAttribute("cityId",split1[1]);
        model.addAttribute("districtId",split1[2]);
        List<TRegion> tRegions = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", 0));
        model.addAttribute("provinceList",tRegions);
        List<Integer> provinceIds = tRegions.stream().map(TRegion::getId).collect(Collectors.toList());
        // 查询市
        List<TRegion> tRegions1 = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", split1[0]));
        model.addAttribute("cityList",tRegions1);
        // 查询区
        List<Integer> cityIds = tRegions1.stream().map(TRegion::getId).collect(Collectors.toList());
        List<TRegion> tRegions2 = tRegionService.selectList(new EntityWrapper<TRegion>().in("parent_id", cityIds));
        model.addAttribute("districtList",tRegions2);
        return PREFIX + "tDriverAreaUpdate.html";
    }
    /**
     * 跳转区域页面新增
     */
    @RequestMapping("/areaPageAdd")
    public String areaPageAdd(String area,String areaId,Model model) {
        String[] split1 = areaId.split("/");
        List<TRegion> tRegions = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", 0));
        model.addAttribute("provinceList",tRegions);
        List<Integer> provinceIds = tRegions.stream().map(TRegion::getId).collect(Collectors.toList());
        // 查询市
        List<TRegion> tRegions1 = tRegionService.selectList(new EntityWrapper<TRegion>().in("parent_id", provinceIds));
        List<TRegion> tRegions1 = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", split1[0]));
        model.addAttribute("cityList",tRegions1);
        // 查询区
@@ -227,23 +262,28 @@
            String[] split = area.split("/");
            model.addAttribute("provinceName",split[0]);
            model.addAttribute("cityName",split[1]);
            model.addAttribute("districtName",split[2]);
            if(split.length>2){
                model.addAttribute("districtName",split[2]);
            }else {
                model.addAttribute("districtName","");
            }
            String[] split1 = areaId.split("/");
            model.addAttribute("provinceId",split1[0]);
            model.addAttribute("cityId",split1[1]);
            model.addAttribute("districtId",split1[2]);
        }
        return PREFIX + "tDriverAreaUpdate.html";
    }
            if(split1.length>2) {
                model.addAttribute("districtId", split1[2]);
            }else {
                model.addAttribute("districtId", "");
            }
        }else {
            model.addAttribute("provinceName","");
            model.addAttribute("cityName","split[1]");
            model.addAttribute("districtName","");
    /**
     * 跳转区域页面新增
     */
    @RequestMapping("/areaPageAdd")
    public String areaPageAdd(Model model) {
        List<TRegion> tRegions = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", 0));
        model.addAttribute("provinceList",tRegions);
            model.addAttribute("provinceId","");
            model.addAttribute("cityId","split1[1]");
            model.addAttribute("districtId", "");
        }
        return PREFIX + "tDriverAreaAdd.html";
    }
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TEvaluateController.java
New file
@@ -0,0 +1,190 @@
package com.stylefeng.guns.modular.system.controller.general;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.core.base.controller.BaseController;
import com.stylefeng.guns.modular.system.controller.resp.TEvaluateResp;
import com.stylefeng.guns.modular.system.controller.resp.TOrderResp;
import com.stylefeng.guns.modular.system.controller.util.ExcelUtil;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.beans.factory.annotation.Autowired;
import com.stylefeng.guns.core.log.LogObjectHolder;
import org.springframework.web.bind.annotation.RequestParam;
import com.stylefeng.guns.modular.system.model.TEvaluate;
import com.stylefeng.guns.modular.system.service.ITEvaluateService;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Objects;
/**
 * 控制器
 *
 * @author fengshuonan
 * @Date 2023-02-27 14:03:41
 */
@Controller
@RequestMapping("/tEvaluate")
public class TEvaluateController extends BaseController {
    private String PREFIX = "/system/tEvaluate/";
    @Autowired
    private ITEvaluateService tEvaluateService;
    /**
     * 跳转到首页
     */
    @RequestMapping("")
    public String index() {
        return PREFIX + "tEvaluate.html";
    }
    /**
     * 跳转到添加
     */
    @RequestMapping("/tEvaluate_add")
    public String tEvaluateAdd() {
        return PREFIX + "tEvaluate_add.html";
    }
    /**
     * 跳转到修改
     */
    @RequestMapping("/tEvaluate_update/{tEvaluateId}")
    public String tEvaluateUpdate(@PathVariable Integer tEvaluateId, Model model) {
        TEvaluate tEvaluate = tEvaluateService.selectById(tEvaluateId);
        model.addAttribute("item",tEvaluate);
        LogObjectHolder.me().set(tEvaluate);
        return PREFIX + "tEvaluate_edit.html";
    }
    /**
     * 跳转详情页面
     */
    @RequestMapping("/evaluateDetail")
    public String evaluateDetail(Integer evaluateId, Model model) {
        tEvaluateService.evaluateDetail(evaluateId,model);
        return PREFIX + "tEvaluateDetail.html";
    }
    /**
     * 获取列表
     */
    @RequestMapping(value = "/list")
    @ResponseBody
    public Object list(String createTime,String userName,String driverName ,Integer score) {
        return tEvaluateService.selectPageList(createTime,userName,driverName,null,score);
    }
    /**
     * 获取列表
     */
    @RequestMapping(value = "/list-back")
    @ResponseBody
    public Object listBack(String condition) {
        return tEvaluateService.selectList(null);
    }
    /**
     * 新增
     */
    @RequestMapping(value = "/add")
    @ResponseBody
    public Object add(TEvaluate tEvaluate) {
        tEvaluateService.insert(tEvaluate);
        return SUCCESS_TIP;
    }
    /**
     * 删除
     */
    @RequestMapping(value = "/delete")
    @ResponseBody
    public Object delete(@RequestParam Integer tEvaluateId) {
        tEvaluateService.deleteById(tEvaluateId);
        return SUCCESS_TIP;
    }
    /**
     * 修改
     */
    @RequestMapping(value = "/update")
    @ResponseBody
    public Object update(TEvaluate tEvaluate) {
        tEvaluateService.updateById(tEvaluate);
        return SUCCESS_TIP;
    }
    /**
     * 详情
     */
    @RequestMapping(value = "/detail/{tEvaluateId}")
    @ResponseBody
    public Object detail(@PathVariable("tEvaluateId") Integer tEvaluateId) {
        return tEvaluateService.selectById(tEvaluateId);
    }
    @ApiOperation(value = "导出评价列表",notes="导出评价列表")
    @RequestMapping(value = "/export")
    @ResponseBody
    public void export(String createTime,String userName,String driverName,Integer score, HttpServletResponse response) {
        try {
            Date date = new Date();
            DateFormat format = new SimpleDateFormat("yyyyMMdd");
            String time1 = format.format(date);
            String fileName = "EvaluateInfo"+time1+".xls";
            String[] title = new String[] {"评价时间","订单编号","评论用户",
                    "评论用户手机号","评论司机","司机手机号","评价分数","评价内容"};
            List<TEvaluateResp> list = tEvaluateService.selectPageList(createTime, userName, driverName, null, score);
            String[][] values = new String[list.size()][];
            for (int i = 0; i < list.size(); i++) {
                TEvaluateResp d = list.get(i);
                values[i] = new String[title.length];
                values[i][0] = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d.getCreateTime());
                values[i][1] = d.getCode();
                values[i][2] = d.getUserName();
                values[i][3] = d.getUserPhone();
                values[i][4] = d.getDriverName();
                values[i][5] = d.getDriverPhone();
                values[i][6] = String.valueOf(Objects.nonNull(d.getScore())?d.getScore(): "");
                Integer score1 = d.getScore();
                if(Objects.nonNull(score1)){
                    if(1 == score1){
                        values[i][6] = "非常差";
                    }else if (2 == score1){
                        values[i][6] = "差";
                    }else if (3 == score1){
                        values[i][6] = "一般";
                    }else if (4 == score1){
                        values[i][6] = "满意";
                    }else if (5 == score1){
                        values[i][6] = "非常满意";
                    }
                }else {
                    values[i][6] = "";
                }
                values[i][7] = d.getEvaluate();
            }
            HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook("Variance"+time1, title, values, null);
            ExcelUtil.setResponseHeader(response, fileName);
            OutputStream os = response.getOutputStream();
            wb.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java
@@ -4,11 +4,21 @@
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.core.base.controller.BaseController;
import com.stylefeng.guns.core.base.tips.SuccessTip;
import com.stylefeng.guns.core.log.LogObjectHolder;
import com.stylefeng.guns.modular.system.controller.resp.TAppUserDetailOrderResp;
import com.stylefeng.guns.modular.system.controller.resp.TDriverCommissionResp;
import com.stylefeng.guns.modular.system.controller.resp.TOrderResp;
import com.stylefeng.guns.modular.system.controller.util.ExcelUtil;
import com.stylefeng.guns.modular.system.model.TAppUser;
import com.stylefeng.guns.modular.system.model.TDriver;
import com.stylefeng.guns.modular.system.model.TOrder;
import com.stylefeng.guns.modular.system.service.ITAppUserService;
import com.stylefeng.guns.modular.system.service.ITOrderService;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@@ -18,7 +28,13 @@
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@@ -36,6 +52,8 @@
    @Autowired
    private ITOrderService tOrderService;
    @Autowired
    private ITAppUserService tAppUserService;
    /**
     * 跳转到首页
@@ -65,17 +83,106 @@
    }
    /**
     * 跳转异常页面
     * @return
     */
    @RequestMapping("/tOrder-exception")
    public String tOrderException(Model model) {
        return PREFIX + "tOrderException.html";
    }
    /**
     * 跳转到首页
     */
    @RequestMapping("/cancelOrder")
    public String cancelOrder() {
        return PREFIX + "tCancelOrder.html";
    }
    /**
     * 跳转冻结页面
     * @return
     */
    @RequestMapping("/tOrderException_start_and_stop")
    public String tAppUserStartAndStop( Integer id,
                                        Model model) {
        // 查询订单
        TOrder tOrder = tOrderService.selectById(id);
        TAppUser tAppUser = new TAppUser();
        if(Objects.nonNull(tOrder)){
            tAppUser = tAppUserService.selectById(tOrder.getUserId());
        }
        model.addAttribute("id",id);
        if(Objects.nonNull(tAppUser)){
            model.addAttribute("status",tAppUser.getStatus());
        }
        return PREFIX + "tOrderStartAndStopException.html";
    }
    /**
     * 跳转详情页面
     */
    @RequestMapping("/orderDetail")
    public String orderDetail(Integer orderId, Model model) {
        tOrderService.orderDetail(orderId,model);
        return PREFIX + "tOrderDetail.html";
    }
    /**
     * 跳转异常详情页面
     */
    @RequestMapping("/orderExceptionDetail")
    public String orderExceptionDetail(Integer orderId, Model model) {
        tOrderService.orderExceptionDetail(orderId,model);
        return PREFIX + "tOrderExceptionDetail.html";
    }
    /**
     * 获取列表
     */
    @ApiOperation(value = "获取订单列表")
    @ApiOperation(value = "用户获取订单列表")
    @RequestMapping(value = "/list")
    @ResponseBody
    public Object list(String condition,Integer userId) {
    public Object list(Integer userId) {
        EntityWrapper<TOrder> wrapper = new EntityWrapper<>();
        if(Objects.nonNull(userId)){
            wrapper.eq("user_id",userId);
        }
        return tOrderService.selectList(wrapper);
    }
    /**
     * 获取列表
     */
    @ApiOperation(value = "获取订单列表")
    @RequestMapping(value = "/orderList")
    @ResponseBody
    public Object orderList(String createTime,
                       String code,
                       Integer source,
                       String userName,
                       String userPhone,
                       Integer state,
                       String driverName) {
        return tOrderService.getOrderList(createTime, code, source, userName, userPhone, state, driverName,1);
    }
    /**
     * 获取列表
     */
    @ApiOperation(value = "获取订单异常列表")
    @RequestMapping(value = "/orderExceptionList")
    @ResponseBody
    public Object orderExceptionList(String createTime,
                            String code,
                            Integer source,
                            String userName,
                            String userPhone,
                            Integer state,
                            String driverName) {
        return tOrderService.getOrderList(createTime, code, source, userName, userPhone, state, driverName,2);
    }
    /**
@@ -97,7 +204,7 @@
            TAppUserDetailOrderResp tAppUserDetailOrderResp = new TAppUserDetailOrderResp();
            BeanUtils.copyProperties(tOrder,tAppUserDetailOrderResp);
            // 计算总里程
            // TODO 计算总里程
            // 计算总时长
@@ -157,4 +264,158 @@
    public Object detail(@PathVariable("tOrderId") Integer tOrderId) {
        return tOrderService.selectById(tOrderId);
    }
    @ApiOperation(value = "导出订单列表",notes="导出订单列表")
    @RequestMapping(value = "/export")
    @ResponseBody
    public void export(String createTime,
                       String code,
                       Integer source,
                       String userName,
                       String userPhone,
                       Integer state,
                       String driverName,HttpServletResponse response) {
        try {
            Date date = new Date();
            DateFormat format = new SimpleDateFormat("yyyyMMdd");
            String time1 = format.format(date);
            String fileName = "OrderInfo"+time1+".xls";
            String[] title = new String[] {"下单时间","订单编号","订单来源","开始服务时间","下单用户昵称",
                    "下单用户手机","起点地址","终点地址","接单司机","司机电话","预估价","取消次数","订单状态"};
            List<TOrderResp> orderList = tOrderService.getOrderList(createTime, code, source, userName, userPhone, state, driverName,1);
            String[][] values = new String[orderList.size()][];
            for (int i = 0; i < orderList.size(); i++) {
                TOrderResp d = orderList.get(i);
                values[i] = new String[title.length];
                values[i][0] = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d.getCreateTime());
                values[i][1] = d.getCode();
                Integer source1 = d.getSource();
                if(1 == source1){
                    values[i][2] = "小程序";
                }else if(2 == source1){
                    values[i][2] = "司机创建";
                }
                values[i][3] = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d.getStartTime());
                values[i][4] = d.getUserName();
                values[i][5] = d.getUserPhone();
                values[i][6] = d.getStartAddress();
                values[i][7] = d.getEndAddress();
                values[i][8] = d.getDriverName();
                values[i][9] = d.getDriverPhone();
                values[i][10] = String.valueOf(Objects.nonNull(d.getEstimatedPrice())?d.getEstimatedPrice(): BigDecimal.ZERO);
                values[i][11] = String.valueOf(d.getCancelCount());
                Integer status1 = d.getState();
                if(101 == status1){
                    values[i][12] = "待接单";
                }else if(102 == status1){
                    values[i][12] = "已接单";
                }else if(103 == status1){
                    values[i][12] = "前往预约点";
                }else if(104 == status1){
                    values[i][12] = "到达预约点";
                }else if(105 == status1){
                    values[i][12] = "开始服务";
                }else if(106 == status1){
                    values[i][12] = "到达目的地";
                }else if(107 == status1){
                    values[i][12] = "待支付";
                }else if(108 == status1){
                    values[i][12] = "待评价";
                }else if(109 == status1){
                    values[i][12] = "已完成";
                }else if(201 == status1){
                    values[i][12] = "转单中";
                }else if(301 == status1){
                    values[i][12] = "已取消";
                }else if(401 == status1){
                    values[i][12] = "等待中";
                }
            }
            HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook("Variance"+time1, title, values, null);
            ExcelUtil.setResponseHeader(response, fileName);
            OutputStream os = response.getOutputStream();
            wb.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    @ApiOperation(value = "导出订单列表",notes="导出订单列表")
    @RequestMapping(value = "/export-exception")
    @ResponseBody
    public void exportException(String createTime,
                       String code,
                       Integer source,
                       String userName,
                       String userPhone,
                       Integer state,
                       String driverName,HttpServletResponse response) {
        try {
            Date date = new Date();
            DateFormat format = new SimpleDateFormat("yyyyMMdd");
            String time1 = format.format(date);
            String fileName = "OrderExceptionInfo"+time1+".xls";
            String[] title = new String[] {"下单时间","订单编号","订单来源","乘车时间","下单用户昵称",
                    "下单用户手机","起点","终点","接单司机","司机电话","预估价格","取消次数","订单状态"};
            List<TOrderResp> orderList = tOrderService.getOrderList(createTime, code, source, userName, userPhone, state, driverName,1);
            String[][] values = new String[orderList.size()][];
            for (int i = 0; i < orderList.size(); i++) {
                TOrderResp d = orderList.get(i);
                values[i] = new String[title.length];
                values[i][0] = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d.getCreateTime());
                values[i][1] = d.getCode();
                Integer source1 = d.getSource();
                if(1 == source1){
                    values[i][2] = "小程序";
                }else if(2 == source1){
                    values[i][2] = "司机创建";
                }
                values[i][3] = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d.getStartTime());
                values[i][4] = d.getUserName();
                values[i][5] = d.getUserPhone();
                values[i][6] = d.getStartAddress();
                values[i][7] = d.getEndAddress();
                values[i][8] = d.getDriverName();
                values[i][9] = d.getDriverPhone();
                values[i][10] = String.valueOf(Objects.nonNull(d.getEstimatedPrice())?d.getEstimatedPrice(): BigDecimal.ZERO);
                values[i][11] = String.valueOf(d.getCancelCount());
                Integer status1 = d.getState();
                if(101 == status1){
                    values[i][12] = "待接单";
                }else if(102 == status1){
                    values[i][12] = "已接单";
                }else if(103 == status1){
                    values[i][12] = "前往预约点";
                }else if(104 == status1){
                    values[i][12] = "到达预约点";
                }else if(105 == status1){
                    values[i][12] = "开始服务";
                }else if(106 == status1){
                    values[i][12] = "到达目的地";
                }else if(107 == status1){
                    values[i][12] = "待支付";
                }else if(108 == status1){
                    values[i][12] = "待评价";
                }else if(109 == status1){
                    values[i][12] = "已完成";
                }else if(201 == status1){
                    values[i][12] = "转单中";
                }else if(301 == status1){
                    values[i][12] = "已取消";
                }else if(401 == status1){
                    values[i][12] = "等待中";
                }
            }
            HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook("Variance"+time1, title, values, null);
            ExcelUtil.setResponseHeader(response, fileName);
            OutputStream os = response.getOutputStream();
            wb.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TRechargeRecordController.java
@@ -1,6 +1,16 @@
package com.stylefeng.guns.modular.system.controller.general;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.core.base.controller.BaseController;
import com.stylefeng.guns.modular.system.controller.resp.TDriverCommissionResp;
import com.stylefeng.guns.modular.system.controller.resp.TRechargeRecordAgentResp;
import com.stylefeng.guns.modular.system.controller.resp.TRechargeRecordUserResp;
import com.stylefeng.guns.modular.system.controller.util.ExcelUtil;
import com.stylefeng.guns.modular.system.model.TDriver;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@@ -11,6 +21,15 @@
import org.springframework.web.bind.annotation.RequestParam;
import com.stylefeng.guns.modular.system.model.TRechargeRecord;
import com.stylefeng.guns.modular.system.service.ITRechargeRecordService;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
 * 控制器
@@ -52,6 +71,40 @@
        model.addAttribute("item",tRechargeRecord);
        LogObjectHolder.me().set(tRechargeRecord);
        return PREFIX + "tRechargeRecord_edit.html";
    }
    /**
     * 跳转到用户充值列表
     */
    @RequestMapping("/userRecharge")
    public String userRecharge() {
        return PREFIX + "tRechargeRecordUser.html";
    }
    /**
     * 跳转到代理商充值列表
     */
    @RequestMapping("/agentRecharge")
    public String agentRecharge() {
        return PREFIX + "tRechargeRecordAgent.html";
    }
    /**
     * 获取用户充值列表
     */
    @RequestMapping(value = "/userRechargeList")
    @ResponseBody
    public Object userRechargeList(String userName,String userPhone,String code,String createTime) {
        return tRechargeRecordService.userRecharge(userName,userPhone,code,createTime);
    }
    /**
     * 获取代理商充值列表
     */
    @RequestMapping(value = "/agentRechargeList")
    @ResponseBody
    public Object agentRechargeList(String driverName,String driverPhone,String createTime) {
        return tRechargeRecordService.agentRechargeList(driverName,driverPhone,createTime);
    }
    /**
@@ -101,4 +154,103 @@
    public Object detail(@PathVariable("tRechargeRecordId") Integer tRechargeRecordId) {
        return tRechargeRecordService.selectById(tRechargeRecordId);
    }
    @ApiOperation(value = "导出用户充值列表",notes="导出用户充值列表")
    @RequestMapping(value = "/exportUserRecharge")
    @ResponseBody
    public void exportUserRecharge(String userName,String userPhone,String code,String createTime, HttpServletResponse response) {
        try {
            Date date = new Date();
            DateFormat format = new SimpleDateFormat("yyyyMMdd");
            String time1 = format.format(date);
            String fileName = "UserRechargeRecord"+time1+".xls";
            String[] title = new String[] {"充值时间","流水ID","用户姓名","用户手机号","充值金额",
                    "充值方式","状态"};
            List<TRechargeRecordUserResp> userRechargeList = tRechargeRecordService.userRecharge(userName,userPhone,code,createTime);
            String[][] values = new String[userRechargeList.size()][];
            for (int i = 0; i < userRechargeList.size(); i++) {
                TRechargeRecordUserResp d = userRechargeList.get(i);
                values[i] = new String[title.length];
                values[i][0] = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d.getCreateTime());
                values[i][1] = d.getCode();
                values[i][2] = d.getUserName();
                values[i][3] = d.getUserPhone();
                values[i][4] = String.valueOf(Objects.nonNull(d.getAmount())?d.getAmount(): BigDecimal.ZERO);
                Integer payType = d.getPayType();
                if(1 == payType){
                    values[i][5] = "微信";
                }else if(2 == payType){
                    values[i][5] = "系统充值";
                }else{
                    values[i][5] = "其他";
                }
                Integer status1 = d.getPayStatus();
                if(1 == status1){
                    values[i][6] = "失败";
                }else if(2 == status1){
                    values[i][6] = "成功";
                }
            }
            HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook("Variance"+time1, title, values, null);
            ExcelUtil.setResponseHeader(response, fileName);
            OutputStream os = response.getOutputStream();
            wb.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    @ApiOperation(value = "导出代理商充值列表",notes="导出代理商充值列表")
    @RequestMapping(value = "/exportAgentRecharge")
    @ResponseBody
    public void exportAgentRecharge(String driverName,String driverPhone,String createTime, HttpServletResponse response) {
        try {
            Date date = new Date();
            DateFormat format = new SimpleDateFormat("yyyyMMdd");
            String time1 = format.format(date);
            String fileName = "AgentRechargeRecord"+time1+".xls";
            String[] title = new String[] {"充值时间","代理商姓名","联系电话","代理区域","司机姓名","司机手机号","充值金额",
                    "充值方式","状态"};
            List<TRechargeRecordAgentResp> agentRechargeList = tRechargeRecordService.agentRechargeList(driverName,driverPhone,createTime);
            String[][] values = new String[agentRechargeList.size()][];
            for (int i = 0; i < agentRechargeList.size(); i++) {
                TRechargeRecordAgentResp d = agentRechargeList.get(i);
                values[i] = new String[title.length];
                values[i][0] = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d.getCreateTime());
                values[i][1] = d.getPrincipal();
                values[i][2] = d.getPrincipalPhone();
                values[i][3] = d.getProvinceName()+d.getCityName();
                values[i][4] = d.getDriverName();
                values[i][5] = d.getDriverPhone();
                values[i][6] = String.valueOf(Objects.nonNull(d.getAmount())?d.getAmount(): BigDecimal.ZERO);
                Integer payType = d.getPayType();
                if(1 == payType){
                    values[i][7] = "微信";
                }else if(2 == payType){
                    values[i][7] = "系统充值";
                }else{
                    values[i][7] = "其他";
                }
                Integer status1 = d.getPayStatus();
                if(1 == status1){
                    values[i][8] = "失败";
                }else if(2 == status1){
                    values[i][8] = "成功";
                }
            }
            HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook("Variance"+time1, title, values, null);
            ExcelUtil.setResponseHeader(response, fileName);
            OutputStream os = response.getOutputStream();
            wb.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TSystemConfigController.java
New file
@@ -0,0 +1,244 @@
package com.stylefeng.guns.modular.system.controller.general;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.core.base.controller.BaseController;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.beans.factory.annotation.Autowired;
import com.stylefeng.guns.core.log.LogObjectHolder;
import org.springframework.web.bind.annotation.RequestParam;
import com.stylefeng.guns.modular.system.model.TSystemConfig;
import com.stylefeng.guns.modular.system.service.ITSystemConfigService;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
/**
 * 控制器
 *
 * @author fengshuonan
 * @Date 2023-03-02 17:09:55
 */
@Controller
@RequestMapping("/tSystemConfig")
public class TSystemConfigController extends BaseController {
    private String PREFIX = "/system/tSystemConfig/";
    @Autowired
    private ITSystemConfigService tSystemConfigService;
    /**
     * 跳转到首页
     */
    @RequestMapping("")
    public String index() {
        return PREFIX + "tSystemConfig.html";
    }
    /**
     * 跳转到添加
     */
    @RequestMapping("/tSystemConfig_add")
    public String tSystemConfigAdd() {
        return PREFIX + "tSystemConfig_add.html";
    }
    /**
     * 跳转到修改
     */
    @RequestMapping("/tSystemConfig_update/{tSystemConfigId}")
    public String tSystemConfigUpdate(@PathVariable Integer tSystemConfigId, Model model) {
        TSystemConfig tSystemConfig = tSystemConfigService.selectById(tSystemConfigId);
        model.addAttribute("item",tSystemConfig);
        LogObjectHolder.me().set(tSystemConfig);
        return PREFIX + "tSystemConfig_edit.html";
    }
    /**
     * 跳转到派单规则
     */
    @RequestMapping("/dispatchRules")
    public String dispatchRules(Model model) {
        TSystemConfig tSystemConfig = tSystemConfigService.selectOne(new EntityWrapper<TSystemConfig>().eq("type", 1)
                .last("LIMIT 1"));
        JSONObject jsonObject = JSONObject.parseObject(tSystemConfig.getContent());
        model.addAttribute("num1",jsonObject.getInteger("num1"));
        model.addAttribute("num2",jsonObject.getInteger("num2"));
        model.addAttribute("num3",jsonObject.getInteger("num3"));
        model.addAttribute("num4",jsonObject.getInteger("num4"));
        model.addAttribute("num5",jsonObject.getInteger("num5"));
        return PREFIX + "tSystemConfigDispatchRules.html";
    }
    /**
     * 跳转到佣金分成规则
     */
    @RequestMapping("/commissionShareRules")
    public String commissionShareRules(Model model) {
        TSystemConfig tSystemConfig = tSystemConfigService.selectOne(new EntityWrapper<TSystemConfig>().eq("type", 2)
                .last("LIMIT 1"));
        JSONObject jsonObject = JSONObject.parseObject(tSystemConfig.getContent());
        model.addAttribute("num1",jsonObject.getInteger("num1"));
        model.addAttribute("num2",jsonObject.getInteger("num2"));
        model.addAttribute("num3",jsonObject.getInteger("num3"));
        model.addAttribute("num4",jsonObject.getInteger("num4"));
        model.addAttribute("num5",jsonObject.getInteger("num5"));
        model.addAttribute("num6",jsonObject.getInteger("num6"));
        model.addAttribute("num7",jsonObject.getInteger("num7"));
        return PREFIX + "tSystemConfigCommissionShareRules.html";
    }
    /**
     * 跳转到抽成规则
     */
    @RequestMapping("/extractionRules")
    public String extractionRules(Model model) {
        TSystemConfig tSystemConfig = tSystemConfigService.selectOne(new EntityWrapper<TSystemConfig>().eq("type", 3)
                .last("LIMIT 1"));
        JSONObject jsonObject = JSONObject.parseObject(tSystemConfig.getContent());
        model.addAttribute("num1",jsonObject.getInteger("num1"));
        model.addAttribute("num2",jsonObject.getInteger("num2"));
        model.addAttribute("num3",jsonObject.getInteger("num3"));
        return PREFIX + "tSystemConfigExtractionRules.html";
    }
    /**
     * 跳转到积分规则
     */
    @RequestMapping("/integralRules")
    public String integralRules(Model model) {
        TSystemConfig tSystemConfig = tSystemConfigService.selectOne(new EntityWrapper<TSystemConfig>().eq("type", 4)
                .last("LIMIT 1"));
        JSONObject jsonObject = JSONObject.parseObject(tSystemConfig.getContent());
        model.addAttribute("num1",jsonObject.getString("num1"));
        model.addAttribute("num2",jsonObject.getString("num2"));
        model.addAttribute("num3",jsonObject.getInteger("num3"));
        model.addAttribute("num4",jsonObject.getInteger("num4"));
        model.addAttribute("num5",jsonObject.getInteger("num5"));
        model.addAttribute("num6",jsonObject.getInteger("num6"));
        model.addAttribute("num7",jsonObject.getInteger("num7"));
        model.addAttribute("num8",jsonObject.getInteger("num8"));
        model.addAttribute("num9",jsonObject.getInteger("num9"));
        model.addAttribute("num10",jsonObject.getInteger("num10"));
        return PREFIX + "tSystemConfigIntegralRules.html";
    }
    /**
     * 跳转到价格规则
     */
    @RequestMapping("/priceRules")
    public String priceRules(Model model) {
        TSystemConfig tSystemConfig = tSystemConfigService.selectOne(new EntityWrapper<TSystemConfig>().eq("type", 5)
                .last("LIMIT 1"));
        JSONObject jsonObject = JSONObject.parseObject(tSystemConfig.getContent());
        JSONArray array = jsonObject.getJSONArray("ChargeStandard");
        JSONArray objects = new JSONArray();
        for (int i = 0; i < array.size(); i++) {
            JSONObject jsonObject1 = JSONObject.parseObject(JSONObject.toJSONString(array.get(i)));
            if(i == 0){
                jsonObject1.put("key",0);
            }else {
                jsonObject1.put("key",1);
            }
            objects.add(jsonObject1);
        }
        model.addAttribute("array",objects);
        JSONObject extraCost = JSONObject.parseObject(jsonObject.getString("ExtraCost"));
        model.addAttribute("ExtraCost",extraCost);
        return PREFIX + "tSystemConfigPriceRules.html";
    }
    /**
     * 跳转到余额规则
     */
    @RequestMapping("/balanceRules")
    public String balanceRules(Model model) {
        TSystemConfig tSystemConfig = tSystemConfigService.selectOne(new EntityWrapper<TSystemConfig>().eq("type", 6)
                .last("LIMIT 1"));
        JSONObject jsonObject = JSONObject.parseObject(tSystemConfig.getContent());
        model.addAttribute("num1",jsonObject.getInteger("num1"));
        model.addAttribute("num2",jsonObject.getInteger("num2"));
        return PREFIX + "tSystemConfigBalanceRules.html";
    }
    /**
     * 跳转到客服管理
     */
    @RequestMapping("/serviceMgmt")
    public String serviceMgmt(Model model) {
        TSystemConfig tSystemConfig = tSystemConfigService.selectOne(new EntityWrapper<TSystemConfig>().eq("type", 7)
                .last("LIMIT 1"));
        JSONObject jsonObject = JSONObject.parseObject(tSystemConfig.getContent());
        model.addAttribute("num1",jsonObject.getString("num1"));
        return PREFIX + "tSystemConfigServiceMgmt.html";
    }
    /**
     * 获取列表
     */
    @RequestMapping(value = "/systemConfigSubmit")
    @ResponseBody
    public Object systemConfigSubmit(Integer type,String content) {
        TSystemConfig tSystemConfig = tSystemConfigService.selectOne(new EntityWrapper<TSystemConfig>().eq("type", type)
                .last("LIMIT 1"));
        System.err.println(content);
        tSystemConfig.setContent(content);
        return tSystemConfigService.updateById(tSystemConfig);
    }
    /**
     * 获取列表
     */
    @RequestMapping(value = "/list")
    @ResponseBody
    public Object list(String condition) {
        return tSystemConfigService.selectList(null);
    }
    /**
     * 新增
     */
    @RequestMapping(value = "/add")
    @ResponseBody
    public Object add(TSystemConfig tSystemConfig) {
        tSystemConfigService.insert(tSystemConfig);
        return SUCCESS_TIP;
    }
    /**
     * 删除
     */
    @RequestMapping(value = "/delete")
    @ResponseBody
    public Object delete(@RequestParam Integer tSystemConfigId) {
        tSystemConfigService.deleteById(tSystemConfigId);
        return SUCCESS_TIP;
    }
    /**
     * 修改
     */
    @RequestMapping(value = "/update")
    @ResponseBody
    public Object update(TSystemConfig tSystemConfig) {
        tSystemConfigService.updateById(tSystemConfig);
        return SUCCESS_TIP;
    }
    /**
     * 详情
     */
    @RequestMapping(value = "/detail/{tSystemConfigId}")
    @ResponseBody
    public Object detail(@PathVariable("tSystemConfigId") Integer tSystemConfigId) {
        return tSystemConfigService.selectById(tSystemConfigId);
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TYouTuiController.java
New file
@@ -0,0 +1,157 @@
package com.stylefeng.guns.modular.system.controller.general;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.core.base.controller.BaseController;
import com.stylefeng.guns.core.base.tips.SuccessTip;
import com.stylefeng.guns.core.util.DateUtil;
import com.stylefeng.guns.modular.system.model.TAgent;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.beans.factory.annotation.Autowired;
import com.stylefeng.guns.core.log.LogObjectHolder;
import org.springframework.web.bind.annotation.RequestParam;
import com.stylefeng.guns.modular.system.model.TYouTui;
import com.stylefeng.guns.modular.system.service.ITYouTuiService;
import java.util.Date;
import java.util.Objects;
/**
 * 控制器
 *
 * @author fengshuonan
 * @Date 2023-03-01 16:17:43
 */
@Controller
@RequestMapping("/tYouTui")
public class TYouTuiController extends BaseController {
    private String PREFIX = "/system/tYouTui/";
    @Autowired
    private ITYouTuiService tYouTuiService;
    /**
     * 跳转到首页
     */
    @RequestMapping("")
    public String index() {
        return PREFIX + "tYouTui.html";
    }
    /**
     * 跳转到添加
     */
    @RequestMapping("/tYouTui_add")
    public String tYouTuiAdd() {
        return PREFIX + "tYouTui_add.html";
    }
    /**
     * 跳转到修改
     */
    @RequestMapping("/tYouTui_update/{tYouTuiId}")
    public String tYouTuiUpdate(@PathVariable Integer tYouTuiId, Model model) {
        TYouTui tYouTui = tYouTuiService.selectById(tYouTuiId);
        model.addAttribute("item",tYouTui);
        LogObjectHolder.me().set(tYouTui);
        return PREFIX + "tYouTui_edit.html";
    }
    /**
     * 获取列表
     */
    @RequestMapping(value = "/list")
    @ResponseBody
    public Object list(String createTime,Integer type) {
        EntityWrapper<TYouTui> wrapper = new EntityWrapper<>();
        if(Objects.nonNull(type)){
            wrapper.eq("type",type);
        }
        // 开始,结束时间
        if(StringUtils.hasLength(createTime)){
            String[] split = createTime.split(" - ");
            Date startTime = DateUtil.getDate_str4(split[0]);
            Date endTime = DateUtil.getDate_str4(split[1]);
            wrapper.between("createTime",startTime,endTime);
        }
        return tYouTuiService.selectList(wrapper);
    }
    /**
     * 获取列表
     */
    @RequestMapping(value = "/list-back")
    @ResponseBody
    public Object listBack(String condition) {
        return tYouTuiService.selectList(null);
    }
    /**
     * 新增
     */
    @RequestMapping(value = "/add")
    @ResponseBody
    public Object add(TYouTui tYouTui) {
        tYouTui.setContent(tYouTui.getServiceContent());
        tYouTuiService.insert(tYouTui);
        return SUCCESS_TIP;
    }
    /**
     * 删除
     */
    @RequestMapping(value = "/delete")
    @ResponseBody
    public Object delete(@RequestParam Integer tYouTuiId) {
        TYouTui tYouTui = tYouTuiService.selectById(tYouTuiId);
        if(1 == tYouTui.getStatus()){
            return new SuccessTip(500,"启用下的优推不可删除!");
        }
        tYouTuiService.deleteById(tYouTuiId);
        return SUCCESS_TIP;
    }
    /**
     * 修改用户状态
     */
    @RequestMapping(value = "/update-status")
    @ResponseBody
    public Object updateStatus(Integer id,Integer status) {
        TYouTui tYouTui = tYouTuiService.selectById(id);
        if(1 == status){
            tYouTui.setStatus(2);
        }
        if(2 == status){
            tYouTui.setStatus(1);
        }
        tYouTuiService.updateById(tYouTui);
        return SUCCESS_TIP;
    }
    /**
     * 修改
     */
    @RequestMapping(value = "/update")
    @ResponseBody
    public Object update(TYouTui tYouTui) {
        tYouTuiService.updateById(tYouTui);
        return SUCCESS_TIP;
    }
    /**
     * 详情
     */
    @RequestMapping(value = "/detail/{tYouTuiId}")
    @ResponseBody
    public Object detail(@PathVariable("tYouTuiId") Integer tYouTuiId) {
        return tYouTuiService.selectById(tYouTuiId);
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/req/CouponSendReq.java
@@ -14,6 +14,16 @@
    @ApiModelProperty(value = "优惠券名称")
    private String couponName;
    @ApiModelProperty(value = "优惠券ID")
    private Integer couponId;
    public Integer getCouponId() {
        return couponId;
    }
    public void setCouponId(Integer couponId) {
        this.couponId = couponId;
    }
    public List<Integer> getUserIds() {
        return userIds;
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TBranchOfficeResp.java
New file
@@ -0,0 +1,75 @@
package com.stylefeng.guns.modular.system.controller.resp;
import com.stylefeng.guns.modular.system.model.TBranchOffice;
import io.swagger.annotations.ApiModelProperty;
import java.math.BigDecimal;
public class TBranchOfficeResp extends TBranchOffice {
    @ApiModelProperty(value = "订单数量")
    private Integer orderCount;
    @ApiModelProperty(value = "有效订单")
    private Integer effectiveOrderCount;
    @ApiModelProperty(value = "已发放优惠券")
    private Integer totalCount;
    @ApiModelProperty(value = "已使用优惠券")
    private Integer usedCount;
    @ApiModelProperty(value = "累计优惠券金额")
    private BigDecimal orderPriceCount;
    @ApiModelProperty(value = "司机数量")
    private Integer driverCount;
    public Integer getDriverCount() {
        return driverCount;
    }
    public void setDriverCount(Integer driverCount) {
        this.driverCount = driverCount;
    }
    public Integer getOrderCount() {
        return orderCount;
    }
    public void setOrderCount(Integer orderCount) {
        this.orderCount = orderCount;
    }
    public Integer getEffectiveOrderCount() {
        return effectiveOrderCount;
    }
    public void setEffectiveOrderCount(Integer effectiveOrderCount) {
        this.effectiveOrderCount = effectiveOrderCount;
    }
    public Integer getTotalCount() {
        return totalCount;
    }
    public void setTotalCount(Integer totalCount) {
        this.totalCount = totalCount;
    }
    public Integer getUsedCount() {
        return usedCount;
    }
    public void setUsedCount(Integer usedCount) {
        this.usedCount = usedCount;
    }
    public BigDecimal getOrderPriceCount() {
        return orderPriceCount;
    }
    public void setOrderPriceCount(BigDecimal orderPriceCount) {
        this.orderPriceCount = orderPriceCount;
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TComplaintResp.java
New file
@@ -0,0 +1,43 @@
package com.stylefeng.guns.modular.system.controller.resp;
import com.stylefeng.guns.modular.system.model.TAgent;
import com.stylefeng.guns.modular.system.model.TComplaint;
import io.swagger.annotations.ApiModelProperty;
import java.math.BigDecimal;
public class TComplaintResp extends TComplaint {
    @ApiModelProperty(value = "投诉人名称")
    private String userName;
    @ApiModelProperty(value = "投诉人电话")
    private String userPhone;
    @ApiModelProperty(value = "司机电话")
    private String driverPhone;
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getUserPhone() {
        return userPhone;
    }
    public void setUserPhone(String userPhone) {
        this.userPhone = userPhone;
    }
    public String getDriverPhone() {
        return driverPhone;
    }
    public void setDriverPhone(String driverPhone) {
        this.driverPhone = driverPhone;
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TEvaluateResp.java
New file
@@ -0,0 +1,84 @@
package com.stylefeng.guns.modular.system.controller.resp;
import com.stylefeng.guns.modular.system.model.TEvaluate;
import io.swagger.annotations.ApiModelProperty;
public class TEvaluateResp extends TEvaluate {
    @ApiModelProperty(value = "订单编号")
    private String code;
    @ApiModelProperty(value = "评论用户名")
    private String userName;
    @ApiModelProperty(value = "评论用户手机号")
    private String userPhone;
    @ApiModelProperty(value = "评论司机")
    private String driverName;
    @ApiModelProperty(value = "司机手机号")
    private String driverPhone;
    @ApiModelProperty(value = "分公司id")
    private Integer branchOfficeId;
    @ApiModelProperty(value = "代理商id")
    private Integer agentId;
    public Integer getBranchOfficeId() {
        return branchOfficeId;
    }
    public void setBranchOfficeId(Integer branchOfficeId) {
        this.branchOfficeId = branchOfficeId;
    }
    public Integer getAgentId() {
        return agentId;
    }
    public void setAgentId(Integer agentId) {
        this.agentId = agentId;
    }
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getUserPhone() {
        return userPhone;
    }
    public void setUserPhone(String userPhone) {
        this.userPhone = userPhone;
    }
    public String getDriverName() {
        return driverName;
    }
    public void setDriverName(String driverName) {
        this.driverName = driverName;
    }
    public String getDriverPhone() {
        return driverPhone;
    }
    public void setDriverPhone(String driverPhone) {
        this.driverPhone = driverPhone;
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TOrderResp.java
New file
@@ -0,0 +1,98 @@
package com.stylefeng.guns.modular.system.controller.resp;
import com.stylefeng.guns.modular.system.model.TOrder;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
public class TOrderResp extends TOrder {
    @ApiModelProperty(value = "下单用户昵称")
    private String userName;
    @ApiModelProperty(value = "下单用户电话")
    private String userPhone;
    @ApiModelProperty(value = "司机昵称")
    private String driverName;
    @ApiModelProperty(value = "司机电话")
    private String driverPhone;
    @ApiModelProperty(value = "取消次数")
    private Integer cancelCount;
    @ApiModelProperty(value = "用户状态")
    private Integer userStatus;
    @ApiModelProperty(value = "取消订单页面使用:下单时间")
    private Date placeTime;
    @ApiModelProperty(value = "取消原因")
    private String cause;
    public Date getPlaceTime() {
        return placeTime;
    }
    public void setPlaceTime(Date placeTime) {
        this.placeTime = placeTime;
    }
    public String getCause() {
        return cause;
    }
    public void setCause(String cause) {
        this.cause = cause;
    }
    public Integer getUserStatus() {
        return userStatus;
    }
    public void setUserStatus(Integer userStatus) {
        this.userStatus = userStatus;
    }
    public Integer getCancelCount() {
        return cancelCount;
    }
    public void setCancelCount(Integer cancelCount) {
        this.cancelCount = cancelCount;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getUserPhone() {
        return userPhone;
    }
    public void setUserPhone(String userPhone) {
        this.userPhone = userPhone;
    }
    public String getDriverName() {
        return driverName;
    }
    public void setDriverName(String driverName) {
        this.driverName = driverName;
    }
    public String getDriverPhone() {
        return driverPhone;
    }
    public void setDriverPhone(String driverPhone) {
        this.driverPhone = driverPhone;
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TRechargeRecordAgentResp.java
New file
@@ -0,0 +1,83 @@
package com.stylefeng.guns.modular.system.controller.resp;
import com.stylefeng.guns.modular.system.model.TRechargeRecord;
import io.swagger.annotations.ApiModelProperty;
public class TRechargeRecordAgentResp extends TRechargeRecord {
    @ApiModelProperty(value = "司机姓名")
    private String driverName;
    @ApiModelProperty(value = "司机手机号")
    private String driverPhone;
    @ApiModelProperty(value = "代理商姓名")
    private String principal;
    @ApiModelProperty(value = "联系电话")
    private String principalPhone;
    @ApiModelProperty(value = "省份")
    private String provinceName;
    @ApiModelProperty(value = "市区")
    private String cityName;
    @ApiModelProperty(value = "代理区域")
    private String area;
    public String getCityName() {
        return cityName;
    }
    public void setCityName(String cityName) {
        this.cityName = cityName;
    }
    public String getProvinceName() {
        return provinceName;
    }
    public void setProvinceName(String provinceName) {
        this.provinceName = provinceName;
    }
    public String getDriverName() {
        return driverName;
    }
    public void setDriverName(String driverName) {
        this.driverName = driverName;
    }
    public String getDriverPhone() {
        return driverPhone;
    }
    public void setDriverPhone(String driverPhone) {
        this.driverPhone = driverPhone;
    }
    public String getPrincipal() {
        return principal;
    }
    public void setPrincipal(String principal) {
        this.principal = principal;
    }
    public String getPrincipalPhone() {
        return principalPhone;
    }
    public void setPrincipalPhone(String principalPhone) {
        this.principalPhone = principalPhone;
    }
    public String getArea() {
        return area;
    }
    public void setArea(String area) {
        this.area = area;
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TRechargeRecordUserResp.java
New file
@@ -0,0 +1,29 @@
package com.stylefeng.guns.modular.system.controller.resp;
import com.stylefeng.guns.modular.system.model.TRechargeRecord;
import io.swagger.annotations.ApiModelProperty;
public class TRechargeRecordUserResp extends TRechargeRecord {
    @ApiModelProperty(value = "用户姓名")
    private String userName;
    @ApiModelProperty(value = "用户手机号")
    private String userPhone;
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getUserPhone() {
        return userPhone;
    }
    public void setUserPhone(String userPhone) {
        this.userPhone = userPhone;
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java
@@ -54,7 +54,7 @@
    private Map<String, Integer> loginFailures = new HashMap<>();
    private List<String> ips = Arrays.asList("127.0.0.1");
    private List<String> ips = Arrays.asList("127.0.0.1","192.168.0.247");
@@ -164,9 +164,7 @@
            // 校验密码
            ShiroUser shiroUser1 = shiroFactory.shiroUser(user);
            SimpleAuthenticationInfo info = shiroFactory.info(shiroUser1, user, username);
            System.out.println(info.getCredentials());
            String pass = ShiroKit.md5(password, user.getSalt());
            System.out.println(pass);
            if(!info.getCredentials().equals(pass)){
                f++;
                loginFailures.put(username, f);
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TCancelOrderMapper.java
New file
@@ -0,0 +1,46 @@
package com.stylefeng.guns.modular.system.dao;
import com.stylefeng.guns.modular.system.controller.resp.TOrderResp;
import com.stylefeng.guns.modular.system.model.TCancelOrder;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
 * 订单取消记录 Mapper 接口
 * </p>
 *
 * @author stylefeng
 * @since 2023-02-27
 */
@Mapper
public interface TCancelOrderMapper extends BaseMapper<TCancelOrder> {
    /**
     * 查询取消订单列表
     * @param startTime
     * @param endTime
     * @param code
     * @param source
     * @param userName
     * @param userPhone
     * @param state
     * @param driverName
     * @return
     */
    List<TOrderResp> getCancelOrderList(@Param("startTime") String startTime, @Param("endTime")String endTime, @Param("code") String code,
                                        @Param("source") Integer source, @Param("userName")String userName, @Param("userPhone")String userPhone,
                                        @Param("state")Integer state, @Param("driverName")String driverName,@Param("roleType")Integer roleType,
                                        @Param("objectId")Integer objectId);
    /**
     * 订单异常详情页面的取消记录列表
     * @param userId
     * @param orderId
     * @return
     */
    List<TOrderResp> userCancelOrderList(@Param("userId") Integer userId,@Param("orderId") Integer orderId);
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TComplaintMapper.java
@@ -1,34 +1,35 @@
package com.stylefeng.guns.modular.system.dao;
import com.baomidou.mybatisplus.plugins.Page;
import com.stylefeng.guns.modular.system.controller.resp.TComplaintResp;
import com.stylefeng.guns.modular.system.model.TComplaint;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * 投诉管理 Mapper 接口
 * 投诉 Mapper 接口
 * </p>
 *
 * @author 吕雪
 * @since 2020-06-09
 * @author stylefeng
 * @since 2023-03-02
 */
@Mapper
public interface TComplaintMapper extends BaseMapper<TComplaint> {
    /**
     * 根据条件查询投诉列表
     *获取列表
     * @param startTime
     * @param endTime
     * @param userName
     * @param userPhone
     * @param driverPhone
     * @param state
     * @return
     */
    List<Map<String,Object>> getComplaintList(@Param("page") Page<Map<String, Object>> page,
                                              @Param("roleType") Integer roleType,
                                              @Param("nowUserId") Integer nowUserId,
                                              @Param("beginTime") String beginTime,
                                              @Param("endTime") String endTime,
                                              @Param("userName") String userName,
                                              @Param("userPhone") String userPhone,
                                              @Param("driverPhone") String driverPhone,
                                              @Param("isHandle") Integer isHandle);
    List<TComplaintResp> getPageList(@Param("startTime") String startTime,@Param("endTime") String endTime, @Param("userName")String userName,
                                     @Param("userPhone")String userPhone, @Param("driverPhone")String driverPhone, @Param("state")Integer state);
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TEvaluateMapper.java
New file
@@ -0,0 +1,34 @@
package com.stylefeng.guns.modular.system.dao;
import com.stylefeng.guns.modular.system.controller.resp.TEvaluateResp;
import com.stylefeng.guns.modular.system.model.TEvaluate;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
 * 订单评价 Mapper 接口
 * </p>
 *
 * @author stylefeng
 * @since 2023-02-27
 */
@Mapper
public interface TEvaluateMapper extends BaseMapper<TEvaluate> {
    /**
     * 查询评论列表
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param userName 评论用户名
     * @param driverName 评论司机名
     * @param orderType 订单类型
     * @param score 评价分数
     * @return
     */
    List<TEvaluateResp> selectPageList(@Param("startTime") String startTime,@Param("endTime") String endTime, @Param("userName")String userName,
                                       @Param("driverName")String driverName, @Param("orderType")Integer orderType, @Param("score")Integer score);
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderMapper.java
@@ -1,8 +1,12 @@
package com.stylefeng.guns.modular.system.dao;
import com.stylefeng.guns.modular.system.controller.resp.TOrderResp;
import com.stylefeng.guns.modular.system.model.TOrder;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
@@ -15,4 +19,20 @@
@Mapper
public interface TOrderMapper extends BaseMapper<TOrder> {
    /**
     * 查询订单列表
     * @param startTime
     * @param endTime
     * @param code
     * @param source
     * @param userName
     * @param userPhone
     * @param state
     * @param driverName
     * @return
     */
    List<TOrderResp> getOrderList(@Param("startTime") String startTime,@Param("endTime")String endTime, @Param("code") String code,
                                  @Param("source") Integer source,@Param("userName")String userName, @Param("userPhone")String userPhone,
                                  @Param("state")Integer state,@Param("driverName")String driverName,@Param("isException") Integer isException,
                                  @Param("roleType")Integer roleType,@Param("objectId")Integer objectId);
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TRechargeRecordMapper.java
@@ -1,8 +1,13 @@
package com.stylefeng.guns.modular.system.dao;
import com.stylefeng.guns.modular.system.controller.resp.TRechargeRecordAgentResp;
import com.stylefeng.guns.modular.system.controller.resp.TRechargeRecordUserResp;
import com.stylefeng.guns.modular.system.model.TRechargeRecord;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
@@ -10,9 +15,23 @@
 * </p>
 *
 * @author stylefeng
 * @since 2023-02-20
 * @since 2023-03-10
 */
@Mapper
public interface TRechargeRecordMapper extends BaseMapper<TRechargeRecord> {
    /**
     * 用户充值记录查询
     * @param userName 用户名
     * @param userPhone 用户手机号
     * @param code 流水号
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return List<TRechargeRecordUserResp>
     */
    List<TRechargeRecordUserResp> userRecharge(@Param("startTime") String startTime, @Param("endTime")String endTime, @Param("userName")String userName,
                                               @Param("userPhone")String userPhone, @Param("code")String code);
    List<TRechargeRecordAgentResp> agentRechargeList(@Param("startTime")String startTime, @Param("endTime")String endTime, @Param("driverName")String driverName,
                                                     @Param("driverPhone")String driverPhone, @Param("roleType")Integer roleType, @Param("objectId")Integer objectId);
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TSystemConfigMapper.java
New file
@@ -0,0 +1,18 @@
package com.stylefeng.guns.modular.system.dao;
import com.stylefeng.guns.modular.system.model.TSystemConfig;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
 * <p>
 * 系统配置 Mapper 接口
 * </p>
 *
 * @author stylefeng
 * @since 2023-03-02
 */
@Mapper
public interface TSystemConfigMapper extends BaseMapper<TSystemConfig> {
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TUserToCouponMapper.java
New file
@@ -0,0 +1,18 @@
package com.stylefeng.guns.modular.system.dao;
import com.stylefeng.guns.modular.system.model.TUserToCoupon;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
 * <p>
 * 用户优惠券中间表 Mapper 接口
 * </p>
 *
 * @author stylefeng
 * @since 2023-02-28
 */
@Mapper
public interface TUserToCouponMapper extends BaseMapper<TUserToCoupon> {
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TYouTuiMapper.java
New file
@@ -0,0 +1,16 @@
package com.stylefeng.guns.modular.system.dao;
import com.stylefeng.guns.modular.system.model.TYouTui;
import com.baomidou.mybatisplus.mapper.BaseMapper;
/**
 * <p>
 * 优推 Mapper 接口
 * </p>
 *
 * @author stylefeng
 * @since 2023-03-01
 */
public interface TYouTuiMapper extends BaseMapper<TYouTui> {
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TCancelOrderMapper.xml
New file
@@ -0,0 +1,80 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.stylefeng.guns.modular.system.dao.TCancelOrderMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.system.model.TCancelOrder">
        <id column="id" property="id" />
        <result column="orderId" property="orderId" />
        <result column="userType" property="userType" />
        <result column="userId" property="userId" />
        <result column="cause" property="cause" />
        <result column="status" property="status" />
        <result column="createTime" property="createTime" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, orderId, userType, userId, cause, status, createTime
    </sql>
    <sql id="Base_Column_Order">
        co.id, co.orderId, co.userType, co.userId, co.cause, co.status, co.createTime,o.code, o.`source`, o.startAddress, o.endAddress,o.createTime AS placeTime,
            a.nickname AS userName,a.phone AS userPhone,a.cancelCount,a.status AS userStatus,d.name AS driverName,d.phone AS driverPhone
    </sql>
    <select id="getCancelOrderList" resultType="com.stylefeng.guns.modular.system.controller.resp.TOrderResp">
        select <include refid="Base_Column_Order"></include>
        from t_cancel_order co
        left join t_order o on co.orderId = o.id
        left join t_app_user a on o.userId = a.id
        left join t_driver d on o.driverId = d.id
        <where>
            <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
                AND co.createTime between #{startTime} and #{endTime}
            </if>
            <if test="code != null and code != ''">
                AND o.code LIKE concat('%',#{code},'%')
            </if>
            <if test="source != null">
                AND o.source = #{source}
            </if>
            <if test="userName != null and userName != ''">
                AND a.nickname LIKE concat('%',#{userName},'%')
            </if>
            <if test="userPhone != null and userPhone != ''">
                AND a.phone LIKE concat('%',#{userPhone},'%')
            </if>
            <if test="state != null">
                AND o.state = #{state}
            </if>
            <if test="driverName != null and driverName != ''">
                AND d.name LIKE concat('%',#{driverName},'%')
            </if>
            <if test="roleType != null and roleType == 2">
                AND o.branchOfficeId = #{objectId}
            </if>
            <if test="roleType != null and roleType == 3">
                AND o.agentId = #{objectId}
            </if>
            AND co.userType = 1
        </where>
        ORDER BY co.createTime
    </select>
    <select id="userCancelOrderList" resultType="com.stylefeng.guns.modular.system.controller.resp.TOrderResp">
        select co.createTime,o.code,o.startAddress,o.endAddress
        from t_cancel_order co
        left join t_order o  on co.orderId = o.id
        <where>
            <if test="userId != null">
                AND co.userId = #{userId}
            </if>
            <if test="orderId != null">
                AND co.orderId = #{orderId}
            </if>
            AND co.userType = 1
        </where>
        ORDER BY co.createTime DESC
    </select>
</mapper>
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TComplaintMapper.xml
@@ -6,55 +6,45 @@
    <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.system.model.TComplaint">
        <id column="id" property="id" />
        <result column="userId" property="userId" />
        <result column="reason" property="reason" />
        <result column="driverId" property="driverId" />
        <result column="description" property="description" />
        <result column="isHandle" property="isHandle" />
        <result column="insert_time" property="insertTime" />
        <result column="handleResult" property="handleResult" />
        <result column="handleUserId" property="handleUserId" />
        <result column="reason" property="reason" />
        <result column="notes" property="notes" />
        <result column="state" property="state" />
        <result column="status" property="status" />
        <result column="createTime" property="createTime" />
        <result column="auditId" property="auditId" />
        <result column="auditPersonName" property="auditPersonName" />
        <result column="auditTime" property="auditTime" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, userId, reason, driverId, description, isHandle, insert_time, handleResult, handleUserId
        id, userId, driverId, reason, notes, state, status, createTime,auditId,auditPersonName,auditTime
    </sql>
    <!--根据条件查询投诉列表-->
    <select id="getComplaintList" resultType="map" parameterType="com.baomidou.mybatisplus.plugins.Page">
        SELECT * FROM (SELECT di.companyId,di.franchiseeId,ui.nickName as userName,ui.phone as userPhone,di.`name` as driverName,di.phone as driverPhone,si.`name` as handleUserName,cc.* FROM t_complaint as cc
        LEFT JOIN (select * from t_user where flag != 3) as ui on ui.id = cc.userId
        LEFT JOIN (select * from t_driver where flag != 3) as di on di.id = cc.driverId
        LEFT JOIN sys_user as si on si.id = cc.handleUserId
        ) as o
    <select id="getPageList" resultType="com.stylefeng.guns.modular.system.controller.resp.TComplaintResp">
        select c.id, c.userId, c.driverId, c.reason, c.notes, c.state, c.status, c.createTime,c.auditId,c.auditPersonName,c.auditTime,
               au.nickname AS userName,au.phone AS userPhone,d.phone AS driverPhone
        from t_complaint c
        left join t_app_user au on c.userId = au.id
        left join t_driver d on c.driverId = d.id
        <where>
            1 = 1
            <if test="beginTime != null and beginTime != '' and endTime != null and endTime != ''">
                AND (o.insert_time between CONCAT(#{beginTime},' 00:00:00') and CONCAT(#{endTime},' 23:59:59'))
            <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
                AND c.createTime between #{startTime} and #{endTime}
            </if>
            <if test="userName != null and userName != ''">
                and o.userName  LIKE CONCAT('%',#{userName},'%')
                AND au.nickname LIKE concat('%',#{userName},'%')
            </if>
            <if test="userPhone != null and userPhone != ''">
                and o.userPhone  LIKE CONCAT('%',#{userPhone},'%')
                AND au.phone LIKE concat('%',#{userPhone},'%')
            </if>
            <if test="driverPhone != null and driverPhone != ''">
                and o.driverPhone  LIKE CONCAT('%',#{driverPhone},'%')
                AND d.phone LIKE concat('%',#{driverPhone},'%')
            </if>
            <if test="isHandle != null and isHandle != '' and isHandle == 2">
                and o.isHandle = 0
            </if>
            <if test="isHandle != null and isHandle != '' and isHandle == 1">
                and o.isHandle = 1
            </if>
            <if test="roleType != null and roleType != '' and roleType == 2">
                and o.companyId = #{nowUserId} and (o.franchiseeId = 0 or o.franchiseeId is null)
            </if>
            <if test="roleType != null and roleType != '' and roleType == 3">
                and o.franchiseeId = #{nowUserId}
            <if test="state != null">
                AND c.state = #{state}
            </if>
        </where>
        order by o.id desc
        ORDER BY c.state
    </select>
</mapper>
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TEvaluateMapper.xml
New file
@@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.stylefeng.guns.modular.system.dao.TEvaluateMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.system.model.TEvaluate">
        <id column="id" property="id" />
        <result column="orderId" property="orderId" />
        <result column="userId" property="userId" />
        <result column="score" property="score" />
        <result column="evaluate" property="evaluate" />
        <result column="status" property="status" />
        <result column="createTime" property="createTime" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, orderId, userId, score, evaluate, status, createTime
    </sql>
    <select id="selectPageList" resultType="com.stylefeng.guns.modular.system.controller.resp.TEvaluateResp">
        select e.id, e.orderId, e.userId, e.score, e.evaluate, e.status, e.createTime,
               a.nickname AS userName,a.phone AS userPhone,o.code,o.agentId,o.branchOfficeId,d.name AS driverName,d.phone AS driverPhone
        from t_evaluate e
        left join t_app_user a on e.userId = a.id
        left join t_order o on e.orderId = o.id
        left join t_driver d on o.driverId = d.id
        <where>
            <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
                AND e.createTime between #{startTime} and #{endTime}
            </if>
            <if test="userName != null and userName != ''">
                AND a.nickname LIKE concat('%',#{userName},'%')
            </if>
            <if test="driverName != null and driverName != ''">
                AND d.name LIKE concat('%',#{driverName},'%')
            </if>
            <if test="score != null">
                AND e.score = #{score}
            </if>
        </where>
        ORDER BY e.createTime DESC
    </select>
</mapper>
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderMapper.xml
@@ -8,7 +8,7 @@
        <result column="code" property="code" />
        <result column="userId" property="userId" />
        <result column="driverId" property="driverId" />
        <result column="source" property="source" />
        <result column="`source`" property="source" />
        <result column="agentId" property="agentId" />
        <result column="branchOfficeId" property="branchOfficeId" />
        <result column="startTime" property="startTime" />
@@ -27,7 +27,7 @@
        <result column="couponId" property="couponId" />
        <result column="payType" property="payType" />
        <result column="payTime" property="payTime" />
        <result column="state" property="state" />
        <result column="`state`" property="state" />
        <result column="status" property="status" />
        <result column="createTime" property="createTime" />
        <result column="startDistance" property="startLng" />
@@ -50,10 +50,58 @@
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, code, userId, driverId, source, agentId, branchOfficeId, startTime, startAddress, startLat, startLng, endAddress, endLat, endLng,
            boardingTime, getoffTime, estimatedPrice, orderMoney, payMoney, discountedPrice, couponId, payType, payTime, state, status, createTime,
        id, code, userId, driverId, `source`, agentId, branchOfficeId, startTime, startAddress, startLat, startLng, endAddress, endLat, endLng,
            boardingTime, getoffTime, estimatedPrice, orderMoney, payMoney, discountedPrice, couponId, payType, payTime, `state`, status, createTime,
            startDistance,startPrice,overDriveDistance,overDrivePrice,longDistance,longDistancePrice,overLongDistance,overLongDistancePrice,
waitTime,waitTimePrice,outWaitTime,outWaitTimePrice,badWeatherDistance,badWeatherPrice,overBadWeatherDistance,overBadWeatherPrice
    </sql>
    <sql id="Base_Column_Order">
        o.id, o.code, o.userId, o.driverId, o.`source`, o.agentId, o.branchOfficeId, o.startTime, o.startAddress, o.startLat, o.startLng, o.endAddress, o.endLat, o.endLng,
            o.boardingTime, o.getoffTime, o.estimatedPrice, o.orderMoney, o.payMoney, o.discountedPrice, o.couponId, o.payType, o.payTime, o.`state`, o.status, o.createTime,
            o.startDistance,o.startPrice,o.overDriveDistance,o.overDrivePrice,o.longDistance,o.longDistancePrice,o.overLongDistance,o.overLongDistancePrice,
o.waitTime,o.waitTimePrice,o.outWaitTime,o.outWaitTimePrice,o.badWeatherDistance,o.badWeatherPrice,o.overBadWeatherDistance,o.overBadWeatherPrice,a.nickname AS userName,
            a.phone AS userPhone,a.cancelCount,a.status AS userStatus,d.name AS driverName,d.phone AS driverPhone
    </sql>
    <select id="getOrderList" resultType="com.stylefeng.guns.modular.system.controller.resp.TOrderResp">
        select <include refid="Base_Column_Order"></include>
        from t_order o
        left join t_app_user a on o.userId = a.id
        left join t_driver d on o.driverId = d.id
        <where>
            <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
                AND o.createTime between #{startTime} and #{endTime}
            </if>
            <if test="code != null and code != ''">
                AND o.code LIKE concat('%',#{code},'%')
            </if>
            <if test="source != null">
                AND o.source = #{source}
            </if>
            <if test="userName != null and userName != ''">
                AND a.nickname LIKE concat('%',#{userName},'%')
            </if>
            <if test="userPhone != null and userPhone != ''">
                AND a.phone LIKE concat('%',#{userPhone},'%')
            </if>
            <if test="state != null">
                AND o.state = #{state}
            </if>
            <if test="driverName != null and driverName != ''">
                AND d.name LIKE concat('%',#{driverName},'%')
            </if>
            <if test="isException != null">
                AND a.is_exception = #{isException}
            </if>
            <if test="roleType != null and roleType == 2">
                AND o.branchOfficeId = #{objectId}
            </if>
            <if test="roleType != null and roleType == 3">
                AND o.agentId = #{objectId}
            </if>
        </where>
        ORDER BY o.createTime
    </select>
</mapper>
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TRechargeRecordMapper.xml
@@ -18,7 +18,51 @@
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, type, userId, code, amount, payType, payTime, payStatus, orderNumber, createTime
        id, `type`, userId, code, amount, payType, payTime, payStatus, orderNumber, createTime
    </sql>
    <select id="userRecharge" resultType="com.stylefeng.guns.modular.system.controller.resp.TRechargeRecordUserResp">
        select rr.id, rr.`type`, rr.userId, rr.code, rr.amount, rr.payType, rr.payTime, rr.payStatus, rr.orderNumber, rr.createTime,au.nickname AS userName,au.phone AS userPhone
        from t_recharge_record rr
        left join t_app_user au on rr.userId = au.id
        <where>
            <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
                AND rr.createTime between #{startTime} and #{endTime}
            </if>
            <if test="userName != null and userName != ''">
                AND au.nickname LIKE concat('%',#{userName},'%')
            </if>
            <if test="userPhone != null and userPhone != ''">
                AND au.phone LIKE concat('%',#{userPhone},'%')
            </if>
            <if test="code != null and code != ''">
                AND rr.code LIKE concat('%',#{code},'%')
            </if>
            AND rr.`type` = 1
        </where>
        ORDER BY rr.createTime DESC
    </select>
    <select id="agentRechargeList" resultType="com.stylefeng.guns.modular.system.controller.resp.TRechargeRecordAgentResp">
        select rr.id, rr.`type`, rr.userId, rr.code, rr.amount, rr.payType, rr.payTime, rr.payStatus, rr.orderNumber, rr.createTime,
               d.name AS driverName,d.phone AS driverPhone,a.principal,a.principalPhone,a.provinceName,a.cityName
        from t_recharge_record rr
        left join t_driver d on rr.userId = d.id
        left join t_agent a on d.agentId = a.id
        <where>
            <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
                AND rr.createTime between #{startTime} and #{endTime}
            </if>
            <if test="driverName != null and driverName != ''">
                AND d.name LIKE concat('%',#{driverName},'%')
            </if>
            <if test="driverPhone != null and driverPhone != ''">
                AND d.phone LIKE concat('%',#{driverPhone},'%')
            </if>
            <if test="roleType != null and roleType == 3">
                AND a.id = #{objectId}
            </if>
            AND rr.`type` = 3
        </where>
        ORDER BY rr.createTime DESC
    </select>
</mapper>
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TSystemConfigMapper.xml
New file
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.stylefeng.guns.modular.system.dao.TSystemConfigMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.system.model.TSystemConfig">
        <id column="id" property="id" />
        <result column="type" property="type" />
        <result column="content" property="content" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, type, content
    </sql>
</mapper>
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TUserToCouponMapper.xml
New file
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.stylefeng.guns.modular.system.dao.TUserToCouponMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.system.model.TUserToCoupon">
        <id column="id" property="id" />
        <result column="userId" property="userId" />
        <result column="couponId" property="couponId" />
        <result column="couponTotal" property="couponTotal" />
        <result column="validCount" property="validCount" />
        <result column="expireTime" property="expireTime" />
        <result column="createTime" property="createTime" />
        <result column="status" property="status" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, userId, couponId, couponTotal, validCount, expireTime, createTime, status
    </sql>
</mapper>
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TYouTuiMapper.xml
New file
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.stylefeng.guns.modular.system.dao.TYouTuiMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.system.model.TYouTui">
        <id column="id" property="id" />
        <result column="name" property="name" />
        <result column="type" property="type" />
        <result column="number" property="number" />
        <result column="integral" property="integral" />
        <result column="effectiveTime" property="effectiveTime" />
        <result column="content" property="content" />
        <result column="status" property="status" />
        <result column="createTime" property="createTime" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, name, type, number, integral, effectiveTime, content, status, createTime
    </sql>
</mapper>
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/enums/OrderStateEnum.java
@@ -20,7 +20,8 @@
    WAIT_EVALUATED(107, "待评价"),
    FINISH(108, "已完成"),
    TRANSFERRING(201, "转单中"),
    CANCELED(301,"已取消");
    CANCELED(301,"已取消"),
    WAITING(401,"等待中");
    private String desc;
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TAppUser.java
@@ -89,6 +89,15 @@
    @TableField(value = "remark")
    private String remark;
    /**
     * 取消订单次数,取消一次添加一次,若成功接单清零
     */
    @TableField(value = "cancelCount")
    private Integer cancelCount;
    @ApiModelProperty(value = "是否拥有9折优惠 1是 0否")
    @TableField(value = "havDiscount")
    private Integer havDiscount;
    @TableField(exist = false)
    @ApiModelProperty(value = "注册开始时间")
@@ -98,6 +107,22 @@
    @ApiModelProperty(value = "注册结束时间")
    private Date endTime;
    public Integer getHavDiscount() {
        return havDiscount;
    }
    public void setHavDiscount(Integer havDiscount) {
        this.havDiscount = havDiscount;
    }
    public Integer getCancelCount() {
        return cancelCount;
    }
    public void setCancelCount(Integer cancelCount) {
        this.cancelCount = cancelCount;
    }
    public Integer getIsException() {
        return isException;
    }
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TBranchOffice.java
@@ -1,10 +1,13 @@
package com.stylefeng.guns.modular.system.model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.enums.IdType;
import java.util.Date;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableName;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
/**
@@ -73,7 +76,85 @@
     * 添加时间
     */
    private Date createTime;
    /**
     * 分公司名称
     */
    private String branchOfficeName;
    /**
     * 经营业务 1司机代驾
     */
    private Integer operatingBusiness;
    /**
     * 开户银行
     */
    @TableField(value = "bankDeposit")
    @ApiModelProperty(value = "开户银行")
    private String bankDeposit;
    /**
     * 银行账户
     */
    @TableField(value = "bankAccount")
    @ApiModelProperty(value = "银行账户")
    private String bankAccount;
    @TableField(exist = false)
    @ApiModelProperty(value = "区域")
    private String area;
    @TableField(exist = false)
    @ApiModelProperty(value = "区域id")
    private String areaId;
    public String getBankDeposit() {
        return bankDeposit;
    }
    public void setBankDeposit(String bankDeposit) {
        this.bankDeposit = bankDeposit;
    }
    public String getBankAccount() {
        return bankAccount;
    }
    public void setBankAccount(String bankAccount) {
        this.bankAccount = bankAccount;
    }
    public String getArea() {
        return area;
    }
    public void setArea(String area) {
        this.area = area;
    }
    public String getAreaId() {
        return areaId;
    }
    public void setAreaId(String areaId) {
        this.areaId = areaId;
    }
    public String getBranchOfficeName() {
        return branchOfficeName;
    }
    public void setBranchOfficeName(String branchOfficeName) {
        this.branchOfficeName = branchOfficeName;
    }
    public Integer getOperatingBusiness() {
        return operatingBusiness;
    }
    public void setOperatingBusiness(Integer operatingBusiness) {
        this.operatingBusiness = operatingBusiness;
    }
    public Integer getId() {
        return id;
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCancelOrder.java
New file
@@ -0,0 +1,127 @@
package com.stylefeng.guns.modular.system.model;
import com.baomidou.mybatisplus.enums.IdType;
import java.util.Date;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableName;
import java.io.Serializable;
/**
 * <p>
 * 订单取消记录
 * </p>
 *
 * @author stylefeng
 * @since 2023-02-27
 */
@TableName("t_cancel_order")
public class TCancelOrder extends Model<TCancelOrder> {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 订单id
     */
    private Integer orderId;
    /**
     * 用户类型(1=用户,2=司机)
     */
    private Integer userType;
    /**
     * 用户id
     */
    private Integer userId;
    /**
     * 转单原因
     */
    private String cause;
    /**
     * 状态(1=正常,2=冻结,3=删除)
     */
    private Integer status;
    /**
     * 添加时间
     */
    private Date createTime;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public Integer getOrderId() {
        return orderId;
    }
    public void setOrderId(Integer orderId) {
        this.orderId = orderId;
    }
    public Integer getUserType() {
        return userType;
    }
    public void setUserType(Integer userType) {
        this.userType = userType;
    }
    public Integer getUserId() {
        return userId;
    }
    public void setUserId(Integer userId) {
        this.userId = userId;
    }
    public String getCause() {
        return cause;
    }
    public void setCause(String cause) {
        this.cause = cause;
    }
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    @Override
    protected Serializable pkVal() {
        return this.id;
    }
    @Override
    public String toString() {
        return "TCancelOrder{" +
        "id=" + id +
        ", orderId=" + orderId +
        ", userType=" + userType +
        ", userId=" + userId +
        ", cause=" + cause +
        ", status=" + status +
        ", createTime=" + createTime +
        "}";
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TComplaint.java
@@ -3,18 +3,17 @@
import com.baomidou.mybatisplus.enums.IdType;
import java.util.Date;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableName;
import java.io.Serializable;
/**
 * <p>
 * 投诉管理
 * 投诉
 * </p>
 *
 * @author 吕雪
 * @since 2020-06-09
 * @author stylefeng
 * @since 2023-03-02
 */
@TableName("t_complaint")
public class TComplaint extends Model<TComplaint> {
@@ -27,49 +26,68 @@
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 用户Id
     * 用户id
     */
    private Integer userId;
    /**
     * 投诉司机id
     */
    private Integer driverId;
    /**
     * 投诉原因
     */
    private String reason;
    /**
     * 被投诉人Id
     * 注释
     */
    private Long driverId;
    private String notes;
    /**
     * 描述
     * 处理状态(1=待处理,2=已处理)
     */
    private String description;
    private Integer state;
    /**
     * 是否处理(0:未处理,1:已处理)
     * 状态(1=正常,2=冻结,3=删除)
     */
    private Integer isHandle;
    private Integer status;
    /**
     * 投诉时间
     * 添加时间
     */
    @TableField("insert_time")
    private Date insertTime;
    /**
     * 处理结果
     */
    private String handleResult;
    private Date createTime;
    /**
     * 处理人id
     */
    private Integer handleUserId;
    private Integer auditId;
    /**
     * 处理人名称
     */
    private String auditPersonName;
    /**
     * 处理时间
     */
    private Date handleTime;
    private Date auditTime;
    public Date getHandleTime() {
        return handleTime;
    public Date getAuditTime() {
        return auditTime;
    }
    public void setHandleTime(Date handleTime) {
        this.handleTime = handleTime;
    public void setAuditTime(Date auditTime) {
        this.auditTime = auditTime;
    }
    public Integer getAuditId() {
        return auditId;
    }
    public void setAuditId(Integer auditId) {
        this.auditId = auditId;
    }
    public String getAuditPersonName() {
        return auditPersonName;
    }
    public void setAuditPersonName(String auditPersonName) {
        this.auditPersonName = auditPersonName;
    }
    public Integer getId() {
@@ -88,6 +106,14 @@
        this.userId = userId;
    }
    public Integer getDriverId() {
        return driverId;
    }
    public void setDriverId(Integer driverId) {
        this.driverId = driverId;
    }
    public String getReason() {
        return reason;
    }
@@ -96,52 +122,36 @@
        this.reason = reason;
    }
    public Long getDriverId() {
        return driverId;
    public String getNotes() {
        return notes;
    }
    public void setDriverId(Long driverId) {
        this.driverId = driverId;
    public void setNotes(String notes) {
        this.notes = notes;
    }
    public String getDescription() {
        return description;
    public Integer getState() {
        return state;
    }
    public void setDescription(String description) {
        this.description = description;
    public void setState(Integer state) {
        this.state = state;
    }
    public Integer getIsHandle() {
        return isHandle;
    public Integer getStatus() {
        return status;
    }
    public void setIsHandle(Integer isHandle) {
        this.isHandle = isHandle;
    public void setStatus(Integer status) {
        this.status = status;
    }
    public Date getInsertTime() {
        return insertTime;
    public Date getCreateTime() {
        return createTime;
    }
    public void setInsertTime(Date insertTime) {
        this.insertTime = insertTime;
    }
    public String getHandleResult() {
        return handleResult;
    }
    public void setHandleResult(String handleResult) {
        this.handleResult = handleResult;
    }
    public Integer getHandleUserId() {
        return handleUserId;
    }
    public void setHandleUserId(Integer handleUserId) {
        this.handleUserId = handleUserId;
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    @Override
@@ -154,13 +164,12 @@
        return "TComplaint{" +
        "id=" + id +
        ", userId=" + userId +
        ", reason=" + reason +
        ", driverId=" + driverId +
        ", description=" + description +
        ", isHandle=" + isHandle +
        ", insertTime=" + insertTime +
        ", handleResult=" + handleResult +
        ", handleUserId=" + handleUserId +
        ", reason=" + reason +
        ", notes=" + notes +
        ", state=" + state +
        ", status=" + status +
        ", createTime=" + createTime +
        "}";
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCoupon.java
@@ -89,6 +89,30 @@
    @TableField("coupon_state")
    private Integer couponState;
    @ApiModelProperty(value = "优惠券数量")
    @TableField("coupon_count")
    private Integer couponCount;
    @ApiModelProperty(value = "剩余数量")
    @TableField("remaining_quantity")
    private Integer remainingQuantity;
    public Integer getRemainingQuantity() {
        return remainingQuantity;
    }
    public void setRemainingQuantity(Integer remainingQuantity) {
        this.remainingQuantity = remainingQuantity;
    }
    public Integer getCouponCount() {
        return couponCount;
    }
    public void setCouponCount(Integer couponCount) {
        this.couponCount = couponCount;
    }
    public Integer getAgentId() {
        return agentId;
    }
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TEvaluate.java
New file
@@ -0,0 +1,127 @@
package com.stylefeng.guns.modular.system.model;
import com.baomidou.mybatisplus.enums.IdType;
import java.util.Date;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableName;
import java.io.Serializable;
/**
 * <p>
 * 订单评价
 * </p>
 *
 * @author stylefeng
 * @since 2023-02-27
 */
@TableName("t_evaluate")
public class TEvaluate extends Model<TEvaluate> {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 订单id
     */
    private Integer orderId;
    /**
     * 用户id
     */
    private Integer userId;
    /**
     * 评分
     */
    private Integer score;
    /**
     * 评价内容
     */
    private String evaluate;
    /**
     * 状态(1=正常,2=冻结,3=删除)
     */
    private Integer status;
    /**
     * 添加时间
     */
    private Date createTime;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public Integer getOrderId() {
        return orderId;
    }
    public void setOrderId(Integer orderId) {
        this.orderId = orderId;
    }
    public Integer getUserId() {
        return userId;
    }
    public void setUserId(Integer userId) {
        this.userId = userId;
    }
    public Integer getScore() {
        return score;
    }
    public void setScore(Integer score) {
        this.score = score;
    }
    public String getEvaluate() {
        return evaluate;
    }
    public void setEvaluate(String evaluate) {
        this.evaluate = evaluate;
    }
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    @Override
    protected Serializable pkVal() {
        return this.id;
    }
    @Override
    public String toString() {
        return "TEvaluate{" +
        "id=" + id +
        ", orderId=" + orderId +
        ", userId=" + userId +
        ", score=" + score +
        ", evaluate=" + evaluate +
        ", status=" + status +
        ", createTime=" + createTime +
        "}";
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrder.java
@@ -177,6 +177,17 @@
    @ApiModelProperty(value = "恶劣天气超出费")
    private BigDecimal overBadWeatherPrice;
    @ApiModelProperty(value = "折扣优惠金额")
    private BigDecimal discountAmount;
    public BigDecimal getDiscountAmount() {
        return discountAmount;
    }
    public void setDiscountAmount(BigDecimal discountAmount) {
        this.discountAmount = discountAmount;
    }
    public Double getStartDistance() {
        return startDistance;
    }
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TRechargeRecord.java
@@ -14,7 +14,7 @@
 * </p>
 *
 * @author stylefeng
 * @since 2023-02-20
 * @since 2023-03-10
 */
@TableName("t_recharge_record")
public class TRechargeRecord extends Model<TRechargeRecord> {
@@ -27,7 +27,7 @@
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 数据类型(1=用户,2=司机)
     * 数据类型(1=用户,2=司机,3 = 代理商)
     */
    private Integer type;
    /**
@@ -43,7 +43,7 @@
     */
    private BigDecimal amount;
    /**
     * 支付方式(1=微信)
     * 支付方式(1=微信 2 = 系统充值)
     */
    private Integer payType;
    /**
@@ -62,7 +62,18 @@
     * 添加时间
     */
    private Date createTime;
    /**
     * 代理商id
     */
    private Integer agentId;
    public Integer getAgentId() {
        return agentId;
    }
    public void setAgentId(Integer agentId) {
        this.agentId = agentId;
    }
    public Integer getId() {
        return id;
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TSystemConfig.java
New file
@@ -0,0 +1,74 @@
package com.stylefeng.guns.modular.system.model;
import com.baomidou.mybatisplus.enums.IdType;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableName;
import java.io.Serializable;
/**
 * <p>
 * 系统配置
 * </p>
 *
 * @author stylefeng
 * @since 2023-03-02
 */
@TableName("t_system_config")
public class TSystemConfig extends Model<TSystemConfig> {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 类型(1=派单规则,2=佣金分成规则,3=抽成规则,4=积分规则,5=价格规则,6=余额规则,7=客服管理)
     */
    private Integer type;
    /**
     * 内容
     */
    private String content;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public Integer getType() {
        return type;
    }
    public void setType(Integer type) {
        this.type = type;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    @Override
    protected Serializable pkVal() {
        return this.id;
    }
    @Override
    public String toString() {
        return "TSystemConfig{" +
        "id=" + id +
        ", type=" + type +
        ", content=" + content +
        "}";
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TUserToCoupon.java
New file
@@ -0,0 +1,152 @@
package com.stylefeng.guns.modular.system.model;
import com.baomidou.mybatisplus.enums.IdType;
import java.util.Date;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableName;
import java.io.Serializable;
/**
 * <p>
 * 用户优惠券中间表
 * </p>
 *
 * @author stylefeng
 * @since 2023-02-28
 */
@TableName("t_user_to_coupon")
public class TUserToCoupon extends Model<TUserToCoupon> {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 用户id
     */
    private Integer userId;
    /**
     * 优惠券id
     */
    private Integer couponId;
    /**
     * 领取总数量
     */
    private Integer couponTotal;
    /**
     * 有效数量
     */
    private Integer validCount;
    /**
     * 过期时间
     */
    private Date expireTime;
    /**
     * 创建时间-领取时间
     */
    private Date createTime;
    /**
     * 状态 1正常 2冻结 3删除
     */
    private Integer status;
    /**
     * 过期数量
     */
    private Integer expireCount;
    public Integer getExpireCount() {
        return expireCount;
    }
    public void setExpireCount(Integer expireCount) {
        this.expireCount = expireCount;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public Integer getUserId() {
        return userId;
    }
    public void setUserId(Integer userId) {
        this.userId = userId;
    }
    public Integer getCouponId() {
        return couponId;
    }
    public void setCouponId(Integer couponId) {
        this.couponId = couponId;
    }
    public Integer getCouponTotal() {
        return couponTotal;
    }
    public void setCouponTotal(Integer couponTotal) {
        this.couponTotal = couponTotal;
    }
    public Integer getValidCount() {
        return validCount;
    }
    public void setValidCount(Integer validCount) {
        this.validCount = validCount;
    }
    public Date getExpireTime() {
        return expireTime;
    }
    public void setExpireTime(Date expireTime) {
        this.expireTime = expireTime;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
    @Override
    protected Serializable pkVal() {
        return this.id;
    }
    @Override
    public String toString() {
        return "TUserToCoupon{" +
        "id=" + id +
        ", userId=" + userId +
        ", couponId=" + couponId +
        ", couponTotal=" + couponTotal +
        ", validCount=" + validCount +
        ", expireTime=" + expireTime +
        ", createTime=" + createTime +
        ", status=" + status +
        "}";
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TYouTui.java
New file
@@ -0,0 +1,176 @@
package com.stylefeng.guns.modular.system.model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.enums.IdType;
import java.util.Date;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableName;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
/**
 * <p>
 * 优推
 * </p>
 *
 * @author stylefeng
 * @since 2023-03-01
 */
@TableName("t_you_tui")
public class TYouTui extends Model<TYouTui> {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 名称
     */
    private String name;
    /**
     * 优推类型(1=次数,2=小时)
     */
    private Integer type;
    /**
     * 优推值
     */
    private Integer number;
    /**
     * 所需积分
     */
    private Integer integral;
    /**
     * 有效天数
     */
    private Integer effectiveTime;
    /**
     * 服务内容
     */
    private String content;
    /**
     * 状态(1=正常,2=冻结,3=删除)
     */
    private Integer status;
    /**
     * 添加时间
     */
    private Date createTime;
    @ApiModelProperty(value = "优推距离")
    private Integer distance;
    @TableField(exist = false)
    private String serviceContent;
    public String getServiceContent() {
        return serviceContent;
    }
    public void setServiceContent(String serviceContent) {
        this.serviceContent = serviceContent;
    }
    public Integer getDistance() {
        return distance;
    }
    public void setDistance(Integer distance) {
        this.distance = distance;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getType() {
        return type;
    }
    public void setType(Integer type) {
        this.type = type;
    }
    public Integer getNumber() {
        return number;
    }
    public void setNumber(Integer number) {
        this.number = number;
    }
    public Integer getIntegral() {
        return integral;
    }
    public void setIntegral(Integer integral) {
        this.integral = integral;
    }
    public Integer getEffectiveTime() {
        return effectiveTime;
    }
    public void setEffectiveTime(Integer effectiveTime) {
        this.effectiveTime = effectiveTime;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    @Override
    protected Serializable pkVal() {
        return this.id;
    }
    @Override
    public String toString() {
        return "TYouTui{" +
        "id=" + id +
        ", name=" + name +
        ", type=" + type +
        ", number=" + number +
        ", integral=" + integral +
        ", effectiveTime=" + effectiveTime +
        ", content=" + content +
        ", status=" + status +
        ", createTime=" + createTime +
        "}";
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITBranchOfficeService.java
@@ -1,7 +1,11 @@
package com.stylefeng.guns.modular.system.service;
import com.stylefeng.guns.modular.system.controller.resp.TBranchOfficeResp;
import com.stylefeng.guns.modular.system.model.TBranchOffice;
import com.baomidou.mybatisplus.service.IService;
import org.springframework.ui.Model;
import java.util.List;
/**
 * <p>
@@ -13,4 +17,35 @@
 */
public interface ITBranchOfficeService extends IService<TBranchOffice> {
    /**
     * 跳转到详情
     * @param tBranchOfficeId
     * @param model
     */
    void tBranchOfficeDetail(Integer tBranchOfficeId, Model model);
    /**
     * 分公司获取列表
     * @param branchOfficeName
     * @param principal
     * @param principalPhone
     * @param operatingBusiness
     * @param status
     * @return
     */
    List<TBranchOfficeResp> getPageList(String branchOfficeName, String principal, String principalPhone, Integer operatingBusiness, Integer status);
    /**
     * 分公司查询优惠券,订单,司机等信息
     * @param tBranchOfficeRespList
     */
    void queryOtherInfo(List<TBranchOfficeResp> tBranchOfficeRespList);
    /**
     * 匹配代理商信息
     * @param tBranchOffice
     * @return
     */
    Object addOrUpdate(TBranchOffice tBranchOffice);
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITCancelOrderService.java
New file
@@ -0,0 +1,47 @@
package com.stylefeng.guns.modular.system.service;
import com.stylefeng.guns.modular.system.controller.resp.TOrderResp;
import com.stylefeng.guns.modular.system.model.TCancelOrder;
import com.baomidou.mybatisplus.service.IService;
import org.springframework.ui.Model;
import java.util.List;
/**
 * <p>
 * 订单取消记录 服务类
 * </p>
 *
 * @author stylefeng
 * @since 2023-02-27
 */
public interface ITCancelOrderService extends IService<TCancelOrder> {
    /**
     * 查询取消订单列表
     * @param createTime
     * @param code
     * @param source
     * @param userName
     * @param userPhone
     * @param state
     * @param driverName
     * @return
     */
    List<TOrderResp> getCancelOrderList(String createTime, String code, Integer source, String userName, String userPhone, Integer state, String driverName);
    /**
     * 跳转详情页面
     * @param cancelOrderId
     * @param model
     */
    void cancelOrderDetail(Integer cancelOrderId, Model model);
    /**
     *
     * @param userId
     * @return
     */
    List<TOrderResp> userCancelOrderList(Integer userId,Integer orderId);
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITComplaintService.java
@@ -1,34 +1,29 @@
package com.stylefeng.guns.modular.system.service;
import com.baomidou.mybatisplus.plugins.Page;
import com.stylefeng.guns.modular.system.controller.resp.TComplaintResp;
import com.stylefeng.guns.modular.system.model.TComplaint;
import com.baomidou.mybatisplus.service.IService;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * 投诉管理 服务类
 * 投诉 服务类
 * </p>
 *
 * @author 吕雪
 * @since 2020-06-09
 * @author stylefeng
 * @since 2023-03-02
 */
public interface ITComplaintService extends IService<TComplaint> {
    /**
     * 根据条件查询投诉列表
     * 获取列表
     * @param createTime
     * @param userName
     * @param userPhone
     * @param driverPhone
     * @param state
     * @return
     */
    List<Map<String,Object>> getComplaintList(@Param("page") Page<Map<String, Object>> page,
                                              @Param("roleType") Integer roleType,
                                              @Param("nowUserId") Integer nowUserId,
                                              @Param("beginTime") String beginTime,
                                              @Param("endTime") String endTime,
                                              @Param("userName") String userName,
                                              @Param("userPhone") String userPhone,
                                              @Param("driverPhone") String driverPhone,
                                              @Param("isHandle") Integer isHandle);
    List<TComplaintResp> getPageList(String createTime, String userName, String userPhone, String driverPhone, Integer state);
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITEvaluateService.java
New file
@@ -0,0 +1,37 @@
package com.stylefeng.guns.modular.system.service;
import com.stylefeng.guns.modular.system.controller.resp.TEvaluateResp;
import com.stylefeng.guns.modular.system.model.TEvaluate;
import com.baomidou.mybatisplus.service.IService;
import org.springframework.ui.Model;
import java.util.List;
/**
 * <p>
 * 订单评价 服务类
 * </p>
 *
 * @author stylefeng
 * @since 2023-02-27
 */
public interface ITEvaluateService extends IService<TEvaluate> {
    /**
     * 查询分页列表
     * @param createTime 评价时间
     * @param userName 评论用户名
     * @param driverName 评论司机名
     * @param orderType 订单类型
     * @param score 评价分数
     * @return
     */
    List<TEvaluateResp> selectPageList(String createTime, String userName, String driverName, Integer orderType, Integer score);
    /**
     * 跳转详情页面
     * @param evaluateId
     * @param model
     */
    void evaluateDetail(Integer evaluateId, Model model);
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderService.java
@@ -1,7 +1,12 @@
package com.stylefeng.guns.modular.system.service;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.modular.system.controller.resp.TOrderResp;
import com.stylefeng.guns.modular.system.model.TOrder;
import com.baomidou.mybatisplus.service.IService;
import org.springframework.ui.Model;
import java.util.List;
/**
 * <p>
@@ -13,4 +18,30 @@
 */
public interface ITOrderService extends IService<TOrder> {
    /**
     * 获取订单列表
     * @param createTime
     * @param code
     * @param source
     * @param userName
     * @param userPhone
     * @param state
     * @param driverName
     * @return
     */
    List<TOrderResp> getOrderList(String createTime, String code, Integer source, String userName, String userPhone, Integer state, String driverName,Integer isException);
    /**
     * 跳转详情页面
     * @param orderId
     * @param model
     */
    void orderDetail(Integer orderId, Model model);
    /**
     * 跳转异常详情页面
     * @param orderId
     * @param model
     */
    void orderExceptionDetail(Integer orderId, Model model);
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITRechargeRecordService.java
@@ -1,7 +1,11 @@
package com.stylefeng.guns.modular.system.service;
import com.stylefeng.guns.modular.system.controller.resp.TRechargeRecordAgentResp;
import com.stylefeng.guns.modular.system.controller.resp.TRechargeRecordUserResp;
import com.stylefeng.guns.modular.system.model.TRechargeRecord;
import com.baomidou.mybatisplus.service.IService;
import java.util.List;
/**
 * <p>
@@ -9,8 +13,26 @@
 * </p>
 *
 * @author stylefeng
 * @since 2023-02-20
 * @since 2023-03-10
 */
public interface ITRechargeRecordService extends IService<TRechargeRecord> {
    /**
     * 用户充值记录查询
     * @param userName 用户名
     * @param userPhone 用户手机号
     * @param code 流水号
     * @param createTime 充值时间
     * @return List<TRechargeRecordUserResp>
     */
    List<TRechargeRecordUserResp> userRecharge(String userName, String userPhone, String code, String createTime);
    /**
     *
     * @param driverName 司机姓名
     * @param driverPhone 司机手机号
     * @param createTime 充值时间
     * @return List<TRechargeRecordAgentResp>
     */
    List<TRechargeRecordAgentResp> agentRechargeList(String driverName, String driverPhone, String createTime);
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITSystemConfigService.java
New file
@@ -0,0 +1,16 @@
package com.stylefeng.guns.modular.system.service;
import com.stylefeng.guns.modular.system.model.TSystemConfig;
import com.baomidou.mybatisplus.service.IService;
/**
 * <p>
 * 系统配置 服务类
 * </p>
 *
 * @author stylefeng
 * @since 2023-03-02
 */
public interface ITSystemConfigService extends IService<TSystemConfig> {
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITUserToCouponService.java
New file
@@ -0,0 +1,16 @@
package com.stylefeng.guns.modular.system.service;
import com.stylefeng.guns.modular.system.model.TUserToCoupon;
import com.baomidou.mybatisplus.service.IService;
/**
 * <p>
 * 用户优惠券中间表 服务类
 * </p>
 *
 * @author stylefeng
 * @since 2023-02-28
 */
public interface ITUserToCouponService extends IService<TUserToCoupon> {
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITYouTuiService.java
New file
@@ -0,0 +1,16 @@
package com.stylefeng.guns.modular.system.service;
import com.stylefeng.guns.modular.system.model.TYouTui;
import com.baomidou.mybatisplus.service.IService;
/**
 * <p>
 * 优推 服务类
 * </p>
 *
 * @author stylefeng
 * @since 2023-03-01
 */
public interface ITYouTuiService extends IService<TYouTui> {
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAgentServiceImpl.java
@@ -1,6 +1,7 @@
package com.stylefeng.guns.modular.system.service.impl;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.core.shiro.ShiroKit;
import com.stylefeng.guns.core.util.DateUtil;
import com.stylefeng.guns.modular.system.controller.resp.TAgentResp;
import com.stylefeng.guns.modular.system.dao.*;
@@ -67,6 +68,10 @@
            Date endTime = DateUtil.getDate_str4(split[1]);
            wrapper.between("createTime",startTime,endTime);
        }
        // 判断是否为代理商
        if(Objects.requireNonNull(ShiroKit.getUser()).getRoleType() == 3){
            wrapper.eq("id",ShiroKit.getUser().getObjectId());
        }
        return wrapper;
    }
@@ -106,7 +111,7 @@
        }
        // 优惠券信息
        // 过滤代理商发放的优惠券
        List<TCoupon> tCoupons = tCouponMapper.selectList(new EntityWrapper<TCoupon>().eq("agentId", tAgent.getId()));
        List<TCoupon> tCoupons = tCouponMapper.selectList(new EntityWrapper<TCoupon>());
        model.addAttribute("issuedCoupon",tCoupons.size());
        // 司机信息
        // 司机数
@@ -143,15 +148,15 @@
            if(!CollectionUtils.isEmpty(tOrders)){
                // 订单总量
                List<TOrder> orderList = tOrders.stream().filter(order -> order.getAgentId().equals(tAgent.getId())).collect(Collectors.toList());
                List<TOrder> orderList = tOrders.stream().filter(order -> tAgent.getId().equals(order.getAgentId())).collect(Collectors.toList());
                tAgentResp.setOrderSum(orderList.size());
                // 过滤已完成和待评价订单,且支付金额在14元以上
                List<TOrder> orders = tOrders.stream().filter(order -> (order.getState().equals(OrderStateEnum.FINISH.getCode()) || order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode()))
                        && 0 < order.getPayMoney().compareTo(new BigDecimal("14")) && order.getAgentId().equals(tAgent.getId())).collect(Collectors.toList());
                        && 0 < order.getPayMoney().compareTo(new BigDecimal("14")) && tAgent.getId().equals(order.getAgentId())).collect(Collectors.toList());
                tAgentResp.setValidOrder(orders.size());
                // 过滤已使用优惠券
                List<TOrder> usedCoupon = tOrders.stream().filter(order -> (order.getState().equals(OrderStateEnum.FINISH.getCode()) || order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode()))
                        && Objects.nonNull(order.getCouponId()) && order.getAgentId().equals(tAgent.getId())).collect(Collectors.toList());
                        && Objects.nonNull(order.getCouponId()) && tAgent.getId().equals(order.getAgentId())).collect(Collectors.toList());
                tAgentResp.setUsedCoupon(usedCoupon.size());
                // 已使用优惠券金额求和,已使用优惠券id
                List<Integer> usedCouponId = usedCoupon.stream().map(TOrder::getCouponId).collect(Collectors.toList());
@@ -162,7 +167,7 @@
            if(!CollectionUtils.isEmpty(tCoupons)){
                // 过滤代理商发放的优惠券
                List<TCoupon> coupons = tCoupons.stream().filter(coupon -> coupon.getAgentId().equals(tAgent.getId())).collect(Collectors.toList());
                List<TCoupon> coupons = tCoupons.stream().filter(coupon -> tAgent.getId().equals(coupon.getAgentId())).collect(Collectors.toList());
                tAgentResp.setIssuedCoupon(coupons.size());
            }
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAppUserServiceImpl.java
@@ -4,12 +4,14 @@
import com.stylefeng.guns.core.util.DateUtil;
import com.stylefeng.guns.modular.system.dao.TCouponMapper;
import com.stylefeng.guns.modular.system.dao.TOrderMapper;
import com.stylefeng.guns.modular.system.dao.TUserToCouponMapper;
import com.stylefeng.guns.modular.system.enums.CouponStatusEnum;
import com.stylefeng.guns.modular.system.enums.OrderStateEnum;
import com.stylefeng.guns.modular.system.model.TAppUser;
import com.stylefeng.guns.modular.system.dao.TAppUserMapper;
import com.stylefeng.guns.modular.system.model.TCoupon;
import com.stylefeng.guns.modular.system.model.TOrder;
import com.stylefeng.guns.modular.system.model.TUserToCoupon;
import com.stylefeng.guns.modular.system.service.ITAppUserService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
@@ -42,6 +44,8 @@
    private TCouponMapper tCouponMapper;
    @Autowired
    private TOrderMapper tOrderMapper;
    @Autowired
    private TUserToCouponMapper tUserToCouponMapper;
    @Override
    public void detail(Integer tAppUserId, Model model) {
@@ -57,14 +61,20 @@
        model.addAttribute("customerChannel","");
        // 消费信息:优惠券数据
        List<TCoupon> tCoupons = tCouponMapper.selectList(new EntityWrapper<TCoupon>().eq("user_id", tAppUserId));
        List<TCoupon> notUsedList = tCoupons.stream().filter(coupon -> coupon.getCouponStatus().equals(CouponStatusEnum.NOT_USED.getCode())).collect(Collectors.toList());
        List<TCoupon> usedList = tCoupons.stream().filter(coupon -> coupon.getCouponStatus().equals(CouponStatusEnum.USED.getCode())).collect(Collectors.toList());
        List<TCoupon> expiredList = tCoupons.stream().filter(coupon -> coupon.getCouponStatus().equals(CouponStatusEnum.EXPIRED.getCode())).collect(Collectors.toList());
        model.addAttribute("couponSum",tCoupons.size());
        model.addAttribute("notUsedCount",notUsedList.size());
        model.addAttribute("usedCount",usedList.size());
        model.addAttribute("expiredCount",expiredList.size());
//        List<TCoupon> tCoupons = tCouponMapper.selectList(new EntityWrapper<TCoupon>().eq("user_id", tAppUserId));
//        List<TCoupon> notUsedList = tCoupons.stream().filter(coupon -> coupon.getCouponStatus().equals(CouponStatusEnum.NOT_USED.getCode())).collect(Collectors.toList());
//        List<TCoupon> usedList = tCoupons.stream().filter(coupon -> coupon.getCouponStatus().equals(CouponStatusEnum.USED.getCode())).collect(Collectors.toList());
//        List<TCoupon> expiredList = tCoupons.stream().filter(coupon -> coupon.getCouponStatus().equals(CouponStatusEnum.EXPIRED.getCode())).collect(Collectors.toList());
        // 查询当前用户优惠券数量
        List<TUserToCoupon> tUserToCoupons = tUserToCouponMapper.selectList(new EntityWrapper<TUserToCoupon>().eq("userId", tAppUser.getId()));
        int couponTotal = tUserToCoupons.stream().mapToInt(TUserToCoupon::getCouponTotal).sum();
        int validCount = tUserToCoupons.stream().mapToInt(TUserToCoupon::getValidCount).sum();
        int expireCount = tUserToCoupons.stream().mapToInt(TUserToCoupon::getExpireCount).sum();
        model.addAttribute("couponSum",couponTotal);
        model.addAttribute("notUsedCount",validCount);
        model.addAttribute("usedCount",couponTotal-validCount-expireCount);
        model.addAttribute("expiredCount",expireCount);
        // 查询订单数据
        List<TOrder> orders = tOrderMapper.selectList(new EntityWrapper<TOrder>().eq("userId", tAppUserId).orderBy(true,"createTime",false));
        if(!CollectionUtils.isEmpty(orders)){
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBranchOfficeServiceImpl.java
@@ -1,10 +1,30 @@
package com.stylefeng.guns.modular.system.service.impl;
import com.stylefeng.guns.modular.system.model.TBranchOffice;
import com.stylefeng.guns.modular.system.dao.TBranchOfficeMapper;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.core.base.tips.SuccessTip;
import com.stylefeng.guns.core.shiro.ShiroKit;
import com.stylefeng.guns.modular.system.controller.resp.TBranchOfficeResp;
import com.stylefeng.guns.modular.system.dao.*;
import com.stylefeng.guns.modular.system.model.*;
import com.stylefeng.guns.modular.system.service.ITBranchOfficeService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.stylefeng.guns.modular.system.service.ITRegionService;
import org.apache.poi.hdf.extractor.TC;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.ui.Model;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
 * <p>
@@ -17,4 +37,202 @@
@Service
public class TBranchOfficeServiceImpl extends ServiceImpl<TBranchOfficeMapper, TBranchOffice> implements ITBranchOfficeService {
    @Autowired
    private TBranchOfficeMapper tBranchOfficeMapper;
    @Autowired
    private TCouponMapper tCouponMapper;
    @Autowired
    private TUserToCouponMapper tUserToCouponMapper;
    @Autowired
    private TOrderMapper tOrderMapper;
    @Autowired
    private TDriverMapper tDriverMapper;
    @Autowired
    private ITRegionService tRegionService;
    @Autowired
    private TAgentMapper tAgentMapper;
    @Override
    public void tBranchOfficeDetail(Integer tBranchOfficeId, Model model) {
        // 分公司信息
        TBranchOffice tBranchOffice = tBranchOfficeMapper.selectById(tBranchOfficeId);
        model.addAttribute("principal",tBranchOffice.getPrincipal());
        model.addAttribute("createTime",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(tBranchOffice.getCreateTime()));
        model.addAttribute("email",tBranchOffice.getEmail());
        model.addAttribute("area",tBranchOffice.getProvinceName()+tBranchOffice.getCityName()+tBranchOffice.getDistrictName());
        // 统计时间
        model.addAttribute("startToEndTime",new SimpleDateFormat("yyyy.MM.dd").format(tBranchOffice.getCreateTime())+"-"+
                new SimpleDateFormat("yyyy.MM.dd").format(new Date()));
        // 订单数据
        List<TOrder> orders = tOrderMapper.selectList(new EntityWrapper<TOrder>().eq("branchOfficeId", tBranchOfficeId));
        model.addAttribute("orderCount",orders.size());// 订单数量
        List<TOrder> effectiveOrder = orders.stream().filter(order -> order.getPayMoney().compareTo(new BigDecimal("15")) > 0).collect(Collectors.toList());
        model.addAttribute("effectiveOrderCount",effectiveOrder.size());// 有效订单
        // 优惠券数据,,,通过订单找到该区域的下单人,找出优惠券信息
        List<Integer> userIds = orders.stream().map(TOrder::getUserId).collect(Collectors.toList());
        List<TUserToCoupon> tUserToCoupons = tUserToCouponMapper.selectList(new EntityWrapper<TUserToCoupon>().in("userId", userIds));
        // 优惠券有效数量
        int validCount = tUserToCoupons.stream().mapToInt(TUserToCoupon::getValidCount).sum();
        // 过期数量
        int expireCount = tUserToCoupons.stream().mapToInt(TUserToCoupon::getExpireCount).sum();
        // 总数量
        int totalCount = tUserToCoupons.stream().mapToInt(TUserToCoupon::getCouponTotal).sum();
        // 已使用优惠券;总数量减去有效数量
        model.addAttribute("usedCount",totalCount-validCount-expireCount);
        // 已发放优惠券
        model.addAttribute("totalCount",totalCount);
        BigDecimal orderPriceCount = new BigDecimal("0");
        // 累计优惠券金额
        for (TUserToCoupon tUserToCoupon : tUserToCoupons) {
            TCoupon tCoupon = tCouponMapper.selectById(tUserToCoupon.getCouponId());
            BigDecimal price = tCoupon.getCouponPreferentialAmount().multiply(new BigDecimal(tUserToCoupon.getCouponTotal()));
            orderPriceCount = orderPriceCount.add(price);
        }
        model.addAttribute("orderPriceCount",orderPriceCount);
        // 司机数量
        Integer driverCount = tDriverMapper.selectCount(new EntityWrapper<TDriver>().eq("branchOfficeId", tBranchOfficeId));
        model.addAttribute("driverCount",driverCount);
    }
    @Override
    public List<TBranchOfficeResp> getPageList(String branchOfficeName, String principal, String principalPhone, Integer operatingBusiness, Integer status) {
        EntityWrapper<TBranchOffice> wrapper = new EntityWrapper<>();
        // 分公司名称
        if(StringUtils.hasLength(branchOfficeName)){
            wrapper.like("branchOfficeName",branchOfficeName);
        }
        // 负责人
        if(StringUtils.hasLength(principal)){
            wrapper.like("principal",principal);
        }
        // 负责人电话
        if(StringUtils.hasLength(principalPhone)){
            wrapper.like("principalPhone",principalPhone);
        }
        // 经营业务
        if(Objects.nonNull(operatingBusiness)){
            wrapper.eq("operatingBusiness",operatingBusiness);
        }
        // 状态
        if(Objects.nonNull(status)){
            wrapper.eq("status",status);
        }
        // 判断代理商 分公司
        Integer roleType = Objects.requireNonNull(ShiroKit.getUser()).getRoleType();
        Integer objectId = Objects.requireNonNull(ShiroKit.getUser()).getObjectId();
        if(2 == roleType){
            // 分公司
            wrapper.eq("id",objectId);
        }
        if(3 == roleType){
            // 代理商
            wrapper.eq("agentId",objectId);
        }
        List<TBranchOffice> tBranchOffices = tBranchOfficeMapper.selectList(wrapper);
        List<TBranchOfficeResp> tBranchOfficeRespList = new ArrayList<>(tBranchOffices.size());
        for (TBranchOffice tBranchOffice : tBranchOffices) {
            TBranchOfficeResp tBranchOfficeResp = new TBranchOfficeResp();
            BeanUtils.copyProperties(tBranchOffice,tBranchOfficeResp);
            tBranchOfficeRespList.add(tBranchOfficeResp);
        }
        return tBranchOfficeRespList;
    }
    @Override
    public void queryOtherInfo(List<TBranchOfficeResp> tBranchOfficeRespList) {
        List<TOrder> orders = tOrderMapper.selectList(new EntityWrapper<TOrder>());
        for (TBranchOfficeResp tBranchOfficeResp : tBranchOfficeRespList) {
            List<TOrder> orderList = orders.stream().filter(t -> tBranchOfficeResp.getId().equals(t.getBranchOfficeId())).collect(Collectors.toList());
            if(!CollectionUtils.isEmpty(orderList)){
                // 订单数据
                tBranchOfficeResp.setOrderCount(orderList.size());// 订单数量
                List<TOrder> effectiveOrder = orderList.stream().filter(order -> Objects.nonNull(order.getPayMoney()) && order.getPayMoney().compareTo(new BigDecimal("15")) > 0).collect(Collectors.toList());
                tBranchOfficeResp.setEffectiveOrderCount(effectiveOrder.size());// 有效订单
                // 优惠券数据,,,通过订单找到该区域的下单人,找出优惠券信息
                List<Integer> userIds = orderList.stream().map(TOrder::getUserId).collect(Collectors.toList());
                List<TUserToCoupon> tUserToCoupons = tUserToCouponMapper.selectList(new EntityWrapper<TUserToCoupon>().in("userId", userIds));
                // 优惠券有效数量
                int validCount = tUserToCoupons.stream().mapToInt(TUserToCoupon::getValidCount).sum();
                // 过期数量
                int expireCount = tUserToCoupons.stream().mapToInt(TUserToCoupon::getExpireCount).sum();
                // 总数量
                int totalCount = tUserToCoupons.stream().mapToInt(TUserToCoupon::getCouponTotal).sum();
                // 已使用优惠券;总数量减去有效数量
                tBranchOfficeResp.setUsedCount(totalCount-validCount-expireCount);
                // 已发放优惠券
                tBranchOfficeResp.setTotalCount(totalCount);
                BigDecimal orderPriceCount = new BigDecimal("0");
                // 累计优惠券金额
                for (TUserToCoupon tUserToCoupon : tUserToCoupons) {
                    TCoupon tCoupon = tCouponMapper.selectById(tUserToCoupon.getCouponId());
                    BigDecimal price = tCoupon.getCouponPreferentialAmount().multiply(new BigDecimal(tUserToCoupon.getCouponTotal()));
                    orderPriceCount = orderPriceCount.add(price);
                }
                tBranchOfficeResp.setOrderPriceCount(orderPriceCount);
            }
            // 司机数量
            Integer driverCount = tDriverMapper.selectCount(new EntityWrapper<TDriver>().eq("branchOfficeId", tBranchOfficeResp.getId()));
            tBranchOfficeResp.setDriverCount(driverCount);
        }
    }
    @Override
    public Object addOrUpdate(TBranchOffice tBranchOffice) {
        // 对省市区做处理
        String[] split = tBranchOffice.getAreaId().split("/");
        // 查询省市
        // 黑龙江省/大兴安岭地区
        // 702/852
        TRegion province = tRegionService.selectById(split[0]);
        tBranchOffice.setProvinceName(province.getName());
        tBranchOffice.setProvinceCode(province.getCode());
        TRegion city = tRegionService.selectById(split[1]);
        if(Objects.isNull(city)){
            city = tRegionService.selectOne(new EntityWrapper<TRegion>().eq("name",split[1]));
        }
        tBranchOffice.setCityName(city.getName());
        tBranchOffice.setCityCode(city.getCode());
        if(split.length>2){
            TRegion area = tRegionService.selectById(split[2]);
            if(Objects.isNull(area)){
                area = tRegionService.selectOne(new EntityWrapper<TRegion>().eq("name",split[2]));
            }
            tBranchOffice.setDistrictName(area.getName());
            tBranchOffice.setDistrictCode(area.getCode());
        }else {
            tBranchOffice.setDistrictName("");
            tBranchOffice.setDistrictCode("");
        }
        // 通过省市查询代理商
        List<TAgent> tAgent = tAgentMapper.selectList(new EntityWrapper<TAgent>().eq("provinceCode", province.getCode())
                .eq("cityCode", city.getCode())
                .eq("status", 1)
                .last("LIMIT 1"));
        if(!CollectionUtils.isEmpty(tAgent)){
            tBranchOffice.setAgentId(tAgent.get(0).getId());
        }else {
            return new SuccessTip(500, "该区域代理商被冻结或不存在");
        }
        return null;
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCancelOrderServiceImpl.java
New file
@@ -0,0 +1,66 @@
package com.stylefeng.guns.modular.system.service.impl;
import com.stylefeng.guns.core.shiro.ShiroKit;
import com.stylefeng.guns.modular.system.controller.resp.TOrderResp;
import com.stylefeng.guns.modular.system.model.TCancelOrder;
import com.stylefeng.guns.modular.system.dao.TCancelOrderMapper;
import com.stylefeng.guns.modular.system.service.ITCancelOrderService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.stylefeng.guns.modular.system.service.ITOrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.Objects;
/**
 * <p>
 * 订单取消记录 服务实现类
 * </p>
 *
 * @author stylefeng
 * @since 2023-02-27
 */
@Service
public class TCancelOrderServiceImpl extends ServiceImpl<TCancelOrderMapper, TCancelOrder> implements ITCancelOrderService {
    @Autowired
    private TCancelOrderMapper tCancelOrderMapper;
    @Autowired
    private ITOrderService tOrderService;
    @Override
    public List<TOrderResp> getCancelOrderList(String createTime, String code, Integer source, String userName, String userPhone, Integer state, String driverName) {
        String startTime = null;
        String endTime = null;
        // 开始,结束时间
        if(StringUtils.hasLength(createTime)){
            String[] split = createTime.split(" - ");
            startTime = split[0];
            endTime = split[1];
        }
        Integer roleType = Objects.requireNonNull(ShiroKit.getUser()).getRoleType();
        Integer objectId = Objects.requireNonNull(ShiroKit.getUser()).getObjectId();
        return tCancelOrderMapper.getCancelOrderList(startTime,endTime,code,source,userName,userPhone,state,driverName,roleType,objectId);
    }
    @Override
    public void cancelOrderDetail(Integer cancelOrderId, Model model) {
        // 查询取消订单记录
        TCancelOrder tCancelOrder = tCancelOrderMapper.selectById(cancelOrderId);
        model.addAttribute("cancelTime",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(tCancelOrder.getCreateTime()));
        model.addAttribute("cause",tCancelOrder.getCause());
        tOrderService.orderDetail(tCancelOrder.getOrderId(),model);
    }
    @Override
    public List<TOrderResp> userCancelOrderList(Integer userId,Integer orderId) {
        return tCancelOrderMapper.userCancelOrderList(userId,orderId);
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TComplaintServiceImpl.java
@@ -1,28 +1,42 @@
package com.stylefeng.guns.modular.system.service.impl;
import com.baomidou.mybatisplus.plugins.Page;
import com.stylefeng.guns.modular.system.controller.resp.TComplaintResp;
import com.stylefeng.guns.modular.system.dao.TAppUserMapper;
import com.stylefeng.guns.modular.system.dao.TDriverMapper;
import com.stylefeng.guns.modular.system.model.TComplaint;
import com.stylefeng.guns.modular.system.dao.TComplaintMapper;
import com.stylefeng.guns.modular.system.service.ITComplaintService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * 投诉管理 服务实现类
 * 投诉 服务实现类
 * </p>
 *
 * @author 吕雪
 * @since 2020-06-09
 * @author stylefeng
 * @since 2023-03-02
 */
@Service
public class TComplaintServiceImpl extends ServiceImpl<TComplaintMapper, TComplaint> implements ITComplaintService {
    @Autowired
    private TComplaintMapper tComplaintMapper;
    @Override
    public List<Map<String, Object>> getComplaintList(Page<Map<String, Object>> page, Integer roleType, Integer nowUserId, String beginTime, String endTime, String userName, String userPhone, String driverPhone, Integer isHandle) {
        return this.baseMapper.getComplaintList(page, roleType, nowUserId, beginTime, endTime, userName, userPhone, driverPhone, isHandle);
    public List<TComplaintResp> getPageList(String createTime, String userName, String userPhone, String driverPhone, Integer state) {
        String startTime = null;
        String endTime = null;
        // 开始,结束时间
        if(StringUtils.hasLength(createTime)){
            String[] split = createTime.split(" - ");
            startTime = split[0];
            endTime = split[1];
        }
        return tComplaintMapper.getPageList(startTime,endTime,userName,userPhone,driverPhone,state);
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverServiceImpl.java
@@ -3,6 +3,7 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.core.base.tips.SuccessTip;
import com.stylefeng.guns.core.shiro.ShiroKit;
import com.stylefeng.guns.core.util.DateUtil;
import com.stylefeng.guns.modular.system.controller.resp.TDriverCommissionResp;
import com.stylefeng.guns.modular.system.controller.resp.TDriverResp;
@@ -84,6 +85,15 @@
            wrapper.between("createTime",startTime,endTime);
        }
        wrapper.orderBy(true,"approvalStatus");
        // 判断是否为代理商或者分公司
        if(Objects.requireNonNull(ShiroKit.getUser()).getRoleType() == 2){
            // 分公司
            wrapper.eq("branchOfficeId",ShiroKit.getUser().getObjectId());
        }
        if(Objects.requireNonNull(ShiroKit.getUser()).getRoleType() == 3){
            // 代理商
            wrapper.eq("agentId",ShiroKit.getUser().getObjectId());
        }
        return wrapper;
    }
@@ -99,8 +109,10 @@
            TDriverResp tDriverResp = new TDriverResp();
            BeanUtils.copyProperties(tDriver,tDriverResp);
            // 设置余额
            tDriverResp.setBalance(tDriver.getBackgroundBalance().add(tDriver.getBalance()));
            if(Objects.nonNull(tDriver.getBackgroundBalance()) && Objects.nonNull(tDriver.getBalance())){
                // 设置余额
                tDriverResp.setBalance(tDriver.getBackgroundBalance().add(tDriver.getBalance()));
            }
            // 所属代理商
            TAgent tAgent = tAgentMapper.selectById(tDriver.getAgentId());
@@ -113,11 +125,11 @@
                tDriverResp.setBranchName(tBranchOffice.getPrincipal());
            }
            //累计订单量
            List<TOrder> cumulativeOrderCount = tOrders.stream().filter(order -> order.getDriverId().equals(tDriver.getId())
            List<TOrder> cumulativeOrderCount = tOrders.stream().filter(order -> tDriver.getId().equals(order.getDriverId())
                    && order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode()) && order.getState().equals(OrderStateEnum.FINISH.getCode())).collect(Collectors.toList());
            tDriverResp.setCumulativeOrderCount(cumulativeOrderCount.size());
            //当月订单量
            List<TOrder> monthOrderCount = tOrders.stream().filter(order -> order.getDriverId().equals(tDriver.getId())
            List<TOrder> monthOrderCount = tOrders.stream().filter(order -> tDriver.getId().equals(order.getDriverId())
                    && order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode()) && order.getState().equals(OrderStateEnum.FINISH.getCode())
            && new SimpleDateFormat("yyyyMM").format(order.getCreateTime()).equals(monthDate)).collect(Collectors.toList());
            tDriverResp.setMonthOrderCount(monthOrderCount.size());
@@ -331,6 +343,15 @@
            wrapper.like("name",name);
        }
        wrapper.orderBy(true,"approvalStatus");
        // 判断是否为代理商或者分公司
        if(Objects.requireNonNull(ShiroKit.getUser()).getRoleType() == 2){
            // 分公司
            wrapper.eq("branchOfficeId",ShiroKit.getUser().getObjectId());
        }
        if(Objects.requireNonNull(ShiroKit.getUser()).getRoleType() == 3){
            // 代理商
            wrapper.eq("agentId",ShiroKit.getUser().getObjectId());
        }
        return wrapper;
    }
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TEvaluateServiceImpl.java
New file
@@ -0,0 +1,110 @@
package com.stylefeng.guns.modular.system.service.impl;
import com.stylefeng.guns.core.shiro.ShiroKit;
import com.stylefeng.guns.modular.system.controller.resp.TEvaluateResp;
import com.stylefeng.guns.modular.system.dao.*;
import com.stylefeng.guns.modular.system.model.*;
import com.stylefeng.guns.modular.system.service.ITEvaluateService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
 * <p>
 * 订单评价 服务实现类
 * </p>
 *
 * @author stylefeng
 * @since 2023-02-27
 */
@Service
public class TEvaluateServiceImpl extends ServiceImpl<TEvaluateMapper, TEvaluate> implements ITEvaluateService {
    @Autowired
    private TEvaluateMapper tEvaluateMapper;
    @Autowired
    private TAppUserMapper tAppUserMapper;
    @Autowired
    private TOrderMapper tOrderMapper;
    @Autowired
    private TDriverMapper tDriverMapper;
    @Autowired
    private TBranchOfficeMapper tBranchOfficeMapper;
    @Override
    public List<TEvaluateResp> selectPageList(String createTime, String userName, String driverName, Integer orderType, Integer score) {
        String startTime = null;
        String endTime = null;
        // 开始,结束时间
        if(StringUtils.hasLength(createTime)){
            String[] split = createTime.split(" - ");
            startTime = split[0];
            endTime = split[1];
        }
        List<TEvaluateResp> list = tEvaluateMapper.selectPageList(startTime, endTime, userName, driverName, orderType, score);
        Integer roleType = Objects.requireNonNull(ShiroKit.getUser()).getRoleType();
        Integer objectId = Objects.requireNonNull(ShiroKit.getUser()).getObjectId();
        if(3 == roleType){
            list = list.stream().filter(tEvaluate -> tEvaluate.getAgentId().equals(objectId)).collect(Collectors.toList());
        }
        if(2 == roleType){
            list = list.stream().filter(tEvaluate -> tEvaluate.getBranchOfficeId().equals(objectId)).collect(Collectors.toList());
        }
        return list;
    }
    @Override
    public void evaluateDetail(Integer evaluateId, Model model) {
        // 查询评价
        TEvaluate tEvaluate = tEvaluateMapper.selectById(evaluateId);
        model.addAttribute("score",tEvaluate.getScore());
        model.addAttribute("evaluate",tEvaluate.getEvaluate());
        // 查询用户
        TAppUser tAppUser = tAppUserMapper.selectById(tEvaluate.getUserId());
        if(Objects.nonNull(tAppUser)){
            model.addAttribute("userName",tAppUser.getNickname());
            model.addAttribute("userPhone",tAppUser.getPhone());
        }else {
            model.addAttribute("userName","");
            model.addAttribute("userPhone","");
        }
        // 查询订单
        TOrder tOrder = tOrderMapper.selectById(tEvaluate.getOrderId());
        model.addAttribute("createTime",new SimpleDateFormat("yyyy-MM-dd HH:mm").format(tOrder.getCreateTime()));
        model.addAttribute("code",tOrder.getCode());
        model.addAttribute("source",tOrder.getSource());
        model.addAttribute("startTime",new SimpleDateFormat("yyyy-MM-dd HH:mm").format(tOrder.getStartTime()));
        model.addAttribute("boardingTime",new SimpleDateFormat("yyyy-MM-dd HH:mm").format(tOrder.getBoardingTime()));
        model.addAttribute("getoffTime",new SimpleDateFormat("yyyy-MM-dd HH:mm").format(tOrder.getGetoffTime()));
        model.addAttribute("startAddress",tOrder.getStartAddress());
        model.addAttribute("endAddress",tOrder.getEndAddress());
        // 查询司机
        TDriver tDriver = tDriverMapper.selectById(tOrder.getDriverId());
        if(Objects.nonNull(tDriver)){
            model.addAttribute("driverName",tDriver.getName());
            // 查询分公司
            TBranchOffice tBranchOffice = tBranchOfficeMapper.selectById(tDriver.getBranchOfficeId());
            if(Objects.nonNull(tBranchOffice)){
                model.addAttribute("branchOfficeName",tBranchOffice.getPrincipal());
            }else {
                model.addAttribute("branchOfficeName","");
            }
        }else {
            model.addAttribute("driverName","");
        }
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java
@@ -1,10 +1,29 @@
package com.stylefeng.guns.modular.system.service.impl;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.core.shiro.ShiroKit;
import com.stylefeng.guns.core.util.DateUtil;
import com.stylefeng.guns.modular.system.controller.resp.TOrderResp;
import com.stylefeng.guns.modular.system.dao.TAppUserMapper;
import com.stylefeng.guns.modular.system.dao.TBranchOfficeMapper;
import com.stylefeng.guns.modular.system.dao.TDriverMapper;
import com.stylefeng.guns.modular.system.model.TAppUser;
import com.stylefeng.guns.modular.system.model.TBranchOffice;
import com.stylefeng.guns.modular.system.model.TDriver;
import com.stylefeng.guns.modular.system.model.TOrder;
import com.stylefeng.guns.modular.system.dao.TOrderMapper;
import com.stylefeng.guns.modular.system.service.ITOrderService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
 * <p>
@@ -17,4 +36,81 @@
@Service
public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> implements ITOrderService {
    @Autowired
    private TOrderMapper tOrderMapper;
    @Autowired
    private TAppUserMapper tAppUserMapper;
    @Autowired
    private TDriverMapper tDriverMapper;
    @Autowired
    private TBranchOfficeMapper tBranchOfficeMapper;
    @Override
    public List<TOrderResp> getOrderList(String createTime, String code, Integer source, String userName, String userPhone, Integer state, String driverName,Integer isException) {
        String startTime = null;
        String endTime = null;
        // 开始,结束时间
        if(StringUtils.hasLength(createTime)){
            String[] split = createTime.split(" - ");
            startTime = split[0];
            endTime = split[1];
        }
        Integer roleType = Objects.requireNonNull(ShiroKit.getUser()).getRoleType();
        Integer objectId = Objects.requireNonNull(ShiroKit.getUser()).getObjectId();
        return tOrderMapper.getOrderList(startTime,endTime,code,source,userName,userPhone,state,driverName,isException,roleType,objectId);
    }
    @Override
    public void orderDetail(Integer orderId, Model model) {
        // 订单信息
        TOrder tOrder = tOrderMapper.selectById(orderId);
        model.addAttribute("createTime",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(tOrder.getCreateTime()));//下单时间
        model.addAttribute("code",tOrder.getCode());//订单编号
        model.addAttribute("source",tOrder.getSource());//订单来源
        model.addAttribute("startAddress",tOrder.getStartAddress());//起点
        model.addAttribute("endAddress",tOrder.getEndAddress());//终点
        model.addAttribute("startTime",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(tOrder.getStartTime()));//乘车时间
        model.addAttribute("boardingTime",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(tOrder.getBoardingTime()));//上车时间
        model.addAttribute("getoffTime",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(tOrder.getGetoffTime()));//下车时间
        model.addAttribute("startPrice",tOrder.getStartPrice());//起步价
        model.addAttribute("overDrivePrice",tOrder.getOverDrivePrice());//里程费
        model.addAttribute("waitTimePrice",tOrder.getWaitTimePrice());//等待费
        model.addAttribute("badWeatherPrice",tOrder.getBadWeatherPrice());//恶劣天气费用
        model.addAttribute("orderMoney",tOrder.getOrderMoney());//实际费用
        model.addAttribute("payMoney",tOrder.getPayMoney());//实际支付费用
        model.addAttribute("discountedPrice",tOrder.getDiscountedPrice());//优惠券抵扣费用
        model.addAttribute("payType",tOrder.getPayType());//支付方式
        model.addAttribute("discountAmount",tOrder.getDiscountAmount());//折扣金额
        model.addAttribute("userId",tOrder.getUserId());//用户id
        // 查询用户
        TAppUser tAppUser = tAppUserMapper.selectById(tOrder.getUserId());
        model.addAttribute("userName",tAppUser.getNickname());
        model.addAttribute("userPhone",tAppUser.getPhone());
        model.addAttribute("havDiscount",tAppUser.getHavDiscount());
        if(1 == tAppUser.getHavDiscount()){
            // 计算9折优惠金额
            BigDecimal multiply = tOrder.getOrderMoney().multiply(new BigDecimal("0.1")).setScale(2);
            model.addAttribute("multiply",multiply);
        }
        // 查询司机
        TDriver tDriver = tDriverMapper.selectById(tOrder.getDriverId());
        model.addAttribute("driverName",tDriver.getName());
        // 查询司机所属分公司
        TBranchOffice tBranchOffice = tBranchOfficeMapper.selectById(tDriver.getBranchOfficeId());
        if(Objects.nonNull(tBranchOffice)){
            model.addAttribute("branchOfficeName",tBranchOffice.getPrincipal());
        }else {
            model.addAttribute("branchOfficeName","");
        }
    }
    @Override
    public void orderExceptionDetail(Integer orderId, Model model) {
        this.orderDetail(orderId,model);
        model.addAttribute("orderId",orderId);
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TRechargeRecordServiceImpl.java
@@ -1,10 +1,18 @@
package com.stylefeng.guns.modular.system.service.impl;
import com.stylefeng.guns.core.shiro.ShiroKit;
import com.stylefeng.guns.modular.system.controller.resp.TRechargeRecordAgentResp;
import com.stylefeng.guns.modular.system.controller.resp.TRechargeRecordUserResp;
import com.stylefeng.guns.modular.system.model.TRechargeRecord;
import com.stylefeng.guns.modular.system.dao.TRechargeRecordMapper;
import com.stylefeng.guns.modular.system.service.ITRechargeRecordService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.List;
import java.util.Objects;
/**
 * <p>
@@ -12,9 +20,43 @@
 * </p>
 *
 * @author stylefeng
 * @since 2023-02-20
 * @since 2023-03-10
 */
@Service
public class TRechargeRecordServiceImpl extends ServiceImpl<TRechargeRecordMapper, TRechargeRecord> implements ITRechargeRecordService {
    @Autowired
    private TRechargeRecordMapper tRechargeRecordMapper;
    @Override
    public List<TRechargeRecordUserResp> userRecharge(String userName, String userPhone, String code, String createTime) {
        String startTime = null;
        String endTime = null;
        // 开始,结束时间
        if(StringUtils.hasLength(createTime)){
            String[] split = createTime.split(" - ");
            startTime = split[0];
            endTime = split[1];
        }
        return tRechargeRecordMapper.userRecharge(startTime,endTime,userName,userPhone,code);
    }
    @Override
    public List<TRechargeRecordAgentResp> agentRechargeList(String driverName, String driverPhone, String createTime) {
        String startTime = null;
        String endTime = null;
        // 开始,结束时间
        if(StringUtils.hasLength(createTime)){
            String[] split = createTime.split(" - ");
            startTime = split[0];
            endTime = split[1];
        }
        Integer roleType = Objects.requireNonNull(ShiroKit.getUser()).getRoleType();
        Integer objectId = Objects.requireNonNull(ShiroKit.getUser()).getObjectId();
        List<TRechargeRecordAgentResp> tRechargeRecordAgentRespList = tRechargeRecordMapper.agentRechargeList(startTime, endTime, driverName, driverPhone, roleType, objectId);
        for (TRechargeRecordAgentResp tRechargeRecordAgentResp : tRechargeRecordAgentRespList) {
            tRechargeRecordAgentResp.setArea(tRechargeRecordAgentResp.getProvinceName()+tRechargeRecordAgentResp.getCityName());
        }
        return tRechargeRecordAgentRespList;
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TSystemConfigServiceImpl.java
New file
@@ -0,0 +1,20 @@
package com.stylefeng.guns.modular.system.service.impl;
import com.stylefeng.guns.modular.system.model.TSystemConfig;
import com.stylefeng.guns.modular.system.dao.TSystemConfigMapper;
import com.stylefeng.guns.modular.system.service.ITSystemConfigService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 系统配置 服务实现类
 * </p>
 *
 * @author stylefeng
 * @since 2023-03-02
 */
@Service
public class TSystemConfigServiceImpl extends ServiceImpl<TSystemConfigMapper, TSystemConfig> implements ITSystemConfigService {
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TUserToCouponServiceImpl.java
New file
@@ -0,0 +1,20 @@
package com.stylefeng.guns.modular.system.service.impl;
import com.stylefeng.guns.modular.system.model.TUserToCoupon;
import com.stylefeng.guns.modular.system.dao.TUserToCouponMapper;
import com.stylefeng.guns.modular.system.service.ITUserToCouponService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 用户优惠券中间表 服务实现类
 * </p>
 *
 * @author stylefeng
 * @since 2023-02-28
 */
@Service
public class TUserToCouponServiceImpl extends ServiceImpl<TUserToCouponMapper, TUserToCoupon> implements ITUserToCouponService {
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TYouTuiServiceImpl.java
New file
@@ -0,0 +1,20 @@
package com.stylefeng.guns.modular.system.service.impl;
import com.stylefeng.guns.modular.system.model.TYouTui;
import com.stylefeng.guns.modular.system.dao.TYouTuiMapper;
import com.stylefeng.guns.modular.system.service.ITYouTuiService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 优推 服务实现类
 * </p>
 *
 * @author stylefeng
 * @since 2023-03-01
 */
@Service
public class TYouTuiServiceImpl extends ServiceImpl<TYouTuiMapper, TYouTui> implements ITYouTuiService {
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushMinistryOfTransportUtil.java
@@ -537,7 +537,7 @@
     * 乘客投诉信息
     * @param id
     */
    public void ratedPassengerComplaint(Integer id){
    /*public void ratedPassengerComplaint(Integer id){
        TComplaint tComplaint = complaintService.selectById(id);
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("OrderId", "");//订单号
@@ -548,7 +548,7 @@
        map.put("ratedPassengerComplaint", jsonObject.toJSONString());
        String result = HttpRequestUtil.postRequest(PushURL.ministry_of_transport_data + "/ratedPassengerComplaint", map);
        System.out.println("乘客投诉信息:" + result);
    }
    }*/
    /**
management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgentArea.html
@@ -8,15 +8,19 @@
                        <div class="col-sm-6 control-label">
                            <label  class="col-sm-1" style="width: 20px;">省:</label>
                            <select class="input-group col-sm-2 " onclick="TAgent.areaProvince()" id="province" style="width: 200px;height: 33px" name="province">
                                <option value="">请选择省</option>
                                <option value="">请选择</option>
                                @for(i in province){
                                <option id="${i.id}" value="${i.name}">${i.name}</option>
                                <option id="${i.id}" value="${i.name}"${i.name == provinceName ? 'selected=selected' : ''}>${i.name}</option>
                                @}
                            </select>
                        </div>
                        <div class="col-sm-6 control-label">
                            <label  class="col-sm-1" style="width: 20px;">市:</label>
                            <select class="input-group col-sm-2" id="city" style="width: 200px;height: 33px" name="city">
                                <option value="">请选择</option>
                                @for(city in cityList){
                                <option id="${city.id}" value="${city.name}"${city.name == cityName ? 'selected=selected' : ''}>${city.name}</option>
                                @}
                            </select>
                        </div>
                    </div>
management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgent_add.html
@@ -3,7 +3,7 @@
    <div class="ibox-content">
        <div class="form-horizontal">
            <div class="row" >
            <div class="row" id="tAgentInfoForm">
                <div class="col-sm-12" style="text-align: center">
                    <input hidden id="areaId" value="areaId">
                    <div class="initialLevel col-sm-12 control-label form-group" style="text-align: center">
@@ -13,16 +13,6 @@
                            <input id="principal" name="principal" type="text" style="height: 30px" required>
                        </div>
                    </div>
                    <!--<div class="col-sm-12">
                        <div class="form-group">
                            <span style="color:red">*</span>
                            <label class="col-sm-3 control-label">负责人姓名:</label>
                            <div class="col-sm-6">
                                <input class="form-control" id="principal" name="principal" type="text">
                            </div>
                        </div>
                        <div class="hr-line-dashed"></div>
                    </div>-->
                    <div class="initialLevel col-sm-12 control-label form-group">
                        <div class="initialLevel col-sm-6 control-label form-group"  >
                            <span style="color:red">*</span>
@@ -34,7 +24,7 @@
                    <div class="initialLevel col-sm-12 control-label form-group">
                        <div class="initialLevel col-sm-6 control-label form-group"  >
                            <label class="control-label" >邮箱:</label>
                            <input id="email" name="email" type="email" style="height: 30px" required>
                            <input id="email" name="email" type="email" style="height: 30px">
                        </div>
                    </div>
@@ -42,32 +32,21 @@
                        <div class="initialLevel col-sm-6 control-label form-group"  >
                            <span style="color:red">*</span>
                            <label class="control-label" >代理区域:</label>
                            <input id="area" onclick="TAgent.area()" name="area" placeholder="请选择" style="height: 30px" readonly>
                            <input id="area" onclick="TAgent.area()" name="area" placeholder="请选择" style="height: 30px" readonly required>
                        </div>
                    </div>
                    <!--<div class="col-sm-12">
                        <div class="form-group">
                            <span style="color:red">*</span>
                            <label class="col-sm-3 control-label">代理区域:</label>
                            <div class="col-sm-6">
                                <input class="form-control" id="area" onclick="TAgent.area()" name="area" type="text" placeholder="请选择">
                            </div>
                        </div>
                        <div class="hr-line-dashed"></div>
                    </div>-->
                    <div class="initialLevel col-sm-12 control-label form-group">
                        <div class="initialLevel col-sm-6 control-label form-group"  >
                            <label class="control-label" >开户银行:</label>
                            <input id="bankDeposit" name="bankDeposit" type="text" style="height: 30px" required>
                            <input id="bankDeposit" name="bankDeposit" type="text" style="height: 30px">
                        </div>
                    </div>
                    <div class="initialLevel col-sm-12 control-label form-group">
                        <div class="initialLevel col-sm-6 control-label form-group"  >
                            <label class="control-label" >银行账户:</label>
                            <input id="bankAccount" name="bankAccount" type="number" style="height: 30px" required>
                            <input id="bankAccount" name="bankAccount" type="number" style="height: 30px">
                        </div>
                    </div>
management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tCoupon.html
@@ -11,7 +11,7 @@
                        <input hidden id="userIds" value="${userIds}">
                        <div class="row">
                            <div class="col-sm-3">
                                <#NameCon id="condition" name="优惠券名称" placeholder="请输入优惠券名称"/>
                                <#NameCon id="couponName" name="优惠券名称" placeholder="请输入优惠券名称"/>
                            </div>
                            <div class="col-sm-3">
                                <#button name="搜索" icon="fa-search" clickFun="TCoupon.search()"/>
@@ -28,7 +28,6 @@
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tCoupon/tCoupon.js"></script>
<script src="${ctxPath}/static/modular/system/tAppUser/tCoupon.js"></script>
<script src="${ctxPath}/static/modular/system/tAppUser/tAppUser_info.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tCouponException.html
@@ -11,7 +11,7 @@
                        <input hidden id="userIds" value="${userIds}">
                        <div class="row">
                            <div class="col-sm-3">
                                <#NameCon id="condition" name="优惠券名称" placeholder="请输入优惠券名称"/>
                                <#NameCon id="couponName" name="优惠券名称" placeholder="请输入优惠券名称"/>
                            </div>
                            <div class="col-sm-3">
                                <#button name="搜索" icon="fa-search" clickFun="TCoupon.search()"/>
@@ -28,7 +28,6 @@
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tCoupon/tCoupon.js"></script>
<script src="${ctxPath}/static/modular/system/tAppUser/tCoupon.js"></script>
<script src="${ctxPath}/static/modular/system/tAppUser/tAppUserException.js"></script>
<script src="${ctxPath}/static/modular/system/tAppUser/tAppUser_info.js"></script>
management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOffice.html
@@ -9,24 +9,58 @@
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <div class="row">
                            <div class="col-sm-3">
                                <#NameCon id="condition" name="名称" />
                            <div class="col-sm-2">
                                <#NameCon id="branchOfficeName" name="分公司名称" />
                            </div>
                            <div class="col-sm-3">
                            <div class="col-sm-2">
                                <#NameCon id="principal" name="负责人名称" />
                            </div>
                            <div class="col-sm-2">
                                <#NameCon id="principalPhone" name="负责人电话" />
                            </div>
                            <!--<div class="col-sm-2">
                                <#NameCon id="condition" name="管理人名称" />
                            </div>
                            <div class="col-sm-2">
                                <#NameCon id="condition" name="管理人电话" />
                            </div>-->
                            <div class="col-sm-2">
                                <select class="input-group" id="operatingBusiness" style="width: 180px;height: 33px" name="operatingBusiness">
                                    <option value="">选择经营业务</option>
                                    <option value="1">司机代驾</option>
                                </select>
                            </div>
                            <div class="col-sm-2">
                                <select class="input-group" id="status" style="width: 180px;height: 33px" name="status">
                                    <option value="">选择状态</option>
                                    <option value="1">正常</option>
                                    <option value="2">冻结</option>
                                    <option value="3">已删除</option>
                                </select>
                            </div>
                            <div class="col-sm-2">
                                <#button name="搜索" icon="fa-search" clickFun="TBranchOffice.search()"/>
                                <#button name="重置" icon="fa-trash" clickFun="TBranchOffice.resetSearch()" space="true"/>
                            </div>
                            <div class="col-sm-12">
                                @if(shiro.hasPermission("/tBranchOffice/add")){
                                <#button name="添加" icon="fa-plus" clickFun="TBranchOffice.openAddTBranchOffice()"/>
                                @}
                                @if(shiro.hasPermission("/tBranchOffice/update")){
                                <#button name="编辑" icon="fa-edit" clickFun="TBranchOffice.openTBranchOfficeDetail()" space="true"/>
                                @}
                                <#button name="冻结" icon="fa-edit" clickFun="TBranchOffice.stop()" space="true"/>
                                <#button name="启动" icon="fa-edit" clickFun="TBranchOffice.start()" space="true"/>
                            </div>
                        </div>
                        <div class="hidden-xs" id="TBranchOfficeTableToolbar" role="group">
                        <!--<div class="hidden-xs" id="TBranchOfficeTableToolbar" role="group">
                            @if(shiro.hasPermission("/tBranchOffice/add")){
                                <#button name="添加" icon="fa-plus" clickFun="TBranchOffice.openAddTBranchOffice()"/>
                            @}
                            @if(shiro.hasPermission("/tBranchOffice/update")){
                                <#button name="修改" icon="fa-edit" clickFun="TBranchOffice.openTBranchOfficeDetail()" space="true"/>
                            @}
                            @if(shiro.hasPermission("/tBranchOffice/delete")){
                                <#button name="删除" icon="fa-remove" clickFun="TBranchOffice.delete()" space="true"/>
                            @}
                        </div>
                        </div>-->
                        <#table id="TBranchOfficeTable"/>
                    </div>
                </div>
management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOfficeAreaAdd.html
New file
@@ -0,0 +1,51 @@
@layout("/common/_container.html"){
<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-content">
                <div class="row row-lg">
                    <div class="col-sm-12" style="height: 100px;">
                        <div class="col-sm-4 control-label">
                            <label  class="col-sm-1" style="width: 20px;">省:</label>
                            <select class="input-group col-sm-2 " onclick="TBranchOffice.areaCity()" id="province" style="width: 200px;height: 33px" name="province">
                                <option value="">请选择</option>
                                @for(i in provinceList){
                                <option id="${i.id}" value="${i.name}"${i.name == provinceName ? 'selected=selected' : ''}>${i.name}</option>
                                @}
                            </select>
                        </div>
                        <div class="col-sm-4 control-label">
                            <label  class="col-sm-1" style="width: 20px;">市:</label>
                            <select class="input-group col-sm-2" onclick="TBranchOffice.areaDistrict()" id="city" style="width: 200px;height: 33px" name="city">
                                <option value="">请选择</option>
                                @for(city in cityList){
                                <option id="${city.id}" value="${city.name}"${city.name == cityName ? 'selected=selected' : ''}>${city.name}</option>
                                @}
                            </select>
                        </div>
                        <div class="col-sm-4 control-label">
                            <label  class="col-sm-1" style="width: 20px;">区:</label>
                            <select class="input-group col-sm-2" id="district" style="width: 200px;height: 33px" name="district">
                                <option value="">请选择</option>
                                @for(district in districtList){
                                <option id="${district.id}" value="${district.name}"${district.name == districtName ? 'selected=selected' : ''}>${district.name}</option>
                                @}
                            </select>
                        </div>
                    </div>
                        <div class="hidden-xs" id="TAppUserTableToolbar" role="group"  style="text-align:center">
                            <#button name="取消" icon="fa-plus" clickFun="TBranchOfficeInfoDlg.close()" />
                            <#button name="确定" icon="fa-plus" clickFun="TBranchOffice.submitArea()"/>
                        </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tBranchOffice/tBranchOffice.js"></script>
<script src="${ctxPath}/static/modular/system/tBranchOffice/tBranchOffice_info.js"></script>
<script type="text/javascript">
</script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOfficeAreaUpdate.html
New file
@@ -0,0 +1,57 @@
@layout("/common/_container.html"){
<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-content">
                <div class="row row-lg">
                    <div class="col-sm-12" style="height: 100px;">
                        <!--<input hidden id="provinceName" value="${provinceName}">
                        <input hidden id="cityName" value="${cityName}">
                        <input hidden id="districtName" value="${districtName}">
                        <input hidden id="provinceId" value="${provinceId}">
                        <input hidden id="cityId" value="${cityId}">
                        <input hidden id="districtId" value="${districtId}">-->
                        <div class="col-sm-4 control-label">
                            <label  class="col-sm-1" style="width: 20px;">省:</label>
                            <select class="input-group col-sm-2 " onclick="TBranchOffice.areaCity()" id="province" style="width: 200px;height: 33px" name="province">
                                <option value="">请选择</option>
                                @for(i in provinceList){
                                <option id="${i.id}" value="${i.name}"${i.name == provinceName ? 'selected=selected' : ''}>${i.name}</option>
                                @}
                            </select>
                        </div>
                        <div class="col-sm-4 control-label">
                            <label  class="col-sm-1" style="width: 20px;">市:</label>
                            <select class="input-group col-sm-2" onclick="TBranchOffice.areaDistrict()" id="city" style="width: 200px;height: 33px" name="city">
                                <option>请选择</option>
                                @for(city in cityList){
                                <option id="${city.id}" value="${city.name}"${city.name == cityName ? 'selected=selected' : ''}>${city.name}</option>
                                @}
                            </select>
                        </div>
                        <div class="col-sm-4 control-label">
                            <label  class="col-sm-1" style="width: 20px;">区:</label>
                            <select class="input-group col-sm-2" id="district" style="width: 200px;height: 33px" name="district">
                                <option>请选择</option>
                                @for(district in districtList){
                                <option id="${district.id}" value="${district.name}"${district.name == districtName ? 'selected=selected' : ''}>${district.name}</option>
                                @}
                            </select>
                        </div>
                    </div>
                        <div class="hidden-xs" id="TAppUserTableToolbar" role="group"  style="text-align:center">
                            <#button name="取消" icon="fa-plus" clickFun="TBranchOfficeInfoDlg.close()" />
                            <#button name="确定" icon="fa-plus" clickFun="TBranchOffice.submitArea()"/>
                        </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tBranchOffice/tBranchOffice.js"></script>
<script src="${ctxPath}/static/modular/system/tBranchOffice/tBranchOffice_info.js"></script>
<script type="text/javascript">
</script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOfficeDetail.html
New file
@@ -0,0 +1,113 @@
@layout("/common/_container.html"){
<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-title">
                <h5>管理</h5>
            </div>
            <div class="ibox-content">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <hr/>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div style="background-color: gray;height: 35px;line-height: 35px">
                                <label style="color: #0C0C0C">分公司资料</label>
                            </div>
                        </div>
                        <hr/>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >负责人姓名:</label>
                                <label>${principal}</label>
                            </div>
                            <div class="initialLevel col-sm-2 control-label form-group" >
                                <label class="control-label">添加时间:</label>
                                <label>${createTime}</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >邮箱:</label>
                                <label>${email}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group" >
                                <label class="control-label">抽成规则:</label>
                                <label>每笔订单满</label>
                                <label>${num2}</label>
                                <label>元/单,抽取</label>
                                <label>${num3}</label>
                                <label>元</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-2 control-label form-group" >
                                <label class="control-label">代理区域:</label>
                                <label>${area}</label>
                            </div>
                        </div>
                        <hr/>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div style="background-color: gray;height: 35px;line-height: 35px">
                                <label style="color: #0C0C0C">基本信息</label>
                            </div>
                        </div>
                        <hr/>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >统计时间:</label>
                                <span>${startToEndTime}</span>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >累计订单量:</label>
                                <label>${orderCount}</label>单
                            </div>
                            <div class="initialLevel col-sm-2 control-label form-group" >
                                <label class="control-label">已使用优惠券:</label>
                                <label>${usedCount}</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >有效订单:</label>
                                <label>${effectiveOrderCount}</label>单
                            </div>
                            <div class="initialLevel col-sm-2 control-label form-group" >
                                <label class="control-label">累计优惠券金额:</label>
                                <label>${orderPriceCount}</label>元
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >已发放优惠券:</label>
                                <label>${totalCount}</label>张
                            </div>
                            <div class="initialLevel col-sm-2 control-label form-group" >
                                <label class="control-label">司机数量:</label>
                                <label>${driverCount}</label>人
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tAgent/tAgent.js"></script>
<script type="text/javascript">
    laydate.render({
        elem: '#createTime',
        type: 'date',
        range: true
    });
</script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOffice_add.html
@@ -1,5 +1,82 @@
@layout("/common/_container.html"){
<div class="ibox float-e-margins">
<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-title">
                <h5>添加</h5>
            </div>
            <div class="ibox-content" id="branchOfficeInfoForm">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <input hidden id="areaId" value="areaId">
                        <div class="col-sm-12" style="cursor: pointer;text-align: right;">
                            <div class="initialLevel col-sm-12 control-label form-group"  >
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <span style="color:red">*</span>
                                    <label class="control-label" >分公司名称:</label>
                                    <input id="branchOfficeName" name="branchOfficeName" type="text" style="height: 30px" required="required">
                                </div>
                            </div>
                            <div class="initialLevel col-sm-12 control-label form-group"  >
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <span style="color:red">*</span>
                                    <label class="control-label" >负责人姓名:</label>
                                    <input id="principal" name="principal" type="text" style="height: 30px" required="required">
                                </div>
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <span style="color:red">*</span>
                                    <label class="control-label" >联系电话:</label>
                                    <input id="principalPhone" name="principalPhone" type="number" style="height: 30px" required="required">
                                </div>
                            </div>
                            <div class="initialLevel col-sm-12 control-label form-group"  >
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <label class="control-label" >邮箱:</label>
                                    <input id="email" type="email" style="height: 30px">
                                </div>
                            </div>
                            <div class="initialLevel col-sm-12 control-label form-group"  >
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <span style="color:red">*</span>
                                    <label class="control-label" >代理区域:</label>
                                    <input id="area" onclick="TBranchOffice.areaAdd()" name="area" placeholder="请选择" style="height: 30px" readonly required>
                                </div>
                            </div>
                            <div class="initialLevel col-sm-12 control-label form-group"  >
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <label class="control-label" >开户银行:</label>
                                    <input id="bankDeposit" type="text" style="height: 30px">
                                </div>
                            </div>
                            <div class="initialLevel col-sm-12 control-label form-group"  >
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <label class="control-label" >银行账户:</label>
                                    <input id="bankAccount" type="text" style="height: 30px">
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="row btn-group-m-t">
                    <div class="col-sm-10" style="text-align: center">
                        <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TBranchOfficeInfoDlg.close()"/>
                        <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TBranchOfficeInfoDlg.addSubmit()"/>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<!--<div class="ibox float-e-margins">
    <div class="ibox-content">
        <div class="form-horizontal">
@@ -33,6 +110,7 @@
        </div>
    </div>
</div>
</div>-->
<script src="${ctxPath}/static/modular/system/tBranchOffice/tBranchOffice_info.js"></script>
<script src="${ctxPath}/static/modular/system/tBranchOffice/tBranchOffice.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOffice_edit.html
@@ -1,5 +1,84 @@
@layout("/common/_container.html"){
<div class="ibox float-e-margins">
<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-title">
                <h5>添加</h5>
            </div>
            <div class="ibox-content" id="branchOfficeInfoForm">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <input hidden id="id" value="${item.id}"/>
                        <input hidden id="areaId" value="${item.areaId}">
                        <div class="col-sm-12" style="cursor: pointer;text-align: right;">
                            <div class="initialLevel col-sm-12 control-label form-group"  >
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <span style="color:red">*</span>
                                    <label class="control-label" >分公司名称:</label>
                                    <input id="branchOfficeName" value="${item.branchOfficeName}" name="branchOfficeName" type="text" style="height: 30px" required="required">
                                </div>
                            </div>
                            <div class="initialLevel col-sm-12 control-label form-group"  >
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <span style="color:red">*</span>
                                    <label class="control-label" >负责人姓名:</label>
                                    <input id="principal" value="${item.principal}" name="principal" type="text" style="height: 30px" required="required">
                                </div>
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <span style="color:red">*</span>
                                    <label class="control-label" >联系电话:</label>
                                    <input id="principalPhone" value="${item.principalPhone}" name="principalPhone" type="number" style="height: 30px" required="required">
                                </div>
                            </div>
                            <div class="initialLevel col-sm-12 control-label form-group"  >
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <label class="control-label" >邮箱:</label>
                                    <input id="email" value="${item.email}" type="email" style="height: 30px">
                                </div>
                            </div>
                            <div class="initialLevel col-sm-12 control-label form-group"  >
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <span style="color:red">*</span>
                                    <label class="control-label" >代理区域:</label>
                                    <input id="area" value="${item.area}" onclick="TBranchOffice.areaUpdate()" name="area" placeholder="请选择" style="height: 30px" readonly required>
                                </div>
                            </div>
                            <div class="initialLevel col-sm-12 control-label form-group"  >
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <label class="control-label" >开户银行:</label>
                                    <input id="bankDeposit" value="${item.bankDeposit}" type="text" style="height: 30px">
                                </div>
                            </div>
                            <div class="initialLevel col-sm-12 control-label form-group"  >
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <label class="control-label" >银行账户:</label>
                                    <input id="bankAccount" value="${item.bankAccount}" type="text" style="height: 30px">
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="row btn-group-m-t">
                    <div class="col-sm-10" style="text-align: center">
                        <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TBranchOfficeInfoDlg.close()"/>
                        <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TBranchOfficeInfoDlg.editSubmit()"/>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<!--<div class="ibox float-e-margins">
    <div class="ibox-content">
        <div class="form-horizontal">
@@ -33,6 +112,7 @@
        </div>
    </div>
</div>
</div>-->
<script src="${ctxPath}/static/modular/system/tBranchOffice/tBranchOffice_info.js"></script>
<script src="${ctxPath}/static/modular/system/tBranchOffice/tBranchOffice.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tCancelOrder/tCancelOrder.html
New file
@@ -0,0 +1,38 @@
@layout("/common/_container.html"){
<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-title">
                <h5>管理</h5>
            </div>
            <div class="ibox-content">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <div class="row">
                            <div class="col-sm-3">
                                <#NameCon id="condition" name="名称" />
                            </div>
                            <div class="col-sm-3">
                                <#button name="搜索" icon="fa-search" clickFun="TCancelOrder.search()"/>
                            </div>
                        </div>
                        <div class="hidden-xs" id="TCancelOrderTableToolbar" role="group">
                            @if(shiro.hasPermission("/tCancelOrder/add")){
                                <#button name="添加" icon="fa-plus" clickFun="TCancelOrder.openAddTCancelOrder()"/>
                            @}
                            @if(shiro.hasPermission("/tCancelOrder/update")){
                                <#button name="修改" icon="fa-edit" clickFun="TCancelOrder.openTCancelOrderDetail()" space="true"/>
                            @}
                            @if(shiro.hasPermission("/tCancelOrder/delete")){
                                <#button name="删除" icon="fa-remove" clickFun="TCancelOrder.delete()" space="true"/>
                            @}
                        </div>
                        <#table id="TCancelOrderTable"/>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tCancelOrder/tCancelOrder.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tCancelOrder/tCancelOrderDetail.html
New file
@@ -0,0 +1,212 @@
@layout("/common/_container.html"){
<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-title">
                <h5>详情</h5>
            </div>
            <div class="ibox-content">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <hr/>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div style="background-color: gray;height: 35px;line-height: 35px">
                                <label style="color: #0C0C0C">订单详情</label>
                            </div>
                        </div>
                        <hr/>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >下单时间:</label>
                                <label>${createTime}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >订单编号:</label>
                                <label>${code}</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >订单来源:</label>
                                @if(source==1){
                                <label>小程序</label>
                                @}
                                @if(source==2){
                                <label>APP</label>
                                @}
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >乘车时间:</label>
                                <label>${startTime}</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group" style="color: green" >
                            <div class="initialLevel col-sm-3 control-label form-group" >
                                <label class="control-label">下单用户昵称:</label>
                                <label>${userName}</label>
                            </div>
                            <div class="initialLevel col-sm-2 control-label form-group" >
                                <label class="control-label">下单用户手机号:</label>
                                <label>${userPhone}</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group" >
                                <label class="control-label">起点:</label>
                                <label>${startAddress}</label>
                            </div>
                            <div class="initialLevel col-sm-2 control-label form-group" >
                                <label class="control-label">终点:</label>
                                <label>${endAddress}</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group" style="color: red" >
                            <div class="initialLevel col-sm-3 control-label form-group" >
                                <label class="control-label">接单司机:</label>
                                <label>${driverName}</label>
                            </div>
                            <div class="initialLevel col-sm-2 control-label form-group" >
                                <label class="control-label">所属机构:</label>
                                <label>${branchOfficeName}</label>
                            </div>
                        </div>
                        <hr/>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div style="background-color: gray;height: 35px;line-height: 35px">
                                <label style="color: #0C0C0C">上下地点</label>
                            </div>
                        </div>
                        <hr/>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >上车地点:</label>
                                <label>${startAddress}</label>
                            </div>
                            <div class="initialLevel col-sm-2 control-label form-group" >
                                <label class="control-label">上车时间:</label>
                                <label>${boardingTime}</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >下车地点:</label>
                                <label>${endAddress}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >下车时间:</label>
                                <label>${getoffTime}</label>
                            </div>
                        </div>
                        <hr/>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div style="background-color: gray;height: 35px;line-height: 35px">
                                <label style="color: #0C0C0C">取消信息</label>
                            </div>
                        </div>
                        <hr/>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-2 control-label form-group"  >
                                <label class="control-label" >取消时间:</label>
                                <label>${cancelTime}</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-2 control-label form-group"  >
                                <label class="control-label" >取消原因:</label>
                                <div  style="margin-left: 70px" >
                                    <textarea id="cause" style="width: 681px; height: 249px;" readonly>${cause}</textarea>
                                </div>
                            </div>
                        </div>
                        <hr/>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div style="background-color: gray;height: 35px;line-height: 35px">
                                <label style="color: #0C0C0C">费用明细</label>
                            </div>
                        </div>
                        <hr/>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-2 control-label form-group"  >
                                <label class="control-label" >起步价:</label>
                                <label>${startPrice}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >等待费:</label>
                                <label>${waitTimePrice}</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-2 control-label form-group"  >
                                <label class="control-label" >里程费:</label>
                                <label>${overDrivePrice}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >恶劣天气:</label>
                                <label>${badWeatherPrice}</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-2 control-label form-group"  >
                                <label class="control-label" >实际费用:</label>
                                <label>${orderMoney}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >实际支付费用:</label>
                                <label>${payMoney}</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-2 control-label form-group"  >
                                <label class="control-label" >优惠券抵扣费用:</label>
                                <label>${discountedPrice}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >支付方式:</label>
                                @if(payType==1){
                                <label>微信支付</label>
                                @}
                                @if(payType==2){
                                <label>余额支付</label>
                                @}
                                @if(payType==3){
                                <label>线下收款</label>
                                @}
                            </div>
                        </div>
                        <div class="hidden-xs" id="TDriverTableToolbar" role="group"  style="text-align: center">
                            <#button name="取消" icon="fa-plus" clickFun="TCancelOrderInfoDlg.close()" />
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tOrder/tOrder.js"></script>
<script src="${ctxPath}/static/modular/system/tOrder/tOrder_info.js"></script>
<script src="${ctxPath}/static/modular/system/tOrder/tCancelOrder.js"></script>
<script src="${ctxPath}/static/modular/system/tCancelOrder/tCancelOrder_info.js"></script>
<script type="text/javascript">
    laydate.render({
        elem: '#createTime',
        type: 'date',
        range: true
    });
</script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tCancelOrder/tCancelOrder_add.html
New file
@@ -0,0 +1,32 @@
@layout("/common/_container.html"){
<div class="ibox float-e-margins">
    <div class="ibox-content">
        <div class="form-horizontal">
            <div class="row">
                <div class="col-sm-6 b-r">
                            <#input id="id" name="主键" underline="true"/>
                            <#input id="orderId" name="订单id" underline="true"/>
                            <#input id="userType" name="用户类型(1=用户,2=司机)" underline="true"/>
                            <#input id="userId" name="用户id"/>
                </div>
                <div class="col-sm-6">
                            <#input id="cause" name="转单原因" underline="true"/>
                            <#input id="status" name="状态(1=正常,2=冻结,3=删除)" underline="true"/>
                            <#input id="createTime" name="添加时间" underline="true"/>
                </div>
            </div>
            <div class="row btn-group-m-t">
                <div class="col-sm-10">
                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TCancelOrderInfoDlg.addSubmit()"/>
                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TCancelOrderInfoDlg.close()"/>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tCancelOrder/tCancelOrder_info.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tCancelOrder/tCancelOrder_edit.html
New file
@@ -0,0 +1,32 @@
@layout("/common/_container.html"){
<div class="ibox float-e-margins">
    <div class="ibox-content">
        <div class="form-horizontal">
            <div class="row">
                <div class="col-sm-6 b-r">
                            <#input id="id" name="主键" value="${item.id}" underline="true"/>
                            <#input id="orderId" name="订单id" value="${item.orderId}" underline="true"/>
                            <#input id="userType" name="用户类型(1=用户,2=司机)" value="${item.userType}" underline="true"/>
                            <#input id="userId" name="用户id" value="${item.userId}" />
                </div>
                <div class="col-sm-6">
                            <#input id="cause" name="转单原因" value="${item.cause}" underline="true"/>
                            <#input id="status" name="状态(1=正常,2=冻结,3=删除)" value="${item.status}" underline="true"/>
                            <#input id="createTime" name="添加时间" value="${item.createTime}" />
                </div>
            </div>
            <div class="row btn-group-m-t">
                <div class="col-sm-10">
                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TCancelOrderInfoDlg.editSubmit()"/>
                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TCancelOrderInfoDlg.close()"/>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tCancelOrder/tCancelOrder_info.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tComplaint/tComplaint.html
@@ -3,44 +3,53 @@
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-title">
                <h5>投诉列表管理</h5>
                <h5>管理</h5>
            </div>
            <div class="ibox-content">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <div class="row">
                            <div class="col-sm-3">
                                <#TimeCon id="insertTime" name="投诉时间" isTime="false"/>
                            <div class="col-sm-2">
                                <#TimeCon id="createTime" name="投诉时间" />
                            </div>
                            <div class="col-sm-3">
                            <div class="col-sm-2">
                                <#NameCon id="userName" name="投诉人昵称" />
                            </div>
                            <div class="col-sm-3">
                                <#NameCon id="userPhone" name="投诉人电话" />
                            <div class="col-sm-2">
                                <#NameCon id="userPhone" name="投诉人手机号" />
                            </div>
                            <div class="col-sm-3">
                                <#NameCon id="driverPhone" name="投诉司机电话" />
                            <div class="col-sm-2">
                                <#NameCon id="driverPhone" name="司机手机号" />
                            </div>
                            <div class="col-sm-3">
                                <#SelectCon id="isHandle" name="状态" >
                                    <option value="">全部</option>
                                    <option value="2">未处理</option>
                                    <option value="1">已处理</option>
                                </#SelectCon>
                            <div class="col-sm-2">
                                <select class="input-group" id="state" style="width: 180px;height: 33px" name="state">
                                    <option value="">选择状态</option>
                                    <option value="1">待处理</option>
                                    <option value="2">已处理</option>
                                </select>
                            </div>
                            <div class="col-sm-3">
                            <div class="col-sm-2">
                                <#button name="搜索" icon="fa-search" clickFun="TComplaint.search()"/>
                                <#button name="重置" icon="fa-trash" clickFun="TComplaint.resetSearch()" space="true"/>
                            </div>
                            <div class="col-sm-12">
                                <#button name="立即处理" icon="" clickFun="TComplaint.immediatelyAudit()"/>
                                @if(shiro.hasPermission("/tComplaint/delete")){
                                <#button name="删除" icon="fa-remove" clickFun="TComplaint.delete()" space="true"/>
                                @}
                            </div>
                        </div>
                        <div class="hidden-xs" id="TComplaintTableToolbar" role="group">
                            @if(shiro.hasPermission("/tComplaint/immediately")){
                                <#button name="立即处理" icon="fa-edit" clickFun="TComplaint.immediately()"/>
                        <!--<div class="hidden-xs" id="TComplaintTableToolbar" role="group">
                            @if(shiro.hasPermission("/tComplaint/add")){
                                <#button name="添加" icon="fa-plus" clickFun="TComplaint.openAddTComplaint()"/>
                            @}
                            @if(shiro.hasPermission("/tComplaint/update")){
                                <#button name="修改" icon="fa-edit" clickFun="TComplaint.openTComplaintDetail()" space="true"/>
                            @}
                            @if(shiro.hasPermission("/tComplaint/delete")){
                                <#button name="删除记录" icon="fa-remove" clickFun="TComplaint.delete()" space="true"/>
                                <#button name="删除" icon="fa-remove" clickFun="TComplaint.delete()" space="true"/>
                            @}
                        </div>
                        </div>-->
                        <#table id="TComplaintTable"/>
                    </div>
                </div>
@@ -49,10 +58,11 @@
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tComplaint/tComplaint.js"></script>
<script>
<script type="text/javascript">
    laydate.render({
        elem: '#insertTime'
        ,range: true
        elem: '#createTime',
        type: 'date',
        range: true
    });
</script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tComplaint/tComplaintAudit.html
New file
@@ -0,0 +1,24 @@
@layout("/common/_container.html"){
<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-content">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <input hidden id="tComplaintId" value="${tComplaintId}">
                        <div class="col-lg-3">
                                备注:<textarea id="notes" placeholder="请输入备注" style="width: 681px; height: 249px;"></textarea>
                        </div>
                        <div class="hidden-xs" id="TAppUserTableToolbar" role="group"  style="margin-left:300px">
                            <#button name="取消" icon="fa-plus" clickFun="TComplaintInfoDlg.close()" />
                            <#button name="提交" icon="fa-plus" clickFun="TComplaint.audit()"/>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tComplaint/tComplaint.js"></script>
<script src="${ctxPath}/static/modular/system/tComplaint/tComplaint_info.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tComplaint/tComplaint_add.html
@@ -6,17 +6,16 @@
            <div class="row">
                <div class="col-sm-6 b-r">
                            <#input id="id" name="主键" underline="true"/>
                            <#input id="userId" name="用户Id" underline="true"/>
                            <#input id="reason" name="投诉原因" underline="true"/>
                            <#input id="driverId" name="被投诉人Id" underline="true"/>
                            <#input id="description" name="描述"/>
                            <#input id="userId" name="用户id" underline="true"/>
                            <#input id="driverId" name="投诉司机id" underline="true"/>
                            <#input id="reason" name="投诉原因"/>
                </div>
                <div class="col-sm-6">
                            <#input id="isHandle" name="是否处理(0:未处理,1:已处理)" underline="true"/>
                            <#input id="insertTime" name="投诉时间" underline="true"/>
                            <#input id="handleResult" name="处理结果" underline="true"/>
                            <#input id="handleUserId" name="处理人id" underline="true"/>
                            <#input id="notes" name="注释" underline="true"/>
                            <#input id="state" name="处理状态(1=待处理,2=已处理)" underline="true"/>
                            <#input id="status" name="状态(1=正常,2=冻结,3=删除)" underline="true"/>
                            <#input id="createTime" name="添加时间" underline="true"/>
                </div>
            </div>
management/guns-admin/src/main/webapp/WEB-INF/view/system/tComplaint/tComplaint_edit.html
@@ -6,17 +6,16 @@
            <div class="row">
                <div class="col-sm-6 b-r">
                            <#input id="id" name="主键" value="${item.id}" underline="true"/>
                            <#input id="userId" name="用户Id" value="${item.userId}" underline="true"/>
                            <#input id="reason" name="投诉原因" value="${item.reason}" underline="true"/>
                            <#input id="driverId" name="被投诉人Id" value="${item.driverId}" underline="true"/>
                            <#input id="description" name="描述" value="${item.description}" />
                            <#input id="userId" name="用户id" value="${item.userId}" underline="true"/>
                            <#input id="driverId" name="投诉司机id" value="${item.driverId}" underline="true"/>
                            <#input id="reason" name="投诉原因" value="${item.reason}" />
                </div>
                <div class="col-sm-6">
                            <#input id="isHandle" name="是否处理(0:未处理,1:已处理)" value="${item.isHandle}" underline="true"/>
                            <#input id="insertTime" name="投诉时间" value="${item.insertTime}" underline="true"/>
                            <#input id="handleResult" name="处理结果" value="${item.handleResult}" underline="true"/>
                            <#input id="handleUserId" name="处理人id" value="${item.handleUserId}" />
                            <#input id="notes" name="注释" value="${item.notes}" underline="true"/>
                            <#input id="state" name="处理状态(1=待处理,2=已处理)" value="${item.state}" underline="true"/>
                            <#input id="status" name="状态(1=正常,2=冻结,3=删除)" value="${item.status}" underline="true"/>
                            <#input id="createTime" name="添加时间" value="${item.createTime}" />
                </div>
            </div>
management/guns-admin/src/main/webapp/WEB-INF/view/system/tCoupon/tCoupon.html
@@ -25,8 +25,9 @@
                                    <option value="1">通用券</option>
                                </select>
                            </div>
                            <div class="col-sm-1">
                            <div class="col-sm-2">
                                <#button name="搜索" icon="fa-search" clickFun="TCoupon.search()"/>
                                <#button name="重置" icon="fa-trash" clickFun="TCoupon.resetSearch()" space="true"/>
                            </div>
                        </div>
                        <div class="hidden-xs" id="TCouponTableToolbar" role="group">
management/guns-admin/src/main/webapp/WEB-INF/view/system/tCoupon/tCoupon_add.html
@@ -1,103 +1,117 @@
@layout("/common/_container.html"){
<div class="ibox float-e-margins">
    <div class="ibox-content">
        <div class="form-horizontal">
            <div class="row">
                <div class="col-sm-12">
                    <div class="form-group">
                        <label class="col-sm-3 control-label">优惠券名称:</label>
                        <div class="col-sm-6">
                            <input class="form-control" id="couponName" name="couponName" type="text">
                        </div>
                    </div>
                    <div class="hr-line-dashed"></div>
                </div>
                <div class="col-sm-12">
                    <div class="form-group">
                        <label class="col-sm-3 control-label">优惠券类型:</label>
                        <select class="input-group col-sm-6" id="couponType" style="width: 180px;height: 33px" name="couponType">
                            <option value="1">活动券</option>
                            <option value="2">优惠券</option>
                        </select>
                    </div>
                    <div class="hr-line-dashed"></div>
                </div>
                <div class="col-sm-12">
                    <div class="form-group">
                        <label class="col-sm-3 control-label">服务类类型:</label>
                        <select class="input-group col-sm-6" id="couponServiceType" style="width: 180px;height: 33px" name="couponType">
                            <option value="1">通用型</option>
                        </select>
                    </div>
                    <div class="hr-line-dashed"></div>
                </div>
                <div class="col-sm-12">
                    <div class="form-group">
                        <label class="col-sm-3 control-label">优惠券数量:</label>
                        <div class="col-sm-6">
                            <input class="form-control" id="couponCount" name="couponCount" type="text">
                        </div>
                    </div>
                    <div class="hr-line-dashed"></div>
                </div>
                <div class="col-sm-12">
                    <div class="form-group">
                        <label class="col-sm-3 control-label">条件金额:订单满</label>
                        <div class="col-sm-6">
                            <input class="form-control" id="couponConditionalAmount" name="couponConditionalAmount" type="text">
                        </div>
                        <label class="col-sm-2 control-label">可使用</label>
                    </div>
                    <div class="hr-line-dashed"></div>
                </div>
                <div class="col-sm-12">
                    <div class="form-group">
                        <label class="col-sm-3 control-label">优惠金额:</label>
                        <div class="col-sm-6">
                            <input class="form-control" id="couponPreferentialAmount" name="couponPreferentialAmount" type="text">
                        </div>
                    </div>
                    <div class="hr-line-dashed"></div>
                </div>
                <div class="col-sm-12">
                    <div class="form-group">
                        <label class="col-sm-3 control-label">有效期:</label>
                        <div class="col-sm-6">
                            <input class="form-control" id="couponValidity" name="couponValidity" type="text">
                        </div>
                        <label class="col-sm-1 control-label">天</label>
                    </div>
                    <div class="hr-line-dashed"></div>
                </div>
                <div class="col-sm-12">
                    <div class="form-group">
                        <label class="col-sm-3 control-label">赠送数量:</label>
                        <div class="col-sm-6">
                            <input class="form-control" id="couponSendQuantity" name="couponSendQuantity" type="text">
                        </div>
                        <label class="col-sm-1 control-label">张</label>
                    </div>
                    <div class="hr-line-dashed"></div>
                </div>
<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-title">
                <h5>添加</h5>
            </div>
            <div class="ibox-content" id="couponInfoForm">
            <div class="row btn-group-m-t">
                <div class="col-sm-10" style="text-align: center">
                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TCouponInfoDlg.addSubmit()"/>
                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TCouponInfoDlg.close()"/>
                <div class="row row-lg">
                    <div class="col-sm-12" style="cursor: pointer;text-align: right;">
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <span style="color:red">*</span>
                                <label class="control-label" >优惠券名称:</label>
                                <input id="couponName" name="couponName" type="text" style="height: 30px" required="required">
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <span style="color:red">*</span>
                                <label class="control-label" >优惠券类型:</label>
                                <select id="couponType" name="couponType" onclick="TCoupon.changeCouponType()" style="height: 30px" required>
                                    <option value="">请选择优惠券类型</option>
                                    <option value="1">活动券</option>
                                    <option value="2">新人券</option>
                                </select>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <span style="color:red">*</span>
                                <label class=" control-label">服务类类型:</label>
                                <select id="couponServiceType" name="couponServiceType" style="height: 30px" required>
                                    <option value="">请选择服务类类型</option>
                                    <option value="1">通用型</option>
                                </select>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <span style="color:red">*</span>
                                <label class="control-label">优惠券限制数量:</label>
                                <input id="couponCount" name="couponCount" type="number" style="height: 30px" required>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <span style="color:red">*</span>
                                <label class="control-label">条件金额:订单满</label>
                                <input id="couponConditionalAmount" name="couponConditionalAmount" type="number" style="height: 30px" required>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group" style="text-align: left" >
                                <label>可使用</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <span style="color:red">*</span>
                                <label class="control-label">优惠金额:</label>
                                <input id="couponPreferentialAmount" name="couponPreferentialAmount" type="number" style="height: 30px" required>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <span style="color:red">*</span>
                                <label class="control-label">有效期:</label>
                                <input id="couponValidity" name="couponValidity" type="number" style="height: 30px" required>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group" style="text-align: left" >
                                <label>天</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <span style="color:red">*</span>
                                <label class="control-label">优惠券总量:</label>
                                <input id="remainingQuantity" name="remainingQuantity" type="number" style="height: 30px" required>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group" hidden id="changeCouponSendQuantity" >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <span style="color:red">*</span>
                                <label class="control-label">赠送数量:</label>
                                <input id="couponSendQuantity" name="couponSendQuantity" type="number" style="height: 30px" required>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group" style="text-align: left" >
                                <label>张</label>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="row btn-group-m-t">
                    <div class="col-sm-10" style="text-align: center">
                        <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TCouponInfoDlg.addSubmit()"/>
                        <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TCouponInfoDlg.close()"/>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tCoupon/tCoupon_info.js"></script>
<script src="${ctxPath}/static/modular/system/tCoupon/tCoupon.js"></script>
<script type="text/javascript">
</script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver.html
@@ -26,7 +26,7 @@
                                <#button name="搜索" icon="fa-search" clickFun="TDriver.search()"/>
                                <#button name="重置" icon="fa-trash" clickFun="TDriver.resetSearch()" space="true"/>
                            </div>
                            <div class="col-sm-3">
                            <div class="col-sm-12">
                                <button type="button" class="btn btn-primary " onclick="TDriver.auditPage()" id="audit">
                                    <i class="fa "></i>&nbsp;立即审核
                                </button>
management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverAreaAdd.html
@@ -9,22 +9,28 @@
                        <div class="col-sm-4 control-label">
                            <label  class="col-sm-1" style="width: 20px;">省:</label>
                            <select class="input-group col-sm-2 " onclick="TDriver.areaCity()" id="province" style="width: 200px;height: 33px" name="province">
                                <option value="">请选择省</option>
                                <option value="">请选择</option>
                                @for(i in provinceList){
                                <option id="${i.id}" value="${i.name}"}>${i.name}</option>
                                <option id="${i.id}" value="${i.name}"${i.name == provinceName ? 'selected=selected' : ''}>${i.name}</option>
                                @}
                            </select>
                        </div>
                        <div class="col-sm-4 control-label">
                            <label  class="col-sm-1" style="width: 20px;">市:</label>
                            <select class="input-group col-sm-2" onclick="TDriver.areaDistrict()" id="city" style="width: 200px;height: 33px" name="city">
                                <option>请选择市</option>
                                <option>请选择</option>
                                @for(city in cityList){
                                <option id="${city.id}" value="${city.name}"${city.name == cityName ? 'selected=selected' : ''}>${city.name}</option>
                                @}
                            </select>
                        </div>
                        <div class="col-sm-4 control-label">
                            <label  class="col-sm-1" style="width: 20px;">区:</label>
                            <select class="input-group col-sm-2" id="district" style="width: 200px;height: 33px" name="district">
                                <option>请选择区</option>
                                <option>请选择</option>
                                @for(district in districtList){
                                <option id="${district.id}" value="${district.name}"${district.name == districtName ? 'selected=selected' : ''}>${district.name}</option>
                                @}
                            </select>
                        </div>
                    </div>
management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverAreaUpdate.html
@@ -5,17 +5,17 @@
            <div class="ibox-content">
                <div class="row row-lg">
                    <div class="col-sm-12" style="height: 100px;">
                        <input hidden id="provinceName" value="${provinceName}">
                        <!--<input hidden id="provinceName" value="${provinceName}">
                        <input hidden id="cityName" value="${cityName}">
                        <input hidden id="districtName" value="${districtName}">
                        <input hidden id="provinceId" value="${provinceId}">
                        <input hidden id="cityId" value="${cityId}">
                        <input hidden id="districtId" value="${districtId}">
                        <input hidden id="districtId" value="${districtId}">-->
                        <div class="col-sm-4 control-label">
                            <label  class="col-sm-1" style="width: 20px;">省:</label>
                            <select class="input-group col-sm-2 " onclick="TDriver.areaCity()" id="province" style="width: 200px;height: 33px" name="province">
                                <option value="">请选择省</option>
                                <option value="">请选择</option>
                                @for(i in provinceList){
                                <option id="${i.id}" value="${i.name}"${i.name == provinceName ? 'selected=selected' : ''}>${i.name}</option>
                                @}
@@ -24,7 +24,7 @@
                        <div class="col-sm-4 control-label">
                            <label  class="col-sm-1" style="width: 20px;">市:</label>
                            <select class="input-group col-sm-2" onclick="TDriver.areaDistrict()" id="city" style="width: 200px;height: 33px" name="city">
                                <option>请选择市</option>
                                <option>请选择</option>
                                @for(city in cityList){
                                <option id="${city.id}" value="${city.name}"${city.name == cityName ? 'selected=selected' : ''}>${city.name}</option>
                                @}
@@ -33,7 +33,7 @@
                        <div class="col-sm-4 control-label">
                            <label  class="col-sm-1" style="width: 20px;">区:</label>
                            <select class="input-group col-sm-2" id="district" style="width: 200px;height: 33px" name="district">
                                <option>请选择区</option>
                                <option>请选择</option>
                                @for(district in districtList){
                                <option id="${district.id}" value="${district.name}"${district.name == districtName ? 'selected=selected' : ''}>${district.name}</option>
                                @}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver_add.html
@@ -5,7 +5,7 @@
            <div class="ibox-title">
                <h5>添加</h5>
            </div>
            <div class="ibox-content">
            <div class="ibox-content" id="driverInfoForm">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <input hidden id="areaId">
@@ -22,12 +22,12 @@
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <span style="color:red">*</span>
                                    <label class="control-label" >姓名:</label>
                                    <input id="name" type="text" style="height: 30px" required>
                                    <input id="name" name="name" type="text" style="height: 30px" required="required">
                                </div>
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <span style="color:red">*</span>
                                    <label class="control-label" >手机号:</label>
                                    <input id="phone" type="number" style="height: 30px" required>
                                    <input id="phone" name="phone" type="number" style="height: 30px" required="required">
                                </div>
                            </div>
@@ -35,12 +35,12 @@
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <span style="color:red">*</span>
                                    <label class="control-label" >紧急联系人姓名:</label>
                                    <input id="emergencyContact" type="text" style="height: 30px" required>
                                    <input id="emergencyContact" name="emergencyContact" type="text" style="height: 30px" required>
                                </div>
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <span style="color:red">*</span>
                                    <label class="control-label" >紧急联系人电话:</label>
                                    <input id="emergencyPhone" type="number" style="height: 30px" required>
                                    <input id="emergencyPhone" name="emergencyPhone" type="number" style="height: 30px" required>
                                </div>
                            </div>
@@ -77,7 +77,7 @@
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <span style="color:red">*</span>
                                    <label class="control-label" >身份证号码:</label>
                                    <input id="idcard" type="text" style="height: 30px" required>
                                    <input id="idcard" name="idcard" type="text" style="height: 30px" required>
                                </div>
                            </div>
management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver_edit.html
@@ -5,7 +5,7 @@
            <div class="ibox-title">
                <h5>添加</h5>
            </div>
            <div class="ibox-content">
            <div class="ibox-content" id="driverInfoForm">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <input hidden id="id" value="${item.id}"/>
@@ -22,12 +22,12 @@
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <span style="color:red">*</span>
                                    <label class="control-label" >姓名:</label>
                                    <input id="name" value="${item.name}" type="text" style="height: 30px" required>
                                    <input id="name" name="name" value="${item.name}" type="text" style="height: 30px" required>
                                </div>
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <span style="color:red">*</span>
                                    <label class="control-label" >手机号:</label>
                                    <input id="phone" value="${item.phone}" type="number" style="height: 30px" required>
                                    <input id="phone" name="phone" value="${item.phone}" type="number" style="height: 30px" required>
                                </div>
                            </div>
@@ -35,12 +35,12 @@
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <span style="color:red">*</span>
                                    <label class="control-label" >紧急联系人姓名:</label>
                                    <input id="emergencyContact" value="${item.emergencyContact}" type="text" style="height: 30px" required>
                                    <input id="emergencyContact" name="emergencyContact" value="${item.emergencyContact}" type="text" style="height: 30px" required>
                                </div>
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <span style="color:red">*</span>
                                    <label class="control-label" >紧急联系人电话:</label>
                                    <input id="emergencyPhone" value="${item.emergencyPhone}" type="number" style="height: 30px" required>
                                    <input id="emergencyPhone" name="emergencyPhone" value="${item.emergencyPhone}" type="number" style="height: 30px" required>
                                </div>
                            </div>
@@ -77,7 +77,7 @@
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <span style="color:red">*</span>
                                    <label class="control-label" >身份证号码:</label>
                                    <input id="idcard" value="${item.idcard}" type="text" style="height: 30px" required>
                                    <input id="idcard" name="idcard" value="${item.idcard}" type="text" style="height: 30px" required>
                                </div>
                            </div>
management/guns-admin/src/main/webapp/WEB-INF/view/system/tEvaluate/tEvaluate.html
New file
@@ -0,0 +1,72 @@
@layout("/common/_container.html"){
<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-title">
                <h5>管理</h5>
            </div>
            <div class="ibox-content">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <div class="row">
                            <div class="col-sm-2">
                                <#TimeCon id="createTime" name="评论时间" />
                            </div>
                            <div class="col-sm-2">
                                <#NameCon id="userName" name="用户名" />
                            </div>
                            <div class="col-sm-2">
                                <#NameCon id="driverName" name="司机名" />
                            </div>
                            <!--<div class="col-sm-1">
                                <select class="input-group" id="orderType" style="width: 120px;height: 33px" name="orderType">
                                    <option value="">选择订单类型</option>
                                </select>
                            </div>-->
                            <div class="col-sm-2">
                                <select class="input-group" id="score" style="width: 120px;height: 33px" name="score">
                                    <option value="">选择分数</option>
                                    <option value="1">非常差</option>
                                    <option value="2">差</option>
                                    <option value="3">一般</option>
                                    <option value="4">满意</option>
                                    <option value="5">非常满意</option>
                                </select>
                            </div>
                            <div class="col-sm-2">
                                <#button name="搜索" icon="fa-search" clickFun="TEvaluate.search()"/>
                                <#button name="重置" icon="fa-trash" clickFun="TEvaluate.resetSearch()" space="true"/>
                            </div>
                            <div class="col-sm-12">
                                <button type="button" class="btn btn-primary " onclick="TEvaluate.export()" id="export">
                                    <i class="fa "></i>&nbsp;导出
                                </button>
                            </div>
                        </div>
                        <div class="hidden-xs" id="TEvaluateTableToolbar" role="group">
                            @if(shiro.hasPermission("/tEvaluate/add")){
                                <#button name="添加" icon="fa-plus" clickFun="TEvaluate.openAddTEvaluate()"/>
                            @}
                            @if(shiro.hasPermission("/tEvaluate/update")){
                                <#button name="修改" icon="fa-edit" clickFun="TEvaluate.openTEvaluateDetail()" space="true"/>
                            @}
                            @if(shiro.hasPermission("/tEvaluate/delete")){
                                <#button name="删除" icon="fa-remove" clickFun="TEvaluate.delete()" space="true"/>
                            @}
                        </div>
                        <#table id="TEvaluateTable"/>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tEvaluate/tEvaluate.js"></script>
<script type="text/javascript">
    laydate.render({
        elem: '#createTime',
        type: 'date',
        range: true
    });
</script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tEvaluate/tEvaluateDetail.html
New file
@@ -0,0 +1,161 @@
@layout("/common/_container.html"){
<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-title">
                <h5>详情</h5>
            </div>
            <div class="ibox-content">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <hr/>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div style="background-color: gray;height: 35px;line-height: 35px">
                                <label style="color: #0C0C0C">订单信息</label>
                            </div>
                        </div>
                        <hr/>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >下单时间:</label>
                                <label>${createTime}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >订单编号:</label>
                                <label>${code}</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >订单来源:</label>
                                <label>${source}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >乘车时间:</label>
                                <label>${startTime}</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group" style="color: green" >
                            <div class="initialLevel col-sm-3 control-label form-group" >
                                <label class="control-label">下单用户昵称:</label>
                                <label>${userName}</label>
                            </div>
                            <div class="initialLevel col-sm-2 control-label form-group" >
                                <label class="control-label">下单用户手机号:</label>
                                <label>${userPhone}</label>
                            </div>
                        </div>
                        <hr/>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div style="background-color: gray;height: 35px;line-height: 35px">
                                <label style="color: #0C0C0C">上下地点</label>
                            </div>
                        </div>
                        <hr/>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >起点:</label>
                                <label>${startAddress}</label>
                            </div>
                            <div class="initialLevel col-sm-2 control-label form-group" >
                                <label class="control-label">终点:</label>
                                <label>${endAddress}</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group" style="color: red" >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >接单司机:</label>
                                <label>${driverName}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >所属机构:</label>
                                <label>${branchOfficeName}</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >上车地点:</label>
                                <label>${startAddress}</label>
                            </div>
                            <div class="initialLevel col-sm-2 control-label form-group" >
                                <label class="control-label">上车时间:</label>
                                <label>${boardingTime}</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >下车地点:</label>
                                <label>${endAddress}</label>
                            </div>
                            <div class="initialLevel col-sm-2 control-label form-group" >
                                <label class="control-label">下车时间:</label>
                                <label>${getoffTime}</label>
                            </div>
                        </div>
                        <hr/>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div style="background-color: gray;height: 35px;line-height: 35px">
                                <label style="color: #0C0C0C">评论详情</label>
                            </div>
                        </div>
                        <hr/>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-2 control-label form-group"  >
                                <label class="control-label" >评论分数:</label>
                                @if(score==1){
                                <label>非常差</label>
                                @}
                                @if(score==2){
                                <label>差</label>
                                @}
                                @if(score==3){
                                <label>一般</label>
                                @}
                                @if(score==4){
                                <label>满意</label>
                                @}
                                @if(score==5){
                                <label>非常满意</label>
                                @}
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-2 control-label form-group"  >
                                <label class="control-label" >评论内容:</label>
                                <div  style="margin-left: 70px" >
                                    <textarea id="evaluate" style="width: 681px; height: 249px;" readonly>${evaluate}</textarea>
                                </div>
                            </div>
                        </div>
                        <div class="hidden-xs" id="TDriverTableToolbar" role="group"  style="text-align: center">
                            <#button name="取消" icon="fa-plus" clickFun="TEvaluateInfoDlg.close()" />
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tEvaluate/tEvaluate.js"></script>
<script src="${ctxPath}/static/modular/system/tEvaluate/tEvaluate_info.js"></script>
<script type="text/javascript">
    laydate.render({
        elem: '#createTime',
        type: 'date',
        range: true
    });
</script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tEvaluate/tEvaluate_add.html
New file
@@ -0,0 +1,32 @@
@layout("/common/_container.html"){
<div class="ibox float-e-margins">
    <div class="ibox-content">
        <div class="form-horizontal">
            <div class="row">
                <div class="col-sm-6 b-r">
                            <#input id="id" name="主键" underline="true"/>
                            <#input id="orderId" name="订单id" underline="true"/>
                            <#input id="userId" name="用户id" underline="true"/>
                            <#input id="score" name="评分"/>
                </div>
                <div class="col-sm-6">
                            <#input id="evaluate" name="评价内容" underline="true"/>
                            <#input id="status" name="状态(1=正常,2=冻结,3=删除)" underline="true"/>
                            <#input id="createTime" name="添加时间" underline="true"/>
                </div>
            </div>
            <div class="row btn-group-m-t">
                <div class="col-sm-10">
                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TEvaluateInfoDlg.addSubmit()"/>
                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TEvaluateInfoDlg.close()"/>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tEvaluate/tEvaluate_info.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tEvaluate/tEvaluate_edit.html
New file
@@ -0,0 +1,32 @@
@layout("/common/_container.html"){
<div class="ibox float-e-margins">
    <div class="ibox-content">
        <div class="form-horizontal">
            <div class="row">
                <div class="col-sm-6 b-r">
                            <#input id="id" name="主键" value="${item.id}" underline="true"/>
                            <#input id="orderId" name="订单id" value="${item.orderId}" underline="true"/>
                            <#input id="userId" name="用户id" value="${item.userId}" underline="true"/>
                            <#input id="score" name="评分" value="${item.score}" />
                </div>
                <div class="col-sm-6">
                            <#input id="evaluate" name="评价内容" value="${item.evaluate}" underline="true"/>
                            <#input id="status" name="状态(1=正常,2=冻结,3=删除)" value="${item.status}" underline="true"/>
                            <#input id="createTime" name="添加时间" value="${item.createTime}" />
                </div>
            </div>
            <div class="row btn-group-m-t">
                <div class="col-sm-10">
                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TEvaluateInfoDlg.editSubmit()"/>
                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TEvaluateInfoDlg.close()"/>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tEvaluate/tEvaluate_info.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tCancelOrder.html
New file
@@ -0,0 +1,87 @@
@layout("/common/_container.html"){
<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-title">
                <h5>管理</h5>
            </div>
            <div class="ibox-content">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <div class="row">
                            <div class="col-sm-2">
                                <#TimeCon id="createTime" name="取消订单时间" />
                            </div>
                            <div class="col-sm-2">
                                <#NameCon id="code" name="订单编号" />
                            </div>
                            <div class="col-sm-1">
                                <select class="input-group" id="source" style="width: 120px;height: 33px" name="source">
                                    <option value="">请选择订单来源</option>
                                    <option value="1">小程序</option>
                                    <option value="2">司机创建</option>
                                </select>
                            </div>
                            <div class="col-sm-2">
                                <#NameCon id="userName" name="下单用户昵称" />
                            </div>
                            <div class="col-sm-2">
                                <#NameCon id="userPhone" name="下单用户手机" />
                            </div>
                            <div class="col-sm-1">
                                <select class="input-group" id="state" style="width: 120px;height: 33px" name="state">
                                    <option value="">请选择订单状态</option>
                                    <option value="101">待接单</option>
                                    <option value="102">已接单</option>
                                    <option value="103">前往预约点</option>
                                    <option value="104">到达预约点</option>
                                    <option value="105">开始服务</option>
                                    <option value="106">到达目的地</option>
                                    <option value="107">待支付</option>
                                    <option value="108">待评价</option>
                                    <option value="109">已完成</option>
                                    <option value="201">转单中</option>
                                    <option value="301">已取消</option>
                                    <option value="401">等待中</option>
                                </select>
                            </div>
                            <div class="col-sm-2">
                                <#NameCon id="driverName" name="司机姓名" />
                            </div>
                        </div>
                        <div class="col-sm-12">
                            <#button name="搜索" icon="fa-search" clickFun="TCancelOrder.search()"/>
                            <#button name="重置" icon="fa-trash" clickFun="TCancelOrder.resetSearch()" space="true"/>
                        </div>
                        <div class="col-sm-12">
                            <button type="button" class="btn btn-primary " onclick="TCancelOrder.export()" id="export">
                                <i class="fa "></i>&nbsp;导出
                            </button>
                        </div>
                        <div class="hidden-xs" id="TCancelOrderTableToolbar" role="group">
                            @if(shiro.hasPermission("/tCancelOrder/add")){
                                <#button name="添加" icon="fa-plus" clickFun="TCancelOrder.openAddTCancelOrder()"/>
                            @}
                            @if(shiro.hasPermission("/tCancelOrder/update")){
                                <#button name="修改" icon="fa-edit" clickFun="TCancelOrder.openTCancelOrderDetail()" space="true"/>
                            @}
                            @if(shiro.hasPermission("/tCancelOrder/delete")){
                                <#button name="删除" icon="fa-remove" clickFun="TCancelOrder.delete()" space="true"/>
                            @}
                        </div>
                        <#table id="TCancelOrderTable"/>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tOrder/tCancelOrder.js"></script>
<script type="text/javascript">
    laydate.render({
        elem: '#createTime',
        type: 'date',
        range: true
    });
</script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrder.html
@@ -9,12 +9,60 @@
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <div class="row">
                            <div class="col-sm-3">
                                <#NameCon id="condition" name="名称" />
                            <div class="col-sm-2">
                                <#TimeCon id="createTime" name="订单时间" />
                            </div>
                            <div class="col-sm-3">
                                <#button name="搜索" icon="fa-search" clickFun="TOrder.search()"/>
                            <div class="col-sm-2">
                                <#NameCon id="code" name="订单编号" />
                            </div>
                            <div class="col-sm-1">
                                <select class="input-group" id="source" style="width: 120px;height: 33px" name="source">
                                    <option value="">请选择订单来源</option>
                                    <option value="1">小程序</option>
                                    <option value="2">司机创建</option>
                                </select>
                            </div>
                            <div class="col-sm-2">
                                <#NameCon id="userName" name="下单用户昵称" />
                            </div>
                            <div class="col-sm-2">
                                <#NameCon id="userPhone" name="下单用户手机" />
                            </div>
                            <div class="col-sm-1">
                                <select class="input-group" id="state" style="width: 120px;height: 33px" name="state">
                                    <option value="">请选择订单状态</option>
                                    <option value="101">待接单</option>
                                    <option value="102">已接单</option>
                                    <option value="103">前往预约点</option>
                                    <option value="104">到达预约点</option>
                                    <option value="105">开始服务</option>
                                    <option value="106">到达目的地</option>
                                    <option value="107">待支付</option>
                                    <option value="108">待评价</option>
                                    <option value="109">已完成</option>
                                    <option value="201">转单中</option>
                                    <option value="301">已取消</option>
                                    <option value="401">等待中</option>
                                </select>
                            </div>
                            <div class="col-sm-2">
                                <#NameCon id="driverName" name="司机姓名" />
                            </div>
                        </div>
                        <div class="col-sm-12">
                            <#button name="搜索" icon="fa-search" clickFun="TOrder.search()"/>
                            <#button name="重置" icon="fa-trash" clickFun="TOrder.resetSearch()" space="true"/>
                        </div>
                        <div class="col-sm-12">
                            <button type="button" class="btn btn-primary " onclick="TOrder.cancelOrder()" id="cancelOrder">
                                <i class="fa "></i>&nbsp;取消订单
                            </button>
                            <button type="button" class="btn btn-primary " onclick="TOrder.tOrderException()" id="orderException">
                                <i class="fa "></i>&nbsp;异常
                            </button>
                            <button type="button" class="btn btn-primary " onclick="TOrder.export()" id="export">
                                <i class="fa "></i>&nbsp;导出
                            </button>
                        </div>
                        <div class="hidden-xs" id="TOrderTableToolbar" role="group">
                            @if(shiro.hasPermission("/tOrder/add")){
@@ -35,4 +83,12 @@
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tOrder/tOrder.js"></script>
<script src="${ctxPath}/static/modular/system/tOrder/tOrderException.js"></script>
<script type="text/javascript">
    laydate.render({
        elem: '#createTime',
        type: 'date',
        range: true
    });
</script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrderDetail.html
New file
@@ -0,0 +1,196 @@
@layout("/common/_container.html"){
<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-title">
                <h5>详情</h5>
            </div>
            <div class="ibox-content">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <hr/>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div style="background-color: gray;height: 35px;line-height: 35px">
                                <label style="color: #0C0C0C">订单详情</label>
                            </div>
                        </div>
                        <hr/>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >下单时间:</label>
                                <label>${createTime}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >订单编号:</label>
                                <label>${code}</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >订单来源:</label>
                                @if(source==1){
                                <label>小程序</label>
                                @}
                                @if(source==2){
                                <label>APP</label>
                                @}
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >乘车时间:</label>
                                <label>${startTime}</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group" style="color:green;" >
                            <div class="initialLevel col-sm-3 control-label form-group" >
                                <label class="control-label">下单用户昵称:</label>
                                <label>${userName}</label>
                            </div>
                            <div class="initialLevel col-sm-2 control-label form-group" >
                                <label class="control-label">下单用户手机号:</label>
                                <label>${userPhone}</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group" >
                                <label class="control-label">起点:</label>
                                <label>${startAddress}</label>
                            </div>
                            <div class="initialLevel col-sm-2 control-label form-group" >
                                <label class="control-label">终点:</label>
                                <label>${endAddress}</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group" style="color:red;" >
                            <div class="initialLevel col-sm-3 control-label form-group" >
                                <label class="control-label">接单司机:</label>
                                <label>${driverName}</label>
                            </div>
                            <div class="initialLevel col-sm-2 control-label form-group" >
                                <label class="control-label">所属机构:</label>
                                <label>${branchOfficeName}</label>
                            </div>
                        </div>
                        <hr/>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div style="background-color: gray;height: 35px;line-height: 35px">
                                <label style="color: #0C0C0C">上下地点</label>
                            </div>
                        </div>
                        <hr/>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >上车地点:</label>
                                <label>${startAddress}</label>
                            </div>
                            <div class="initialLevel col-sm-2 control-label form-group" >
                                <label class="control-label">上车时间:</label>
                                <label>${boardingTime}</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >下车地点:</label>
                                <label>${endAddress}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >下车时间:</label>
                                <label>${getoffTime}</label>
                            </div>
                        </div>
                        <hr/>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div style="background-color: gray;height: 35px;line-height: 35px">
                                <label style="color: #0C0C0C">费用明细</label>
                            </div>
                        </div>
                        <hr/>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-2 control-label form-group"  >
                                <label class="control-label" >起步价:</label>
                                <label>${startPrice}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >等待费:</label>
                                <label>${waitTimePrice}</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-2 control-label form-group"  >
                                <label class="control-label" >里程费:</label>
                                <label>${overDrivePrice}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >恶劣天气:</label>
                                <label>${badWeatherPrice}</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-2 control-label form-group"  >
                                <label class="control-label" >实际费用:</label>
                                <label>${orderMoney}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >实际支付费用:</label>
                                <label>${payMoney}</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-2 control-label form-group"  >
                                <label class="control-label" >优惠券抵扣费用:</label>
                                <label>${discountedPrice}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >支付方式:</label>
                                @if(payType==1){
                                <label>微信支付</label>
                                @}
                                @if(payType==2){
                                <label>余额支付</label>
                                @}
                                @if(payType==3){
                                <label>线下收款</label>
                                @}
                            </div>
                        </div>
                        @if(havDiscount == 1){
                            <div class="initialLevel col-sm-12 control-label form-group"  >
                                <div class="initialLevel col-sm-2 control-label form-group"  >
                                    <label class="control-label" >9折优惠:</label>
                                    <label>${multiply}</label>
                                    <label>元</label>
                                </div>
                            </div>
                        @}
                        <div class="hidden-xs" id="TDriverTableToolbar" role="group"  style="text-align: center">
                            <#button name="取消" icon="fa-plus" clickFun="TOrderInfoDlg.close()" />
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tOrder/tOrder.js"></script>
<script src="${ctxPath}/static/modular/system/tOrder/tOrder_info.js"></script>
<script type="text/javascript">
    laydate.render({
        elem: '#createTime',
        type: 'date',
        range: true
    });
</script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrderException.html
New file
@@ -0,0 +1,80 @@
@layout("/common/_container.html"){
<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-title">
                <h5>异常</h5>
            </div>
            <div class="ibox-content">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <div class="row">
                            <div class="col-sm-2">
                                <#TimeCon id="createTime" name="订单时间" />
                            </div>
                            <div class="col-sm-2">
                                <#NameCon id="code" name="订单编号" />
                            </div>
                            <div class="col-sm-1">
                                <select class="input-group" id="source" style="width: 120px;height: 33px" name="source">
                                    <option value="">请选择订单来源</option>
                                    <option value="1">小程序</option>
                                    <option value="2">司机创建</option>
                                </select>
                            </div>
                            <div class="col-sm-2">
                                <#NameCon id="userName" name="下单用户昵称" />
                            </div>
                            <div class="col-sm-2">
                                <#NameCon id="userPhone" name="下单用户手机" />
                            </div>
                            <div class="col-sm-1">
                                <select class="input-group" id="state" style="width: 120px;height: 33px" name="state">
                                    <option value="">请选择订单状态</option>
                                    <option value="101">待接单</option>
                                    <option value="102">已接单</option>
                                    <option value="103">前往预约点</option>
                                    <option value="104">到达预约点</option>
                                    <option value="105">开始服务</option>
                                    <option value="106">到达目的地</option>
                                    <option value="107">待支付</option>
                                    <option value="108">待评价</option>
                                    <option value="109">已完成</option>
                                    <option value="201">转单中</option>
                                    <option value="301">已取消</option>
                                    <option value="401">等待中</option>
                                </select>
                            </div>
                            <div class="col-sm-2">
                                <#NameCon id="driverName" name="司机姓名" />
                            </div>
                        </div>
                        <div class="col-sm-12">
                            <#button name="搜索" icon="fa-search" clickFun="TOrderException.search()"/>
                            <#button name="重置" icon="fa-trash" clickFun="TOrderException.resetSearch()" space="true"/>
                        </div>
                        <div class="col-sm-12">
                            <button type="button" class="btn btn-primary " onclick="TOrderException.cancelOrder()" id="cancelOrder">
                                <i class="fa "></i>&nbsp;取消订单
                            </button>
                            <button type="button" class="btn btn-primary " onclick="TOrderException.export()" id="export">
                                <i class="fa "></i>&nbsp;导出
                            </button>
                        </div>
                        <#table id="TOrderExceptionTable"/>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tOrder/tOrderException.js"></script>
<script src="${ctxPath}/static/modular/system/tOrder/tOrder.js"></script>
<script type="text/javascript">
    laydate.render({
        elem: '#createTime',
        type: 'date',
        range: true
    });
</script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrderExceptionDetail.html
New file
@@ -0,0 +1,190 @@
@layout("/common/_container.html"){
<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-title">
                <h5>详情</h5>
            </div>
            <div class="ibox-content">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <input hidden id="userId" value="${userId}">
                        <input hidden id="orderId" value="${orderId}">
                        <hr/>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div style="background-color: gray;height: 35px;line-height: 35px">
                                <label style="color: #0C0C0C">订单详情</label>
                            </div>
                        </div>
                        <hr/>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >下单时间:</label>
                                <label>${createTime}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >订单编号:</label>
                                <label>${code}</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >订单来源:</label>
                                @if(source==1){
                                <label>小程序</label>
                                @}
                                @if(source==2){
                                <label>APP</label>
                                @}
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >乘车时间:</label>
                                <label>${startTime}</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group" style="color: green" >
                            <div class="initialLevel col-sm-3 control-label form-group" >
                                <label class="control-label">下单用户昵称:</label>
                                <label>${userName}</label>
                            </div>
                            <div class="initialLevel col-sm-2 control-label form-group" >
                                <label class="control-label">下单用户手机号:</label>
                                <label>${userPhone}</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group" >
                                <label class="control-label">起点:</label>
                                <label>${startAddress}</label>
                            </div>
                            <div class="initialLevel col-sm-2 control-label form-group" >
                                <label class="control-label">终点:</label>
                                <label>${endAddress}</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group" style="color: red" >
                            <div class="initialLevel col-sm-3 control-label form-group" >
                                <label class="control-label">接单司机:</label>
                                <label>${driverName}</label>
                            </div>
                            <div class="initialLevel col-sm-2 control-label form-group" >
                                <label class="control-label">所属机构:</label>
                                <label>${branchOfficeName}</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >上车地点:</label>
                                <label>${startAddress}</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >下车地点:</label>
                                <label>${endAddress}</label>
                            </div>
                        </div>
                        <hr/>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div style="background-color: gray;height: 35px;line-height: 35px">
                                <label style="color: #0C0C0C">费用明细</label>
                            </div>
                        </div>
                        <hr/>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-2 control-label form-group"  >
                                <label class="control-label" >起步价:</label>
                                <label>${startPrice}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >等待费:</label>
                                <label>${waitTimePrice}</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-2 control-label form-group"  >
                                <label class="control-label" >里程费:</label>
                                <label>${overDrivePrice}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >恶劣天气:</label>
                                <label>${badWeatherPrice}</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-2 control-label form-group"  >
                                <label class="control-label" >实际费用:</label>
                                <label>${orderMoney}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >实际支付费用:</label>
                                <label>${payMoney}</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-2 control-label form-group"  >
                                <label class="control-label" >优惠券抵扣费用:</label>
                                <label>${discountedPrice}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >支付方式:</label>
                                @if(payType==1){
                                <label>微信支付</label>
                                @}
                                @if(payType==2){
                                <label>余额支付</label>
                                @}
                                @if(payType==3){
                                <label>线下收款</label>
                                @}
                            </div>
                        </div>
                        <hr/>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div style="background-color: gray;height: 35px;line-height: 35px">
                                <label style="color: #0C0C0C">取消记录</label>
                            </div>
                        </div>
                        <hr/>
                        <#table id="TOrderExceptionDetailCancelOrderTable"/>
                        <div class="hidden-xs" id="TDriverTableToolbar" role="group"  style="text-align: center">
                            <#button name="取消" icon="fa-plus" clickFun="TOrderInfoDlg.closeException()" />
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tOrder/tOrderException.js"></script>
<script src="${ctxPath}/static/modular/system/tOrder/tOrderExceptionDetailCancelOrder.js"></script>
<script src="${ctxPath}/static/modular/system/tOrder/tOrder_info.js"></script>
<script type="text/javascript">
    $(function (){
        var queryData = {};
        queryData['userId'] = $("#userId").val();
        queryData['orderId'] = $("#orderId").val();
        TOrderExceptionDetailCancelOrder.table.refresh({query: queryData});
    })
    laydate.render({
        elem: '#createTime',
        type: 'date',
        range: true
    });
</script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrderStartAndStopException.html
New file
@@ -0,0 +1,30 @@
@layout("/common/_container.html"){
<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-content">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <input hidden id="id" value="${id}">
                        <input hidden id="status" value="${status}">
                        <div class="col-lg-3">
                            @if(status==1){
                                冻结理由:<textarea id="stopRemark" placeholder="请输入冻结理由" style="width: 681px; height: 249px;"></textarea>
                            @}
                            @if(status==2){
                                启用理由:<textarea id="startRemark" placeholder="请输入启用理由" style="width: 681px; height: 249px;"></textarea>
                            @}
                        </div>
                        <div class="hidden-xs" id="TAppUserTableToolbar" role="group"  style="margin-left:300px">
                            <#button name="取消" icon="fa-plus" clickFun="TOrderInfoDlg.closeException()" />
                            <#button name="确定" icon="fa-plus" clickFun="TOrderException.updateStatus()"/>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tOrder/tOrderException.js"></script>
<script src="${ctxPath}/static/modular/system/tOrder/tOrder_info.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tRechargeRecord/tRechargeRecordAgent.html
New file
@@ -0,0 +1,57 @@
@layout("/common/_container.html"){
<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-title">
                <h5>代理商充值记录</h5>
            </div>
            <div class="ibox-content">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <div class="row">
                            <div class="col-sm-2">
                                <#NameCon id="driverName" name="司机姓名" />
                            </div>
                            <div class="col-sm-2">
                                <#NameCon id="driverPhone" name="司机手机号" />
                            </div>
                            <div class="col-sm-2">
                                <#TimeCon id="createTime" name="充值时间" />
                            </div>
                            <div class="col-sm-2">
                                <#button name="搜索" icon="fa-search" clickFun="TRechargeRecordAgent.search()"/>
                                <#button name="重置" icon="fa-trash" clickFun="TRechargeRecordAgent.resetSearch()" space="true"/>
                            </div>
                            <div class="col-sm-12">
                                <button type="button" class="btn btn-primary " onclick="TRechargeRecordAgent.export()" id="export">
                                    <i class="fa "></i>&nbsp;导出
                                </button>
                            </div>
                        </div>
                        <!--<div class="hidden-xs" id="TRechargeRecordTableToolbar" role="group">
                            @if(shiro.hasPermission("/tRechargeRecord/add")){
                                <#button name="添加" icon="fa-plus" clickFun="TRechargeRecord.openAddTRechargeRecord()"/>
                            @}
                            @if(shiro.hasPermission("/tRechargeRecord/update")){
                                <#button name="修改" icon="fa-edit" clickFun="TRechargeRecord.openTRechargeRecordDetail()" space="true"/>
                            @}
                            @if(shiro.hasPermission("/tRechargeRecord/delete")){
                                <#button name="删除" icon="fa-remove" clickFun="TRechargeRecord.delete()" space="true"/>
                            @}
                        </div>-->
                        <#table id="TRechargeRecordAgentTable"/>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tRechargeRecord/tRechargeRecordAgent.js"></script>
<script type="text/javascript">
    laydate.render({
        elem: '#createTime',
        type: 'date',
        range: true
    });
</script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tRechargeRecord/tRechargeRecordUser.html
New file
@@ -0,0 +1,60 @@
@layout("/common/_container.html"){
<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-title">
                <h5>用户充值记录</h5>
            </div>
            <div class="ibox-content">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <div class="row">
                            <div class="col-sm-2">
                                <#NameCon id="userName" name="用户姓名" />
                            </div>
                            <div class="col-sm-2">
                                <#NameCon id="userPhone" name="用户手机号" />
                            </div>
                            <div class="col-sm-2">
                                <#NameCon id="code" name="流水ID" />
                            </div>
                            <div class="col-sm-2">
                                <#TimeCon id="createTime" name="充值时间" />
                            </div>
                            <div class="col-sm-2">
                                <#button name="搜索" icon="fa-search" clickFun="TRechargeRecordUser.search()"/>
                                <#button name="重置" icon="fa-trash" clickFun="TRechargeRecordUser.resetSearch()" space="true"/>
                            </div>
                            <div class="col-sm-12">
                                <button type="button" class="btn btn-primary " onclick="TRechargeRecordUser.export()" id="export">
                                    <i class="fa "></i>&nbsp;导出
                                </button>
                            </div>
                        </div>
                        <div class="hidden-xs" id="TRechargeRecordTableToolbar" role="group">
                            @if(shiro.hasPermission("/tRechargeRecord/add")){
                                <#button name="添加" icon="fa-plus" clickFun="TRechargeRecord.openAddTRechargeRecord()"/>
                            @}
                            @if(shiro.hasPermission("/tRechargeRecord/update")){
                                <#button name="修改" icon="fa-edit" clickFun="TRechargeRecord.openTRechargeRecordDetail()" space="true"/>
                            @}
                            @if(shiro.hasPermission("/tRechargeRecord/delete")){
                                <#button name="删除" icon="fa-remove" clickFun="TRechargeRecord.delete()" space="true"/>
                            @}
                        </div>
                        <#table id="TRechargeRecordUserTable"/>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tRechargeRecord/tRechargeRecordUser.js"></script>
<script type="text/javascript">
    laydate.render({
        elem: '#createTime',
        type: 'date',
        range: true
    });
</script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfig.html
New file
@@ -0,0 +1,38 @@
@layout("/common/_container.html"){
<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-title">
                <h5>管理</h5>
            </div>
            <div class="ibox-content">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <div class="row">
                            <div class="col-sm-3">
                                <#NameCon id="condition" name="名称" />
                            </div>
                            <div class="col-sm-3">
                                <#button name="搜索" icon="fa-search" clickFun="TSystemConfig.search()"/>
                            </div>
                        </div>
                        <div class="hidden-xs" id="TSystemConfigTableToolbar" role="group">
                            @if(shiro.hasPermission("/tSystemConfig/add")){
                                <#button name="添加" icon="fa-plus" clickFun="TSystemConfig.openAddTSystemConfig()"/>
                            @}
                            @if(shiro.hasPermission("/tSystemConfig/update")){
                                <#button name="修改" icon="fa-edit" clickFun="TSystemConfig.openTSystemConfigDetail()" space="true"/>
                            @}
                            @if(shiro.hasPermission("/tSystemConfig/delete")){
                                <#button name="删除" icon="fa-remove" clickFun="TSystemConfig.delete()" space="true"/>
                            @}
                        </div>
                        <#table id="TSystemConfigTable"/>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tSystemConfig/tSystemConfig.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigBalanceRules.html
New file
@@ -0,0 +1,55 @@
@layout("/common/_container.html"){
<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-title">
                <h5>余额规则</h5>
            </div>
            <div class="ibox-content">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >司机余额规则:</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group" style="text-align: left" >
                            <div class="initialLevel col-sm-2 control-label form-group"  >
                                <span class="control-label" >余额低于</span>
                                <input class="control-label" id="num1" name="num1" value="${num1}" type="number" style="height: 30px;width: 80px">
                                <span class="control-label" >元,停止接单</span>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >用户充值规则:</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group" style="text-align: left" >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <span class="control-label" >余额充值满</span>
                                <input class="control-label" id="num2" name="num2" value="${num2}" type="number" style="height: 30px;width: 80px">
                                <span class="control-label" >元,获得9折优惠权限</span>
                            </div>
                        </div>
                        <div class="row btn-group-m-t">
                            <div class="col-sm-10" style="text-align: center">
                                <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TSystemConfig.balanceRulesSubmit()"/>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tSystemConfig/tSystemConfig.js"></script>
<script src="${ctxPath}/static/modular/system/tSystemConfig/tSystemConfig_info.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigCommissionShareRules.html
New file
@@ -0,0 +1,68 @@
@layout("/common/_container.html"){
<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-title">
                <h5>佣金</h5>
            </div>
            <div class="ibox-content">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-12 control-label form-group"  >
                                <label class="control-label" >佣金分成规则:</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group" style="text-align: left" >
                            <div class="initialLevel col-sm-12 control-label form-group"  >
                                <span class="control-label" >司机邀请1名用户,下单后完成订单后获得</span>
                                <input class="control-label" id="num1" name="num1" value="${num1}" type="number" style="height: 30px;width: 80px">
                                <span class="control-label" >元/单</span>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group" style="text-align: left" >
                            <div class="initialLevel col-sm-12 control-label form-group"  >
                                <span class="control-label" >司机A邀请1名司机B,完成有效单后获得</span>
                                <input class="control-label" id="num2" name="num2" value="${num2}" type="number" style="height: 30px;width: 80px">
                                <span class="control-label" >元/单</span>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group" style="text-align: left" >
                            <div class="initialLevel col-sm-12 control-label form-group"  >
                                <span class="control-label" >司机B邀请1名司机C,完成有效单后B获得</span>
                                <input class="control-label" id="num3" name="num3" value="${num3}" type="number" style="height: 30px;width: 80px">
                                <span class="control-label" >元/单&nbsp;司机A获得</span>
                                <input class="control-label" id="num4" name="num4" value="${num4}" type="number" style="height: 30px;width: 80px">
                                <span class="control-label" >元/单</span>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group" style="text-align: left" >
                            <div class="initialLevel col-sm-12 control-label form-group"  >
                                <span class="control-label" >司机C邀请1名司机D,完成有效单后C获得</span>
                                <input class="control-label" id="num5" name="num5" value="${num5}" type="number" style="height: 30px;width: 80px">
                                <span class="control-label" >元/单&nbsp;司机B获得</span>
                                <input class="control-label" id="num6" name="num6" value="${num6}" type="number" style="height: 30px;width: 80px">
                                <span class="control-label" >元/单&nbsp;司机A获得</span>
                                <input class="control-label" id="num7" name="num7" value="${num7}" type="number" style="height: 30px;width: 80px">
                                <span class="control-label" >元/单</span>
                            </div>
                        </div>
                        <div class="row btn-group-m-t">
                            <div class="col-sm-10" style="text-align: center">
                                <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TSystemConfig.commissionShareRules()"/>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tSystemConfig/tSystemConfig.js"></script>
<script src="${ctxPath}/static/modular/system/tSystemConfig/tSystemConfig_info.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigDispatchRules.html
New file
@@ -0,0 +1,82 @@
@layout("/common/_container.html"){
<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-title">
                <h5>派单规则</h5>
            </div>
            <div class="ibox-content">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >派单设置:</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group" style="text-align: left" >
                            <div class="initialLevel col-sm-2 control-label form-group"  >
                                <span class="control-label" >派单距离第一轮</span>
                                <input class="control-label" id="num1" name="num1" value="${num1}" type="number" style="height: 30px;width: 80px">
                                <span class="control-label" >米</span>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group" style="text-align: left" >
                            <div class="initialLevel col-sm-2 control-label form-group"  >
                                <span class="control-label" >派单距离第二轮</span>
                                <input class="control-label" id="num2" name="num2" value="${num2}" type="number" style="height: 30px;width: 80px">
                                <span class="control-label" >米</span>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group" style="text-align: left" >
                            <div class="initialLevel col-sm-2 control-label form-group"  >
                                <span class="control-label" >派单距离第三轮</span>
                                <input class="control-label" id="num3" name="num3" value="${num3}" type="number" style="height: 30px;width: 80px">
                                <span class="control-label" >米</span>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >接单设置:</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group" style="text-align: left" >
                            <div class="initialLevel col-sm-2 control-label form-group"  >
                                <span class="control-label" >接单时间</span>
                                <input class="control-label" id="num4" name="num4" value="${num4}" type="number" style="height: 30px;width: 80px">
                                <span class="control-label" >秒</span>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >改派设置:</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group" style="text-align: left" >
                            <div class="initialLevel col-sm-2 control-label form-group"  >
                                <span class="control-label" >改派后暂停接单</span>
                                <input class="control-label" id="num5" name="num5" value="${num5}" type="number" style="height: 30px;width: 80px">
                                <span class="control-label" >分钟</span>
                            </div>
                        </div>
                        <div class="row btn-group-m-t">
                            <div class="col-sm-10" style="text-align: center">
                                <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TSystemConfig.dispatchRulesSubmit()"/>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tSystemConfig/tSystemConfig.js"></script>
<script src="${ctxPath}/static/modular/system/tSystemConfig/tSystemConfig_info.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigExtractionRules.html
New file
@@ -0,0 +1,57 @@
@layout("/common/_container.html"){
<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-title">
                <h5>抽成规则</h5>
            </div>
            <div class="ibox-content">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >平台抽成:</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group" style="text-align: left" >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <span class="control-label" >司机订单保险费,每天固定抽取</span>
                                <input class="control-label" id="num1" name="num1" value="${num1}" type="number" style="height: 30px;width: 80px">
                                <span class="control-label" >元/天</span>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >代理商抽成:</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group" style="text-align: left" >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <span class="control-label" >抽成,每笔订单满</span>
                                <input class="control-label" id="num2" name="num2" value="${num2}" type="number" style="height: 30px;width: 80px">
                                <span class="control-label" >元/单,抽取</span>
                                <input class="control-label" id="num3" name="num3" value="${num3}" type="number" style="height: 30px;width: 80px">
                                <span class="control-label" >元</span>
                            </div>
                        </div>
                        <div class="row btn-group-m-t">
                            <div class="col-sm-10" style="text-align: center">
                                <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TSystemConfig.extractionRulesSubmit()"/>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tSystemConfig/tSystemConfig.js"></script>
<script src="${ctxPath}/static/modular/system/tSystemConfig/tSystemConfig_info.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigIntegralRules.html
New file
@@ -0,0 +1,101 @@
@layout("/common/_container.html"){
<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-title">
                <h5>积分规则</h5>
            </div>
            <div class="ibox-content">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >积分获取:</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group" style="text-align: left" >
                            <div class="initialLevel col-sm-4 control-label form-group"  >
                                <span class="control-label" >有效时长</span>
                                <input class="control-label" id="num1" name="num1" value="${num1}" type="text" style="height: 30px;width: 80px" placeholder="12:00">
                                <span class="control-label" >——</span>
                                <input class="control-label" id="num2" name="num2" value="${num2}" type="text" style="height: 30px;width: 80px" placeholder="23:00">
                                <span class="control-label" >每小时增加</span>
                                <input class="control-label" id="num3" name="num3" value="${num3}" type="number" style="height: 30px;width: 80px">
                                <span class="control-label" >积分</span>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group" style="text-align: left" >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <span class="control-label" >推荐用户首次下单,完成订单后</span>
                                <input class="control-label" id="num4" name="num4" value="${num4}" type="number" style="height: 30px;width: 80px">
                                <span class="control-label" >积分</span>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group" style="text-align: left" >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <span class="control-label" >司机完成订单,获得</span>
                                <input class="control-label" id="num5" name="num5" value="${num5}" type="number" style="height: 30px;width: 80px">
                                <span class="control-label" >积分</span>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group" style="text-align: left" >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <span class="control-label" >获得5星好评,获得</span>
                                <input class="control-label" id="num6" name="num6" value="${num6}" type="number" style="height: 30px;width: 80px">
                                <span class="control-label" >积分</span>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group" style="text-align: left" >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <span class="control-label" >邀请司机注册成功获得</span>
                                <input class="control-label" id="num7" name="num7" value="${num7}" type="number" style="height: 30px;width: 80px">
                                <span class="control-label" >积分</span>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group" style="text-align: left" >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <span class="control-label" >恶劣天气完成订单获得</span>
                                <input class="control-label" id="num8" name="num8" value="${num8}" type="number" style="height: 30px;width: 80px">
                                <span class="control-label" >积分</span>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >积分扣除:</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group" style="text-align: left" >
                            <div class="initialLevel col-sm-2 control-label form-group"  >
                                <span class="control-label" >差评扣除</span>
                                <input class="control-label" id="num9" name="num9" value="${num9}" type="number" style="height: 30px;width: 80px">
                                <span class="control-label" >积分</span>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group" style="text-align: left" >
                            <div class="initialLevel col-sm-2 control-label form-group"  >
                                <span class="control-label" >拒绝订单扣除</span>
                                <input class="control-label" id="num10" name="num10" value="${num10}" type="number" style="height: 30px;width: 80px">
                                <span class="control-label" >积分</span>
                            </div>
                        </div>
                        <div class="row btn-group-m-t">
                            <div class="col-sm-10" style="text-align: center">
                                <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TSystemConfig.integralRulesSubmit()"/>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tSystemConfig/tSystemConfig.js"></script>
<script src="${ctxPath}/static/modular/system/tSystemConfig/tSystemConfig_info.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigPriceRules.html
New file
@@ -0,0 +1,116 @@
@layout("/common/_container.html"){
<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-title">
                <h5>价格规则</h5>
            </div>
            <div class="ibox-content">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <hr/>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div style="background-color: gray;height: 35px;line-height: 35px">
                                <label style="color: #0C0C0C">基础费用</label>
                            </div>
                        </div>
                        <hr/>
                        <input hidden id="array" value="${array}">
                        <div class="initialLevel col-sm-12 control-label form-group" id="rules" style="text-align: left" >
                            @for(ChargeStandard in array){
                            <div name="rulesForm">
                                <div class="initialLevel col-sm-12 control-label form-group"  >
                                    <span class="control-label" >时间段</span>
                                    <input class="control-label" id="num1" name="num1" value="${ChargeStandard.num1}" type="text" placeholder="00:00" style="height: 30px;width: 80px">
                                    <span class="control-label" >——</span>
                                    <input class="control-label" id="num2" name="num2" value="${ChargeStandard.num2}" type="text" placeholder="00:00" style="height: 30px;width: 80px">
                                    <span class="control-label" >代驾里程</span>
                                    <input class="control-label" id="num3" name="num3" value="${ChargeStandard.num3}" type="number" style="height: 30px;width: 80px">
                                    <span class="control-label" >——</span>
                                    <input class="control-label" id="num4" name="num4" value="${ChargeStandard.num4}" type="number" style="height: 30px;width: 80px">
                                    <span class="control-label" >公里,起步价</span>
                                    <input class="control-label" id="num5" name="num5" value="${ChargeStandard.num5}" type="number" style="height: 30px;width: 80px">
                                    <span class="control-label" >元,超出里程每</span>
                                    <input class="control-label" id="num6" name="num6" value="${ChargeStandard.num6}" type="number" style="height: 30px;width: 80px">
                                    <span class="control-label" >公里,收费</span>
                                    <input class="control-label" id="num7" name="num7" value="${ChargeStandard.num7}" type="number" style="height: 30px;width: 80px">
                                    <span class="control-label" >元</span>
                                    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                    @if(ChargeStandard.key == 0){
                                        <span class="fa fa-plus" onclick="TSystemConfig.addBox()"></span>
                                    @}
                                    @if(ChargeStandard.key == 1){
                                        <span class="fa fa-remove" onclick="TSystemConfig.delBox(this)"></span>
                                    @}
                                </div>
                                <div class="initialLevel col-sm-12 control-label form-group"  >
                                    <span class="control-label" >代驾里程</span>
                                    <input class="control-label" id="num8" name="num8" value="${ChargeStandard.num8}" type="number" style="height: 30px;width: 80px">
                                    <span class="control-label" >——</span>
                                    <input class="control-label" id="num9" name="num9" value="${ChargeStandard.num9}" type="number" style="height: 30px;width: 80px">
                                    <span class="control-label" >公里,起步价</span>
                                    <input class="control-label" id="num10" name="num10" value="${ChargeStandard.num10}" type="number" style="height: 30px;width: 80px">
                                    <span class="control-label" >元,超出里程每</span>
                                    <input class="control-label" id="num11" name="num11" value="${ChargeStandard.num11}" type="number" style="height: 30px;width: 80px">
                                    <span class="control-label" >公里,收费</span>
                                    <input class="control-label" id="num12" name="num12" value="${ChargeStandard.num12}" type="number" style="height: 30px;width: 80px">
                                    <span class="control-label" >元</span>
                                </div>
                            </div>
                            @}
                        </div>
                        <hr/>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div style="background-color: gray;height: 35px;line-height: 35px">
                                <label style="color: #0C0C0C">额外费用</label>
                            </div>
                        </div>
                        <hr/>
                        <div class="initialLevel col-sm-12 control-label form-group" style="text-align: left" >
                            <div class="initialLevel col-sm-12 control-label form-group"  >
                                <span class="control-label" >等待</span>
                                <input class="control-label" id="num13" name="num13" value="${ExtraCost.num1}" type="text" placeholder="00:00" style="height: 30px;width: 80px">
                                <span class="control-label" >分钟,收取</span>
                                <input class="control-label" id="num14" name="num14" value="${ExtraCost.num2}" type="text" placeholder="00:00" style="height: 30px;width: 80px">
                                <span class="control-label" >元,超出</span>
                                <input class="control-label" id="num15" name="num15" value="${ExtraCost.num3}" type="number" style="height: 30px;width: 80px">
                                <span class="control-label" >分钟,收取</span>
                                <input class="control-label" id="num16" name="num16" value="${ExtraCost.num4}" type="number" style="height: 30px;width: 80px">
                                <span class="control-label" >元/分钟</span>
                            </div>
                            <div class="initialLevel col-sm-12 control-label form-group"  >
                                <span class="control-label" >恶劣天气</span>
                                <input class="control-label" id="num17" name="num17" value="${ExtraCost.num5}" type="number" style="height: 30px;width: 80px">
                                <span class="control-label" >公里以内,加收</span>
                                <input class="control-label" id="num18" name="num18" value="${ExtraCost.num6}" type="number" style="height: 30px;width: 80px">
                                <span class="control-label" >元,超出</span>
                                <input class="control-label" id="num19" name="num19" value="${ExtraCost.num7}" type="number" style="height: 30px;width: 80px">
                                <span class="control-label" >公里,收取订单的</span>
                                <input class="control-label" id="num20" name="num20" value="${ExtraCost.num8}" type="number" style="height: 30px;width: 80px">
                                <span class="control-label" >倍计费,最高收取</span>
                                <input class="control-label" id="num21" name="num21" value="${ExtraCost.num9}" type="number" style="height: 30px;width: 80px">
                                <span class="control-label" >元</span>
                            </div>
                        </div>
                        <div class="row btn-group-m-t">
                            <div class="col-sm-10" style="text-align: center">
                                <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TSystemConfig.priceRulesSubmit()"/>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tSystemConfig/tSystemConfig.js"></script>
<script src="${ctxPath}/static/modular/system/tSystemConfig/tSystemConfig_info.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigServiceMgmt.html
New file
@@ -0,0 +1,34 @@
@layout("/common/_container.html"){
<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-title">
                <h5>客服管理</h5>
            </div>
            <div class="ibox-content">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <div class="initialLevel col-sm-12 control-label form-group" style="text-align: left" >
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <span class="control-label" >客服电话</span>
                                <input class="control-label" id="num1" name="num1" value="${num1}" type="number" style="height: 30px;width: 160px">
                            </div>
                        </div>
                        <div class="row btn-group-m-t">
                            <div class="col-sm-10" style="text-align: center">
                                <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TSystemConfig.serviceMgmtSubmit()"/>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tSystemConfig/tSystemConfig.js"></script>
<script src="${ctxPath}/static/modular/system/tSystemConfig/tSystemConfig_info.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfig_add.html
New file
@@ -0,0 +1,28 @@
@layout("/common/_container.html"){
<div class="ibox float-e-margins">
    <div class="ibox-content">
        <div class="form-horizontal">
            <div class="row">
                <div class="col-sm-6 b-r">
                            <#input id="id" name="主键" underline="true"/>
                            <#input id="type" name="类型(1=派单规则,2=佣金分成规则,3=抽成规则,4=积分规则,5=价格规则,6=余额规则,7=客服管理)"/>
                </div>
                <div class="col-sm-6">
                            <#input id="content" name="内容" underline="true"/>
                </div>
            </div>
            <div class="row btn-group-m-t">
                <div class="col-sm-10">
                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TSystemConfigInfoDlg.addSubmit()"/>
                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TSystemConfigInfoDlg.close()"/>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tSystemConfig/tSystemConfig_info.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfig_edit.html
New file
@@ -0,0 +1,28 @@
@layout("/common/_container.html"){
<div class="ibox float-e-margins">
    <div class="ibox-content">
        <div class="form-horizontal">
            <div class="row">
                <div class="col-sm-6 b-r">
                            <#input id="id" name="主键" value="${item.id}" underline="true"/>
                            <#input id="type" name="类型(1=派单规则,2=佣金分成规则,3=抽成规则,4=积分规则,5=价格规则,6=余额规则,7=客服管理)" value="${item.type}" />
                </div>
                <div class="col-sm-6">
                            <#input id="content" name="内容" value="${item.content}" />
                </div>
            </div>
            <div class="row btn-group-m-t">
                <div class="col-sm-10">
                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TSystemConfigInfoDlg.editSubmit()"/>
                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TSystemConfigInfoDlg.close()"/>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tSystemConfig/tSystemConfig_info.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tYouTui/tYouTui.html
New file
@@ -0,0 +1,53 @@
@layout("/common/_container.html"){
<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-title">
                <h5>管理</h5>
            </div>
            <div class="ibox-content">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <div class="row">
                            <div class="col-sm-3">
                                <#TimeCon id="createTime" name="发布时间" />
                            </div>
                            <div class="col-sm-2">
                                <select class="input-group" id="type" style="width: 180px;height: 33px" name="type">
                                    <option value="">服务类类型</option>
                                    <option value="1">次数</option>
                                    <option value="2">小时</option>
                                </select>
                            </div>
                            <div class="col-sm-3">
                                <#button name="搜索" icon="fa-search" clickFun="TYouTui.search()"/>
                                <#button name="重置" icon="fa-trash" clickFun="TYouTui.resetSearch()"/>
                            </div>
                        </div>
                        <div class="hidden-xs" id="TYouTuiTableToolbar" role="group">
                            @if(shiro.hasPermission("/tYouTui/add")){
                                <#button name="添加" icon="fa-plus" clickFun="TYouTui.openAddTYouTui()"/>
                            @}
                            @if(shiro.hasPermission("/tYouTui/update")){
                                <#button name="修改" icon="fa-edit" clickFun="TYouTui.openTYouTuiDetail()" space="true"/>
                            @}
                            @if(shiro.hasPermission("/tYouTui/delete")){
                                <#button name="删除" icon="fa-remove" clickFun="TYouTui.delete()" space="true"/>
                            @}
                        </div>
                        <#table id="TYouTuiTable"/>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tYouTui/tYouTui.js"></script>
<script type="text/javascript">
    laydate.render({
        elem: '#createTime',
        type: 'date',
        range: true
    });
</script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tYouTui/tYouTui_add.html
New file
@@ -0,0 +1,95 @@
@layout("/common/_container.html"){
<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-title">
                <h5>添加</h5>
            </div>
            <div class="ibox-content" id="youTuiInfoForm">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <input hidden id="areaId" value="areaId">
                        <div class="col-sm-12" style="cursor: pointer;text-align: right;">
                            <div class="initialLevel col-sm-12 control-label form-group">
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <span style="color:red">*</span>
                                    <label class="control-label" >优推名称:</label>
                                    <input id="name" name="name" type="text" placeholder="最多20个字" maxlength="20" style="height: 30px" required>
                                </div>
                            </div>
                            <div class="initialLevel col-sm-12 control-label form-group">
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <span style="color:red">*</span>
                                    <label class="control-label" >优推类型:</label>
                                    <input id="number" name="number" type="number" placeholder="请输入0以上的数字" min="0" style="height: 30px" required>
                                </div>
                                <div class="initialLevel col-sm-3 control-label form-group" style="text-align: left"  >
                                    <select id="type" name="type" style="height: 30px" required>
                                        <option value="">请选择类型</option>
                                        <option value="1">次数</option>
                                        <option value="2">小时</option>
                                    </select>
                                </div>
                            </div>
                            <div class="initialLevel col-sm-12 control-label form-group">
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <span style="color:red">*</span>
                                    <label class="control-label" >兑换条件:</label>
                                    <input id="integral" name="integral" type="number" max="9999" placeholder="最多4位数" style="height: 30px" required>
                                </div>
                                <div class="initialLevel col-sm-3 control-label form-group" style="text-align: left" >
                                    <label>积分</label>
                                </div>
                            </div>
                            <div class="initialLevel col-sm-12 control-label form-group">
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <span style="color:red">*</span>
                                    <label class="control-label" >优推距离:</label>
                                    <input id="distance" name="distance" type="number" placeholder="最多2000米" max="2000" style="height: 30px" required>
                                </div>
                                <div class="initialLevel col-sm-3 control-label form-group" style="text-align: left" >
                                    <label>米</label>
                                </div>
                            </div>
                            <div class="initialLevel col-sm-12 control-label form-group">
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <span style="color:red">*</span>
                                    <label class="control-label" >有效期:</label>
                                    <input id="effectiveTime" name="effectiveTime" maxlength="4" placeholder="最多4位数" type="number" style="height: 30px" required>
                                </div>
                                <div class="initialLevel col-sm-3 control-label form-group" style="text-align: left" >
                                    <label>天</label>
                                </div>
                            </div>
                            <div class="initialLevel col-sm-12 control-label form-group">
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <span style="color:red">*</span>
                                    <label class="control-label" >服务内容:</label>
                                    <textarea id="serviceContent" name="serviceContent" placeholder="请输入" style="height: 80px" required></textarea>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="row btn-group-m-t">
                    <div class="col-sm-10" style="text-align: center">
                        <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TYouTuiInfoDlg.addSubmit()"/>
                        <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TYouTuiInfoDlg.close()"/>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tYouTui/tYouTui_info.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tYouTui/tYouTui_edit.html
New file
@@ -0,0 +1,34 @@
@layout("/common/_container.html"){
<div class="ibox float-e-margins">
    <div class="ibox-content">
        <div class="form-horizontal">
            <div class="row">
                <div class="col-sm-6 b-r">
                            <#input id="id" name="主键" value="${item.id}" underline="true"/>
                            <#input id="name" name="名称" value="${item.name}" underline="true"/>
                            <#input id="type" name="优推类型(1=次数,2=小时)" value="${item.type}" underline="true"/>
                            <#input id="number" name="优推值" value="${item.number}" underline="true"/>
                            <#input id="integral" name="所需积分" value="${item.integral}" />
                </div>
                <div class="col-sm-6">
                            <#input id="effectiveTime" name="有效天数" value="${item.effectiveTime}" underline="true"/>
                            <#input id="content" name="服务内容" value="${item.content}" underline="true"/>
                            <#input id="status" name="状态(1=正常,2=冻结,3=删除)" value="${item.status}" underline="true"/>
                            <#input id="createTime" name="添加时间" value="${item.createTime}" />
                </div>
            </div>
            <div class="row btn-group-m-t">
                <div class="col-sm-10">
                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TYouTuiInfoDlg.editSubmit()"/>
                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TYouTuiInfoDlg.close()"/>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tYouTui/tYouTui_info.js"></script>
@}
management/guns-admin/src/main/webapp/static/modular/system/tAgent/tAgent.js
@@ -130,13 +130,17 @@
 * 打开区域选择页面
 */
TAgent.area = function () {
    var area = $('#area').val();
    var areaId = $('#areaId').val();
    var index = layer.open({
        type: 2,
        title: '区域选择',
        area: ['800px', '270px'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tAgent/areaDetail'
        content: Feng.ctxPath + '/tAgent/areaDetail?area='+area+"&areaId="+areaId
    });
    this.layerIndex = index;
}
@@ -145,7 +149,32 @@
 * 查询市区
 */
TAgent.areaProvince = function () {
    var province = document.getElementById('province');
    //监听第一个下拉菜单的变动操作
    $("#province").change(function(){
        //当第一级下拉列表没选择值时,将二级下拉列表和三级同时设置为空
        if(this.value==""){
            $("#city").empty();//二级联动设为空设为空
            $("#city").append('<option value="">请选择</option>');
        }
        if(this.value!=""){//第一级下拉菜单选择了值
            $("#city").empty();//先行置空,防止上次选择留下的元素影响效果
            $("#city").append('<option value="">请选择</option>')//设置初始选项
            var province = document.getElementById('province');
            var index= province.selectedIndex ;
            var id = province.options[index].id;
            var ajax = new $ax(Feng.ctxPath + "/tAgent/areaCity?parentId="+id, function (data) {
                for(var i=0,n=data.length;i<n;i++){//遍历
                    $("#city").append('<option value="'+data[i].id+'">'+data[i].name+'</option>');//创造元素
                }
            }, function (data) {
                Feng.error("查询失败!" + data.responseJSON.message + "!");
            });
            ajax.start();
        }
    });
    /*var province = document.getElementById('province');
    var index= province.selectedIndex ;
    var id = province.options[index].id;
    var ajax = new $ax(Feng.ctxPath + "/tAgent/areaCity?parentId="+id, function (data) {
@@ -159,7 +188,7 @@
    }, function (data) {
        Feng.error("查询失败!" + data.responseJSON.message + "!");
    });
    ajax.start();
    ajax.start();*/
}
/**
 * 选择省市
@@ -169,10 +198,22 @@
    var provinceIndex= province.selectedIndex ;
    var provinceName = province.options[provinceIndex].value;
    var provinceId = province.options[provinceIndex].id;
    if(provinceName == null || provinceName == ''){
        Feng.error("请选择省份!")
        return;
    }
    var city = document.getElementById('city');
    var cityIndex= city.selectedIndex ;
    var cityId = city.options[cityIndex].value;
    var cityName = city.options[cityIndex].innerText;
    if(cityName == null || cityName == '' || cityName =='请选择'){
        Feng.error("请选择市区!")
        return;
    }
    parent.$("#area").val(provinceName+'/'+cityName)
    parent.$("#areaId").val(provinceId+'/'+cityId)
    TAgentInfoDlg.close();
management/guns-admin/src/main/webapp/static/modular/system/tAgent/tAgent_info.js
@@ -2,7 +2,39 @@
 * 初始化详情对话框
 */
var TAgentInfoDlg = {
    tAgentInfoData : {}
    tAgentInfoData : {},
    validateFields: {
        principal: {
            validators: {
                notEmpty: {
                    message: '负责人姓名不能为空'
                }
            }
        },
        principalPhone: {
            validators: {
                notEmpty: {
                    message: '联系电话不能为空'
                }
            }
        },
        area: {
            validators: {
                notEmpty: {
                    message: '请选择代理区域'
                }
            }
        },
    }
};
/**
 * 验证数据是否为空
 */
TAgentInfoDlg.validate = function () {
    $('#tAgentInfoForm').data("bootstrapValidator").resetForm();
    $('#tAgentInfoForm').bootstrapValidator('validate');
    return $("#tAgentInfoForm").data('bootstrapValidator').isValid();
};
/**
@@ -67,6 +99,10 @@
    this.clearData();
    this.collectData();
    if(!this.validate()){
        return ;
    }
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tAgent/add", function(data){
        if(data.code == 500){
@@ -91,6 +127,10 @@
    this.clearData();
    this.collectData();
    if(!this.validate()){
        return ;
    }
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tAgent/update", function(data){
        Feng.success("修改成功!");
@@ -104,5 +144,5 @@
}
$(function() {
    Feng.initValidator("tAgentInfoForm", TAgentInfoDlg.validateFields);
});
management/guns-admin/src/main/webapp/static/modular/system/tAppUser/tAppUserException.js
@@ -249,6 +249,7 @@
        });
        ajax.setData({
            userIds:$("#userIds").val(),
            couponId:TCoupon.seItem.id,
            couponName:TCoupon.seItem.couponName
        })
        ajax.start();
management/guns-admin/src/main/webapp/static/modular/system/tAppUser/tCoupon.js
@@ -14,17 +14,31 @@
TCoupon.initColumn = function () {
    return [
        {field: 'selectItem', radio: true},
            {title: '主键', field: 'id', visible: true, align: 'center', valign: 'middle'},
            {title: '创建时间', field: 'createtime', visible: true, align: 'center', valign: 'middle'},
            {title: '主键', field: 'id', visible: false, align: 'center', valign: 'middle'},
            {title: '添加时间', field: 'createTime', visible: true, align: 'center', valign: 'middle'},
            {title: '优惠券名称', field: 'couponName', visible: true, align: 'center', valign: 'middle'},
            {title: '优惠券类型', field: 'couponType', visible: true, align: 'center', valign: 'middle'},
            {title: '优惠券码', field: 'couponCode', visible: true, align: 'center', valign: 'middle'},
            {title: '优惠券状态', field: 'couponStatus', visible: true, align: 'center', valign: 'middle'},
            {title: '服务类型', field: 'couponServiceType', visible: true, align: 'center', valign: 'middle'},
        {title: '服务类型', field: 'couponServiceType', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                if (row.couponServiceType === 1){
                    return '<span>通用型</span>'
                }
            }
        },
        {title: '优惠券类型', field: 'couponType', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                if (row.couponType === 1){
                    return '<span>活动券</span>'
                }else if (row.couponType === 2){
                    return '<span>新人券</span>'
                }
            }
        },
        {title: '优惠券码', field: 'couponCode', visible: false, align: 'center', valign: 'middle'},
        {title: '优惠券状态', field: 'couponStatus', visible: false, align: 'center', valign: 'middle'},
            {title: '条件金额', field: 'couponConditionalAmount', visible: true, align: 'center', valign: 'middle'},
            {title: '优惠金额', field: 'couponPreferentialAmount', visible: true, align: 'center', valign: 'middle'},
            {title: '有效期', field: 'couponValidity', visible: true, align: 'center', valign: 'middle'},
            {title: '赠送数量', field: 'couponSendQuantity', visible: true, align: 'center', valign: 'middle'}
            {title: '有效期', field: 'couponValidity', visible: false, align: 'center', valign: 'middle'},
            {title: '赠送数量', field: 'couponSendQuantity', visible: false, align: 'center', valign: 'middle'}
    ];
};
@@ -104,6 +118,7 @@
        });
        ajax.setData({
            userIds:$("#userIds").val(),
            couponId:this.seItem.id,
            couponName:this.seItem.couponName
        })
        ajax.start();
@@ -133,13 +148,13 @@
 */
TCoupon.search = function () {
    var queryData = {};
    queryData['condition'] = $("#condition").val();
    queryData['couponName'] = $("#couponName").val();
    TCoupon.table.refresh({query: queryData});
};
$(function () {
    var defaultColunms = TCoupon.initColumn();
    var table = new BSTable(TCoupon.id, "/tCoupon/list", defaultColunms);
    var table = new BSTable(TCoupon.id, "/tCoupon/activityCouponList", defaultColunms);
    table.setPaginationType("client");
    TCoupon.table = table.init();
});
management/guns-admin/src/main/webapp/static/modular/system/tBranchOffice/tBranchOffice.js
@@ -14,19 +14,52 @@
TBranchOffice.initColumn = function () {
    return [
        {field: 'selectItem', radio: true},
            {title: '主键', field: 'id', visible: true, align: 'center', valign: 'middle'},
            {title: '代理商id', field: 'agentId', visible: true, align: 'center', valign: 'middle'},
            {title: '负责人姓名', field: 'principal', visible: true, align: 'center', valign: 'middle'},
            {title: '负责人电话', field: 'principalPhone', visible: true, align: 'center', valign: 'middle'},
            {title: '邮箱', field: 'email', visible: true, align: 'center', valign: 'middle'},
            {title: '代理区域省编号', field: 'provinceCode', visible: true, align: 'center', valign: 'middle'},
            {title: '代理区域省名称', field: 'provinceName', visible: true, align: 'center', valign: 'middle'},
            {title: '代理区域市编号', field: 'cityCode', visible: true, align: 'center', valign: 'middle'},
            {title: '代理区域市名称', field: 'cityName', visible: true, align: 'center', valign: 'middle'},
            {title: '代理区域区编号', field: 'districtCode', visible: true, align: 'center', valign: 'middle'},
            {title: '代理区域区名称', field: 'districtName', visible: true, align: 'center', valign: 'middle'},
            {title: '状态(1=正常,2=冻结,3=删除)', field: 'status', visible: true, align: 'center', valign: 'middle'},
            {title: '添加时间', field: 'createTime', visible: true, align: 'center', valign: 'middle'}
            {title: '主键', field: 'id', visible: false, align: 'center', valign: 'middle'},
        {title: '代理商id', field: 'agentId', visible: false, align: 'center', valign: 'middle'},
        {title: '添加时间', field: 'createTime', visible: true, align: 'center', valign: 'middle'},
        {title: '分公司名称', field: 'branchOfficeName', visible: true, align: 'center', valign: 'middle'},
        {title: '负责人姓名', field: 'principal', visible: true, align: 'center', valign: 'middle'},
        {title: '负责人电话', field: 'principalPhone', visible: true, align: 'center', valign: 'middle'},
        {title: '邮箱', field: 'email', visible: false, align: 'center', valign: 'middle'},
        {title: '代理区域省编号', field: 'provinceCode', visible: false, align: 'center', valign: 'middle'},
        {title: '代理区域省名称', field: 'provinceName', visible: false, align: 'center', valign: 'middle'},
        {title: '代理区域市编号', field: 'cityCode', visible: false, align: 'center', valign: 'middle'},
        {title: '代理区域市名称', field: 'cityName', visible: false, align: 'center', valign: 'middle'},
        {title: '代理区域区编号', field: 'districtCode', visible: false, align: 'center', valign: 'middle'},
        {title: '代理区域区名称', field: 'districtName', visible: false, align: 'center', valign: 'middle'},
        {title: '订单数量', field: 'orderCount', visible: true, align: 'center', valign: 'middle'},
        {title: '有效订单', field: 'effectiveOrderCount', visible: true, align: 'center', valign: 'middle'},
        {title: '已发放优惠券', field: 'totalCount', visible: true, align: 'center', valign: 'middle'},
        {title: '已使用优惠券', field: 'usedCount', visible: true, align: 'center', valign: 'middle'},
        {title: '累计优惠券金额', field: 'orderPriceCount', visible: true, align: 'center', valign: 'middle'},
        {title: '经营业务', field: 'operatingBusiness', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                if (row.operatingBusiness === 1){
                    return '<span>司机代驾</span>'
                }
            }
        },
        {title: '司机数', field: 'driverCount', visible: true, align: 'center', valign: 'middle'},
        {title: '状态', field: 'status', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                if (row.status === 1){
                    return '<span>正常</span>'
                }else if(row.status === 2){
                    return '<span>冻结</span>'
                }else if (row.status === 3){
                    return '<span>已删除</span>'
                }
            }
        },
        {title: '操作', visible: true, align: 'center', valign: 'middle',width:150,
            formatter: function (value, row) {
                return '<a href="#" onclick="TBranchOffice.searchTBranchOfficeDetail('+row.id+')" style="color:blue">详情</a>' +'&nbsp;' +
                    '<a href="#" onclick="TBranchOffice.delete('+row.id+')" style="color:red">删除</a>'
            }
        }
    ];
};
@@ -51,7 +84,7 @@
    var index = layer.open({
        type: 2,
        title: '添加',
        area: ['800px', '420px'], //宽高
        area: ['100%', '100%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tBranchOffice/tBranchOffice_add'
@@ -67,7 +100,7 @@
        var index = layer.open({
            type: 2,
            title: '详情',
            area: ['800px', '420px'], //宽高
            area: ['100%', '100%'], //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/tBranchOffice/tBranchOffice_update/' + TBranchOffice.seItem.id
@@ -75,32 +108,285 @@
        this.layerIndex = index;
    }
};
/**
 * 打开查看详情(使用中)
 */
TBranchOffice.searchTBranchOfficeDetail = function (id) {
    var index = layer.open({
        type: 2,
        title: '详情',
        area: ['100%', '100%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tBranchOffice/tBranchOfficeDetail?tBranchOfficeId=' + id
    });
    this.layerIndex = index;
};
/**
 * 删除
 */
TBranchOffice.delete = function () {
    if (this.check()) {
        var ajax = new $ax(Feng.ctxPath + "/tBranchOffice/delete", function (data) {
            Feng.success("删除成功!");
            TBranchOffice.table.refresh();
TBranchOffice.delete = function (id) {
    var ajax = new $ax(Feng.ctxPath + "/tBranchOffice/delete", function (data) {
        Feng.success("删除成功!");
        TBranchOffice.table.refresh();
    }, function (data) {
        Feng.error("删除失败!" + data.responseJSON.message + "!");
    });
    ajax.set("tBranchOfficeId",id);
    ajax.start();
};
/**
 * 提交冻结
 */
TBranchOffice.stop = function () {
    if(this.check()){
        if(2 == this.seItem.status){
            Feng.error("该条数据已冻结!");
            return;
        }
        var ajax = new $ax(Feng.ctxPath + "/tBranchOffice/stop?id="+this.seItem.id, function (data) {
            if(500 == data.code){
                Feng.error(data.message);
                return;
            }else {
                Feng.success("冻结成功!");
                TBranchOffice.table.refresh();
            }
        }, function (data) {
            Feng.error("删除失败!" + data.responseJSON.message + "!");
            Feng.error("冻结失败!" + data.message + "!");
        });
        ajax.set("tBranchOfficeId",this.seItem.id);
        ajax.start();
    }
};
/**
 * 提交启用
 */
TBranchOffice.start = function () {
    if(this.check()){
        if(1 == this.seItem.status){
            Feng.error("该条数据已启用!");
            return;
        }
        var ajax = new $ax(Feng.ctxPath + "/tBranchOffice/start?id="+this.seItem.id, function (data) {
            if(500 == data.code){
                Feng.error(data.message);
                return;
            }else {
                Feng.success("启用成功!");
                TBranchOffice.table.refresh();
            }
        }, function (data) {
            Feng.error("启用失败!" + data.message + "!");
        });
        ajax.start();
    }
};
/**
 * 打开区域选择页面新增
 */
TBranchOffice.areaAdd = function () {
    var area = $("#area").val();
    var areaId = $("#areaId").val();
    var index = layer.open({
        type: 2,
        title: '区域选择',
        area: ['1000px', '270px'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tBranchOffice/areaPageAdd?area='+area+'&areaId='+areaId
    });
    this.layerIndex = index;
}
/**
 * 打开区域选择页面编辑
 */
TBranchOffice.areaUpdate = function () {
    var area = $("#area").val();
    var areaId = $("#areaId").val();
    var index = layer.open({
        type: 2,
        title: '区域选择',
        area: ['1000px', '270px'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tBranchOffice/areaPageUpdate?area='+area+'&areaId='+areaId
    });
    this.layerIndex = index;
}
/**
 * 查询市
 */
TBranchOffice.areaCity = function () {
    //监听第一个下拉菜单的变动操作
    $("#province").change(function(){
        //当第一级下拉列表没选择值时,将二级下拉列表和三级同时设置为空
        if(this.value==""){
            $("#city").empty();//二级联动设为空设为空
            $("#city").append('<option value="">请选择</option>');
            //region
            $("#district").empty();//三级联动设为空设为空
            $("#district").append('<option value="">请选择</option>');
        }
        if(this.value!=""){//第一级下拉菜单选择了值
            $("#city").empty();//先行置空,防止上次选择留下的元素影响效果
            $("#city").append('<option value="">请选择</option>')//设置初始选项
            $("#district").empty();//三级联动设为空设为空
            $("#district").append('<option value="">请选择</option>');
            var province = document.getElementById('province');
            var index= province.selectedIndex ;
            var id = province.options[index].id;
            var ajax = new $ax(Feng.ctxPath + "/tBranchOffice/areaCity?parentId="+id, function (data) {
                for(var i=0,n=data.length;i<n;i++){//遍历
                    $("#city").append('<option value="'+data[i].id+'">'+data[i].name+'</option>');//创造元素
                }
            }, function (data) {
                Feng.error("查询失败!" + data.responseJSON.message + "!");
            });
            ajax.start();
        }
    });
    /*var province = document.getElementById('province');
    var index= province.selectedIndex ;
    var id = province.options[index].id;
    var ajax = new $ax(Feng.ctxPath + "/tBranchOffice/areaCity?parentId="+id, function (data) {
        /!*var opts=document.getElementById('city').options;
        opts.length=0;// 这一句是清空原有列表项
        for(var i=0,n=data.length;i<n;i++){
            var data1=data[i];
            var opt=new Option(data1.name,data1.id,true,true);
            opts.add(opt);
        }*!/
    }, function (data) {
        Feng.error("查询失败!" + data.responseJSON.message + "!");
    });
    ajax.start();*/
}
/**
 * 查询区
 */
TBranchOffice.areaDistrict = function () {
    //监听第二个下拉菜单的变动操作
    $("#city").change(function(){
        if(this.value==""){//第二级菜单为空,则将第三级菜单也置为空
            $("#district").empty();
            $("#district").append('<option value="">请选择</option>');
        }
        if(this.value!=""){//第二级菜单不为空,则将第三级菜单动态生成
            $("#district").empty();
            $("#district").append('<option value="">请选择</option>');
            var city = document.getElementById('city');
            var cityIndex= city.selectedIndex ;
            var id = city.options[cityIndex].id;
            if(id == ""){
                id = city.options[cityIndex].value;
            }
            var ajax = new $ax(Feng.ctxPath + "/tBranchOffice/areaCity?parentId="+id, function (data) {
                for(var i=0,n=data.length;i<n;i++){//对区数据进行遍历,动态生成
                    $("#district").append('<option value="'+data[i].id+'">'+data[i].name+'</option>');
                }
            }, function (data) {
                Feng.error("查询失败!" + data.responseJSON.message + "!");
            });
            ajax.start();
        }
    })
    /*var city = document.getElementById('city');
    var cityIndex= city.selectedIndex ;
    var id = city.options[cityIndex].value;
    var ajax = new $ax(Feng.ctxPath + "/tBranchOffice/areaCity?parentId="+id, function (data) {
        var opts=document.getElementById('district').options;
        opts.length=0;// 这一句是清空原有列表项
        for(var i=0,n=data.length;i<n;i++){
            var data1=data[i];
            var opt=new Option(data1.name,data1.id,true,true);
            opts.add(opt);
        }
    }, function (data) {
        Feng.error("查询失败!" + data.responseJSON.message + "!");
    });
    ajax.start();*/
}
/**
 * 选择省市
 */
TBranchOffice.submitArea = function () {
    var province = document.getElementById('province');
    var provinceIndex= province.selectedIndex ;
    var provinceName = province.options[provinceIndex].value;
    var provinceId = province.options[provinceIndex].id;
    if(provinceName == null || provinceName == ''){
        Feng.error("请选择省份!")
        return;
    }
    var city = document.getElementById('city');
    var cityIndex= city.selectedIndex ;
    var cityId = city.options[cityIndex].value;
    var cityName = city.options[cityIndex].innerText;
    if(cityName == null || cityName == '' || cityName =='请选择'){
        Feng.error("请选择市区!")
        return;
    }
    var district = document.getElementById('district');
    var districtIndex= district.selectedIndex ;
    var districtId = district.options[districtIndex].value;
    var districtName = district.options[districtIndex].innerText;
    if(districtName == '' || districtName == null || districtName == '请选择'){
        parent.$("#area").val(provinceName+'/'+cityName)
        parent.$("#areaId").val(provinceId+'/'+cityId)
    }else {
        parent.$("#area").val(provinceName+'/'+cityName+'/'+districtName)
        parent.$("#areaId").val(provinceId+'/'+cityId+'/'+districtId)
    }
    TBranchOfficeInfoDlg.close();
}
/**
 * 查询列表
 */
TBranchOffice.search = function () {
    var queryData = {};
    queryData['condition'] = $("#condition").val();
    queryData['branchOfficeName'] = $("#branchOfficeName").val();
    queryData['principal'] = $("#principal").val();
    queryData['principalPhone'] = $("#principalPhone").val();
    queryData['operatingBusiness'] = $("#operatingBusiness").val();
    queryData['status'] = $("#status").val();
    TBranchOffice.table.refresh({query: queryData});
};
/**
 * 重置
 */
TBranchOffice.resetSearch = function (){
    $("#branchOfficeName").val('');
    $("#principal").val('');
    $("#principalPhone").val('');
    $("#operatingBusiness").val('');
    $("#status").val('');
    TBranchOffice.search();
}
$(function () {
    var defaultColunms = TBranchOffice.initColumn();
    var table = new BSTable(TBranchOffice.id, "/tBranchOffice/list", defaultColunms);
management/guns-admin/src/main/webapp/static/modular/system/tBranchOffice/tBranchOffice_info.js
@@ -2,7 +2,53 @@
 * 初始化详情对话框
 */
var TBranchOfficeInfoDlg = {
    tBranchOfficeInfoData : {}
    tBranchOfficeInfoData : {},
    validateFields: {
        branchOfficeName: {
            validators: {
                notEmpty: {
                    message: '分公司名称不能为空'
                }
            }
        },
        name: {
            validators: {
                notEmpty: {
                    message: '负责人姓名不能为空'
                }
            }
        },
        phone: {
            validators: {
                notEmpty: {
                    message: '联系电话不能为空'
                }
            }
        },
        area: {
            validators: {
                notEmpty: {
                    message: '请选择服务区域'
                }
            }
        },
        emergencyPhone: {
            validators: {
                notEmpty: {
                    message: '代理商抽成不能为空'
                }
            }
        },
    }
};
/**
 * 验证数据是否为空
 */
TBranchOfficeInfoDlg.validate = function () {
    $('#branchOfficeInfoForm').data("bootstrapValidator").resetForm();
    $('#branchOfficeInfoForm').bootstrapValidator('validate');
    return $("#branchOfficeInfoForm").data('bootstrapValidator').isValid();
};
/**
@@ -56,6 +102,12 @@
    .set('cityName')
    .set('districtCode')
    .set('districtName')
    .set('branchOfficeName')
    .set('operatingBusiness')
    .set('bankDeposit')
    .set('bankAccount')
        .set('area')
        .set('areaId')
    .set('status')
    .set('createTime');
}
@@ -68,11 +120,20 @@
    this.clearData();
    this.collectData();
    if(!this.validate()){
        return ;
    }
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tBranchOffice/add", function(data){
        Feng.success("添加成功!");
        window.parent.TBranchOffice.table.refresh();
        TBranchOfficeInfoDlg.close();
        if(data.code == 500){
            Feng.error("添加失败!" + data.message + "!");
            return false;
        }else {
            Feng.success("添加成功!");
            window.parent.TBranchOffice.table.refresh();
            TBranchOfficeInfoDlg.close();
        }
    },function(data){
        Feng.error("添加失败!" + data.responseJSON.message + "!");
    });
@@ -88,11 +149,20 @@
    this.clearData();
    this.collectData();
    if(!this.validate()){
        return ;
    }
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tBranchOffice/update", function(data){
        Feng.success("修改成功!");
        window.parent.TBranchOffice.table.refresh();
        TBranchOfficeInfoDlg.close();
        if(data.code == 500){
            Feng.error("修改失败!" + data.message + "!");
            return false;
        }else {
            Feng.success("修改成功!");
            window.parent.TBranchOffice.table.refresh();
            TBranchOfficeInfoDlg.close();
        }
    },function(data){
        Feng.error("修改失败!" + data.responseJSON.message + "!");
    });
@@ -101,5 +171,5 @@
}
$(function() {
    Feng.initValidator("branchOfficeInfoForm", TBranchOfficeInfoDlg.validateFields);
});
management/guns-admin/src/main/webapp/static/modular/system/tCancelOrder/tCancelOrder.js
New file
@@ -0,0 +1,103 @@
/**
 * 管理初始化
 */
var TCancelOrder = {
    id: "TCancelOrderTable",    //表格id
    seItem: null,        //选中的条目
    table: null,
    layerIndex: -1
};
/**
 * 初始化表格的列
 */
TCancelOrder.initColumn = function () {
    return [
        {field: 'selectItem', radio: true},
            {title: '主键', field: 'id', visible: true, align: 'center', valign: 'middle'},
            {title: '订单id', field: 'orderId', visible: true, align: 'center', valign: 'middle'},
            {title: '用户类型(1=用户,2=司机)', field: 'userType', visible: true, align: 'center', valign: 'middle'},
            {title: '用户id', field: 'userId', visible: true, align: 'center', valign: 'middle'},
            {title: '转单原因', field: 'cause', visible: true, align: 'center', valign: 'middle'},
            {title: '状态(1=正常,2=冻结,3=删除)', field: 'status', visible: true, align: 'center', valign: 'middle'},
            {title: '添加时间', field: 'createTime', visible: true, align: 'center', valign: 'middle'}
    ];
};
/**
 * 检查是否选中
 */
TCancelOrder.check = function () {
    var selected = $('#' + this.id).bootstrapTable('getSelections');
    if(selected.length == 0){
        Feng.info("请先选中表格中的某一记录!");
        return false;
    }else{
        TCancelOrder.seItem = selected[0];
        return true;
    }
};
/**
 * 点击添加
 */
TCancelOrder.openAddTCancelOrder = function () {
    var index = layer.open({
        type: 2,
        title: '添加',
        area: ['800px', '420px'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tCancelOrder/tCancelOrder_add'
    });
    this.layerIndex = index;
};
/**
 * 打开查看详情
 */
TCancelOrder.openTCancelOrderDetail = function () {
    if (this.check()) {
        var index = layer.open({
            type: 2,
            title: '详情',
            area: ['800px', '420px'], //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/tCancelOrder/tCancelOrder_update/' + TCancelOrder.seItem.id
        });
        this.layerIndex = index;
    }
};
/**
 * 删除
 */
TCancelOrder.delete = function () {
    if (this.check()) {
        var ajax = new $ax(Feng.ctxPath + "/tCancelOrder/delete", function (data) {
            Feng.success("删除成功!");
            TCancelOrder.table.refresh();
        }, function (data) {
            Feng.error("删除失败!" + data.responseJSON.message + "!");
        });
        ajax.set("tCancelOrderId",this.seItem.id);
        ajax.start();
    }
};
/**
 * 查询列表
 */
TCancelOrder.search = function () {
    var queryData = {};
    queryData['condition'] = $("#condition").val();
    TCancelOrder.table.refresh({query: queryData});
};
$(function () {
    var defaultColunms = TCancelOrder.initColumn();
    var table = new BSTable(TCancelOrder.id, "/tCancelOrder/list", defaultColunms);
    table.setPaginationType("client");
    TCancelOrder.table = table.init();
});
management/guns-admin/src/main/webapp/static/modular/system/tCancelOrder/tCancelOrder_info.js
New file
@@ -0,0 +1,99 @@
/**
 * 初始化详情对话框
 */
var TCancelOrderInfoDlg = {
    tCancelOrderInfoData : {}
};
/**
 * 清除数据
 */
TCancelOrderInfoDlg.clearData = function() {
    this.tCancelOrderInfoData = {};
}
/**
 * 设置对话框中的数据
 *
 * @param key 数据的名称
 * @param val 数据的具体值
 */
TCancelOrderInfoDlg.set = function(key, val) {
    this.tCancelOrderInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val;
    return this;
}
/**
 * 设置对话框中的数据
 *
 * @param key 数据的名称
 * @param val 数据的具体值
 */
TCancelOrderInfoDlg.get = function(key) {
    return $("#" + key).val();
}
/**
 * 关闭此对话框
 */
TCancelOrderInfoDlg.close = function() {
    parent.layer.close(window.parent.TCancelOrder.layerIndex);
}
/**
 * 收集数据
 */
TCancelOrderInfoDlg.collectData = function() {
    this
    .set('id')
    .set('orderId')
    .set('userType')
    .set('userId')
    .set('cause')
    .set('status')
    .set('createTime');
}
/**
 * 提交添加
 */
TCancelOrderInfoDlg.addSubmit = function() {
    this.clearData();
    this.collectData();
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tCancelOrder/add", function(data){
        Feng.success("添加成功!");
        window.parent.TCancelOrder.table.refresh();
        TCancelOrderInfoDlg.close();
    },function(data){
        Feng.error("添加失败!" + data.responseJSON.message + "!");
    });
    ajax.set(this.tCancelOrderInfoData);
    ajax.start();
}
/**
 * 提交修改
 */
TCancelOrderInfoDlg.editSubmit = function() {
    this.clearData();
    this.collectData();
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tCancelOrder/update", function(data){
        Feng.success("修改成功!");
        window.parent.TCancelOrder.table.refresh();
        TCancelOrderInfoDlg.close();
    },function(data){
        Feng.error("修改失败!" + data.responseJSON.message + "!");
    });
    ajax.set(this.tCancelOrderInfoData);
    ajax.start();
}
$(function() {
});
management/guns-admin/src/main/webapp/static/modular/system/tComplaint/tComplaint.js
@@ -1,5 +1,5 @@
/**
 * 投诉列表管理初始化
 * 管理初始化
 */
var TComplaint = {
    id: "TComplaintTable",    //表格id
@@ -14,135 +14,28 @@
TComplaint.initColumn = function () {
    return [
        {field: 'selectItem', radio: true},
        {title: '主键ID', field: 'id', visible: false, align: 'center', valign: 'middle'},
        {title: '投诉时间', field: 'insert_time', visible: true, align: 'center', valign: 'middle',width:'10%',
            {title: '主键', field: 'id', visible: false, align: 'center', valign: 'middle'},
            {title: '用户id', field: 'userId', visible: false, align: 'center', valign: 'middle'},
            {title: '投诉司机id', field: 'driverId', visible: false, align: 'center', valign: 'middle'},
        {title: '投诉时间', field: 'createTime', visible: true, align: 'center', valign: 'middle'},
        {title: '投诉人昵称', field: 'userName', visible: true, align: 'center', valign: 'middle'},
        {title: '投诉人电话', field: 'userPhone', visible: true, align: 'center', valign: 'middle'},
        {title: '投诉原因', field: 'reason', visible: true, align: 'center', valign: 'middle'},
        {title: '备注', field: 'notes', visible: true, align: 'center', valign: 'middle'},
        {title: '处理状态', field: 'state', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                var btn = "";
                if(row.insert_time != '' && row.insert_time != null) {
                    var time = row.insert_time.replace(" ",'<br>');
                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.insert_time + '" onfocus="TUser.tooltip()">' + time + '</p>']
                if (row.state === 1){
                    return '<span>待处理</span>'
                }else if (row.state === 2){
                    return '<span>已处理</span>'
                }
                return btn;
            }
        },
        {title: '投诉人昵称', field: 'userName', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                var btn = "";
                if(row.userName != '' && row.userName != null) {
                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.userName + '" onfocus="TUser.tooltip()">' + row.userName + '</p>']
                }
                return btn;
            }
        },
        {title: '投诉人<br/>电话', field: 'userPhone', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                var btn = "";
                if(row.userPhone != '' && row.userPhone != null) {
                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.userPhone + '" onfocus="TUser.tooltip()">' + row.userPhone + '</p>']
                }
                return btn;
            }
        },
        {title: '投诉司机<br/>电话', field: 'driverPhone', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                var btn = "";
                if(row.driverPhone != '' && row.driverPhone != null) {
                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.driverPhone + '" onfocus="TUser.tooltip()">' + row.driverPhone + '</p>']
                }
                return btn;
            }
        },
        {title: '投诉<br/>原因', field: 'reason', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                var btn = "";
                if(row.reason != '' && row.reason != null) {
                    var str = row.reason;
                    if (str.length > 20){
                        str = str.substring(0,20)+'...<br><button class="btn btn-outline btn-primary" onclick="TComplaint.buttonClick(' +  row.id+','+ 1+ ')">查看更多</button>';
                    }
                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.reason + '" onfocus="TUser.tooltip()">' + str + '</p>']
                }
                return btn;
            }
        },
        {title: '描述', field: 'description', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                var btn = "";
                if(row.description != '' && row.description != null) {
                    var str = row.description;
                    if (str.length > 20){
                        str = str.substring(0,20)+'...<br><button class="btn btn-outline btn-primary" onclick="TComplaint.buttonClick(' +  row.id+','+ 2+ ')">查看更多</button>';
                    }
                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.description + '" onfocus="TUser.tooltip()">' + str + '</p>']
                }
                return btn;
            }
        },
        {title: '备注', field: 'handleResult', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                var btn = "";
                if(row.handleResult != '' && row.handleResult != null) {
                    var str = row.handleResult;
                    if (str.length > 20){
                        str = str.substring(0,20)+'...<br><button class="btn btn-outline btn-primary" onclick="TComplaint.buttonClick(' +  row.id+','+ 3+ ')">查看更多</button>';
                    }
                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.handleResult + '" onfocus="TUser.tooltip()">' + str + '</p>']
                }
                return btn;
            }
        },
        {title: '状态', field: 'isHandle', visible: true, align: 'center', valign: 'middle',width:'10%',
            formatter: function (value, row) {
                var btn = "";
                if(row.isHandle != '' && row.isHandle != null) {
                    if (row.isHandle == 1){
                        btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="已处理" onfocus="TUser.tooltip()">已处理</p>']
                    }
                }else{
                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color: red;" title="未处理" onfocus="TUser.tooltip()">未处理</p>']
                }
                return btn;
            }
        },
        {title: '处理时间', field: 'handleTime', visible: true, align: 'center', valign: 'middle',width:'10%',
            formatter: function (value, row) {
                var btn = "";
                if(row.handleTime != '' && row.handleTime != null) {
                    var time = row.handleTime.replace(" ",'<br>');
                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.handleTime + '" onfocus="TUser.tooltip()">' + time + '</p>']
                }
                return btn;
            }
        },
        {title: '处理人', field: 'handleUserName', visible: true, align: 'center', valign: 'middle',width:'10%',
            formatter: function (value, row) {
                var btn = "";
                if(row.handleUserName != '' && row.handleUserName != null) {
                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.handleUserName + '" onfocus="TUser.tooltip()">' + row.handleUserName + '</p>']
                }
                return btn;
            }
        }
        {title: '处理时间', field: 'auditTime', visible: true, align: 'center', valign: 'middle'},
        {title: '处理人', field: 'auditPersonName', visible: true, align: 'center', valign: 'middle'},
        {title: '状态(1=正常,2=冻结,3=删除)', field: 'status', visible: false, align: 'center', valign: 'middle'}
    ];
};
/**
 * 查看更多按钮
 * @param con
 */
TComplaint.buttonClick = function (id,type) {
    var index = layer.open({
        type: 2,
        title: '查看详情',
        area: ['800px', '420px'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tComplaint/lookDetail/'+id+"/"+type
    });
    this.layerIndex = index;
}
/**
 * 检查是否选中
@@ -159,81 +52,119 @@
};
/**
 * 立即处理
 * 点击添加
 */
TComplaint.immediately = function(){
TComplaint.openAddTComplaint = function () {
    var index = layer.open({
        type: 2,
        title: '添加',
        area: ['800px', '420px'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tComplaint/tComplaint_add'
    });
    this.layerIndex = index;
};
/**
 * 打开查看详情
 */
TComplaint.openTComplaintDetail = function () {
    if (this.check()) {
        if (TComplaint.seItem.isHandle == 1) {
            swal("处理失败", "【未处理】状态下才能执行此操作", "warning");
            return;
        }
        var index = layer.open({
            type: 2,
            title: '立即处理',
            title: '详情',
            area: ['800px', '420px'], //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/tComplaint/tComplaint_immediately/' + TComplaint.seItem.id
            content: Feng.ctxPath + '/tComplaint/tComplaint_update/' + TComplaint.seItem.id
        });
        this.layerIndex = index;
    }
}
};
/**
 * 删除投诉列表
 * 删除
 */
TComplaint.delete = function () {
    if (this.check()) {
        if (TComplaint.seItem.isHandle != 1) {
            swal("删除失败", "【已处理】状态下才能执行此操作", "warning");
            return;
        }
        swal({
            title: "您是否确认删除该投诉记录?",
            text: "请谨慎操作,删除后数据无法恢复!",
            type: "warning",
            showCancelButton: true,
            confirmButtonColor: "#DD6B55",
            confirmButtonText: "删除",
            closeOnConfirm: false
        }, function () {
            var ajax = new $ax(Feng.ctxPath + "/tComplaint/delete", function (data) {
                swal("删除成功", "您已经删除了该投诉记录。", "success");
                TComplaint.table.refresh();
            }, function (data) {
                swal("删除失败", data.responseJSON.message + "!", "warning");
            });
            ajax.set("tComplaintId", TComplaint.seItem.id);
            ajax.start();
        var ajax = new $ax(Feng.ctxPath + "/tComplaint/delete", function (data) {
            Feng.success("删除成功!");
            TComplaint.table.refresh();
        }, function (data) {
            Feng.error("删除失败!" + data.responseJSON.message + "!");
        });
        ajax.set("tComplaintId",this.seItem.id);
        ajax.start();
    }
};
/**
 * 查询投诉列表列表
 * 立即处理页面跳转
 */
TComplaint.immediatelyAudit = function () {
    if (this.check()) {
        if(2 == TComplaint.seItem.state){
            Feng.error("该数据已处理!");
            return;
        }
        var index = layer.open({
            type: 2,
            title: '投诉处理',
            area: ['800px', '420px'], //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/tComplaint/immediatelyAudit?tComplaintId=' + TComplaint.seItem.id
        });
        this.layerIndex = index;
    }
};
/**
 * 提交审核
 */
TComplaint.audit = function () {
    var ajax = new $ax(Feng.ctxPath + "/tComplaint/audit", function (data) {
        Feng.success("修改成功!");
        TComplaintInfoDlg.close();
        parent.TComplaint.table.refresh();
    }, function (data) {
        Feng.error("修改失败!" + data.responseJSON.message + "!");
    });
    ajax.set("tComplaintId",$("#tComplaintId").val());
    ajax.set("notes",$("#notes").val());
    ajax.start();
};
/**
 * 查询列表
 */
TComplaint.search = function () {
    var queryData = {};
    queryData['insertTime'] = $("#insertTime").val();
    queryData['createTime'] = $("#createTime").val();
    queryData['userName'] = $("#userName").val();
    queryData['userPhone'] = $("#userPhone").val();
    queryData['driverPhone'] = $("#driverPhone").val();
    queryData['isHandle'] = $("#isHandle").val();
    queryData['state'] = $("#state").val();
    TComplaint.table.refresh({query: queryData});
};
TComplaint.resetSearch = function () {
    $("#insertTime").val("");
    $("#userName").val("");
    $("#userPhone").val("");
    $("#driverPhone").val("");
    $("#isHandle").val("");
/**
 * 重置
 */
TComplaint.resetSearch = function (){
    $("#createTime").val('');
    $("#userName").val('');
    $("#userPhone").val('');
    $("#driverPhone").val('');
    $("#state").val('');
    TComplaint.search();
};
}
$(function () {
    var defaultColunms = TComplaint.initColumn();
    var table = new BSTable(TComplaint.id, "/tComplaint/list", defaultColunms);
    table.setPaginationType("server");
    table.setPaginationType("client");
    TComplaint.table = table.init();
});
management/guns-admin/src/main/webapp/static/modular/system/tComplaint/tComplaint_info.js
@@ -1,30 +1,8 @@
/**
 * 初始化投诉列表详情对话框
 * 初始化详情对话框
 */
var TComplaintInfoDlg = {
    tComplaintInfoData : {},
    validateFields: {
        handleResult: {
            validators: {
                notEmpty: {
                    message: '备注不能为空'
                }/*,
                regexp: {
                    regexp: /^.{1,500}$/,
                    message: '备注不能超过500个长度'
                }*/
            }
        },
    }
};
/**
 * 验证数据是否为空
 */
TComplaintInfoDlg.validate = function () {
    $('#complaintFormInfo').data("bootstrapValidator").resetForm();
    $('#complaintFormInfo').bootstrapValidator('validate');
    return $("#complaintFormInfo").data('bootstrapValidator').isValid();
    tComplaintInfoData : {}
};
/**
@@ -69,43 +47,54 @@
    this
    .set('id')
    .set('userId')
    .set('reason')
    .set('driverId')
    .set('description')
    .set('isHandle')
    .set('insertTime')
    .set('handleResult')
    .set('handleUserId');
    .set('reason')
    .set('notes')
    .set('state')
    .set('status')
    .set('createTime');
}
/**
 * 立即处理
 * 提交添加
 */
TComplaintInfoDlg.immediately = function() {
TComplaintInfoDlg.addSubmit = function() {
    this.clearData();
    this.collectData();
    if(!this.validate()){
        return ;
    }
    var handleResult = $("#handleResult").val();
    if (handleResult.length > 500){
        Feng.info("备注不能超过500个字");
        return;
    }
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tComplaint/immediately", function(data){
        Feng.success("处理成功!");
    var ajax = new $ax(Feng.ctxPath + "/tComplaint/add", function(data){
        Feng.success("添加成功!");
        window.parent.TComplaint.table.refresh();
        TComplaintInfoDlg.close();
    },function(data){
        Feng.error("处理失败!" + data.responseJSON.message + "!");
        Feng.error("添加失败!" + data.responseJSON.message + "!");
    });
    ajax.set("id",$("#id").val());
    ajax.set("handleResult",$("#handleResult").val());
    ajax.set(this.tComplaintInfoData);
    ajax.start();
}
/**
 * 提交修改
 */
TComplaintInfoDlg.editSubmit = function() {
    this.clearData();
    this.collectData();
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tComplaint/update", function(data){
        Feng.success("修改成功!");
        window.parent.TComplaint.table.refresh();
        TComplaintInfoDlg.close();
    },function(data){
        Feng.error("修改失败!" + data.responseJSON.message + "!");
    });
    ajax.set(this.tComplaintInfoData);
    ajax.start();
}
$(function() {
    Feng.initValidator("complaintFormInfo", TComplaintInfoDlg.validateFields);
});
management/guns-admin/src/main/webapp/static/modular/system/tCoupon/tCoupon.js
@@ -14,9 +14,16 @@
TCoupon.initColumn = function () {
    return [
        {field: 'selectItem', radio: true},
            {title: '主键', field: 'id', visible: true, align: 'center', valign: 'middle'},
            {title: '创建时间', field: 'createTime', visible: true, align: 'center', valign: 'middle'},
            {title: '主键', field: 'id', visible: false, align: 'center', valign: 'middle'},
            {title: '添加时间', field: 'createTime', visible: true, align: 'center', valign: 'middle'},
            {title: '优惠券名称', field: 'couponName', visible: true, align: 'center', valign: 'middle'},
        {title: '服务类型', field: 'couponServiceType', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                if (row.couponServiceType === 1){
                    return '<span>通用型</span>'
                }
            }
        },
            {title: '优惠券类型', field: 'couponType', visible: true, align: 'center', valign: 'middle',
                formatter: function (value, row) {
                    if (row.couponType === 1){
@@ -26,8 +33,8 @@
                    }
                }
            },
            {title: '优惠券码', field: 'couponCode', visible: true, align: 'center', valign: 'middle'},
            {title: '优惠券状态', field: 'couponStatus', visible: true, align: 'center', valign: 'middle',
            {title: '优惠券码', field: 'couponCode', visible: false, align: 'center', valign: 'middle'},
            {title: '优惠券状态', field: 'couponStatus', visible: false, align: 'center', valign: 'middle',
                formatter: function (value, row) {
                    if (row.couponStatus === 1){
                        return '<span>未发放</span>'
@@ -40,17 +47,18 @@
                    }
                }
            },
            {title: '服务类型', field: 'couponServiceType', visible: true, align: 'center', valign: 'middle',
                formatter: function (value, row) {
                    if (row.couponServiceType === 1){
                        return '<span>通用型</span>'
                    }
                }
            },
            {title: '条件金额', field: 'couponConditionalAmount', visible: true, align: 'center', valign: 'middle'},
            {title: '优惠金额', field: 'couponPreferentialAmount', visible: true, align: 'center', valign: 'middle'},
            {title: '有效期', field: 'couponValidity', visible: true, align: 'center', valign: 'middle'},
            {title: '赠送数量', field: 'couponSendQuantity', visible: true, align: 'center', valign: 'middle'},
        {title: '数量', field: 'couponCount', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                if (row.couponCount === 0){
                    return '<span>无限制</span>'
                }else{
                    return row.couponCount
                }
            }
        },
        {title: '有效期', field: 'couponValidity', visible: true, align: 'center', valign: 'middle'},
            {title: '状态', field: 'couponState', visible: true, align: 'center', valign: 'middle',
                formatter: function (value, row) {
                    if (row.couponState === 1){
@@ -64,10 +72,10 @@
            {title: '操作', visible: true, align: 'center', valign: 'middle',width:150,
                formatter: function (value, row) {
                    if (row.couponState === 1){
                        return '<a href="#" onclick="TCoupon.stop('+row.id+','+row.couponState+')" style="color:red">停用</a>' +'&nbsp;' +
                        return '<a href="#" onclick="TCoupon.updateStatus('+row.id+','+row.couponState+')" style="color:red">停用</a>' +'&nbsp;' +
                            '<a href="#" onclick="TCoupon.delete('+row.id+')" style="color:red">删除</a>'
                    }else if (row.couponState === 2){
                        return '<a href="#" onclick="TCoupon.start('+row.id+','+row.couponState+')" style="color:green">启用</a>' +'&nbsp;' +
                        return '<a href="#" onclick="TCoupon.updateStatus('+row.id+','+row.couponState+')" style="color:green">启用</a>' +'&nbsp;' +
                            '<a href="#" onclick="TCoupon.delete('+row.id+')" style="color:red">删除</a>'
                    }
                }
@@ -96,7 +104,7 @@
    var index = layer.open({
        type: 2,
        title: '添加',
        area: ['800px', '420px'], //宽高
        area: ['100%', '100%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tCoupon/tCoupon_add'
@@ -124,17 +132,55 @@
/**
 * 删除
 */
TCoupon.delete = function () {
    if (this.check()) {
        var ajax = new $ax(Feng.ctxPath + "/tCoupon/delete", function (data) {
            Feng.success("删除成功!");
TCoupon.delete = function (id) {
    var ajax = new $ax(Feng.ctxPath + "/tCoupon/delete", function (data) {
        Feng.success("删除成功!");
        TCoupon.table.refresh();
    }, function (data) {
        Feng.error("删除失败!" + data.responseJSON.message + "!");
    });
    ajax.set("tCouponId",id);
    ajax.start();
};
/**
 * 提交启用冻结
 */
TCoupon.updateStatus = function (id,couponState) {
    var ajax = new $ax(Feng.ctxPath + "/tCoupon/update-status?id="+id+'&status='+couponState, function (data) {
        if(500 == data.code){
            Feng.error(data.message);
            return;
        }else {
            Feng.success("修改成功!");
            TCoupon.table.refresh();
        }, function (data) {
            Feng.error("删除失败!" + data.responseJSON.message + "!");
        });
        ajax.set("tCouponId",this.seItem.id);
        ajax.start();
    }
        }
    }, function (data) {
        Feng.error("修改失败!" + data.message + "!");
    });
    ajax.start();
};
/**
 * 选择新人券或者活动券时
 */
TCoupon.changeCouponType = function (id,couponState) {
    //监听下拉菜单的变动操作
    $("#couponType").change(function(){
        // 如果选择活动券,将赠送数量隐藏
        if(this.value == 1){
            $("#changeCouponSendQuantity").hide()
        }
        if(this.value == ""){
            $("#changeCouponSendQuantity").hide()
        }
        if(this.value == 2){
            $("#changeCouponSendQuantity").show()
        }
    })
};
/**
@@ -148,6 +194,16 @@
    TCoupon.table.refresh({query: queryData});
};
/**
 * 重置
 */
TCoupon.resetSearch = function (){
    $("#couponType").val('');
    $("#couponServiceType").val('');
    $("#createTime").val('');
    TCoupon.search();
}
$(function () {
    var defaultColunms = TCoupon.initColumn();
    var table = new BSTable(TCoupon.id, "/tCoupon/list", defaultColunms);
management/guns-admin/src/main/webapp/static/modular/system/tCoupon/tCoupon_info.js
@@ -2,7 +2,74 @@
 * 初始化详情对话框
 */
var TCouponInfoDlg = {
    tCouponInfoData : {}
    tCouponInfoData : {},
    validateFields: {
        couponName: {
            validators: {
                notEmpty: {
                    message: '优惠券名称不能为空'
                }
            }
        },
        couponType: {
            validators: {
                notEmpty: {
                    message: '请选择优惠券类型'
                }
            }
        },
        couponServiceType: {
            validators: {
                notEmpty: {
                    message: '请选择服务类类型'
                }
            }
        },
        couponCount: {
            validators: {
                notEmpty: {
                    message: '优惠券数量不能为空'
                }
            }
        },
        couponConditionalAmount: {
            validators: {
                notEmpty: {
                    message: '条件金额不能为空'
                }
            }
        },
        couponPreferentialAmount: {
            validators: {
                notEmpty: {
                    message: '优惠金额不能为空'
                }
            }
        },
        couponValidity: {
            validators: {
                notEmpty: {
                    message: '有效期不能为空'
                }
            }
        },
        remainingQuantity: {
            validators: {
                notEmpty: {
                    message: '优惠券总量不能为空'
                }
            }
        },
    }
};
/**
 * 验证数据是否为空
 */
TCouponInfoDlg.validate = function () {
    $('#couponInfoForm').data("bootstrapValidator").resetForm();
    $('#couponInfoForm').bootstrapValidator('validate');
    return $("#couponInfoForm").data('bootstrapValidator').isValid();
};
/**
@@ -46,7 +113,7 @@
TCouponInfoDlg.collectData = function() {
    this
    .set('id')
    .set('createtime')
    .set('createTime')
    .set('couponType')
    .set('couponServiceType')
    .set('couponCount')
@@ -54,6 +121,7 @@
    .set('couponPreferentialAmount')
    .set('couponValidity')
    .set('couponSendQuantity')
    .set('remainingQuantity')
    .set('couponName');
}
@@ -64,6 +132,10 @@
    this.clearData();
    this.collectData();
    if(!this.validate()){
        return ;
    }
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tCoupon/add", function(data){
@@ -98,5 +170,5 @@
}
$(function() {
    Feng.initValidator("couponInfoForm", TCouponInfoDlg.validateFields);
});
management/guns-admin/src/main/webapp/static/modular/system/tDriver/tDriver.js
@@ -323,13 +323,16 @@
 * 打开区域选择页面新增
 */
TDriver.areaAdd = function () {
    var area = $("#area").val();
    var areaId = $("#areaId").val();
    var index = layer.open({
        type: 2,
        title: '区域选择',
        area: ['1000px', '270px'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tDriver/areaPageAdd'
        content: Feng.ctxPath + '/tDriver/areaPageAdd?area='+area+'&areaId='+areaId
    });
    this.layerIndex = index;
}
@@ -338,7 +341,36 @@
 * 查询市
 */
TDriver.areaCity = function () {
    var province = document.getElementById('province');
    //监听第一个下拉菜单的变动操作
    $("#province").change(function(){
        //当第一级下拉列表没选择值时,将二级下拉列表和三级同时设置为空
        if(this.value==""){
            $("#city").empty();//二级联动设为空设为空
            $("#city").append('<option value="">请选择</option>');
            //region
            $("#district").empty();//三级联动设为空设为空
            $("#district").append('<option value="">请选择</option>');
        }
        if(this.value!=""){//第一级下拉菜单选择了值
            $("#city").empty();//先行置空,防止上次选择留下的元素影响效果
            $("#city").append('<option value="">请选择</option>')//设置初始选项
            $("#district").empty();//三级联动设为空设为空
            $("#district").append('<option value="">请选择</option>');
            var province = document.getElementById('province');
            var index= province.selectedIndex ;
            var id = province.options[index].id;
            var ajax = new $ax(Feng.ctxPath + "/tDriver/areaCity?parentId="+id, function (data) {
                for(var i=0,n=data.length;i<n;i++){//遍历
                    $("#city").append('<option value="'+data[i].id+'">'+data[i].name+'</option>');//创造元素
                }
            }, function (data) {
                Feng.error("查询失败!" + data.responseJSON.message + "!");
            });
            ajax.start();
        }
    });
    /*var province = document.getElementById('province');
    var index= province.selectedIndex ;
    var id = province.options[index].id;
    var ajax = new $ax(Feng.ctxPath + "/tDriver/areaCity?parentId="+id, function (data) {
@@ -352,14 +384,42 @@
    }, function (data) {
        Feng.error("查询失败!" + data.responseJSON.message + "!");
    });
    ajax.start();
    ajax.start();*/
}
/**
 * 查询区
 */
TDriver.areaDistrict = function () {
    var city = document.getElementById('city');
    //监听第二个下拉菜单的变动操作
    $("#city").change(function(){
        if(this.value==""){//第二级菜单为空,则将第三级菜单也置为空
            $("#district").empty();
            $("#district").append('<option value="">请选择</option>');
        }
        if(this.value!=""){//第二级菜单不为空,则将第三级菜单动态生成
            $("#district").empty();
            $("#district").append('<option value="">请选择</option>');
            var city = document.getElementById('city');
            var cityIndex= city.selectedIndex ;
            var id = city.options[cityIndex].id;
            if(id == ""){
                id = city.options[cityIndex].value;
            }
            var ajax = new $ax(Feng.ctxPath + "/tDriver/areaCity?parentId="+id, function (data) {
                for(var i=0,n=data.length;i<n;i++){//对区数据进行遍历,动态生成
                    $("#district").append('<option value="'+data[i].id+'">'+data[i].name+'</option>');
                }
            }, function (data) {
                Feng.error("查询失败!" + data.responseJSON.message + "!");
            });
            ajax.start();
        }
    })
    /*var city = document.getElementById('city');
    var cityIndex= city.selectedIndex ;
    var id = city.options[cityIndex].value;
    var ajax = new $ax(Feng.ctxPath + "/tDriver/areaCity?parentId="+id, function (data) {
@@ -373,7 +433,7 @@
    }, function (data) {
        Feng.error("查询失败!" + data.responseJSON.message + "!");
    });
    ajax.start();
    ajax.start();*/
}
/**
@@ -385,19 +445,33 @@
    var provinceName = province.options[provinceIndex].value;
    var provinceId = province.options[provinceIndex].id;
    if(provinceName == null || provinceName == ''){
        Feng.error("请选择省份!")
        return;
    }
    var city = document.getElementById('city');
    var cityIndex= city.selectedIndex ;
    var cityId = city.options[cityIndex].value;
    var cityName = city.options[cityIndex].innerText;
    if(cityName == null || cityName == '' || cityName =='请选择'){
        Feng.error("请选择市区!")
        return;
    }
    var district = document.getElementById('district');
    var districtIndex= district.selectedIndex ;
    var districtId = district.options[districtIndex].value;
    var districtName = district.options[districtIndex].innerText;
    if(districtName == null || districtName == '' || districtName =='请选择'){
        Feng.error("请选择区县!")
        return;
    }
    parent.$("#area").val(provinceName+'/'+cityName+'/'+districtName)
    parent.$("#areaId").val(provinceId+'/'+cityId+'/'+districtId)
    console.log()
    TDriverInfoDlg.close();
}
management/guns-admin/src/main/webapp/static/modular/system/tDriver/tDriver_info.js
@@ -2,7 +2,60 @@
 * 初始化详情对话框
 */
var TDriverInfoDlg = {
    tDriverInfoData : {}
    tDriverInfoData : {},
    validateFields: {
        name: {
            validators: {
                notEmpty: {
                    message: '姓名不能为空'
                }
            }
        },
        phone: {
            validators: {
                notEmpty: {
                    message: '手机号不能为空'
                }
            }
        },
        emergencyContact: {
            validators: {
                notEmpty: {
                    message: '紧急联系人姓名不能为空'
                }
            }
        },
        emergencyPhone: {
            validators: {
                notEmpty: {
                    message: '紧急联系人电话不能为空'
                }
            }
        },
        area: {
            validators: {
                notEmpty: {
                    message: '请选择服务区域'
                }
            }
        },
        idcard: {
            validators: {
                notEmpty: {
                    message: '身份证号码不能为空'
                }
            }
        },
    }
};
/**
 * 验证数据是否为空
 */
TDriverInfoDlg.validate = function () {
    $('#driverInfoForm').data("bootstrapValidator").resetForm();
    $('#driverInfoForm').bootstrapValidator('validate');
    return $("#driverInfoForm").data('bootstrapValidator').isValid();
};
/**
@@ -91,15 +144,38 @@
    this.clearData();
    this.collectData();
    if(!this.validate()){
        return ;
    }
    var idcardFront = $("#idcardFront").val();
    if ("" == idcardFront){
        Feng.info("请上传身份证正面照");
        return;
    }
    var idcardBack = $("#idcardBack").val();
    if ("" == idcardBack){
        Feng.info("请上传身份证背面照");
        return;
    }
    var driverLicense = $("#driverLicense").val();
    if ("" == driverLicense){
        Feng.info("请上传驾驶证");
        return;
    }
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tDriver/add", function(data){
        if(data.code == 500){
            Feng.error("添加失败!" + data.message + "!");
            return false;
        }else {
            Feng.success("添加成功!");
            window.parent.TDriver.table.refresh();
            TDriverInfoDlg.close();
        }
        Feng.success("添加成功!");
        window.parent.TDriver.table.refresh();
        TDriverInfoDlg.close();
    },function(data){
        Feng.error("添加失败!" + data.responseJSON.message + "!");
    });
@@ -115,15 +191,38 @@
    this.clearData();
    this.collectData();
    if(!this.validate()){
        return ;
    }
    var idcardFront = $("#idcardFront").val();
    if ("" == idcardFront){
        Feng.info("请上传身份证正面照");
        return;
    }
    var idcardBack = $("#idcardBack").val();
    if ("" == idcardBack){
        Feng.info("请上传身份证背面照");
        return;
    }
    var driverLicense = $("#driverLicense").val();
    if ("" == driverLicense){
        Feng.info("请上传驾驶证");
        return;
    }
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tDriver/update", function(data){
        if(data.code == 500){
            Feng.error("修改失败!" + data.message + "!");
            return false;
        }else {
            Feng.success("修改成功!");
            window.parent.TDriver.table.refresh();
            TDriverInfoDlg.close();
        }
        Feng.success("修改成功!");
        window.parent.TDriver.table.refresh();
        TDriverInfoDlg.close();
    },function(data){
        Feng.error("修改失败!" + data.responseJSON.message + "!");
    });
@@ -132,5 +231,5 @@
}
$(function() {
    Feng.initValidator("driverInfoForm", TDriverInfoDlg.validateFields);
});
management/guns-admin/src/main/webapp/static/modular/system/tEvaluate/tEvaluate.js
New file
@@ -0,0 +1,176 @@
/**
 * 管理初始化
 */
var TEvaluate = {
    id: "TEvaluateTable",    //表格id
    seItem: null,        //选中的条目
    table: null,
    layerIndex: -1
};
/**
 * 初始化表格的列
 */
TEvaluate.initColumn = function () {
    return [
        {field: 'selectItem', radio: true},
            {title: '主键', field: 'id', visible: false, align: 'center', valign: 'middle'},
            {title: '订单id', field: 'orderId', visible: false, align: 'center', valign: 'middle'},
            {title: '用户id', field: 'userId', visible: false, align: 'center', valign: 'middle'},
            {title: '状态(1=正常,2=冻结,3=删除)', field: 'status', visible: false, align: 'center', valign: 'middle'},
        {title: '评价时间', field: 'createTime', visible: true, align: 'center', valign: 'middle'},
        {title: '订单编号', field: 'code', visible: true, align: 'center', valign: 'middle'},
        {title: '评论用户', field: 'userName', visible: true, align: 'center', valign: 'middle'},
        {title: '评论用户手机号', field: 'userPhone', visible: true, align: 'center', valign: 'middle'},
        {title: '评论司机', field: 'driverName', visible: true, align: 'center', valign: 'middle'},
        {title: '司机手机号', field: 'driverPhone', visible: true, align: 'center', valign: 'middle'},
        {title: '评价分数', field: 'score', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                if (row.score === 1){
                    return '<span>非常差</span>'
                }else if (row.score === 2){
                    return '<span>差</span>'
                }else if (row.score === 3){
                    return '<span>一般</span>'
                }else if (row.score === 4){
                    return '<span>满意</span>'
                }else if (row.score === 5){
                    return '<span>非常满意</span>'
                }
            }
        },
        {title: '评价内容', field: 'evaluate', visible: true, align: 'center', valign: 'middle'},
        {title: '操作', visible: true, align: 'center', valign: 'middle',width:150,
            formatter: function (value, row) {
                return '<a href="#" onclick="TEvaluate.searchTAppUserDetail('+row.id+')" style="color:blue">详情</a>'
            }
        }
    ];
};
/**
 * 检查是否选中
 */
TEvaluate.check = function () {
    var selected = $('#' + this.id).bootstrapTable('getSelections');
    if(selected.length == 0){
        Feng.info("请先选中表格中的某一记录!");
        return false;
    }else{
        TEvaluate.seItem = selected[0];
        return true;
    }
};
/**
 * 点击添加
 */
TEvaluate.openAddTEvaluate = function () {
    var index = layer.open({
        type: 2,
        title: '添加',
        area: ['800px', '420px'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tEvaluate/tEvaluate_add'
    });
    this.layerIndex = index;
};
/**
 * 打开查看详情
 */
TEvaluate.openTEvaluateDetail = function () {
    if (this.check()) {
        var index = layer.open({
            type: 2,
            title: '详情',
            area: ['800px', '420px'], //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/tEvaluate/tEvaluate_update/' + TEvaluate.seItem.id
        });
        this.layerIndex = index;
    }
};
/**
 * 打开查看详情(使用中)
 */
TEvaluate.searchTAppUserDetail = function (id) {
    var index = layer.open({
        type: 2,
        title: '详情',
        area: ['100%', '100%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tEvaluate/evaluateDetail?evaluateId=' + id
    });
    this.layerIndex = index;
};
/**
 * 删除
 */
TEvaluate.delete = function () {
    if (this.check()) {
        var ajax = new $ax(Feng.ctxPath + "/tEvaluate/delete", function (data) {
            Feng.success("删除成功!");
            TEvaluate.table.refresh();
        }, function (data) {
            Feng.error("删除失败!" + data.responseJSON.message + "!");
        });
        ajax.set("tEvaluateId",this.seItem.id);
        ajax.start();
    }
};
/**
 * 订单信息导出
 */
TEvaluate.export=function(){
    var createTime=$("#createTime").val()
    var userName=$("#userName").val()
    var driverName=$("#driverName").val()
    var orderType=$("#orderType").val()
    var score=$("#score").val()
    window.location.href=Feng.ctxPath + "/tEvaluate/export?createTime="+createTime
        +"&userName="+userName
        +"&driverName="+driverName
        +"&orderType="+orderType
        +"&score="+score
    ;
}
/**
 * 查询列表
 */
TEvaluate.search = function () {
    var queryData = {};
    queryData['createTime'] = $("#createTime").val();
    queryData['userName'] = $("#userName").val();
    queryData['driverName'] = $("#driverName").val();
    queryData['orderType'] = $("#orderType").val();
    queryData['score'] = $("#score").val();
    TEvaluate.table.refresh({query: queryData});
};
/**
 * 重置
 */
TEvaluate.resetSearch = function (){
    $("#createTime").val('');
    $("#userName").val('');
    $("#driverName").val('');
    $("#orderType").val('');
    $("#score").val('');
    TEvaluate.search();
}
$(function () {
    var defaultColunms = TEvaluate.initColumn();
    var table = new BSTable(TEvaluate.id, "/tEvaluate/list", defaultColunms);
    table.setPaginationType("client");
    TEvaluate.table = table.init();
});
management/guns-admin/src/main/webapp/static/modular/system/tEvaluate/tEvaluate_info.js
New file
@@ -0,0 +1,99 @@
/**
 * 初始化详情对话框
 */
var TEvaluateInfoDlg = {
    tEvaluateInfoData : {}
};
/**
 * 清除数据
 */
TEvaluateInfoDlg.clearData = function() {
    this.tEvaluateInfoData = {};
}
/**
 * 设置对话框中的数据
 *
 * @param key 数据的名称
 * @param val 数据的具体值
 */
TEvaluateInfoDlg.set = function(key, val) {
    this.tEvaluateInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val;
    return this;
}
/**
 * 设置对话框中的数据
 *
 * @param key 数据的名称
 * @param val 数据的具体值
 */
TEvaluateInfoDlg.get = function(key) {
    return $("#" + key).val();
}
/**
 * 关闭此对话框
 */
TEvaluateInfoDlg.close = function() {
    parent.layer.close(window.parent.TEvaluate.layerIndex);
}
/**
 * 收集数据
 */
TEvaluateInfoDlg.collectData = function() {
    this
    .set('id')
    .set('orderId')
    .set('userId')
    .set('score')
    .set('evaluate')
    .set('status')
    .set('createTime');
}
/**
 * 提交添加
 */
TEvaluateInfoDlg.addSubmit = function() {
    this.clearData();
    this.collectData();
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tEvaluate/add", function(data){
        Feng.success("添加成功!");
        window.parent.TEvaluate.table.refresh();
        TEvaluateInfoDlg.close();
    },function(data){
        Feng.error("添加失败!" + data.responseJSON.message + "!");
    });
    ajax.set(this.tEvaluateInfoData);
    ajax.start();
}
/**
 * 提交修改
 */
TEvaluateInfoDlg.editSubmit = function() {
    this.clearData();
    this.collectData();
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tEvaluate/update", function(data){
        Feng.success("修改成功!");
        window.parent.TEvaluate.table.refresh();
        TEvaluateInfoDlg.close();
    },function(data){
        Feng.error("修改失败!" + data.responseJSON.message + "!");
    });
    ajax.set(this.tEvaluateInfoData);
    ajax.start();
}
$(function() {
});
management/guns-admin/src/main/webapp/static/modular/system/tOrder/tAppUser.js
New file
@@ -0,0 +1,281 @@
/**
 * 管理初始化
 */
var TAppUser = {
    id: "TAppUserTable",    //表格id
    seItem: null,        //选中的条目
    table: null,
    layerIndex: -1
};
/**
 * 初始化表格的列
 */
TAppUser.initColumn = function () {
    return [
        {field: 'selectItem', radio: false},
            {title: '用户ID', field: 'id', visible: true, align: 'center', valign: 'middle'},
            {title: '用户昵称', field: 'nickname', visible: true, align: 'center', valign: 'middle'},
            {title: '手机号', field: 'phone', visible: true, align: 'center', valign: 'middle'},
            {title: '性别', field: 'sex', visible: true, align: 'center', valign: 'middle',
                formatter: function (value, row) {
                    if (row.sex === 1){
                        return '<span>男</span>'
                    }else if (row.sex === 2){
                        return '<span>女</span>'
                    }else {
                        return '<span>未知</span>'
                    }
                }
            },
            {title: '头像', field: 'avatar', visible: true, align: 'center', valign: 'middle',
                formatter: function (value, row) {
                        return '<img src="'+row.avatar+'" style="height: 60px;width: 60px"/>'
                }
            },
            {title: '微信openid', field: 'openid', visible: true, align: 'center', valign: 'middle'},
            {title: '微信unionid', field: 'unionid', visible: true, align: 'center', valign: 'middle'},
            {title: '紧急联系人', field: 'emergencyContact', visible: true, align: 'center', valign: 'middle'},
            {title: '紧急联系电话', field: 'emergencyPhone', visible: true, align: 'center', valign: 'middle'},
            {title: '账户余额', field: 'accountBalance', visible: true, align: 'center', valign: 'middle'},
            {title: '用户标签id', field: 'userTagId', visible: true, align: 'center', valign: 'middle'},
            {title: '状态', field: 'status', visible: true, align: 'center', valign: 'middle',
                formatter: function (value, row) {
                    if (row.status === 1){
                        return '<span>正常</span>'
                    }else if (row.status === 2){
                        return '<span>冻结</span>'
                    }else if (row.status === 3){
                        return '<span>已删除</span>'
                    }
                }
            },
            {title: '添加时间', field: 'createTime', visible: true, align: 'center', valign: 'middle'},
            // {title: '是否异常', field: 'isException', hidden:true, visible: true, align: 'center', valign: 'middle'},
            // {title: '启用冻结理由', field: 'remark', hidden:true,visible: true, align: 'center', valign: 'middle'},
            {title: '操作', visible: true, align: 'center', valign: 'middle',width:150,
                formatter: function (value, row) {
                    if (row.status === 1){
                        return '<a href="#" onclick="TAppUser.stop('+row.id+','+row.status+')" style="color:red">停用</a>' +'&nbsp;' +
                        '<a href="#" onclick="TAppUser.searchTAppUserDetail('+row.id+','+row.status+')" style="color:green">详情</a>'
                    }else if (row.status === 2){
                        return '<a href="#" onclick="TAppUser.start('+row.id+','+row.status+')" style="color:green">启用</a>' +'&nbsp;' +
                            '<a href="#" onclick="TAppUser.searchTAppUserDetail('+row.id+','+row.status+')" style="color:green">详情</a>'
                    }
                }
            }
    ];
};
/**
 * 检查是否选中
 */
TAppUser.check = function () {
    var selected = $('#' + this.id).bootstrapTable('getSelections');
    if(selected.length == 0){
        Feng.info("请先选中表格中的某一记录!");
        return false;
    }else{
        TAppUser.seItem = selected[0];
        return true;
    }
};
/**
 * 用户信息导出
 */
TAppUser.export=function(){
    var nickName=$("#nickName").val()
    var status=$("#status").val()
    var id=$("#id").val()
    var createTime=$("#createTime").val()
    var phone=$("#phone").val()
    window.location.href=Feng.ctxPath + "/tAppUser/export-userInfo?nickname="+nickName
        +"&status="+status
        +"&id="+id
        +"&createTime="+createTime
        +"&phone="+phone
    ;
}
/**
 * 点击添加
 */
TAppUser.openAddTAppUser = function () {
    var index = layer.open({
        type: 2,
        title: '添加',
        area: ['800px', '420px'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tAppUser/tAppUser_add'
    });
    this.layerIndex = index;
};
/**
 * 停用
 */
TAppUser.stop = function (id) {
    var index = layer.open({
        type: 2,
        title: '停用',
        area: ['45%', '50%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tAppUser/tAppUser_start_and_stop?id='+id
    });
    this.layerIndex = index;
};
/**
 * 启动
 */
TAppUser.start = function (id) {
    var index = layer.open({
        type: 2,
        title: '启用',
        area: ['45%', '50%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tAppUser/tAppUser_start_and_stop?id='+id
    });
    this.layerIndex = index;
};
/**
 * 提交启用冻结
 */
TAppUser.updateStatus = function () {
        var ajax = new $ax(Feng.ctxPath + "/tAppUser/update-status", function (data) {
            Feng.success("修改成功!");
            TAppUserInfoDlg.close();
            parent.TAppUser.table.refresh();
        }, function (data) {
            Feng.error("修改失败!" + data.responseJSON.message + "!");
        });
        ajax.set("id",$("#id").val());
        ajax.set("status",$("#status").val());
        if($("#status").val() == 1){
            ajax.set("remark",$("#stopRemark").val());
        }
        if($("#status").val() == 2){
            ajax.set("remark",$("#startRemark").val());
        }
        ajax.start();
};
/**
 * 打开查看详情
 */
TAppUser.openTAppUserDetail = function () {
    if (this.check()) {
        var index = layer.open({
            type: 2,
            title: '详情',
            area: ['100%', '100%'], //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/tAppUser/tAppUser_update/' + TAppUser.seItem.id
        });
        this.layerIndex = index;
    }
};
/**
 * 打开查看详情(使用中)
 */
TAppUser.searchTAppUserDetail = function (id) {
    var index = layer.open({
        type: 2,
        title: '详情',
        area: ['100%', '100%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tAppUser/userDetail?tAppUserId=' + id
    });
    this.layerIndex = index;
};
/**
 * 删除
 */
TAppUser.delete = function () {
    if (this.check()) {
        var ajax = new $ax(Feng.ctxPath + "/tAppUser/delete", function (data) {
            Feng.success("删除成功!");
            TAppUser.table.refresh();
        }, function (data) {
            Feng.error("删除失败!" + data.responseJSON.message + "!");
        });
        ajax.set("tAppUserId",this.seItem.id);
        ajax.start();
    }
};
/**
 * 查询异常列表
 */
TAppUser.searchExceptionList = function () {
    var queryData = {};
    queryData.status = 2;
    TAppUser.table.refresh({query: queryData});
};
/**
 * 查询列表
 */
TAppUser.search = function () {
    var queryData = {};
    queryData.nickname = $("#nickName").val();
    queryData.phone = $("#phone").val();
    queryData.createTime = $("#createTime").val();
    queryData.id = $("#id").val();
    queryData.status = $("#status").val();
    TAppUser.table.refresh({query: queryData});
};
/**
 * 跳转优惠卷页面
 */
TAppUser.searchCoupon = function () {
    var selected = $('#' + this.id).bootstrapTable('getSelections');
    var data = [];
    for (let i = 0; i < selected.length; i++) {
        data[i] = selected[i].id;
    }
    if(this.check()){
        var index = layer.open({
            type: 2,
            title: '赠送优惠券',
            area: ['80%', '80%'], //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/tAppUser/sendCoupon?userIds=' + data
        });
        this.layerIndex = index;
    }
};
/**
 * 重置
 */
TAppUser.resetSearch = function (){
    $("#nickName").val('');
    $("#phone").val('');
    $("#createTime").val('');
    $("#id").val('');
    $("#status").val('');
    TAppUser.search();
}
$(function () {
    var defaultColunms = TAppUser.initColumn();
    var table = new BSTable(TAppUser.id, "/tAppUser/list", defaultColunms);
    table.setPaginationType("client");
    TAppUser.table = table.init();
});
management/guns-admin/src/main/webapp/static/modular/system/tOrder/tCancelOrder.js
New file
@@ -0,0 +1,182 @@
/**
 * 管理初始化
 */
var TCancelOrder = {
    id: "TCancelOrderTable",    //表格id
    seItem: null,        //选中的条目
    table: null,
    layerIndex: -1
};
/**
 * 初始化表格的列
 */
TCancelOrder.initColumn = function () {
    return [
        {field: 'selectItem', radio: true},
            {title: '主键', field: 'id', visible: true, align: 'center', valign: 'middle'},
        {title: '下单时间', field: 'placeTime', visible: true, align: 'center', valign: 'middle'},
        {title: '订单编号', field: 'code', visible: true, align: 'center', valign: 'middle'},
        {title: '订单来源', field: 'source', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                if (row.source === 1){
                    return '<span>小程序</span>'
                }else if (row.source === 2){
                    return '<span>司机创建</span>'
                }
            }},
        {title: '下单用户昵称', field: 'userName', visible: true, align: 'center', valign: 'middle'},
        {title: '下单用户手机', field: 'userPhone', visible: true, align: 'center', valign: 'middle'},
        {title: '起点地址', field: 'startAddress', visible: true, align: 'center', valign: 'middle'},
        {title: '终点地址', field: 'endAddress', visible: true, align: 'center', valign: 'middle'},
        {title: '接单司机', field: 'driverName', visible: true, align: 'center', valign: 'middle'},
        {title: '司机电话', field: 'driverPhone', visible: true, align: 'center', valign: 'middle'},
            {title: '订单id', field: 'orderId', visible: false, align: 'center', valign: 'middle'},
            {title: '用户类型(1=用户,2=司机)', field: 'userType', visible: false, align: 'center', valign: 'middle'},
            {title: '用户id', field: 'userId', visible: false, align: 'center', valign: 'middle'},
            {title: '转单原因', field: 'cause', visible: true, align: 'center', valign: 'middle'},
            {title: '状态(1=正常,2=冻结,3=删除)', field: 'status', visible: false, align: 'center', valign: 'middle'},
            {title: '取消时间', field: 'createTime', visible: true, align: 'center', valign: 'middle'},
        {title: '操作', visible: true, align: 'center', valign: 'middle',width:150,
            formatter: function (value, row) {
                return '<a href="#" onclick="TCancelOrder.searchTCancelOrderDetail('+row.id+')" style="color:green">详情</a>'
            }
        }
    ];
};
/**
 * 检查是否选中
 */
TCancelOrder.check = function () {
    var selected = $('#' + this.id).bootstrapTable('getSelections');
    if(selected.length == 0){
        Feng.info("请先选中表格中的某一记录!");
        return false;
    }else{
        TCancelOrder.seItem = selected[0];
        return true;
    }
};
/**
 * 点击添加
 */
TCancelOrder.openAddTCancelOrder = function () {
    var index = layer.open({
        type: 2,
        title: '添加',
        area: ['800px', '420px'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tCancelOrder/tCancelOrder_add'
    });
    this.layerIndex = index;
};
/**
 * 打开查看详情
 */
TCancelOrder.openTCancelOrderDetail = function () {
    if (this.check()) {
        var index = layer.open({
            type: 2,
            title: '详情',
            area: ['800px', '420px'], //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/tCancelOrder/tCancelOrder_update/' + TCancelOrder.seItem.id
        });
        this.layerIndex = index;
    }
};
/**
 * 打开查看详情(使用中)
 */
TCancelOrder.searchTCancelOrderDetail = function (id) {
    var index = layer.open({
        type: 2,
        title: '详情',
        area: ['100%', '100%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tCancelOrder/cancelOrderDetail?cancelOrderId=' + id
    });
    this.layerIndex = index;
};
/**
 * 删除
 */
TCancelOrder.delete = function () {
    if (this.check()) {
        var ajax = new $ax(Feng.ctxPath + "/tCancelOrder/delete", function (data) {
            Feng.success("删除成功!");
            TCancelOrder.table.refresh();
        }, function (data) {
            Feng.error("删除失败!" + data.responseJSON.message + "!");
        });
        ajax.set("tCancelOrderId",this.seItem.id);
        ajax.start();
    }
};
/**
 * 取消订单信息导出
 */
TCancelOrder.export=function(){
    var createTime=$("#createTime").val()
    var code=$("#code").val()
    var source=$("#source").val()
    var userName=$("#userName").val()
    var userPhone=$("#userPhone").val()
    var state=$("#state").val()
    var driverName=$("#driverName").val()
    window.location.href=Feng.ctxPath + "/tCancelOrder/export?createTime="+createTime
        +"&code="+code
        +"&source="+source
        +"&userName="+userName
        +"&userPhone="+userPhone
        +"&state="+state
        +"&driverName="+driverName
    ;
}
/**
 * 查询列表
 */
TCancelOrder.search = function () {
    var queryData = {};
    queryData['createTime'] = $("#createTime").val();
    queryData['code'] = $("#code").val();
    queryData['source'] = $("#source").val();
    queryData['userName'] = $("#userName").val();
    queryData['userPhone'] = $("#userPhone").val();
    queryData['state'] = $("#state").val();
    queryData['driverName'] = $("#driverName").val();
    TCancelOrder.table.refresh({query: queryData});
};
/**
 * 重置
 */
TCancelOrder.resetSearch = function (){
    $("#createTime").val('');
    $("#code").val('');
    $("#source").val('');
    $("#userName").val('');
    $("#userPhone").val('');
    $("#state").val('');
    $("#driverName").val('');
    TCancelOrder.search();
}
$(function () {
    var defaultColunms = TCancelOrder.initColumn();
    var table = new BSTable(TCancelOrder.id, "/tCancelOrder/cancelOrderList", defaultColunms);
    table.setPaginationType("client");
    TCancelOrder.table = table.init();
});
management/guns-admin/src/main/webapp/static/modular/system/tOrder/tOrder.js
@@ -14,32 +14,76 @@
TOrder.initColumn = function () {
    return [
        {field: 'selectItem', radio: true},
            {title: '主键', field: 'id', visible: true, align: 'center', valign: 'middle'},
            {title: '编号', field: 'code', visible: true, align: 'center', valign: 'middle'},
            {title: '用户id', field: 'userId', visible: true, align: 'center', valign: 'middle'},
            {title: '司机id', field: 'driverId', visible: true, align: 'center', valign: 'middle'},
            {title: '订单来源(1=小程序)', field: 'source', visible: true, align: 'center', valign: 'middle'},
            {title: '代理商id', field: 'agentId', visible: true, align: 'center', valign: 'middle'},
            {title: '分公司id', field: 'branchOfficeId', visible: true, align: 'center', valign: 'middle'},
            {title: '开始服务时间', field: 'startTime', visible: true, align: 'center', valign: 'middle'},
            {title: '起点地址', field: 'startAddress', visible: true, align: 'center', valign: 'middle'},
            {title: '起点纬度', field: 'startLat', visible: true, align: 'center', valign: 'middle'},
            {title: '起点经度', field: 'startLng', visible: true, align: 'center', valign: 'middle'},
            {title: '终点地址', field: 'endAddress', visible: true, align: 'center', valign: 'middle'},
            {title: '终点纬度', field: 'endLat', visible: true, align: 'center', valign: 'middle'},
            {title: '终点经度', field: 'endLng', visible: true, align: 'center', valign: 'middle'},
            {title: '上车时间', field: 'boardingTime', visible: true, align: 'center', valign: 'middle'},
            {title: '下车时间', field: 'getoffTime', visible: true, align: 'center', valign: 'middle'},
            {title: '预估价', field: 'estimatedPrice', visible: true, align: 'center', valign: 'middle'},
            {title: '订单金额', field: 'orderMoney', visible: true, align: 'center', valign: 'middle'},
            {title: '支付金额', field: 'payMoney', visible: true, align: 'center', valign: 'middle'},
            {title: '优惠金额', field: 'discountedPrice', visible: true, align: 'center', valign: 'middle'},
            {title: '优惠券id', field: 'couponId', visible: true, align: 'center', valign: 'middle'},
            {title: '支付类型(1=线上)', field: 'payType', visible: true, align: 'center', valign: 'middle'},
            {title: '支付时间', field: 'payTime', visible: true, align: 'center', valign: 'middle'},
            {title: '订单状态(1=待接单,2=已接单,3=)', field: 'state', visible: true, align: 'center', valign: 'middle'},
            {title: '状态(1=正常,2=冻结,3=删除)', field: 'status', visible: true, align: 'center', valign: 'middle'},
            {title: '添加时间', field: 'createTime', visible: true, align: 'center', valign: 'middle'}
            {title: '主键', field: 'id', visible: false, align: 'center', valign: 'middle'},
        {title: '下单时间', field: 'createTime', visible: true, align: 'center', valign: 'middle'},
        {title: '订单编号', field: 'code', visible: true, align: 'center', valign: 'middle'},
        {title: '订单来源', field: 'source', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                if (row.source === 1){
                    return '<span>小程序</span>'
                }else if (row.source === 2){
                    return '<span>司机创建</span>'
                }
            }},
        {title: '开始服务时间', field: 'startTime', visible: true, align: 'center', valign: 'middle'},
        {title: '用户id', field: 'userId', visible: false, align: 'center', valign: 'middle'},
        {title: '下单用户昵称', field: 'userName', visible: true, align: 'center', valign: 'middle'},
        {title: '下单用户手机', field: 'userPhone', visible: true, align: 'center', valign: 'middle'},
        {title: '起点地址', field: 'startAddress', visible: true, align: 'center', valign: 'middle'},
        {title: '起点纬度', field: 'startLat', visible: false, align: 'center', valign: 'middle'},
        {title: '起点经度', field: 'startLng', visible: false, align: 'center', valign: 'middle'},
        {title: '终点地址', field: 'endAddress', visible: true, align: 'center', valign: 'middle'},
        {title: '终点纬度', field: 'endLat', visible: false, align: 'center', valign: 'middle'},
        {title: '终点经度', field: 'endLng', visible: false, align: 'center', valign: 'middle'},
        {title: '司机id', field: 'driverId', visible: false, align: 'center', valign: 'middle'},
        {title: '接单司机', field: 'driverName', visible: true, align: 'center', valign: 'middle'},
        {title: '司机电话', field: 'driverPhone', visible: true, align: 'center', valign: 'middle'},
        {title: '预估价', field: 'estimatedPrice', visible: true, align: 'center', valign: 'middle'},
        {title: '代理商id', field: 'agentId', visible: false, align: 'center', valign: 'middle'},
        {title: '分公司id', field: 'branchOfficeId', visible: false, align: 'center', valign: 'middle'},
        {title: '上车时间', field: 'boardingTime', visible: false, align: 'center', valign: 'middle'},
        {title: '下车时间', field: 'getoffTime', visible: false, align: 'center', valign: 'middle'},
        {title: '订单金额', field: 'orderMoney', visible: false, align: 'center', valign: 'middle'},
        {title: '支付金额', field: 'payMoney', visible: false, align: 'center', valign: 'middle'},
        {title: '优惠金额', field: 'discountedPrice', visible: false, align: 'center', valign: 'middle'},
        {title: '优惠券id', field: 'couponId', visible: false, align: 'center', valign: 'middle'},
        {title: '支付类型', field: 'payType', visible: false, align: 'center', valign: 'middle'},
        {title: '支付时间', field: 'payTime', visible: false, align: 'center', valign: 'middle'},
        {title: '取消次数', field: 'cancelCount', visible: true, align: 'center', valign: 'middle'},
        {title: '订单状态', field: 'state', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                if (row.state === 101){
                    return '<span>待接单</span>'
                }else if (row.state === 102){
                    return '<span>已接单</span>'
                }else if (row.state === 103){
                    return '<span>前往预约点</span>'
                }else if (row.state === 104){
                    return '<span>到达预约点</span>'
                }else if (row.state === 105){
                    return '<span>开始服务</span>'
                }else if (row.state === 106){
                    return '<span>到达目的地</span>'
                }else if (row.state === 107){
                    return '<span>待支付</span>'
                }else if (row.state === 108){
                    return '<span>待评价</span>'
                }else if (row.state === 109){
                    return '<span>已完成</span>'
                }else if (row.state === 201){
                    return '<span>转单中</span>'
                }else if (row.state === 301){
                    return '<span>已取消</span>'
                }else if (row.state === 401){
                    return '<span>等待中</span>'
                }
            }},
        {title: '状态', field: 'status', visible: false, align: 'center', valign: 'middle'},
        {title: '操作', visible: true, align: 'center', valign: 'middle',width:150,
            formatter: function (value, row) {
                return '<a href="#" onclick="TOrder.searchTOrderDetail('+row.id+')" style="color:green">详情</a>'
            }
        }
    ];
};
@@ -90,6 +134,21 @@
};
/**
 * 打开查看详情(使用中)
 */
TOrder.searchTOrderDetail = function (id) {
    var index = layer.open({
        type: 2,
        title: '详情',
        area: ['100%', '100%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tOrder/orderDetail?orderId=' + id
    });
    this.layerIndex = index;
};
/**
 * 删除
 */
TOrder.delete = function () {
@@ -106,17 +165,88 @@
};
/**
 * 订单信息导出
 */
TOrder.export=function(){
    var createTime=$("#createTime").val()
    var code=$("#code").val()
    var source=$("#source").val()
    var userName=$("#userName").val()
    var userPhone=$("#userPhone").val()
    var state=$("#state").val()
    var driverName=$("#driverName").val()
    window.location.href=Feng.ctxPath + "/tOrder/export?createTime="+createTime
        +"&code="+code
        +"&source="+source
        +"&userName="+userName
        +"&userPhone="+userPhone
        +"&state="+state
        +"&driverName="+driverName
    ;
}
/**
 * 订单异常页面
 */
TOrder.tOrderException = function () {
    var index = layer.open({
        type: 2,
        title: '异常',
        area: ['100%', '100%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tOrder/tOrder-exception'
    });
    this.layerIndex = index;
};
/**
 * 取消订单页面
 */
TOrder.cancelOrder = function () {
    var index = layer.open({
        type: 2,
        title: '取消订单',
        area: ['100%', '100%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tOrder/cancelOrder'
    });
    this.layerIndex = index;
};
/**
 * 查询列表
 */
TOrder.search = function () {
    var queryData = {};
    queryData['condition'] = $("#condition").val();
    queryData['createTime'] = $("#createTime").val();
    queryData['code'] = $("#code").val();
    queryData['source'] = $("#source").val();
    queryData['userName'] = $("#userName").val();
    queryData['userPhone'] = $("#userPhone").val();
    queryData['state'] = $("#state").val();
    queryData['driverName'] = $("#driverName").val();
    TOrder.table.refresh({query: queryData});
};
/**
 * 重置
 */
TOrder.resetSearch = function (){
    $("#createTime").val('');
    $("#code").val('');
    $("#source").val('');
    $("#userName").val('');
    $("#userPhone").val('');
    $("#state").val('');
    $("#driverName").val('');
    TOrder.search();
}
$(function () {
    var defaultColunms = TOrder.initColumn();
    var table = new BSTable(TOrder.id, "/tOrder/list", defaultColunms);
    var table = new BSTable(TOrder.id, "/tOrder/orderList", defaultColunms);
    table.setPaginationType("client");
    TOrder.table = table.init();
});
management/guns-admin/src/main/webapp/static/modular/system/tOrder/tOrderException.js
New file
@@ -0,0 +1,295 @@
/**
 * 管理初始化
 */
var TOrderException = {
    id: "TOrderExceptionTable",    //表格id
    seItem: null,        //选中的条目
    table: null,
    layerIndex: -1
};
/**
 * 初始化表格的列
 */
TOrderException.initColumn = function () {
    return [
        {field: 'selectItem', radio: true},
            {title: '主键', field: 'id', visible: false, align: 'center', valign: 'middle'},
        {title: '下单时间', field: 'createTime', visible: true, align: 'center', valign: 'middle'},
        {title: '订单编号', field: 'code', visible: true, align: 'center', valign: 'middle'},
        {title: '订单来源', field: 'source', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                if (row.source === 1){
                    return '<span>小程序</span>'
                }else if (row.source === 2){
                    return '<span>司机创建</span>'
                }
            }},
        {title: '开始服务时间', field: 'startTime', visible: true, align: 'center', valign: 'middle'},
        {title: '用户id', field: 'userId', visible: false, align: 'center', valign: 'middle'},
        {title: '下单用户昵称', field: 'userName', visible: true, align: 'center', valign: 'middle'},
        {title: '下单用户手机', field: 'userPhone', visible: true, align: 'center', valign: 'middle'},
        {title: '起点地址', field: 'startAddress', visible: true, align: 'center', valign: 'middle'},
        {title: '起点纬度', field: 'startLat', visible: false, align: 'center', valign: 'middle'},
        {title: '起点经度', field: 'startLng', visible: false, align: 'center', valign: 'middle'},
        {title: '终点地址', field: 'endAddress', visible: true, align: 'center', valign: 'middle'},
        {title: '终点纬度', field: 'endLat', visible: false, align: 'center', valign: 'middle'},
        {title: '终点经度', field: 'endLng', visible: false, align: 'center', valign: 'middle'},
        {title: '司机id', field: 'driverId', visible: false, align: 'center', valign: 'middle'},
        {title: '接单司机', field: 'driverName', visible: true, align: 'center', valign: 'middle'},
        {title: '司机电话', field: 'driverPhone', visible: true, align: 'center', valign: 'middle'},
        {title: '预估价', field: 'estimatedPrice', visible: true, align: 'center', valign: 'middle'},
        {title: '代理商id', field: 'agentId', visible: false, align: 'center', valign: 'middle'},
        {title: '分公司id', field: 'branchOfficeId', visible: false, align: 'center', valign: 'middle'},
        {title: '上车时间', field: 'boardingTime', visible: false, align: 'center', valign: 'middle'},
        {title: '下车时间', field: 'getoffTime', visible: false, align: 'center', valign: 'middle'},
        {title: '订单金额', field: 'orderMoney', visible: false, align: 'center', valign: 'middle'},
        {title: '支付金额', field: 'payMoney', visible: false, align: 'center', valign: 'middle'},
        {title: '优惠金额', field: 'discountedPrice', visible: false, align: 'center', valign: 'middle'},
        {title: '优惠券id', field: 'couponId', visible: false, align: 'center', valign: 'middle'},
        {title: '支付类型', field: 'payType', visible: false, align: 'center', valign: 'middle'},
        {title: '支付时间', field: 'payTime', visible: false, align: 'center', valign: 'middle'},
        {title: '取消次数', field: 'cancelCount', visible: true, align: 'center', valign: 'middle'},
        {title: '订单状态', field: 'state', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                if (row.state === 101){
                    return '<span>待接单</span>'
                }else if (row.state === 102){
                    return '<span>已接单</span>'
                }else if (row.state === 103){
                    return '<span>前往预约点</span>'
                }else if (row.state === 104){
                    return '<span>到达预约点</span>'
                }else if (row.state === 105){
                    return '<span>开始服务</span>'
                }else if (row.state === 106){
                    return '<span>到达目的地</span>'
                }else if (row.state === 107){
                    return '<span>待支付</span>'
                }else if (row.state === 108){
                    return '<span>待评价</span>'
                }else if (row.state === 109){
                    return '<span>已完成</span>'
                }else if (row.state === 201){
                    return '<span>转单中</span>'
                }else if (row.state === 301){
                    return '<span>已取消</span>'
                }else if (row.state === 401){
                    return '<span>等待中</span>'
                }
            }},
        {title: '状态', field: 'status', visible: false, align: 'center', valign: 'middle'},
        {title: '操作', visible: true, align: 'center', valign: 'middle',width:150,
            formatter: function (value, row) {
                if (row.userStatus === 1){
                    return '<a href="#" onclick="TOrderException.searchTOrderExceptionDetail('+row.id+')" style="color:green">详情</a>' +'&nbsp;' +
                        '<a href="#" onclick="TOrderException.stop('+row.id+','+row.status+')" style="color:red">冻结</a>'
                }else if (row.userStatus === 2){
                    return '<a href="#" onclick="TOrderException.searchTOrderExceptionDetail('+row.id+')" style="color:green">详情</a>' +'&nbsp;' +
                        '<a href="#" onclick="TOrderException.start('+row.id+','+row.status+')" style="color:green">启用</a>'
                }
            }
        }
    ];
};
/**
 * 检查是否选中
 */
TOrderException.check = function () {
    var selected = $('#' + this.id).bootstrapTable('getSelections');
    if(selected.length == 0){
        Feng.info("请先选中表格中的某一记录!");
        return false;
    }else{
        TOrderException.seItem = selected[0];
        return true;
    }
};
/**
 * 点击添加
 */
TOrderException.openAddTOrder = function () {
    var index = layer.open({
        type: 2,
        title: '添加',
        area: ['800px', '420px'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tOrder/tOrder_add'
    });
    this.layerIndex = index;
};
/**
 * 打开查看详情
 */
TOrderException.openTOrderDetail = function () {
    if (this.check()) {
        var index = layer.open({
            type: 2,
            title: '详情',
            area: ['800px', '420px'], //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/tOrder/tOrder_update/' + TOrderException.seItem.id
        });
        this.layerIndex = index;
    }
};
/**
 * 打开查看详情(使用中)
 */
TOrderException.searchTOrderExceptionDetail = function (id) {
    var index = layer.open({
        type: 2,
        title: '详情',
        area: ['100%', '100%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tOrder/orderExceptionDetail?orderId=' + id
    });
    this.layerIndex = index;
};
/**
 * 删除
 */
TOrderException.delete = function () {
    if (this.check()) {
        var ajax = new $ax(Feng.ctxPath + "/tOrder/delete", function (data) {
            Feng.success("删除成功!");
            TOrderException.table.refresh();
        }, function (data) {
            Feng.error("删除失败!" + data.responseJSON.message + "!");
        });
        ajax.set("tOrderId",this.seItem.id);
        ajax.start();
    }
};
/**
 * 司机信息导出
 */
TOrderException.export=function(){
    var createTime=$("#createTime").val()
    var code=$("#code").val()
    var source=$("#source").val()
    var userName=$("#userName").val()
    var userPhone=$("#userPhone").val()
    var state=$("#state").val()
    var driverName=$("#driverName").val()
    window.location.href=Feng.ctxPath + "/tOrder/export-exception?createTime="+createTime
        +"&code="+code
        +"&source="+source
        +"&userName="+userName
        +"&userPhone="+userPhone
        +"&state="+state
        +"&driverName="+driverName
    ;
}
/**
 * 停用
 */
TOrderException.stop = function (id) {
    var index = layer.open({
        type: 2,
        title: '停用',
        area: ['45%', '50%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tOrder/tOrderException_start_and_stop?id='+id
    });
    this.layerIndex = index;
};
/**
 * 启动
 */
TOrderException.start = function (id) {
    var index = layer.open({
        type: 2,
        title: '启用',
        area: ['45%', '50%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tOrder/tOrderException_start_and_stop?id='+id
    });
    this.layerIndex = index;
};
/**
 * 提交启用冻结
 */
TOrderException.updateStatus = function () {
    var ajax = new $ax(Feng.ctxPath + "/tAppUser/update-status", function (data) {
        Feng.success("修改成功!");
        TOrderInfoDlg.closeException();
        parent.TOrderException.table.refresh();
    }, function (data) {
        Feng.error("修改失败!" + data.responseJSON.message + "!");
    });
    ajax.set("id",$("#id").val());
    ajax.set("status",$("#status").val());
    if($("#status").val() == 1){
        ajax.set("remark",$("#stopRemark").val());
    }
    if($("#status").val() == 2){
        ajax.set("remark",$("#startRemark").val());
    }
    ajax.start();
};
/**
 * 取消订单页面
 */
TOrderException.cancelOrder = function () {
    var index = layer.open({
        type: 2,
        title: '取消订单',
        area: ['100%', '100%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tOrder/cancelOrder'
    });
    this.layerIndex = index;
};
/**
 * 查询列表
 */
TOrderException.search = function () {
    var queryData = {};
    queryData['createTime'] = $("#createTime").val();
    queryData['code'] = $("#code").val();
    queryData['source'] = $("#source").val();
    queryData['userName'] = $("#userName").val();
    queryData['userPhone'] = $("#userPhone").val();
    queryData['state'] = $("#state").val();
    queryData['driverName'] = $("#driverName").val();
    TOrderException.table.refresh({query: queryData});
};
/**
 * 重置
 */
TOrderException.resetSearch = function (){
    $("#createTime").val('');
    $("#code").val('');
    $("#source").val('');
    $("#userName").val('');
    $("#userPhone").val('');
    $("#state").val('');
    $("#driverName").val('');
    TOrderException.search();
}
$(function () {
    var defaultColunms = TOrderException.initColumn();
    var table = new BSTable(TOrderException.id, "/tOrder/orderExceptionList", defaultColunms);
    table.setPaginationType("client");
    TOrderException.table = table.init();
});
management/guns-admin/src/main/webapp/static/modular/system/tOrder/tOrderExceptionDetailCancelOrder.js
New file
@@ -0,0 +1,137 @@
/**
 * 管理初始化
 */
var TOrderExceptionDetailCancelOrder = {
    id: "TOrderExceptionDetailCancelOrderTable",    //表格id
    seItem: null,        //选中的条目
    table: null,
    layerIndex: -1
};
/**
 * 初始化表格的列
 */
TOrderExceptionDetailCancelOrder.initColumn = function () {
    return [
        {field: 'selectItem', radio: true},
            {title: '主键', field: 'id', visible: false, align: 'center', valign: 'middle'},
        {title: '下单时间', field: 'placeTime', visible: false, align: 'center', valign: 'middle'},
        {title: '取消时间', field: 'createTime', visible: true, align: 'center', valign: 'middle'},
        {title: '订单编号', field: 'code', visible: true, align: 'center', valign: 'middle'},
        {title: '订单来源', field: 'source', visible: false, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                if (row.source === 1){
                    return '<span>小程序</span>'
                }else if (row.source === 2){
                    return '<span>司机创建</span>'
                }
            }},
        {title: '下单用户昵称', field: 'userName', visible: false, align: 'center', valign: 'middle'},
        {title: '下单用户手机', field: 'userPhone', visible: false, align: 'center', valign: 'middle'},
        {title: '起点地址', field: 'startAddress', visible: true, align: 'center', valign: 'middle'},
        {title: '终点地址', field: 'endAddress', visible: true, align: 'center', valign: 'middle'},
        {title: '接单司机', field: 'driverName', visible: false, align: 'center', valign: 'middle'},
        {title: '司机电话', field: 'driverPhone', visible: false, align: 'center', valign: 'middle'},
        {title: '订单id', field: 'orderId', visible: false, align: 'center', valign: 'middle'},
        {title: '用户类型(1=用户,2=司机)', field: 'userType', visible: false, align: 'center', valign: 'middle'},
        {title: '用户id', field: 'userId', visible: false, align: 'center', valign: 'middle'},
        {title: '转单原因', field: 'cause', visible: false, align: 'center', valign: 'middle'},
        {title: '状态(1=正常,2=冻结,3=删除)', field: 'status', visible: false, align: 'center', valign: 'middle'},
    ];
};
/**
 * 检查是否选中
 */
TOrderExceptionDetailCancelOrder.check = function () {
    var selected = $('#' + this.id).bootstrapTable('getSelections');
    if(selected.length == 0){
        Feng.info("请先选中表格中的某一记录!");
        return false;
    }else{
        TOrderExceptionDetailCancelOrder.seItem = selected[0];
        return true;
    }
};
/**
 * 点击添加
 */
TOrderExceptionDetailCancelOrder.openAddTCancelOrder = function () {
    var index = layer.open({
        type: 2,
        title: '添加',
        area: ['800px', '420px'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tCancelOrder/tCancelOrder_add'
    });
    this.layerIndex = index;
};
/**
 * 打开查看详情
 */
TOrderExceptionDetailCancelOrder.openTCancelOrderDetail = function () {
    if (this.check()) {
        var index = layer.open({
            type: 2,
            title: '详情',
            area: ['800px', '420px'], //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/tCancelOrder/tCancelOrder_update/' + TCancelOrder.seItem.id
        });
        this.layerIndex = index;
    }
};
/**
 * 打开查看详情(使用中)
 */
TOrderExceptionDetailCancelOrder.searchTCancelOrderDetail = function (id) {
    var index = layer.open({
        type: 2,
        title: '详情',
        area: ['100%', '100%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tCancelOrder/cancelOrderDetail?cancelOrderId=' + id
    });
    this.layerIndex = index;
};
/**
 * 删除
 */
TOrderExceptionDetailCancelOrder.delete = function () {
    if (this.check()) {
        var ajax = new $ax(Feng.ctxPath + "/tCancelOrder/delete", function (data) {
            Feng.success("删除成功!");
            TCancelOrder.table.refresh();
        }, function (data) {
            Feng.error("删除失败!" + data.responseJSON.message + "!");
        });
        ajax.set("tCancelOrderId",this.seItem.id);
        ajax.start();
    }
};
/**
 * 查询列表
 */
/*TOrderExceptionDetailCancelOrder.search = function () {
    var queryData = {};
    queryData['userId'] = $("#userId").val();
    queryData['orderId'] = $("#orderId").val();
    TOrderExceptionDetailCancelOrder.table.refresh({query: queryData});
};*/
$(function () {
    var defaultColunms = TOrderExceptionDetailCancelOrder.initColumn();
    var table = new BSTable(TOrderExceptionDetailCancelOrder.id, "/tCancelOrder/userCancelOrderList", defaultColunms);
    table.setPaginationType("client");
    TOrderExceptionDetailCancelOrder.table = table.init();
});
management/guns-admin/src/main/webapp/static/modular/system/tOrder/tOrder_info.js
@@ -41,6 +41,13 @@
}
/**
 * 关闭此对话框
 */
TOrderInfoDlg.closeException = function() {
    parent.layer.close(window.parent.TOrderException.layerIndex);
}
/**
 * 收集数据
 */
TOrderInfoDlg.collectData = function() {
management/guns-admin/src/main/webapp/static/modular/system/tRechargeRecord/tRechargeRecordAgent.js
New file
@@ -0,0 +1,153 @@
/**
 * 管理初始化
 */
var TRechargeRecordAgent = {
    id: "TRechargeRecordAgentTable",    //表格id
    seItem: null,        //选中的条目
    table: null,
    layerIndex: -1
};
/**
 * 初始化表格的列
 */
TRechargeRecordAgent.initColumn = function () {
    return [
        {field: 'selectItem', radio: true},
            {title: '主键', field: 'id', visible: false, align: 'center', valign: 'middle'},
        {title: '完成支付时间', field: 'payTime', visible: false, align: 'center', valign: 'middle'},
        {title: '充值时间', field: 'createTime', visible: true, align: 'center', valign: 'middle'},
        {title: '代理商姓名', field: 'principal', visible: true, align: 'center', valign: 'middle'},
        {title: '联系电话', field: 'principalPhone', visible: true, align: 'center', valign: 'middle'},
        {title: '代理区域', field: 'area', visible: true, align: 'center', valign: 'middle'},
        {title: '三方流水号', field: 'orderNumber', visible: false, align: 'center', valign: 'middle'},
        {title: '数据类型(1=用户,2=司机)', field: 'type', visible: false, align: 'center', valign: 'middle'},
        {title: '司机id', field: 'userId', visible: false, align: 'center', valign: 'middle'},
        {title: '司机姓名', field: 'driverName', visible: true, align: 'center', valign: 'middle'},
        {title: '司机手机号', field: 'driverPhone', visible: true, align: 'center', valign: 'middle'},
        {title: '充值金额', field: 'amount', visible: true, align: 'center', valign: 'middle'},
        {title: '充值方式', field: 'payType', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                if (row.payType === 1){
                    return '<span>微信</span>'
                }else if (row.payType === 2){
                    return '<span>系统充值</span>'
                }else{
                    return '<span>其他</span>'
                }
            }
        },
        {title: '状态', field: 'payStatus', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                if (row.payStatus === 1){
                    return '<span>失败</span>'
                }else if (row.payStatus === 2){
                    return '<span>成功</span>'
                }
            }
        }
    ];
};
/**
 * 检查是否选中
 */
TRechargeRecordAgent.check = function () {
    var selected = $('#' + this.id).bootstrapTable('getSelections');
    if(selected.length == 0){
        Feng.info("请先选中表格中的某一记录!");
        return false;
    }else{
        TRechargeRecordAgent.seItem = selected[0];
        return true;
    }
};
/**
 * 点击添加
 */
TRechargeRecordAgent.openAddTRechargeRecord = function () {
    var index = layer.open({
        type: 2,
        title: '添加',
        area: ['800px', '420px'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tRechargeRecord/tRechargeRecord_add'
    });
    this.layerIndex = index;
};
/**
 * 打开查看详情
 */
TRechargeRecordAgent.openTRechargeRecordDetail = function () {
    if (this.check()) {
        var index = layer.open({
            type: 2,
            title: '详情',
            area: ['800px', '420px'], //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/tRechargeRecord/tRechargeRecord_update/' + TRechargeRecordAgent.seItem.id
        });
        this.layerIndex = index;
    }
};
/**
 * 删除
 */
TRechargeRecordAgent.delete = function () {
    if (this.check()) {
        var ajax = new $ax(Feng.ctxPath + "/tRechargeRecord/delete", function (data) {
            Feng.success("删除成功!");
            TRechargeRecordAgent.table.refresh();
        }, function (data) {
            Feng.error("删除失败!" + data.responseJSON.message + "!");
        });
        ajax.set("tRechargeRecordId",this.seItem.id);
        ajax.start();
    }
};
/**
 * 司机信息导出
 */
TRechargeRecordAgent.export=function(){
    var createTime=$("#createTime").val()
    var driverName=$("#driverName").val()
    var driverPhone=$("#driverPhone").val()
    window.location.href=Feng.ctxPath + "/tRechargeRecord/exportAgentRecharge?createTime="+createTime
        +"&driverName"+driverName
        +"&driverPhone="+driverPhone
    ;
}
/**
 * 查询列表
 */
TRechargeRecordAgent.search = function () {
    var queryData = {};
    queryData['driverName'] = $("#driverName").val();
    queryData['driverPhone'] = $("#driverPhone").val();
    queryData['createTime'] = $("#createTime").val();
    TRechargeRecordAgent.table.refresh({query: queryData});
};
/**
 * 重置
 */
TRechargeRecordAgent.resetSearch = function (){
    $("#createTime").val('');
    $("#driverName").val('');
    $("#driverPhone").val('');
    TRechargeRecordAgent.search();
}
$(function () {
    var defaultColunms = TRechargeRecordAgent.initColumn();
    var table = new BSTable(TRechargeRecordAgent.id, "/tRechargeRecord/agentRechargeList", defaultColunms);
    table.setPaginationType("client");
    TRechargeRecordAgent.table = table.init();
});
management/guns-admin/src/main/webapp/static/modular/system/tRechargeRecord/tRechargeRecordUser.js
New file
@@ -0,0 +1,155 @@
/**
 * 管理初始化
 */
var TRechargeRecordUser = {
    id: "TRechargeRecordUserTable",    //表格id
    seItem: null,        //选中的条目
    table: null,
    layerIndex: -1
};
/**
 * 初始化表格的列
 */
TRechargeRecordUser.initColumn = function () {
    return [
        {field: 'selectItem', radio: true},
            {title: '主键', field: 'id', visible: false, align: 'center', valign: 'middle'},
        {title: '完成支付时间', field: 'payTime', visible: false, align: 'center', valign: 'middle'},
        {title: '充值时间', field: 'createTime', visible: true, align: 'center', valign: 'middle'},
        {title: '流水ID', field: 'code', visible: true, align: 'center', valign: 'middle'},
        {title: '三方流水号', field: 'orderNumber', visible: false, align: 'center', valign: 'middle'},
        {title: '数据类型(1=用户,2=司机)', field: 'type', visible: false, align: 'center', valign: 'middle'},
        {title: '用户id', field: 'userId', visible: false, align: 'center', valign: 'middle'},
        {title: '用户姓名', field: 'userName', visible: true, align: 'center', valign: 'middle'},
        {title: '用户手机号', field: 'userPhone', visible: true, align: 'center', valign: 'middle'},
        {title: '充值金额', field: 'amount', visible: true, align: 'center', valign: 'middle'},
        {title: '充值方式', field: 'payType', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                if (row.payType === 1){
                    return '<span>微信</span>'
                }else if (row.payType === 2){
                    return '<span>系统充值</span>'
                }else{
                    return '<span>其他</span>'
                }
            }
        },
        {title: '状态', field: 'payStatus', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                if (row.payStatus === 1){
                    return '<span>失败</span>'
                }else if (row.payStatus === 2){
                    return '<span>成功</span>'
                }
            }
        }
    ];
};
/**
 * 检查是否选中
 */
TRechargeRecordUser.check = function () {
    var selected = $('#' + this.id).bootstrapTable('getSelections');
    if(selected.length == 0){
        Feng.info("请先选中表格中的某一记录!");
        return false;
    }else{
        TRechargeRecordUser.seItem = selected[0];
        return true;
    }
};
/**
 * 点击添加
 */
TRechargeRecordUser.openAddTRechargeRecord = function () {
    var index = layer.open({
        type: 2,
        title: '添加',
        area: ['800px', '420px'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tRechargeRecord/tRechargeRecord_add'
    });
    this.layerIndex = index;
};
/**
 * 打开查看详情
 */
TRechargeRecordUser.openTRechargeRecordDetail = function () {
    if (this.check()) {
        var index = layer.open({
            type: 2,
            title: '详情',
            area: ['800px', '420px'], //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/tRechargeRecord/tRechargeRecord_update/' + TRechargeRecordUser.seItem.id
        });
        this.layerIndex = index;
    }
};
/**
 * 删除
 */
TRechargeRecordUser.delete = function () {
    if (this.check()) {
        var ajax = new $ax(Feng.ctxPath + "/tRechargeRecord/delete", function (data) {
            Feng.success("删除成功!");
            TRechargeRecordUser.table.refresh();
        }, function (data) {
            Feng.error("删除失败!" + data.responseJSON.message + "!");
        });
        ajax.set("tRechargeRecordId",this.seItem.id);
        ajax.start();
    }
};
/**
 * 司机信息导出
 */
TRechargeRecordUser.export=function(){
    var createTime=$("#createTime").val()
    var userName=$("#userName").val()
    var userPhone=$("#userPhone").val()
    var code=$("#code").val()
    window.location.href=Feng.ctxPath + "/tRechargeRecord/exportUserRecharge?createTime="+createTime
        +"&userName="+userName
        +"&userPhone="+userPhone
        +"&code="+code
    ;
}
/**
 * 查询列表
 */
TRechargeRecordUser.search = function () {
    var queryData = {};
    queryData['userName'] = $("#userName").val();
    queryData['userPhone'] = $("#userPhone").val();
    queryData['code'] = $("#code").val();
    queryData['createTime'] = $("#createTime").val();
    TRechargeRecordUser.table.refresh({query: queryData});
};
/**
 * 重置
 */
TRechargeRecordUser.resetSearch = function (){
    $("#createTime").val('');
    $("#userName").val('');
    $("#userPhone").val('');
    $("#code").val('');
    TRechargeRecordUser.search();
}
$(function () {
    var defaultColunms = TRechargeRecordUser.initColumn();
    var table = new BSTable(TRechargeRecordUser.id, "/tRechargeRecord/userRechargeList", defaultColunms);
    table.setPaginationType("client");
    TRechargeRecordUser.table = table.init();
});
management/guns-admin/src/main/webapp/static/modular/system/tSystemConfig/tSystemConfig.js
New file
@@ -0,0 +1,313 @@
/**
 * 管理初始化
 */
var TSystemConfig = {
    id: "TSystemConfigTable",    //表格id
    seItem: null,        //选中的条目
    table: null,
    layerIndex: -1
};
/**
 * 初始化表格的列
 */
TSystemConfig.initColumn = function () {
    return [
        {field: 'selectItem', radio: true},
            {title: '主键', field: 'id', visible: true, align: 'center', valign: 'middle'},
            {title: '类型(1=派单规则,2=佣金分成规则,3=抽成规则,4=积分规则,5=价格规则,6=余额规则,7=客服管理)', field: 'type', visible: true, align: 'center', valign: 'middle'},
            {title: '内容', field: 'content', visible: true, align: 'center', valign: 'middle'}
    ];
};
/**
 * 检查是否选中
 */
TSystemConfig.check = function () {
    var selected = $('#' + this.id).bootstrapTable('getSelections');
    if(selected.length == 0){
        Feng.info("请先选中表格中的某一记录!");
        return false;
    }else{
        TSystemConfig.seItem = selected[0];
        return true;
    }
};
/**
 * 点击添加
 */
TSystemConfig.openAddTSystemConfig = function () {
    var index = layer.open({
        type: 2,
        title: '添加',
        area: ['800px', '420px'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tSystemConfig/tSystemConfig_add'
    });
    this.layerIndex = index;
};
/**
 * 打开查看详情
 */
TSystemConfig.openTSystemConfigDetail = function () {
    if (this.check()) {
        var index = layer.open({
            type: 2,
            title: '详情',
            area: ['800px', '420px'], //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/tSystemConfig/tSystemConfig_update/' + TSystemConfig.seItem.id
        });
        this.layerIndex = index;
    }
};
/**
 * 删除
 */
TSystemConfig.delete = function () {
    if (this.check()) {
        var ajax = new $ax(Feng.ctxPath + "/tSystemConfig/delete", function (data) {
            Feng.success("删除成功!");
            TSystemConfig.table.refresh();
        }, function (data) {
            Feng.error("删除失败!" + data.responseJSON.message + "!");
        });
        ajax.set("tSystemConfigId",this.seItem.id);
        ajax.start();
    }
};
/**
 * 派单规则
 */
TSystemConfig.dispatchRulesSubmit = function () {
    var ajax = new $ax(Feng.ctxPath + "/tSystemConfig/systemConfigSubmit", function (data) {
        Feng.success("保存成功!");
        TSystemConfig.table.refresh();
    }, function (data) {
        Feng.error("保存失败!" + data.responseJSON.message + "!");
    });
    var reqData = {};
    reqData['num1'] = Number($("#num1").val());
    reqData['num2'] = Number($("#num2").val());
    reqData['num3'] = Number($("#num3").val());
    reqData['num4'] = Number($("#num4").val());
    reqData['num5'] = Number($("#num5").val());
    ajax.set("content",JSON.stringify(reqData));
    ajax.set("type",1);
    ajax.start();
};
/**
 * 佣金分成规则
 */
TSystemConfig.commissionShareRules = function () {
    var ajax = new $ax(Feng.ctxPath + "/tSystemConfig/systemConfigSubmit", function (data) {
        Feng.success("保存成功!");
        TSystemConfig.table.refresh();
    }, function (data) {
        Feng.error("保存失败!" + data.responseJSON.message + "!");
    });
    var reqData = {};
    reqData['num1'] = Number($("#num1").val());
    reqData['num2'] = Number($("#num2").val());
    reqData['num3'] = Number($("#num3").val());
    reqData['num4'] = Number($("#num4").val());
    reqData['num5'] = Number($("#num5").val());
    reqData['num6'] = Number($("#num6").val());
    reqData['num7'] = Number($("#num7").val());
    ajax.set("content",JSON.stringify(reqData));
    ajax.set("type",2);
    ajax.start();
};
/**
 * 抽成规则
 */
TSystemConfig.extractionRulesSubmit = function () {
    var ajax = new $ax(Feng.ctxPath + "/tSystemConfig/systemConfigSubmit", function (data) {
        Feng.success("保存成功!");
        TSystemConfig.table.refresh();
    }, function (data) {
        Feng.error("保存失败!" + data.responseJSON.message + "!");
    });
    var reqData = {};
    reqData['num1'] = Number($("#num1").val());
    reqData['num2'] = Number($("#num2").val());
    reqData['num3'] = Number($("#num3").val());
    ajax.set("content",JSON.stringify(reqData));
    ajax.set("type",3);
    ajax.start();
};
/**
 * 积分规则
 */
TSystemConfig.integralRulesSubmit = function () {
    var ajax = new $ax(Feng.ctxPath + "/tSystemConfig/systemConfigSubmit", function (data) {
        Feng.success("保存成功!");
        TSystemConfig.table.refresh();
    }, function (data) {
        Feng.error("保存失败!" + data.responseJSON.message + "!");
    });
    var reqData = {};
    reqData['num1'] = $("#num1").val();
    reqData['num2'] = $("#num2").val();
    reqData['num3'] = Number($("#num3").val());
    reqData['num4'] = Number($("#num4").val());
    reqData['num5'] = Number($("#num5").val());
    reqData['num6'] = Number($("#num6").val());
    reqData['num7'] = Number($("#num7").val());
    reqData['num8'] = Number($("#num8").val());
    reqData['num9'] = Number($("#num9").val());
    reqData['num10'] = Number($("#num10").val());
    ajax.set("content",JSON.stringify(reqData));
    ajax.set("type",4);
    ajax.start();
};
/**
 * 价格规则
 */
TSystemConfig.priceRulesSubmit = function () {
    var ajax = new $ax(Feng.ctxPath + "/tSystemConfig/systemConfigSubmit", function (data) {
        Feng.success("保存成功!");
        TSystemConfig.table.refresh();
    }, function (data) {
        Feng.error("保存失败!" + data.responseJSON.message + "!");
    });
    var json1=[];
    for (let i = 0; i < $('input[name="num1"]').length; i++) {
        var arr = {}
        arr['num1'] = $($('input[name="num1"]')[i]).val();
        arr['num2'] = $($('input[name="num2"]')[i]).val();
        arr['num3'] = Number($($('input[name="num3"]')[i]).val());
        arr['num4'] = Number($($('input[name="num4"]')[i]).val());
        arr['num5'] = Number($($('input[name="num5"]')[i]).val());
        arr['num6'] = Number($($('input[name="num6"]')[i]).val());
        arr['num7'] = Number($($('input[name="num7"]')[i]).val());
        arr['num8'] = Number($($('input[name="num8"]')[i]).val());
        arr['num9'] = Number($($('input[name="num9"]')[i]).val());
        arr['num10'] = Number($($('input[name="num10"]')[i]).val());
        arr['num11'] = Number($($('input[name="num11"]')[i]).val());
        arr['num12'] = Number($($('input[name="num12"]')[i]).val());
        json1.push(arr)
    }
    var ExtraCost = {};
    ExtraCost['num1'] = Number($('#num13').val());
    ExtraCost['num2'] = Number($('#num14').val());
    ExtraCost['num3'] = Number($('#num15').val());
    ExtraCost['num4'] = Number($('#num16').val());
    ExtraCost['num5'] = Number($('#num17').val());
    ExtraCost['num6'] = Number($('#num18').val());
    ExtraCost['num7'] = Number($('#num19').val());
    ExtraCost['num8'] = Number($('#num20').val());
    ExtraCost['num9'] = Number($('#num21').val());
    var reqData = {};
    reqData['ChargeStandard'] = json1;
    reqData['ExtraCost'] = ExtraCost;
    ajax.set("content",JSON.stringify(reqData));
    ajax.set("type",5);
    ajax.start();
};
/**
 * 余额规则
 */
TSystemConfig.balanceRulesSubmit = function () {
    var ajax = new $ax(Feng.ctxPath + "/tSystemConfig/systemConfigSubmit", function (data) {
        Feng.success("保存成功!");
        TSystemConfig.table.refresh();
    }, function (data) {
        Feng.error("保存失败!" + data.responseJSON.message + "!");
    });
    var reqData = {};
    reqData['num1'] = Number($("#num1").val());
    reqData['num2'] = Number($("#num2").val());
    ajax.set("content",JSON.stringify(reqData));
    ajax.set("type",6);
    ajax.start();
};
/**
 * 客服管理
 */
TSystemConfig.serviceMgmtSubmit = function () {
    var ajax = new $ax(Feng.ctxPath + "/tSystemConfig/systemConfigSubmit", function (data) {
        Feng.success("保存成功!");
        TSystemConfig.table.refresh();
    }, function (data) {
        Feng.error("保存失败!" + data.responseJSON.message + "!");
    });
    var reqData = {};
    reqData['num1'] = $("#num1").val();
    ajax.set("content",JSON.stringify(reqData));
    ajax.set("type",7);
    ajax.start();
};
TSystemConfig.addBox = function (){
    var i = $('input[name="num1"]').length + 1;
    var a ="<div>\n" +
        "                                <div class=\"initialLevel col-sm-12 control-label form-group\"  >\n" +
        "                                    <span class=\"control-label\" >时间段</span>\n" +
        "                                    <input class=\"control-label\" id=\"num1-"+i+"\" name=\"num1\" type=\"text\" placeholder=\"00:00\" style=\"height: 30px;width: 80px\">\n" +
        "                                    <span class=\"control-label\" >——</span>\n" +
        "                                    <input class=\"control-label\" id=\"num2-"+i+"\" name=\"num2\" type=\"text\" placeholder=\"00:00\" style=\"height: 30px;width: 80px\">\n" +
        "                                    <span class=\"control-label\" >代驾里程</span>\n" +
        "                                    <input class=\"control-label\" id=\"num3-"+i+"\" name=\"num3\" type=\"number\" style=\"height: 30px;width: 80px\">\n" +
        "                                    <span class=\"control-label\" >——</span>\n" +
        "                                    <input class=\"control-label\" id=\"num4-"+i+"\" name=\"num4\" type=\"number\" style=\"height: 30px;width: 80px\">\n" +
        "                                    <span class=\"control-label\" >公里,起步价</span>\n" +
        "                                    <input class=\"control-label\" id=\"num5-"+i+"\" name=\"num5\" type=\"number\" style=\"height: 30px;width: 80px\">\n" +
        "                                    <span class=\"control-label\" >元,超出里程每</span>\n" +
        "                                    <input class=\"control-label\" id=\"num6-"+i+"\" name=\"num6\" type=\"number\" style=\"height: 30px;width: 80px\">\n" +
        "                                    <span class=\"control-label\" >公里,收费</span>\n" +
        "                                    <input class=\"control-label\" id=\"num7-"+i+"\" name=\"num7\" type=\"number\" style=\"height: 30px;width: 80px\">\n" +
        "                                    <span class=\"control-label\" >元</span>\n" +
        "                                    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"fa fa-remove\" onclick=\"TSystemConfig.delBox(this)\"></span>\n" +
        "                                </div>\n" +
        "                                <div class=\"initialLevel col-sm-12 control-label form-group\"  >\n" +
        "                                    <span class=\"control-label\" >代驾里程</span>\n" +
        "                                    <input class=\"control-label\" id=\"num8-"+i+"\" name=\"num8\" type=\"number\" style=\"height: 30px;width: 80px\">\n" +
        "                                    <span class=\"control-label\" >——</span>\n" +
        "                                    <input class=\"control-label\" id=\"num9-"+i+"\" name=\"num9\" type=\"number\" style=\"height: 30px;width: 80px\">\n" +
        "                                    <span class=\"control-label\" >公里,起步价</span>\n" +
        "                                    <input class=\"control-label\" id=\"num10-"+i+"\" name=\"num10\" type=\"number\" style=\"height: 30px;width: 80px\">\n" +
        "                                    <span class=\"control-label\" >元,超出里程每</span>\n" +
        "                                    <input class=\"control-label\" id=\"num11-"+i+"\" name=\"num11\" type=\"number\" style=\"height: 30px;width: 80px\">\n" +
        "                                    <span class=\"control-label\" >公里,收费</span>\n" +
        "                                    <input class=\"control-label\" id=\"num12-"+i+"\" name=\"num12\" type=\"number\" style=\"height: 30px;width: 80px\">\n" +
        "                                    <span class=\"control-label\" >元</span>\n" +
        "                                </div>\n" +
        "                            </div>"
    $("#rules").append($(a))
}
TSystemConfig.delBox = function (o) {
    $(o).parent("div").parent("div").remove()
};
/**
 * 查询列表
 */
TSystemConfig.search = function () {
    var queryData = {};
    queryData['condition'] = $("#condition").val();
    TSystemConfig.table.refresh({query: queryData});
};
$(function () {
    var defaultColunms = TSystemConfig.initColumn();
    var table = new BSTable(TSystemConfig.id, "/tSystemConfig/list", defaultColunms);
    table.setPaginationType("client");
    TSystemConfig.table = table.init();
});
management/guns-admin/src/main/webapp/static/modular/system/tSystemConfig/tSystemConfig_info.js
New file
@@ -0,0 +1,95 @@
/**
 * 初始化详情对话框
 */
var TSystemConfigInfoDlg = {
    tSystemConfigInfoData : {}
};
/**
 * 清除数据
 */
TSystemConfigInfoDlg.clearData = function() {
    this.tSystemConfigInfoData = {};
}
/**
 * 设置对话框中的数据
 *
 * @param key 数据的名称
 * @param val 数据的具体值
 */
TSystemConfigInfoDlg.set = function(key, val) {
    this.tSystemConfigInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val;
    return this;
}
/**
 * 设置对话框中的数据
 *
 * @param key 数据的名称
 * @param val 数据的具体值
 */
TSystemConfigInfoDlg.get = function(key) {
    return $("#" + key).val();
}
/**
 * 关闭此对话框
 */
TSystemConfigInfoDlg.close = function() {
    parent.layer.close(window.parent.TSystemConfig.layerIndex);
}
/**
 * 收集数据
 */
TSystemConfigInfoDlg.collectData = function() {
    this
    .set('id')
    .set('type')
    .set('content');
}
/**
 * 提交添加
 */
TSystemConfigInfoDlg.addSubmit = function() {
    this.clearData();
    this.collectData();
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tSystemConfig/add", function(data){
        Feng.success("添加成功!");
        window.parent.TSystemConfig.table.refresh();
        TSystemConfigInfoDlg.close();
    },function(data){
        Feng.error("添加失败!" + data.responseJSON.message + "!");
    });
    ajax.set(this.tSystemConfigInfoData);
    ajax.start();
}
/**
 * 提交修改
 */
TSystemConfigInfoDlg.editSubmit = function() {
    this.clearData();
    this.collectData();
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tSystemConfig/update", function(data){
        Feng.success("修改成功!");
        window.parent.TSystemConfig.table.refresh();
        TSystemConfigInfoDlg.close();
    },function(data){
        Feng.error("修改失败!" + data.responseJSON.message + "!");
    });
    ajax.set(this.tSystemConfigInfoData);
    ajax.start();
}
$(function() {
});
management/guns-admin/src/main/webapp/static/modular/system/tYouTui/tYouTui.js
New file
@@ -0,0 +1,166 @@
/**
 * 管理初始化
 */
var TYouTui = {
    id: "TYouTuiTable",    //表格id
    seItem: null,        //选中的条目
    table: null,
    layerIndex: -1
};
/**
 * 初始化表格的列
 */
TYouTui.initColumn = function () {
    return [
        {field: 'selectItem', radio: true},
            {title: '主键', field: 'id', visible: false, align: 'center', valign: 'middle'},
        {title: '添加时间', field: 'createTime', visible: true, align: 'center', valign: 'middle'},
        {title: '优推名称', field: 'name', visible: true, align: 'center', valign: 'middle'},
        {title: '服务类型', field: 'type', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                if (row.type === 1){
                    return row.number+'<span>次</span>'
                }else if (row.type === 2){
                    return row.number+'<span>小时</span>'
                }
            }
        },
        {title: '服务内容', field: 'content', visible: true, align: 'center', valign: 'middle'},
        {title: '兑换积分数', field: 'integral', visible: true, align: 'center', valign: 'middle'},
        {title: '优推值', field: 'number', visible: false, align: 'center', valign: 'middle'},
        {title: '优推距离(米)', field: 'distance', visible: true, align: 'center', valign: 'middle'},
        {title: '有效期', field: 'effectiveTime', visible: false, align: 'center', valign: 'middle'},
        {title: '状态', field: 'status', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                if (row.status === 1){
                    return '<span>正常</span>'
                }else if (row.status === 2){
                    return '<span>冻结</span>'
                }else if (row.status === 3){
                    return '<span>已删除</span>'
                }
            }
        },
        {title: '操作', visible: true, align: 'center', valign: 'middle',width:150,
            formatter: function (value, row) {
                if (row.status === 1){
                    return '<a href="#" onclick="TYouTui.updateStatus('+row.id+','+row.status+')" style="color:red">冻结</a>' +'&nbsp;' +
                        '<a href="#" onclick="TYouTui.delete('+row.id+')" style="color:red">删除</a>'
                }else if (row.status === 2){
                    return '<a href="#" onclick="TYouTui.updateStatus('+row.id+','+row.status+')" style="color:green">解冻</a>' +'&nbsp;' +
                        '<a href="#" onclick="TYouTui.delete('+row.id+')" style="color:red">删除</a>'
                }
            }
        }
    ];
};
/**
 * 检查是否选中
 */
TYouTui.check = function () {
    var selected = $('#' + this.id).bootstrapTable('getSelections');
    if(selected.length == 0){
        Feng.info("请先选中表格中的某一记录!");
        return false;
    }else{
        TYouTui.seItem = selected[0];
        return true;
    }
};
/**
 * 点击添加
 */
TYouTui.openAddTYouTui = function () {
    var index = layer.open({
        type: 2,
        title: '添加',
        area: ['100%', '100%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tYouTui/tYouTui_add'
    });
    this.layerIndex = index;
};
/**
 * 打开查看详情
 */
TYouTui.openTYouTuiDetail = function () {
    if (this.check()) {
        var index = layer.open({
            type: 2,
            title: '详情',
            area: ['800px', '420px'], //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/tYouTui/tYouTui_update/' + TYouTui.seItem.id
        });
        this.layerIndex = index;
    }
};
/**
 * 删除
 */
TYouTui.delete = function (id) {
    var ajax = new $ax(Feng.ctxPath + "/tYouTui/delete", function (data) {
        if(500 == data.code){
            Feng.error(data.message);
            return;
        }else {
            Feng.success("删除成功!");
            TYouTui.table.refresh();
        }
    }, function (data) {
        Feng.error("删除失败!" + data.responseJSON.message + "!");
    });
    ajax.set("tYouTuiId",id);
    ajax.start();
};
/**
 * 提交启用冻结
 */
TYouTui.updateStatus = function (id,status) {
    var ajax = new $ax(Feng.ctxPath + "/tYouTui/update-status?id="+id+'&status='+status, function (data) {
        if(500 == data.code){
            Feng.error(data.message);
            return;
        }else {
            Feng.success("修改成功!");
            TYouTui.table.refresh();
        }
    }, function (data) {
        Feng.error("修改失败!" + data.message + "!");
    });
    ajax.start();
};
/**
 * 查询列表
 */
TYouTui.search = function () {
    var queryData = {};
    queryData['createTime'] = $("#createTime").val();
    queryData['type'] = $("#type").val();
    TYouTui.table.refresh({query: queryData});
};
/**
 * 重置
 */
TYouTui.resetSearch = function (){
    $("#createTime").val('');
    $("#type").val('');
    TYouTui.search();
}
$(function () {
    var defaultColunms = TYouTui.initColumn();
    var table = new BSTable(TYouTui.id, "/tYouTui/list", defaultColunms);
    table.setPaginationType("client");
    TYouTui.table = table.init();
});
management/guns-admin/src/main/webapp/static/modular/system/tYouTui/tYouTui_info.js
New file
@@ -0,0 +1,160 @@
/**
 * 初始化详情对话框
 */
var TYouTuiInfoDlg = {
    tYouTuiInfoData : {},
    validateFields: {
        name: {
            validators: {
                notEmpty: {
                    message: '优推名称不能为空'
                }
            }
        },
        type: {
            validators: {
                notEmpty: {
                    message: '优推类型不能为空'
                }
            }
        },
        integral: {
            validators: {
                notEmpty: {
                    message: '兑换条件不能为空'
                }
            }
        },
        distance: {
            validators: {
                notEmpty: {
                    message: '优推距离不能为空'
                }
            }
        },
        effectiveTime: {
            validators: {
                notEmpty: {
                    message: '有效期不能为空'
                }
            }
        },
        serviceContent: {
            validators: {
                notEmpty: {
                    message: '服务内容不能为空'
                }
            }
        },
    }
};
/**
 * 验证数据是否为空
 */
TYouTuiInfoDlg.validate = function () {
    $('#youTuiInfoForm').data("bootstrapValidator").resetForm();
    $('#youTuiInfoForm').bootstrapValidator('validate');
    return $("#youTuiInfoForm").data('bootstrapValidator').isValid();
};
/**
 * 清除数据
 */
TYouTuiInfoDlg.clearData = function() {
    this.tYouTuiInfoData = {};
}
/**
 * 设置对话框中的数据
 *
 * @param key 数据的名称
 * @param val 数据的具体值
 */
TYouTuiInfoDlg.set = function(key, val) {
    this.tYouTuiInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val;
    return this;
}
/**
 * 设置对话框中的数据
 *
 * @param key 数据的名称
 * @param val 数据的具体值
 */
TYouTuiInfoDlg.get = function(key) {
    return $("#" + key).val();
}
/**
 * 关闭此对话框
 */
TYouTuiInfoDlg.close = function() {
    parent.layer.close(window.parent.TYouTui.layerIndex);
}
/**
 * 收集数据
 */
TYouTuiInfoDlg.collectData = function() {
    this
    .set('id')
    .set('name')
    .set('type')
    .set('number')
    .set('integral')
    .set('effectiveTime')
    .set('content')
    .set('status')
    .set('distance')
    .set('serviceContent')
    .set('createTime');
}
/**
 * 提交添加
 */
TYouTuiInfoDlg.addSubmit = function() {
    this.clearData();
    this.collectData();
    if(!this.validate()){
        return ;
    }
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tYouTui/add", function(data){
        Feng.success("添加成功!");
        window.parent.TYouTui.table.refresh();
        TYouTuiInfoDlg.close();
    },function(data){
        Feng.error("添加失败!" + data.responseJSON.message + "!");
    });
    ajax.set(this.tYouTuiInfoData);
    ajax.start();
}
/**
 * 提交修改
 */
TYouTuiInfoDlg.editSubmit = function() {
    this.clearData();
    this.collectData();
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tYouTui/update", function(data){
        Feng.success("修改成功!");
        window.parent.TYouTui.table.refresh();
        TYouTuiInfoDlg.close();
    },function(data){
        Feng.error("修改失败!" + data.responseJSON.message + "!");
    });
    ajax.set(this.tYouTuiInfoData);
    ajax.start();
}
$(function() {
    Feng.initValidator("youTuiInfoForm", TYouTuiInfoDlg.validateFields);
});