puzhibing
2023-03-18 b397b0aefc81cb0475d347ebad16e565254c06e2
Merge remote-tracking branch 'origin/master'
33个文件已修改
84个文件已添加
6792 ■■■■■ 已修改文件
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TBillController.java 212 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TBranchOfficeController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TBroadcastController.java 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCommercialController.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCouponController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TEditionController.java 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/THomePageController.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TRevenueController.java 219 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TSystemBulletinController.java 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TYouTuiController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/RevenueExpenditureResp.java 177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/UserMgrController.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/util/LabelReplaceUtil.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TBillMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TBroadcastMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TCommercialMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TEditionMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TRevenueMapper.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TSystemBulletinMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TSystemBulletinUserMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TBillMapper.xml 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TBroadcastMapper.xml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TCommercialMapper.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TEditionMapper.xml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TRevenueMapper.xml 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TSystemBulletinMapper.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TSystemBulletinUserMapper.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/enums/CashWithdrawalTypeEnum.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/enums/OrderStateEnum.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/enums/RevenueTypeEnum.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/enums/StatusEnum.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/enums/SystemConfigTypeEnum.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/enums/TBillStateEnum.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/enums/UserTypeEnum.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TBill.java 219 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TBroadcast.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCommercial.java 231 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCoupon.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TEdition.java 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TRevenue.java 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TSystemBulletin.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TSystemBulletinUser.java 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITBillService.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITBroadcastService.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITCommercialService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITEditionService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITRevenueService.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITSystemBulletinService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITSystemBulletinUserService.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAgentServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAppUserServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBillServiceImpl.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBranchOfficeServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBroadcastServiceImpl.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCommercialServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TEditionServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TRevenueServiceImpl.java 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TSystemBulletinServiceImpl.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TSystemBulletinUserServiceImpl.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/DateUtil.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/common/tags/uploadFile.tag 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgent_add.html 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tAppUser.html 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tAppUserException.html 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tAppUserStartAndStop.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tAppUserStartAndStopException.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tBill/tBill.html 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tBill/tBill_add.html 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tBill/tBill_edit.html 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOffice.html 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOffice_add.html 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOffice_edit.html 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tBroadcast/tBroadcast.html 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tBroadcast/tBroadcast_add.html 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tBroadcast/tBroadcast_edit.html 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tCommercial/tCommercial.html 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tCommercial/tCommercial_add.html 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tCommercial/tCommercial_edit.html 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tCoupon/tCoupon_add.html 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverAudit.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverExceptionStartAndStop.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverRechargeBalancePage.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverStartAndStop.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver_add.html 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver_edit.html 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tEdition/tEdition.html 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tEdition/tEdition_add.html 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tEdition/tEdition_edit.html 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tHomePage/tHomePageMap.html 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tHomePage/tHomePageStatistics.html 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tRechargeRecord/tRechargeRecord.html 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tRevenue/tRevenue.html 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tRevenue/tRevenueBalanceDetail.html 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tRevenue/tRevenueCommissionDetail.html 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tRevenue/tRevenueOrderDetail.html 208 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tRevenue/tRevenue_add.html 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tRevenue/tRevenue_edit.html 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemBulletin/tSystemBulletin.html 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemBulletin/tSystemBulletin_add.html 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemBulletin/tSystemBulletin_edit.html 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tYouTui/tYouTui_add.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/js/common/web-upload-file.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tBill/tBill.js 212 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tBill/tBill_info.js 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tBroadcast/tBroadcast.js 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tBroadcast/tBroadcast_info.js 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tCommercial/tCommercial.js 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tCommercial/tCommercial_info.js 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tEdition/tEdition.js 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tEdition/tEdition_info.js 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tRevenue/tRevenue.js 236 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tRevenue/tRevenue_info.js 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tSystemBulletin/tSystemBulletin.js 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tSystemBulletin/tSystemBulletin_info.js 177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TBillController.java
New file
@@ -0,0 +1,212 @@
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.TDriverResp;
import com.stylefeng.guns.modular.system.controller.util.ExcelUtil;
import com.stylefeng.guns.modular.system.enums.TBillStateEnum;
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.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.TBill;
import com.stylefeng.guns.modular.system.service.ITBillService;
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-03-14 15:15:19
 */
@Controller
@RequestMapping("/tBill")
public class TBillController extends BaseController {
    private String PREFIX = "/system/tBill/";
    @Autowired
    private ITBillService tBillService;
    /**
     * 跳转到首页
     */
    @RequestMapping("")
    public String index() {
        return PREFIX + "tBill.html";
    }
    /**
     * 跳转到添加
     */
    @RequestMapping("/tBill_add")
    public String tBillAdd() {
        return PREFIX + "tBill_add.html";
    }
    /**
     * 跳转到修改
     */
    @RequestMapping("/tBill_update/{tBillId}")
    public String tBillUpdate(@PathVariable Integer tBillId, Model model) {
        TBill tBill = tBillService.selectById(tBillId);
        model.addAttribute("item",tBill);
        LogObjectHolder.me().set(tBill);
        return PREFIX + "tBill_edit.html";
    }
    /**
     * 获取列表
     */
    @RequestMapping(value = "/list")
    @ResponseBody
    public Object list(String createTime,String addresseePhone,Integer state,Integer billType,Integer billHeaderType) {
        EntityWrapper<TBill> wrapper = tBillService.getPageListWrapper(createTime,addresseePhone,state,billType,billHeaderType);
        return tBillService.selectList(wrapper);
    }
    /**
     * 详情
     */
    @RequestMapping(value = "/confirm")
    @ResponseBody
    public Object confirm(Integer tBillId) {
        TBill tBill = tBillService.selectById(tBillId);
        tBill.setState(TBillStateEnum.FINISH_BILL.getCode());
        tBillService.updateById(tBill);
        return SUCCESS_TIP;
    }
    /**
     * 详情
     */
    @RequestMapping(value = "/cancel")
    @ResponseBody
    public Object cancel(Integer tBillId) {
        TBill tBill = tBillService.selectById(tBillId);
        tBill.setState(TBillStateEnum.FAIL_BILL.getCode());
        tBillService.updateById(tBill);
        return SUCCESS_TIP;
    }
    /**
     * 获取列表
     */
    @RequestMapping(value = "/list-back")
    @ResponseBody
    public Object listBack(String condition) {
        return tBillService.selectList(null);
    }
    /**
     * 新增
     */
    @RequestMapping(value = "/add")
    @ResponseBody
    public Object add(TBill tBill) {
        tBillService.insert(tBill);
        return SUCCESS_TIP;
    }
    /**
     * 删除
     */
    @RequestMapping(value = "/delete")
    @ResponseBody
    public Object delete(@RequestParam Integer tBillId) {
        tBillService.deleteById(tBillId);
        return SUCCESS_TIP;
    }
    /**
     * 修改
     */
    @RequestMapping(value = "/update")
    @ResponseBody
    public Object update(TBill tBill) {
        tBillService.updateById(tBill);
        return SUCCESS_TIP;
    }
    /**
     * 详情
     */
    @RequestMapping(value = "/detail/{tBillId}")
    @ResponseBody
    public Object detail(@PathVariable("tBillId") Integer tBillId) {
        return tBillService.selectById(tBillId);
    }
    @ApiOperation(value = "导出发票列表",notes="导出发票列表")
    @RequestMapping(value = "/export")
    @ResponseBody
    public void export(String createTime,String addresseePhone,Integer state,Integer billType,Integer billHeaderType, HttpServletResponse response) {
        try {
            Date date = new Date();
            DateFormat format = new SimpleDateFormat("yyyyMMdd");
            String time1 = format.format(date);
            String fileName = "BillInfo"+time1+".xls";
            String[] title = new String[] {"申请时间","发票类型","抬头类型","发票抬头","公司税号","发票内容",
                    "发票金额","收件人姓名","收件人电话","收件人邮箱","开票状态"};
            EntityWrapper<TBill> wrapper = tBillService.getPageListWrapper(createTime,addresseePhone,state,billType,billHeaderType);
            List<TBill> tBills = tBillService.selectList(wrapper);
            String[][] values = new String[tBills.size()][];
            for (int i = 0; i < tBills.size(); i++) {
                TBill d = tBills.get(i);
                values[i] = new String[title.length];
                values[i][0] = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d.getCreateTime());
                Integer billType1 = d.getBillType();
                if(1 == billType1){
                    values[i][1] = "电子发票";
                }
                Integer billHeaderType1 = d.getBillHeaderType();
                if(1 == billHeaderType1){
                    values[i][2] = "公司";
                } else if (2 == billHeaderType1) {
                    values[i][2] = "个人";
                }
                values[i][3] = d.getCompanyName();
                values[i][4] = d.getCompanyTaxNumber();
                values[i][5] = d.getBillContent();
                values[i][6] = String.valueOf(Objects.nonNull(d.getBillAmount())?d.getBillAmount(): BigDecimal.ZERO);
                values[i][7] = d.getAddresseeName();
                values[i][8] = d.getAddresseePhone();
                values[i][9] = d.getAddresseeEmail();
                Integer state1 = d.getState();
                if(1 == state1){
                    values[i][10] = "待开票";
                } else if (2 == state1) {
                    values[i][10] = "已开票";
                } else if (3 == state1) {
                    values[i][10] = "开票失败";
                }
            }
            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/TBranchOfficeController.java
@@ -7,6 +7,7 @@
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.enums.StatusEnum;
import com.stylefeng.guns.modular.system.model.*;
import com.stylefeng.guns.modular.system.service.ITRegionService;
import com.stylefeng.guns.modular.system.service.ITSystemConfigService;
@@ -231,7 +232,7 @@
    @ResponseBody
    public Object start(Integer id) {
        TBranchOffice tBranchOffice = tBranchOfficeService.selectById(id);
        tBranchOffice.setStatus(1);
        tBranchOffice.setStatus(StatusEnum.NORMAL.getCode());
        tBranchOfficeService.updateById(tBranchOffice);
        return SUCCESS_TIP;
    }
@@ -243,7 +244,7 @@
    @ResponseBody
    public Object updateStatus(Integer id) {
        TBranchOffice tBranchOffice = tBranchOfficeService.selectById(id);
        tBranchOffice.setStatus(2);
        tBranchOffice.setStatus(StatusEnum.FREEZE.getCode());
        tBranchOfficeService.updateById(tBranchOffice);
        return SUCCESS_TIP;
    }
@@ -272,7 +273,7 @@
        if(Objects.nonNull(o)){
            return o;
        }
        tBranchOffice.setStatus(1);
        tBranchOffice.setStatus(StatusEnum.NORMAL.getCode());
        tBranchOfficeService.insert(tBranchOffice);
        return SUCCESS_TIP;
@@ -284,7 +285,9 @@
    @RequestMapping(value = "/delete")
    @ResponseBody
    public Object delete(@RequestParam Integer tBranchOfficeId) {
        tBranchOfficeService.deleteById(tBranchOfficeId);
        TBranchOffice tBranchOffice = tBranchOfficeService.selectById(tBranchOfficeId);
        tBranchOffice.setStatus(StatusEnum.DELETE.getCode());
        tBranchOfficeService.updateById(tBranchOffice);
        return SUCCESS_TIP;
    }
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TBroadcastController.java
New file
@@ -0,0 +1,135 @@
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.util.DateUtil;
import com.stylefeng.guns.modular.system.enums.StatusEnum;
import com.stylefeng.guns.modular.system.model.TSystemBulletin;
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.TBroadcast;
import com.stylefeng.guns.modular.system.service.ITBroadcastService;
import java.util.Date;
/**
 * 控制器
 *
 * @author fengshuonan
 * @Date 2023-03-16 10:38:00
 */
@Controller
@RequestMapping("/tBroadcast")
public class TBroadcastController extends BaseController {
    private String PREFIX = "/system/tBroadcast/";
    @Autowired
    private ITBroadcastService tBroadcastService;
    /**
     * 跳转到首页
     */
    @RequestMapping("")
    public String index() {
        return PREFIX + "tBroadcast.html";
    }
    /**
     * 跳转到添加
     */
    @RequestMapping("/tBroadcast_add")
    public String tBroadcastAdd() {
        return PREFIX + "tBroadcast_add.html";
    }
    /**
     * 跳转到修改
     */
    @RequestMapping("/tBroadcast_update/{tBroadcastId}")
    public String tBroadcastUpdate(@PathVariable Integer tBroadcastId, Model model) {
        TBroadcast tBroadcast = tBroadcastService.selectById(tBroadcastId);
        model.addAttribute("item",tBroadcast);
        LogObjectHolder.me().set(tBroadcast);
        return PREFIX + "tBroadcast_edit.html";
    }
    /**
     * 获取列表
     */
    @RequestMapping(value = "/list")
    @ResponseBody
    public Object list(String createTime,String content) {
        EntityWrapper<TBroadcast> wrapper = new EntityWrapper<>();
        if(StringUtils.hasLength(content)){
            wrapper.like("content",content);
        }
        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);
        }
        wrapper.ne("status", StatusEnum.DELETE.getCode());
        return tBroadcastService.selectList(wrapper);
    }
    /**
     * 获取列表
     */
    @RequestMapping(value = "/list-back")
    @ResponseBody
    public Object listBack(String condition) {
        return tBroadcastService.selectList(null);
    }
    /**
     * 新增
     */
    @RequestMapping(value = "/add")
    @ResponseBody
    public Object add(TBroadcast tBroadcast) {
        tBroadcastService.insert(tBroadcast);
        return SUCCESS_TIP;
    }
    /**
     * 删除
     */
    @RequestMapping(value = "/delete")
    @ResponseBody
    public Object delete(@RequestParam Integer tBroadcastId) {
        TBroadcast tBroadcast = tBroadcastService.selectById(tBroadcastId);
        tBroadcast.setStatus(StatusEnum.DELETE.getCode());
        tBroadcastService.updateById(tBroadcast);
        return SUCCESS_TIP;
    }
    /**
     * 修改
     */
    @RequestMapping(value = "/update")
    @ResponseBody
    public Object update(TBroadcast tBroadcast) {
        tBroadcastService.updateById(tBroadcast);
        return SUCCESS_TIP;
    }
    /**
     * 详情
     */
    @RequestMapping(value = "/detail/{tBroadcastId}")
    @ResponseBody
    public Object detail(@PathVariable("tBroadcastId") Integer tBroadcastId) {
        return tBroadcastService.selectById(tBroadcastId);
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCommercialController.java
New file
@@ -0,0 +1,104 @@
package com.stylefeng.guns.modular.system.controller.general;
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.TCommercial;
import com.stylefeng.guns.modular.system.service.ITCommercialService;
/**
 * 控制器
 *
 * @author fengshuonan
 * @Date 2023-03-16 10:38:08
 */
@Controller
@RequestMapping("/tCommercial")
public class TCommercialController extends BaseController {
    private String PREFIX = "/system/tCommercial/";
    @Autowired
    private ITCommercialService tCommercialService;
    /**
     * 跳转到首页
     */
    @RequestMapping("")
    public String index() {
        return PREFIX + "tCommercial.html";
    }
    /**
     * 跳转到添加
     */
    @RequestMapping("/tCommercial_add")
    public String tCommercialAdd() {
        return PREFIX + "tCommercial_add.html";
    }
    /**
     * 跳转到修改
     */
    @RequestMapping("/tCommercial_update/{tCommercialId}")
    public String tCommercialUpdate(@PathVariable Integer tCommercialId, Model model) {
        TCommercial tCommercial = tCommercialService.selectById(tCommercialId);
        model.addAttribute("item",tCommercial);
        LogObjectHolder.me().set(tCommercial);
        return PREFIX + "tCommercial_edit.html";
    }
    /**
     * 获取列表
     */
    @RequestMapping(value = "/list")
    @ResponseBody
    public Object list(String condition) {
        return tCommercialService.selectList(null);
    }
    /**
     * 新增
     */
    @RequestMapping(value = "/add")
    @ResponseBody
    public Object add(TCommercial tCommercial) {
        tCommercialService.insert(tCommercial);
        return SUCCESS_TIP;
    }
    /**
     * 删除
     */
    @RequestMapping(value = "/delete")
    @ResponseBody
    public Object delete(@RequestParam Integer tCommercialId) {
        tCommercialService.deleteById(tCommercialId);
        return SUCCESS_TIP;
    }
    /**
     * 修改
     */
    @RequestMapping(value = "/update")
    @ResponseBody
    public Object update(TCommercial tCommercial) {
        tCommercialService.updateById(tCommercial);
        return SUCCESS_TIP;
    }
    /**
     * 详情
     */
    @RequestMapping(value = "/detail/{tCommercialId}")
    @ResponseBody
    public Object detail(@PathVariable("tCommercialId") Integer tCommercialId) {
        return tCommercialService.selectById(tCommercialId);
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCouponController.java
@@ -6,6 +6,7 @@
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.enums.StatusEnum;
import com.stylefeng.guns.modular.system.model.TAgent;
import com.stylefeng.guns.modular.system.model.TUserToCoupon;
import com.stylefeng.guns.modular.system.service.ITUserToCouponService;
@@ -93,6 +94,7 @@
            Date endTime = DateUtil.getDate_str4(split[1]);
            wrapper.between("create_time",startTime,endTime);
        }
        wrapper.ne("status", StatusEnum.DELETE.getCode());
        wrapper.orderBy(true,"create_time",false);
        return tCouponService.selectList(wrapper);
    }
@@ -143,6 +145,9 @@
    @RequestMapping(value = "/delete")
    @ResponseBody
    public Object delete(@RequestParam Integer tCouponId) {
        /*TCoupon tCoupon = tCouponService.selectById(tCouponId);
        tCoupon.setCouponStatus(StatusEnum.DELETE.getCode());
        tCouponService.updateById(tCoupon);*/
        tCouponService.deleteById(tCouponId);
        return SUCCESS_TIP;
    }
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java
@@ -1,5 +1,6 @@
package com.stylefeng.guns.modular.system.controller.general;
import cn.hutool.core.util.CreditCodeUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.core.base.controller.BaseController;
@@ -9,10 +10,9 @@
import com.stylefeng.guns.modular.system.controller.resp.TDriverCommissionResp;
import com.stylefeng.guns.modular.system.controller.resp.TDriverResp;
import com.stylefeng.guns.modular.system.controller.util.*;
import com.stylefeng.guns.modular.system.enums.UserTypeEnum;
import com.stylefeng.guns.modular.system.model.*;
import com.stylefeng.guns.modular.system.service.ITAgentService;
import com.stylefeng.guns.modular.system.service.ITBranchOfficeService;
import com.stylefeng.guns.modular.system.service.ITRegionService;
import com.stylefeng.guns.modular.system.service.*;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiModelProperty;
@@ -23,6 +23,7 @@
import org.springframework.beans.BeanUtils;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@@ -31,7 +32,6 @@
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.service.ITDriverService;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
@@ -74,6 +74,8 @@
    private HttpUtils httpUtils;
    @Autowired
    private TokenUtils tokenUtils;
    @Autowired
    private ITRechargeRecordService tRechargeRecordService;
    /**
     * 跳转到首页
@@ -448,11 +450,25 @@
     */
    @ApiOperation(value = "充值余额")
    @RequestMapping(value = "/recharge-balance")
    @Transactional(rollbackFor = Exception.class)
    @ResponseBody
    public Object rechargeBalance(Integer id, String money) {
        TDriver tDriver = tDriverService.selectById(id);
        tDriver.setBackgroundBalance(new BigDecimal(money).add(tDriver.getBackgroundBalance()));
        tDriverService.updateById(tDriver);
        // 添加充值记录
        TRechargeRecord tRechargeRecord = new TRechargeRecord();
        tRechargeRecord.setType(UserTypeEnum.AGENT.getCode());
        tRechargeRecord.setUserId(id);
        tRechargeRecord.setCode(UUIDUtil.getNumberRandom(16));
        tRechargeRecord.setAmount(new BigDecimal(money));
        tRechargeRecord.setPayType(2);
        tRechargeRecord.setPayTime(new Date());
        tRechargeRecord.setPayStatus(2);
        tRechargeRecord.setCreateTime(new Date());
        tRechargeRecord.setAgentId(Objects.requireNonNull(ShiroKit.getUser()).getId());
        tRechargeRecordService.insert(tRechargeRecord);
        return SUCCESS_TIP;
    }
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TEditionController.java
New file
@@ -0,0 +1,132 @@
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.util.DateUtil;
import com.stylefeng.guns.modular.system.enums.StatusEnum;
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.TEdition;
import com.stylefeng.guns.modular.system.service.ITEditionService;
import java.util.Date;
/**
 * 控制器
 *
 * @author fengshuonan
 * @Date 2023-03-14 09:44:02
 */
@Controller
@RequestMapping("/tEdition")
public class TEditionController extends BaseController {
    private String PREFIX = "/system/tEdition/";
    @Autowired
    private ITEditionService tEditionService;
    /**
     * 跳转到首页
     */
    @RequestMapping("")
    public String index() {
        return PREFIX + "tEdition.html";
    }
    /**
     * 跳转到添加
     */
    @RequestMapping("/tEdition_add")
    public String tEditionAdd() {
        return PREFIX + "tEdition_add.html";
    }
    /**
     * 跳转到修改
     */
    @RequestMapping("/tEdition_update/{tEditionId}")
    public String tEditionUpdate(@PathVariable Integer tEditionId, Model model) {
        TEdition tEdition = tEditionService.selectById(tEditionId);
        model.addAttribute("item",tEdition);
        LogObjectHolder.me().set(tEdition);
        return PREFIX + "tEdition_edit.html";
    }
    /**
     * 获取列表
     */
    @RequestMapping(value = "/list")
    @ResponseBody
    public Object list(String createTime,String editionNo) {
        EntityWrapper<TEdition> wrapper = new EntityWrapper<>();
        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);
        }
        if(StringUtils.hasLength(editionNo)){
            wrapper.like("editionNo",editionNo);
        }
        wrapper.ne("status", StatusEnum.DELETE.getCode());
        return tEditionService.selectList(wrapper);
    }
    /**
     * 获取列表
     */
    @RequestMapping(value = "/list-back")
    @ResponseBody
    public Object listBack(String condition) {
        return tEditionService.selectList(null);
    }
    /**
     * 新增
     */
    @RequestMapping(value = "/add")
    @ResponseBody
    public Object add(TEdition tEdition) {
        tEditionService.insert(tEdition);
        return SUCCESS_TIP;
    }
    /**
     * 删除
     */
    @RequestMapping(value = "/delete")
    @ResponseBody
    public Object delete(@RequestParam Integer tEditionId) {
        TEdition tEdition = tEditionService.selectById(tEditionId);
        tEdition.setStatus(StatusEnum.DELETE.getCode());
        tEditionService.updateById(tEdition);
        return SUCCESS_TIP;
    }
    /**
     * 修改
     */
    @RequestMapping(value = "/update")
    @ResponseBody
    public Object update(TEdition tEdition) {
        tEditionService.updateById(tEdition);
        return SUCCESS_TIP;
    }
    /**
     * 详情
     */
    @RequestMapping(value = "/detail/{tEditionId}")
    @ResponseBody
    public Object detail(@PathVariable("tEditionId") Integer tEditionId) {
        return tEditionService.selectById(tEditionId);
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/THomePageController.java
New file
@@ -0,0 +1,49 @@
package com.stylefeng.guns.modular.system.controller.general;
import com.stylefeng.guns.core.base.controller.BaseController;
import com.stylefeng.guns.core.shiro.ShiroKit;
import com.stylefeng.guns.modular.system.service.IUserService;
import com.stylefeng.guns.modular.system.util.DateUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Objects;
/**
 * 控制器
 *
 * @author fengshuonan
 * @Date 2023-03-14 15:15:19
 */
@Controller
@RequestMapping("/tHomePage")
public class THomePageController extends BaseController {
    @Autowired
    private IUserService userService;
    private String PREFIX = "/system/tHomePage/";
    /**
     * 跳转到地图
     */
    @RequestMapping("/map")
    public String map() {
        return PREFIX + "tHomePageMap.html";
    }
    /**
     * 跳转到地图
     */
    @RequestMapping("/statistics")
    public String statistics(Model model) {
        model.addAttribute("txt",new SimpleDateFormat("yyyy年MM月dd日").format(new Date()) + DateUtil.getWeekDay(new Date()) + ",欢迎" +
                Objects.requireNonNull(ShiroKit.getUser()).getName() + "登录");
        return PREFIX + "tHomePageStatistics.html";
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TRevenueController.java
New file
@@ -0,0 +1,219 @@
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.RevenueExpenditureResp;
import com.stylefeng.guns.modular.system.controller.resp.TDriverCommissionResp;
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;
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.TRevenue;
import com.stylefeng.guns.modular.system.service.ITRevenueService;
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-03-13 09:49:19
 */
@Controller
@RequestMapping("/tRevenue")
public class TRevenueController extends BaseController {
    private String PREFIX = "/system/tRevenue/";
    @Autowired
    private ITRevenueService tRevenueService;
    /**
     * 跳转到首页
     */
    @RequestMapping("")
    public String index() {
        return PREFIX + "tRevenue.html";
    }
    /**
     * 跳转到添加
     */
    @RequestMapping("/tRevenue_add")
    public String tRevenueAdd() {
        return PREFIX + "tRevenue_add.html";
    }
    /**
     * 跳转到修改
     */
    @RequestMapping("/tRevenue_update/{tRevenueId}")
    public String tRevenueUpdate(@PathVariable Integer tRevenueId, Model model) {
        TRevenue tRevenue = tRevenueService.selectById(tRevenueId);
        model.addAttribute("item",tRevenue);
        LogObjectHolder.me().set(tRevenue);
        return PREFIX + "tRevenue_edit.html";
    }
    /**
     * 跳转到佣金提现详情
     */
    @RequestMapping("/commissionDetail")
    public String commissionDetail(String code, Model model) {
        tRevenueService.commissionDetail(code,model);
        return PREFIX + "tRevenueCommissionDetail.html";
    }
    /**
     * 跳转到余额提现详情
     */
    @RequestMapping("/balanceDetail")
    public String balanceDetail(String code, Model model) {
        tRevenueService.balanceDetail(code,model);
        return PREFIX + "tRevenueBalanceDetail.html";
    }
    /**
     * 跳转到支付订单详情
     */
    @RequestMapping("/orderDetail")
    public String orderDetail(String code, Model model) {
        tRevenueService.orderDetail(code,model);
        return PREFIX + "tRevenueOrderDetail.html";
    }
    /**
     * 获取列表
     */
    @RequestMapping(value = "/list")
    @ResponseBody
    public Object list(String code,Integer businessType,Integer payType,String driverName,String businessTime) {
        return tRevenueService.getPageList(code,businessType,payType,driverName,businessTime);
    }
    /**
     * 获取列表
     */
    @RequestMapping(value = "/list-back")
    @ResponseBody
    public Object listBack(String condition) {
        return tRevenueService.selectList(null);
    }
    /**
     * 新增
     */
    @RequestMapping(value = "/add")
    @ResponseBody
    public Object add(TRevenue tRevenue) {
        tRevenueService.insert(tRevenue);
        return SUCCESS_TIP;
    }
    /**
     * 删除
     */
    @RequestMapping(value = "/delete")
    @ResponseBody
    public Object delete(@RequestParam Integer tRevenueId) {
        tRevenueService.deleteById(tRevenueId);
        return SUCCESS_TIP;
    }
    /**
     * 修改
     */
    @RequestMapping(value = "/update")
    @ResponseBody
    public Object update(TRevenue tRevenue) {
        tRevenueService.updateById(tRevenue);
        return SUCCESS_TIP;
    }
    /**
     * 详情
     */
    @RequestMapping(value = "/detail/{tRevenueId}")
    @ResponseBody
    public Object detail(@PathVariable("tRevenueId") Integer tRevenueId) {
        return tRevenueService.selectById(tRevenueId);
    }
    @ApiOperation(value = "导出收支明细列表",notes="导出收支明细列表")
    @RequestMapping(value = "/export")
    @ResponseBody
    public void export(String code,Integer businessType,Integer payType,String driverName,String businessTime, HttpServletResponse response) {
        try {
            Date date = new Date();
            DateFormat format = new SimpleDateFormat("yyyyMMdd");
            String time1 = format.format(date);
            String fileName = "RevenueExpenditureDetailsInfo"+time1+".xls";
            String[] title = new String[] {"订单号","交易时间","交易类型","司机姓名","司机电话",
                    "支付类型","金额","佣金提成","优惠券","余额","状态"};
            List<RevenueExpenditureResp> pageList = tRevenueService.getPageList(code, businessType, payType, driverName, businessTime);
            String[][] values = new String[pageList.size()][];
            for (int i = 0; i < pageList.size(); i++) {
                RevenueExpenditureResp d = pageList.get(i);
                values[i] = new String[title.length];
                values[i][0] = d.getCode();
                values[i][1] = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d.getBusinessTime());
                Integer businessType1 = d.getBusinessType();
                if(1 == businessType1){
                    values[i][2] = "支付订单";
                }else if (11 == businessType1){
                    values[i][2] = "佣金提现";
                }else if (12 == businessType1){
                    values[i][2] = "余额提现";
                }
                values[i][3] = d.getDriverName();
                values[i][4] = d.getDriverPhone();
                Integer payType1 = d.getPayType();
                if(1 == payType1){
                    values[i][5] = "微信支付";
                }else if (2 == payType1){
                    values[i][5] = "余额支付";
                }else if (3 == payType1){
                    values[i][5] = "线下收款";
                }
                values[i][6] = String.valueOf(Objects.isNull(d.getAmount())? BigDecimal.ZERO :d.getAmount());
                values[i][7] = String.valueOf(Objects.isNull(d.getCommissionAmount())? BigDecimal.ZERO :d.getCommissionAmount());
                values[i][8] = String.valueOf(Objects.isNull(d.getDiscountedPrice())? BigDecimal.ZERO :d.getDiscountedPrice());
                values[i][9] = String.valueOf(Objects.isNull(d.getAccountBalance())? BigDecimal.ZERO :d.getAccountBalance());
                Integer state = d.getState();
                if(2 == state){
                    values[i][10] = "完成";
                }else if(108 == state){
                    values[i][10] = "完成";
                }else if(109 == state){
                    values[i][10] = "完成";
                }
            }
            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/TSystemBulletinController.java
New file
@@ -0,0 +1,187 @@
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.util.DateUtil;
import com.stylefeng.guns.modular.system.controller.util.LabelReplaceUtil;
import com.stylefeng.guns.modular.system.enums.StatusEnum;
import com.stylefeng.guns.modular.system.enums.UserTypeEnum;
import com.stylefeng.guns.modular.system.model.TDriver;
import com.stylefeng.guns.modular.system.model.TSystemBulletinUser;
import com.stylefeng.guns.modular.system.service.ITDriverService;
import com.stylefeng.guns.modular.system.service.ITSystemBulletinUserService;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
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.TSystemBulletin;
import com.stylefeng.guns.modular.system.service.ITSystemBulletinService;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * 控制器
 *
 * @author fengshuonan
 * @Date 2023-03-16 10:38:23
 */
@Controller
@RequestMapping("/tSystemBulletin")
public class TSystemBulletinController extends BaseController {
    private String PREFIX = "/system/tSystemBulletin/";
    @Autowired
    private ITSystemBulletinService tSystemBulletinService;
    @Autowired
    private ITSystemBulletinUserService tSystemBulletinUserService;
    /**
     * 跳转到首页
     */
    @RequestMapping("")
    public String index() {
        return PREFIX + "tSystemBulletin.html";
    }
    /**
     * 跳转到添加
     */
    @RequestMapping("/tSystemBulletin_add")
    public String tSystemBulletinAdd() {
        return PREFIX + "tSystemBulletin_add.html";
    }
    /**
     * 跳转到修改
     */
    @RequestMapping("/tSystemBulletin_update/{tSystemBulletinId}")
    public String tSystemBulletinUpdate(@PathVariable Integer tSystemBulletinId, Model model) {
        TSystemBulletin tSystemBulletin = tSystemBulletinService.selectById(tSystemBulletinId);
        model.addAttribute("item",tSystemBulletin);
        LogObjectHolder.me().set(tSystemBulletin);
        return PREFIX + "tSystemBulletin_edit.html";
    }
    /**
     * 获取列表
     */
    @RequestMapping(value = "/list")
    @ResponseBody
    public Object list(String createTime,String content) {
        EntityWrapper<TSystemBulletin> wrapper = new EntityWrapper<>();
        if(StringUtils.hasLength(content)){
            wrapper.like("content",content);
        }
        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);
        }
        wrapper.ne("status",3);
        return tSystemBulletinService.selectList(wrapper);
    }
    /**
     * 获取列表
     */
    @RequestMapping(value = "/list-back")
    @ResponseBody
    public Object listBack(String condition) {
        return tSystemBulletinService.selectList(null);
    }
    /**
     * 新增
     */
    @RequestMapping(value = "/add")
    @ResponseBody
    @Transactional(rollbackFor = Exception.class)
    public Object add(TSystemBulletin tSystemBulletin) {
        tSystemBulletin.setContent(LabelReplaceUtil.replace(tSystemBulletin.getContent()));
        tSystemBulletin.setState(1);
        tSystemBulletin.setCreateTime(new Date());
        tSystemBulletin.setStatus(1);
        tSystemBulletinService.insert(tSystemBulletin);
        return SUCCESS_TIP;
    }
    /**
     * 新增发送
     */
    @RequestMapping(value = "/addSend")
    @ResponseBody
    @Transactional(rollbackFor = Exception.class)
    public Object addSend(TSystemBulletin tSystemBulletin) {
        tSystemBulletin.setContent(LabelReplaceUtil.replace(tSystemBulletin.getContent()));
        tSystemBulletin.setState(2);
        tSystemBulletin.setCreateTime(new Date());
        tSystemBulletin.setStatus(1);
        tSystemBulletinService.insert(tSystemBulletin);
        tSystemBulletinService.sendBulletin(tSystemBulletin);
        return SUCCESS_TIP;
    }
    /**
     * 编辑发送
     */
    @RequestMapping(value = "/editSend")
    @ResponseBody
    @Transactional(rollbackFor = Exception.class)
    public Object editSend(TSystemBulletin tSystemBulletin) {
        tSystemBulletin.setContent(LabelReplaceUtil.replace(tSystemBulletin.getContent()));
        tSystemBulletin.setState(2);
        tSystemBulletinService.updateById(tSystemBulletin);
        tSystemBulletinService.sendBulletin(tSystemBulletin);
        return SUCCESS_TIP;
    }
    /**
     * 删除
     */
    @RequestMapping(value = "/delete")
    @Transactional(rollbackFor = Exception.class)
    @ResponseBody
    public Object delete(@RequestParam Integer tSystemBulletinId) {
        TSystemBulletin tSystemBulletin = tSystemBulletinService.selectById(tSystemBulletinId);
        tSystemBulletin.setStatus(StatusEnum.DELETE.getCode());
        tSystemBulletinService.updateById(tSystemBulletin);
        // 公告用户关联关系状态修改
        tSystemBulletinUserService.deleteBulletinUser(tSystemBulletinId);
        return SUCCESS_TIP;
    }
    /**
     * 修改
     */
    @RequestMapping(value = "/update")
    @ResponseBody
    public Object update(TSystemBulletin tSystemBulletin) {
        tSystemBulletin.setContent(LabelReplaceUtil.replace(tSystemBulletin.getContent()));
        tSystemBulletinService.updateById(tSystemBulletin);
        return SUCCESS_TIP;
    }
    /**
     * 详情
     */
    @RequestMapping(value = "/detail/{tSystemBulletinId}")
    @ResponseBody
    public Object detail(@PathVariable("tSystemBulletinId") Integer tSystemBulletinId) {
        return tSystemBulletinService.selectById(tSystemBulletinId);
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TYouTuiController.java
@@ -4,6 +4,7 @@
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.enums.StatusEnum;
import com.stylefeng.guns.modular.system.model.TAgent;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
@@ -81,6 +82,7 @@
            Date endTime = DateUtil.getDate_str4(split[1]);
            wrapper.between("createTime",startTime,endTime);
        }
        wrapper.ne("status", StatusEnum.DELETE.getCode());
        return tYouTuiService.selectList(wrapper);
    }
@@ -114,8 +116,8 @@
        if(1 == tYouTui.getStatus()){
            return new SuccessTip(500,"启用下的优推不可删除!");
        }
        tYouTuiService.deleteById(tYouTuiId);
        tYouTui.setStatus(StatusEnum.DELETE.getCode());
        tYouTuiService.updateById(tYouTui);
        return SUCCESS_TIP;
    }
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/RevenueExpenditureResp.java
New file
@@ -0,0 +1,177 @@
package com.stylefeng.guns.modular.system.controller.resp;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
public class RevenueExpenditureResp implements Serializable {
    @ApiModelProperty(value = "主键")
    private Integer id;
    @ApiModelProperty(value = "订单号")
    private String code;
    @ApiModelProperty(value = "交易时间")
    private Date businessTime;
    @ApiModelProperty(value = "交易类型 1=支付订单 11=佣金体现 12=余额提现")
    private Integer businessType;
    @ApiModelProperty(value = "司机姓名")
    private String driverName;
    @ApiModelProperty(value = "司机电话")
    private  String driverPhone;
    @ApiModelProperty(value = "支付类型 1微信支付 2余额支付 3线下收款")
    private  Integer payType;
    @ApiModelProperty(value = "金额")
    private BigDecimal amount;
    @ApiModelProperty(value = "佣金抽成")
    private BigDecimal commissionAmount;
    @ApiModelProperty(value = "优惠券金额")
    private BigDecimal discountedPrice;
    @ApiModelProperty(value = "余额")
    private BigDecimal accountBalance;
    @ApiModelProperty(value = "状态 (2、108、109)完成")
    private Integer state;
    @ApiModelProperty(value = "司机id")
    private Integer driverId;
    @ApiModelProperty(value = "订单金额")
    private BigDecimal payMoney;
    @ApiModelProperty(value = "订单ID")
    private Integer orderId;
    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 BigDecimal getPayMoney() {
        return payMoney;
    }
    public void setPayMoney(BigDecimal payMoney) {
        this.payMoney = payMoney;
    }
    public Integer getDriverId() {
        return driverId;
    }
    public void setDriverId(Integer driverId) {
        this.driverId = driverId;
    }
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public Date getBusinessTime() {
        return businessTime;
    }
    public void setBusinessTime(Date businessTime) {
        this.businessTime = businessTime;
    }
    public Integer getBusinessType() {
        return businessType;
    }
    public void setBusinessType(Integer businessType) {
        this.businessType = businessType;
    }
    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 Integer getPayType() {
        return payType;
    }
    public void setPayType(Integer payType) {
        this.payType = payType;
    }
    public BigDecimal getAmount() {
        return amount;
    }
    public void setAmount(BigDecimal amount) {
        this.amount = amount;
    }
    public BigDecimal getCommissionAmount() {
        return commissionAmount;
    }
    public void setCommissionAmount(BigDecimal commissionAmount) {
        this.commissionAmount = commissionAmount;
    }
    public BigDecimal getDiscountedPrice() {
        return discountedPrice;
    }
    public void setDiscountedPrice(BigDecimal discountedPrice) {
        this.discountedPrice = discountedPrice;
    }
    public BigDecimal getAccountBalance() {
        return accountBalance;
    }
    public void setAccountBalance(BigDecimal accountBalance) {
        this.accountBalance = accountBalance;
    }
    public Integer getState() {
        return state;
    }
    public void setState(Integer state) {
        this.state = state;
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/UserMgrController.java
@@ -19,6 +19,7 @@
import com.stylefeng.guns.core.log.LogObjectHolder;
import com.stylefeng.guns.core.shiro.ShiroKit;
import com.stylefeng.guns.core.shiro.ShiroUser;
import com.stylefeng.guns.core.util.ObsUploadUtil;
import com.stylefeng.guns.core.util.SinataUtil;
import com.stylefeng.guns.core.util.ToolUtil;
import com.stylefeng.guns.modular.system.dao.UserMapper;
@@ -29,6 +30,7 @@
import com.stylefeng.guns.modular.system.service.ITDriverService;
import com.stylefeng.guns.modular.system.service.IUserService;
import com.stylefeng.guns.modular.system.transfer.UserDto;
import com.stylefeng.guns.modular.system.util.OssUploadUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
@@ -37,12 +39,10 @@
import org.springframework.web.multipart.MultipartFile;
import javax.naming.NoPermissionException;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import java.io.File;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.*;
/**
 * 系统管理员控制器
@@ -431,6 +431,28 @@
        return pictureName;
    }
    @ResponseBody
    @RequestMapping("/saveApk")
    public String saveApk(@RequestPart("myfile") MultipartFile file, HttpServletRequest request){
        Map<String, Object> m = new HashMap<>();
        try {
            String pictureName = UUID.randomUUID().toString() + "." + ToolUtil.getFileSuffix(file.getOriginalFilename());
            try {
                String fileSavePath = gunsProperties.getFileUploadPath()+"apk\\";
                String s = OssUploadUtil.ossUpload(request, file);
                // file.transferTo(new File(fileSavePath + pictureName));
                return s;
            } catch (Exception e) {
                e.printStackTrace();
            }
            m.put("imgUrl", gunsProperties.getFileUploadPath()+"apk/"+pictureName);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    /**
     * 判断当前登录的用户是否有操作这个用户的权限
     */
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/util/LabelReplaceUtil.java
New file
@@ -0,0 +1,16 @@
package com.stylefeng.guns.modular.system.controller.util;
import java.io.Serializable;
public class LabelReplaceUtil implements Serializable {
    /**
     * 对内容进行替换
     * @param content
     * @return
     */
    public static String replace(String content){
        return content.replace("& lt;", "<").replace("& gt;",">");
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TBillMapper.java
New file
@@ -0,0 +1,16 @@
package com.stylefeng.guns.modular.system.dao;
import com.stylefeng.guns.modular.system.model.TBill;
import com.baomidou.mybatisplus.mapper.BaseMapper;
/**
 * <p>
 * 发票管理 Mapper 接口
 * </p>
 *
 * @author stylefeng
 * @since 2023-03-14
 */
public interface TBillMapper extends BaseMapper<TBill> {
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TBroadcastMapper.java
New file
@@ -0,0 +1,18 @@
package com.stylefeng.guns.modular.system.dao;
import com.stylefeng.guns.modular.system.model.TBroadcast;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
 * <p>
 * 广播 Mapper 接口
 * </p>
 *
 * @author stylefeng
 * @since 2023-03-16
 */
@Mapper
public interface TBroadcastMapper extends BaseMapper<TBroadcast> {
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TCommercialMapper.java
New file
@@ -0,0 +1,16 @@
package com.stylefeng.guns.modular.system.dao;
import com.stylefeng.guns.modular.system.model.TCommercial;
import com.baomidou.mybatisplus.mapper.BaseMapper;
/**
 * <p>
 * 广告 Mapper 接口
 * </p>
 *
 * @author stylefeng
 * @since 2023-03-16
 */
public interface TCommercialMapper extends BaseMapper<TCommercial> {
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TEditionMapper.java
New file
@@ -0,0 +1,16 @@
package com.stylefeng.guns.modular.system.dao;
import com.stylefeng.guns.modular.system.model.TEdition;
import com.baomidou.mybatisplus.mapper.BaseMapper;
/**
 * <p>
 * 版本管理 Mapper 接口
 * </p>
 *
 * @author stylefeng
 * @since 2023-03-14
 */
public interface TEditionMapper extends BaseMapper<TEdition> {
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TRevenueMapper.java
New file
@@ -0,0 +1,45 @@
package com.stylefeng.guns.modular.system.dao;
import com.stylefeng.guns.modular.system.controller.resp.RevenueExpenditureResp;
import com.stylefeng.guns.modular.system.model.TRevenue;
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-03-13
 */
@Mapper
public interface TRevenueMapper extends BaseMapper<TRevenue> {
    /**
     * 获取列表
     * @param startTime
     * @param endTime
     * @param code
     * @param businessType
     * @param payType
     * @param driverName
     * @param roleType
     * @param objectId
     * @return
     */
    List<RevenueExpenditureResp> getPageList(@Param("startTime") String startTime, @Param("endTime")String endTime, @Param("code")String code,
                                             @Param("businessType")Integer businessType, @Param("payType")Integer payType, @Param("driverName")String driverName,
                                             @Param("roleType")Integer roleType, @Param("objectId")Integer objectId);
    /**
     *
     * @param code
     * @param type
     * @return
     */
    RevenueExpenditureResp commissionOrBalanceDetail(@Param("code")String code, @Param("type")Integer type);
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TSystemBulletinMapper.java
New file
@@ -0,0 +1,16 @@
package com.stylefeng.guns.modular.system.dao;
import com.stylefeng.guns.modular.system.model.TSystemBulletin;
import com.baomidou.mybatisplus.mapper.BaseMapper;
/**
 * <p>
 * 系统公告 Mapper 接口
 * </p>
 *
 * @author stylefeng
 * @since 2023-03-16
 */
public interface TSystemBulletinMapper extends BaseMapper<TSystemBulletin> {
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TSystemBulletinUserMapper.java
New file
@@ -0,0 +1,18 @@
package com.stylefeng.guns.modular.system.dao;
import com.stylefeng.guns.modular.system.model.TSystemBulletinUser;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
 * <p>
 * 系统公告-用户关系 Mapper 接口
 * </p>
 *
 * @author stylefeng
 * @since 2023-03-16
 */
@Mapper
public interface TSystemBulletinUserMapper extends BaseMapper<TSystemBulletinUser> {
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TBillMapper.xml
New file
@@ -0,0 +1,28 @@
<?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.TBillMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.system.model.TBill">
        <id column="id" property="id" />
        <result column="orderId" property="orderId" />
        <result column="billType" property="billType" />
        <result column="billHeaderType" property="billHeaderType" />
        <result column="companyName" property="companyName" />
        <result column="companyTaxNumber" property="companyTaxNumber" />
        <result column="billContent" property="billContent" />
        <result column="moreContent" property="moreContent" />
        <result column="billAmount" property="billAmount" />
        <result column="addresseeName" property="addresseeName" />
        <result column="addresseePhone" property="addresseePhone" />
        <result column="addresseeEmail" property="addresseeEmail" />
        <result column="state" property="state" />
        <result column="createTime" property="createTime" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, orderId, billType, billHeaderType, companyName, companyTaxNumber, billContent, moreContent, billAmount, addresseeName, addresseePhone, addresseeEmail, state, createTime
    </sql>
</mapper>
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TBroadcastMapper.xml
New file
@@ -0,0 +1,19 @@
<?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.TBroadcastMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.system.model.TBroadcast">
        <id column="id" property="id" />
        <result column="content" property="content" />
        <result column="sort" property="sort" />
        <result column="status" property="status" />
        <result column="createTime" property="createTime" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, content, sort, status, createTime
    </sql>
</mapper>
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TCommercialMapper.xml
New file
@@ -0,0 +1,29 @@
<?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.TCommercialMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.system.model.TCommercial">
        <id column="id" property="id" />
        <result column="type" property="type" />
        <result column="name" property="name" />
        <result column="url" property="url" />
        <result column="device" property="device" />
        <result column="isJump" property="isJump" />
        <result column="jumpType" property="jumpType" />
        <result column="jumpUrl" property="jumpUrl" />
        <result column="html" property="html" />
        <result column="sort" property="sort" />
        <result column="status" property="status" />
        <result column="createTime" property="createTime" />
        <result column="createUserId" property="createUserId" />
        <result column="updateTime" property="updateTime" />
        <result column="updateUserId" property="updateUserId" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, type, name, url, device, isJump, jumpType, jumpUrl, html, sort, status, createTime, createUserId, updateTime, updateUserId
    </sql>
</mapper>
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TEditionMapper.xml
New file
@@ -0,0 +1,19 @@
<?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.TEditionMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.system.model.TEdition">
        <id column="id" property="id" />
        <result column="editionNo" property="editionNo" />
        <result column="editionFile" property="editionFile" />
        <result column="editionAnnouncement" property="editionAnnouncement" />
        <result column="createTime" property="createTime" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, editionNo, editionFile, editionAnnouncement, createTime
    </sql>
</mapper>
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TRevenueMapper.xml
New file
@@ -0,0 +1,129 @@
<?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.TRevenueMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.system.model.TRevenue">
        <id column="id" property="id" />
        <result column="type" property="type" />
        <result column="userType" property="userType" />
        <result column="userId" property="userId" />
        <result column="orderId" property="orderId" />
        <result column="amount" property="amount" />
        <result column="createTime" property="createTime" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, type, userType, userId, orderId, amount, createTime
    </sql>
    <select id="getPageList" resultType="com.stylefeng.guns.modular.system.controller.resp.RevenueExpenditureResp">
        SELECT
            t.id,
            t.businessType,
            t.amount,
            t.businessTime,
            t.driverName,
            t.driverPhone,
            t.`code`,
            t.payType,
            t.state,
            t.discountedPrice,
            t.driverId,
            t.accountBalance,
            t.agentId,
            t.payMoney,
            t.orderId
        FROM
        (SELECT
            r.id,
            r.type AS businessType,
            r.amount,
            r.createTime AS businessTime,
            d.`name` AS driverName,
            d.phone AS driverPhone,
            o.`code`,
            o.payType,
            o.state,
            o.discountedPrice,
            o.payMoney,
            o.id AS orderId,
            d.id AS driverId,
            d.balance AS accountBalance,
            d.agentId
        FROM
            t_revenue r
                LEFT JOIN t_driver d ON r.userId = d.id
                LEFT JOIN t_order o ON r.orderId = o.id
        WHERE
            ( o.state = ${@com.stylefeng.guns.modular.system.enums.OrderStateEnum@WAIT_EVALUATED.getCode()}
                  OR o.state = ${@com.stylefeng.guns.modular.system.enums.OrderStateEnum@FINISH.getCode()} )
          AND r.type = 1
        UNION ALL
        SELECT
            cw.id,
            cw.businessType,
            cw.amount,
            cw.createTime AS businessTime,
            d.`name` AS driverName,
            d.phone AS driverPhone,
            cw.`code`,
            0 AS payType,
            cw.state,
            0 AS discountedPrice,
            0 AS payMoney,
            0 AS orderId,
            d.id AS driverId,
            d.balance AS accountBalance,
            d.agentId
        FROM
            t_cash_withdrawal cw
                LEFT JOIN t_driver d ON cw.userDriverId = d.id
        WHERE
            cw.type = 2) t
        <where>
            <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
                AND t.businessTime BETWEEN #{startTime} AND #{endTime}
            </if>
            <if test="code != null and code != ''">
                AND t.code LIKE concat('%',#{code},'%')
            </if>
            <if test="businessType != null">
                AND t.businessType = #{businessType}
            </if>
            <if test="payType != null">
                AND t.payType = #{payType}
            </if>
            <if test="driverName != null and driverName != ''">
                AND t.driverName LIKE concat('%',#{driverName},'%')
            </if>
            <if test="roleType != null and roleType == 3">
                AND t.agentId = #{objectId}
            </if>
        </where>
    </select>
    <select id="commissionOrBalanceDetail" resultType="com.stylefeng.guns.modular.system.controller.resp.RevenueExpenditureResp">
        SELECT
            cw.id,
            cw.businessType,
            cw.amount,
            cw.createTime AS businessTime,
            d.`name` AS driverName,
            d.phone AS driverPhone,
            cw.`code`,
            0 AS payType,
            cw.state,
            0 AS discountedPrice,
            0 AS payMoney,
            0 AS orderId,
            d.id AS driverId,
            d.balance AS accountBalance,
            d.agentId
        FROM
            t_cash_withdrawal cw
                LEFT JOIN t_driver d ON cw.userDriverId = d.id
        WHERE
            cw.type = 2 AND cw.businessType = #{type} AND cw.code = #{code}
    </select>
</mapper>
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TSystemBulletinMapper.xml
New file
@@ -0,0 +1,20 @@
<?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.TSystemBulletinMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.system.model.TSystemBulletin">
        <id column="id" property="id" />
        <result column="introduce" property="introduce" />
        <result column="img" property="img" />
        <result column="content" property="content" />
        <result column="status" property="status" />
        <result column="createTime" property="createTime" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, introduce, img, content, status, createTime
    </sql>
</mapper>
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TSystemBulletinUserMapper.xml
New file
@@ -0,0 +1,21 @@
<?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.TSystemBulletinUserMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.system.model.TSystemBulletinUser">
        <id column="id" property="id" />
        <result column="systemBulletinId" property="systemBulletinId" />
        <result column="userType" property="userType" />
        <result column="userId" property="userId" />
        <result column="isRead" property="isRead" />
        <result column="status" property="status" />
        <result column="createTime" property="createTime" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, systemBulletinId, userType, userId, isRead, status, createTime
    </sql>
</mapper>
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/enums/CashWithdrawalTypeEnum.java
New file
@@ -0,0 +1,50 @@
package com.stylefeng.guns.modular.system.enums;
/**
 * @Description 提现记录枚举
 * @Author xiaochen
 * @Date 2023/02/15 9:42
 */
public enum CashWithdrawalTypeEnum {
    COMMISSION_WITHDRAWAL(11, "佣金提现"),
    BALANCE_WITHDRAWAL(12, "余额提现");
    private String desc;
    private int code;
    CashWithdrawalTypeEnum(int code, String desc) {
        this.code = code;
        this.desc = desc;
    }
    public String getDesc() {
        return desc;
    }
    public int getCode() {
        return code;
    }
    /**
     * 通过code获取枚举
     *
     * @param code
     * @return
     */
    public static CashWithdrawalTypeEnum fromCode(Integer code) {
        CashWithdrawalTypeEnum[] resultTypes = CashWithdrawalTypeEnum.values();
        for (CashWithdrawalTypeEnum resultType : resultTypes) {
            if (code.equals(resultType.getCode())) {
                return resultType;
            }
        }
        return null;
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/enums/OrderStateEnum.java
@@ -9,7 +9,7 @@
 */
public enum OrderStateEnum {
    /*订单状态(101=待接单,102=已接单,103=前往预约点,104=到达预约点,105=开始服务,106=到达目的地,107=待评价,108=已完成,201=转单中,301=已取消)*/
    /*订单状态(101=待接单,102=已接单,103=前往预约点,104=到达预约点,105=开始服务,106=到达目的地,107=待支付,108=待评价,109=已完成,201=转单中,301=已取消,401=等待中)*/
    PENDING_ORDER(101, "待接单"),
    ORDER_RECEIVED(102, "已接单"),
@@ -17,8 +17,9 @@
    ARRIVE_APPOINTMENT_POINT(104, "到达预约点"),
    START_SERVICE(105, "开始服务"),
    ARRIVE_IN(106, "到达目的地"),
    WAIT_EVALUATED(107, "待评价"),
    FINISH(108, "已完成"),
    WAIT_PAY(107,"待支付"),
    WAIT_EVALUATED(108, "待评价"),
    FINISH(109, "已完成"),
    TRANSFERRING(201, "转单中"),
    CANCELED(301,"已取消"),
    WAITING(401,"等待中");
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/enums/RevenueTypeEnum.java
New file
@@ -0,0 +1,50 @@
package com.stylefeng.guns.modular.system.enums;
/**
 * @Description 用户司机枚举
 * @Author xiaochen
 * @Date 2023/02/15 9:42
 */
public enum RevenueTypeEnum {
    ORDER_REVENUE(1, "订单收入"),
    COMMISSION_INCOME(2, "分佣收入");
    private String desc;
    private int code;
    RevenueTypeEnum(int code, String desc) {
        this.code = code;
        this.desc = desc;
    }
    public String getDesc() {
        return desc;
    }
    public int getCode() {
        return code;
    }
    /**
     * 通过code获取枚举
     *
     * @param code
     * @return
     */
    public static RevenueTypeEnum fromCode(Integer code) {
        RevenueTypeEnum[] resultTypes = RevenueTypeEnum.values();
        for (RevenueTypeEnum resultType : resultTypes) {
            if (code.equals(resultType.getCode())) {
                return resultType;
            }
        }
        return null;
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/enums/StatusEnum.java
New file
@@ -0,0 +1,51 @@
package com.stylefeng.guns.modular.system.enums;
/**
 * @Description 优惠券状态枚举
 * @Author xiaochen
 * @Date 2023/02/15 9:42
 */
public enum StatusEnum {
    NORMAL(1, "正常"),
    FREEZE(2, "冻结"),
    DELETE(3, "删除");
    private String desc;
    private int code;
    StatusEnum(int code, String desc) {
        this.code = code;
        this.desc = desc;
    }
    public String getDesc() {
        return desc;
    }
    public int getCode() {
        return code;
    }
    /**
     * 通过code获取枚举
     *
     * @param code
     * @return
     */
    public static StatusEnum fromCode(Integer code) {
        StatusEnum[] resultTypes = StatusEnum.values();
        for (StatusEnum resultType : resultTypes) {
            if (code.equals(resultType.getCode())) {
                return resultType;
            }
        }
        return null;
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/enums/SystemConfigTypeEnum.java
New file
@@ -0,0 +1,57 @@
package com.stylefeng.guns.modular.system.enums;
/**
 * @Description 系统规则配置
 * @Author xiaochen
 * @Date 2023/02/15 9:42
 */
public enum SystemConfigTypeEnum {
    /*类型(1=派单规则,2=佣金分成规则,3=抽成规则,4=积分规则,5=价格规则,6=余额规则,7=客服管理)*/
    DISPATCH_RULES(1, "派单规则"),
    COMMISSION_SHARING_RULES(2, "佣金分成规则"),
    EXTRACTION_RULE(3, "抽成规则"),
    INTEGRAL_RULE(4, "积分规则"),
    PRICE_RULES(5, "价格规则"),
    BALANCE_RULES(6, "余额规则"),
    CUSTOMER_SERVICE_MGMT(7,"客服管理");
    private String desc;
    private int code;
    SystemConfigTypeEnum(int code, String desc) {
        this.code = code;
        this.desc = desc;
    }
    public String getDesc() {
        return desc;
    }
    public int getCode() {
        return code;
    }
    /**
     * 通过code获取枚举
     *
     * @param code
     * @return
     */
    public static SystemConfigTypeEnum fromCode(Integer code) {
        SystemConfigTypeEnum[] resultTypes = SystemConfigTypeEnum.values();
        for (SystemConfigTypeEnum resultType : resultTypes) {
            if (code.equals(resultType.getCode())) {
                return resultType;
            }
        }
        return null;
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/enums/TBillStateEnum.java
New file
@@ -0,0 +1,51 @@
package com.stylefeng.guns.modular.system.enums;
/**
 * @Description 发票状态枚举
 * @Author xiaochen
 * @Date 2023/02/15 9:42
 */
public enum TBillStateEnum {
    WAIT_BILL(1, "待开票"),
    FINISH_BILL(2, "已开票"),
    FAIL_BILL(3,"开票失败");
    private String desc;
    private int code;
    TBillStateEnum(int code, String desc) {
        this.code = code;
        this.desc = desc;
    }
    public String getDesc() {
        return desc;
    }
    public int getCode() {
        return code;
    }
    /**
     * 通过code获取枚举
     *
     * @param code
     * @return
     */
    public static TBillStateEnum fromCode(Integer code) {
        TBillStateEnum[] resultTypes = TBillStateEnum.values();
        for (TBillStateEnum resultType : resultTypes) {
            if (code.equals(resultType.getCode())) {
                return resultType;
            }
        }
        return null;
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/enums/UserTypeEnum.java
@@ -10,7 +10,8 @@
public enum UserTypeEnum {
    USER(1, "用户"),
    DRIVER(2, "司机");
    DRIVER(2, "司机"),
    AGENT(3,"代理商");
    private String desc;
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TBill.java
New file
@@ -0,0 +1,219 @@
package com.stylefeng.guns.modular.system.model;
import com.baomidou.mybatisplus.enums.IdType;
import java.math.BigDecimal;
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-03-14
 */
@TableName("t_bill")
public class TBill extends Model<TBill> {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 订单id
     */
    private Integer orderId;
    /**
     * 发票类型 1电子发票
     */
    private Integer billType;
    /**
     * 发票抬头 1公司 2个人
     */
    private Integer billHeaderType;
    /**
     * 公司名称/个人抬头名称
     */
    private String companyName;
    /**
     * 公司税号
     */
    private String companyTaxNumber;
    /**
     * 发票内容
     */
    private String billContent;
    /**
     * 更多内容
     */
    private String moreContent;
    /**
     * 发票金额
     */
    private BigDecimal billAmount;
    /**
     * 收件人姓名
     */
    private String addresseeName;
    /**
     * 收件人电话
     */
    private String addresseePhone;
    /**
     * 收件人邮箱
     */
    private String addresseeEmail;
    /**
     * 开票状态 1待开票 2已开票 3开票失败
     */
    private Integer state;
    /**
     * 添加时间
     */
    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 getBillType() {
        return billType;
    }
    public void setBillType(Integer billType) {
        this.billType = billType;
    }
    public Integer getBillHeaderType() {
        return billHeaderType;
    }
    public void setBillHeaderType(Integer billHeaderType) {
        this.billHeaderType = billHeaderType;
    }
    public String getCompanyName() {
        return companyName;
    }
    public void setCompanyName(String companyName) {
        this.companyName = companyName;
    }
    public String getCompanyTaxNumber() {
        return companyTaxNumber;
    }
    public void setCompanyTaxNumber(String companyTaxNumber) {
        this.companyTaxNumber = companyTaxNumber;
    }
    public String getBillContent() {
        return billContent;
    }
    public void setBillContent(String billContent) {
        this.billContent = billContent;
    }
    public String getMoreContent() {
        return moreContent;
    }
    public void setMoreContent(String moreContent) {
        this.moreContent = moreContent;
    }
    public BigDecimal getBillAmount() {
        return billAmount;
    }
    public void setBillAmount(BigDecimal billAmount) {
        this.billAmount = billAmount;
    }
    public String getAddresseeName() {
        return addresseeName;
    }
    public void setAddresseeName(String addresseeName) {
        this.addresseeName = addresseeName;
    }
    public String getAddresseePhone() {
        return addresseePhone;
    }
    public void setAddresseePhone(String addresseePhone) {
        this.addresseePhone = addresseePhone;
    }
    public String getAddresseeEmail() {
        return addresseeEmail;
    }
    public void setAddresseeEmail(String addresseeEmail) {
        this.addresseeEmail = addresseeEmail;
    }
    public Integer getState() {
        return state;
    }
    public void setState(Integer state) {
        this.state = state;
    }
    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 "TBill{" +
        "id=" + id +
        ", orderId=" + orderId +
        ", billType=" + billType +
        ", billHeaderType=" + billHeaderType +
        ", companyName=" + companyName +
        ", companyTaxNumber=" + companyTaxNumber +
        ", billContent=" + billContent +
        ", moreContent=" + moreContent +
        ", billAmount=" + billAmount +
        ", addresseeName=" + addresseeName +
        ", addresseePhone=" + addresseePhone +
        ", addresseeEmail=" + addresseeEmail +
        ", state=" + state +
        ", createTime=" + createTime +
        "}";
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TBroadcast.java
New file
@@ -0,0 +1,101 @@
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-03-16
 */
@TableName("t_broadcast")
public class TBroadcast extends Model<TBroadcast> {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 消息内容
     */
    private String content;
    /**
     * 排序
     */
    private Integer sort;
    /**
     * 状态(1=正常,2=冻结,3=删除)
     */
    private Integer status;
    /**
     * 添加时间
     */
    private Date createTime;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    public Integer getSort() {
        return sort;
    }
    public void setSort(Integer sort) {
        this.sort = sort;
    }
    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 "TBroadcast{" +
        "id=" + id +
        ", content=" + content +
        ", sort=" + sort +
        ", status=" + status +
        ", createTime=" + createTime +
        "}";
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCommercial.java
New file
@@ -0,0 +1,231 @@
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-03-16
 */
@TableName("t_commercial")
public class TCommercial extends Model<TCommercial> {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 类型(1=弹窗广告,2=底部广告)
     */
    private Integer type;
    /**
     * 名称
     */
    private String name;
    /**
     * 广告地址
     */
    private String url;
    /**
     * 设备(1=小程序,2=司机端)
     */
    private Integer device;
    /**
     * 是否跳转(0=否,1=是)
     */
    private Integer isJump;
    /**
     * 跳转类型(1=内部跳转,2=外部跳转)
     */
    private Integer jumpType;
    /**
     * 跳转连接
     */
    private String jumpUrl;
    /**
     * 富文本
     */
    private String html;
    /**
     * 排序
     */
    private Integer sort;
    /**
     * 状态(1=正常,2=冻结,3=删除)
     */
    private Integer status;
    /**
     * 添加时间
     */
    private Date createTime;
    /**
     * 添加人员id
     */
    private Integer createUserId;
    /**
     * 更新时间
     */
    private Date updateTime;
    /**
     * 更新人员id
     */
    private Integer updateUserId;
    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 getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
    public Integer getDevice() {
        return device;
    }
    public void setDevice(Integer device) {
        this.device = device;
    }
    public Integer getIsJump() {
        return isJump;
    }
    public void setIsJump(Integer isJump) {
        this.isJump = isJump;
    }
    public Integer getJumpType() {
        return jumpType;
    }
    public void setJumpType(Integer jumpType) {
        this.jumpType = jumpType;
    }
    public String getJumpUrl() {
        return jumpUrl;
    }
    public void setJumpUrl(String jumpUrl) {
        this.jumpUrl = jumpUrl;
    }
    public String getHtml() {
        return html;
    }
    public void setHtml(String html) {
        this.html = html;
    }
    public Integer getSort() {
        return sort;
    }
    public void setSort(Integer sort) {
        this.sort = sort;
    }
    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;
    }
    public Integer getCreateUserId() {
        return createUserId;
    }
    public void setCreateUserId(Integer createUserId) {
        this.createUserId = createUserId;
    }
    public Date getUpdateTime() {
        return updateTime;
    }
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
    public Integer getUpdateUserId() {
        return updateUserId;
    }
    public void setUpdateUserId(Integer updateUserId) {
        this.updateUserId = updateUserId;
    }
    @Override
    protected Serializable pkVal() {
        return this.id;
    }
    @Override
    public String toString() {
        return "TCommercial{" +
        "id=" + id +
        ", type=" + type +
        ", name=" + name +
        ", url=" + url +
        ", device=" + device +
        ", isJump=" + isJump +
        ", jumpType=" + jumpType +
        ", jumpUrl=" + jumpUrl +
        ", html=" + html +
        ", sort=" + sort +
        ", status=" + status +
        ", createTime=" + createTime +
        ", createUserId=" + createUserId +
        ", updateTime=" + updateTime +
        ", updateUserId=" + updateUserId +
        "}";
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCoupon.java
@@ -1,5 +1,6 @@
package com.stylefeng.guns.modular.system.model;
import com.baomidou.mybatisplus.annotations.TableLogic;
import com.baomidou.mybatisplus.enums.IdType;
import java.math.BigDecimal;
@@ -97,6 +98,19 @@
    @TableField("remaining_quantity")
    private Integer remainingQuantity;
    @ApiModelProperty(value = "删除 true未删除 false已删除")
    @TableField("status")
    @TableLogic
    private Boolean status;
    public Boolean getStatus() {
        return status;
    }
    public void setStatus(Boolean status) {
        this.status = status;
    }
    public Integer getRemainingQuantity() {
        return remainingQuantity;
    }
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TEdition.java
New file
@@ -0,0 +1,124 @@
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-03-14
 */
@TableName("t_edition")
public class TEdition extends Model<TEdition> {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 版本编号
     */
    private String editionNo;
    /**
     * 版本文件
     */
    private String editionFile;
    /**
     * 版本公告
     */
    private String editionAnnouncement;
    /**
     * 创建时间
     */
    private Date createTime;
    /**
     * 端口 1用户端 2司机端
     */
    private Integer editionPort;
    /**
     * 状态(1=正常,2=冻结,3=删除)
     */
    private Integer status;
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
    public Integer getEditionPort() {
        return editionPort;
    }
    public void setEditionPort(Integer editionPort) {
        this.editionPort = editionPort;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getEditionNo() {
        return editionNo;
    }
    public void setEditionNo(String editionNo) {
        this.editionNo = editionNo;
    }
    public String getEditionFile() {
        return editionFile;
    }
    public void setEditionFile(String editionFile) {
        this.editionFile = editionFile;
    }
    public String getEditionAnnouncement() {
        return editionAnnouncement;
    }
    public void setEditionAnnouncement(String editionAnnouncement) {
        this.editionAnnouncement = editionAnnouncement;
    }
    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 "TEdition{" +
        "id=" + id +
        ", editionNo=" + editionNo +
        ", editionFile=" + editionFile +
        ", editionAnnouncement=" + editionAnnouncement +
        ", createTime=" + createTime +
        "}";
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TRevenue.java
New file
@@ -0,0 +1,128 @@
package com.stylefeng.guns.modular.system.model;
import com.baomidou.mybatisplus.enums.IdType;
import java.math.BigDecimal;
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-03-13
 */
@TableName("t_revenue")
public class TRevenue extends Model<TRevenue> {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 收入类型(1=订单收入,2=分佣收入)
     */
    private Integer type;
    /**
     * 用户类型(1=用户,2=司机,3=代理商)
     */
    private Integer userType;
    /**
     * 用户id
     */
    private Integer userId;
    /**
     * 订单id
     */
    private Integer orderId;
    /**
     * 收入金额
     */
    private BigDecimal amount;
    /**
     * 添加时间
     */
    private Date createTime;
    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 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 Integer getOrderId() {
        return orderId;
    }
    public void setOrderId(Integer orderId) {
        this.orderId = orderId;
    }
    public BigDecimal getAmount() {
        return amount;
    }
    public void setAmount(BigDecimal amount) {
        this.amount = amount;
    }
    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 "TRevenue{" +
        "id=" + id +
        ", type=" + type +
        ", userType=" + userType +
        ", userId=" + userId +
        ", orderId=" + orderId +
        ", amount=" + amount +
        ", createTime=" + createTime +
        "}";
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TSystemBulletin.java
New file
@@ -0,0 +1,129 @@
package com.stylefeng.guns.modular.system.model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableLogic;
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 com.fasterxml.jackson.annotation.JsonIgnore;
import java.io.Serializable;
/**
 * <p>
 * 系统公告
 * </p>
 *
 * @author stylefeng
 * @since 2023-03-16
 */
@TableName("t_system_bulletin")
public class TSystemBulletin extends Model<TSystemBulletin> {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 标题
     */
    private String introduce;
    /**
     * 图片
     */
    private String img;
    /**
     * 内容
     */
    private String content;
    /**
     * 状态(1=正常,2=冻结,3=删除)
     */
    private Integer status;
    /**
     * 添加时间
     */
    private Date createTime;
    /**
     * 是否发送 1未发送 2已发送
     */
    private Integer state;
    public Integer getState() {
        return state;
    }
    public void setState(Integer state) {
        this.state = state;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getIntroduce() {
        return introduce;
    }
    public void setIntroduce(String introduce) {
        this.introduce = introduce;
    }
    public String getImg() {
        return img;
    }
    public void setImg(String img) {
        this.img = img;
    }
    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 "TSystemBulletin{" +
        "id=" + id +
        ", introduce=" + introduce +
        ", img=" + img +
        ", content=" + content +
        ", status=" + status +
        ", createTime=" + createTime +
        "}";
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TSystemBulletinUser.java
New file
@@ -0,0 +1,128 @@
package com.stylefeng.guns.modular.system.model;
import com.baomidou.mybatisplus.annotations.TableLogic;
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-03-16
 */
@TableName("t_system_bulletin_user")
public class TSystemBulletinUser extends Model<TSystemBulletinUser> {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * 系统公告
     */
    private Integer systemBulletinId;
    /**
     * 用户类型(1=用户,2=司机)
     */
    private Integer userType;
    /**
     * 用户id
     */
    private Integer userId;
    /**
     * 阅读(0=否,1=是)
     */
    private Integer isRead;
    /**
     * 状态(1=正常,2=冻结,3=删除)
     */
    private Integer status;
    /**
     * 添加时间
     */
    private Date createTime;
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public Integer getSystemBulletinId() {
        return systemBulletinId;
    }
    public void setSystemBulletinId(Integer systemBulletinId) {
        this.systemBulletinId = systemBulletinId;
    }
    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 Integer getIsRead() {
        return isRead;
    }
    public void setIsRead(Integer isRead) {
        this.isRead = isRead;
    }
    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 "TSystemBulletinUser{" +
        "id=" + id +
        ", systemBulletinId=" + systemBulletinId +
        ", userType=" + userType +
        ", userId=" + userId +
        ", isRead=" + isRead +
        ", status=" + status +
        ", createTime=" + createTime +
        "}";
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITBillService.java
New file
@@ -0,0 +1,28 @@
package com.stylefeng.guns.modular.system.service;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.modular.system.model.TBill;
import com.baomidou.mybatisplus.service.IService;
/**
 * <p>
 * 发票管理 服务类
 * </p>
 *
 * @author stylefeng
 * @since 2023-03-14
 */
public interface ITBillService extends IService<TBill> {
    /**
     * 获取发票wrapper
     * @param createTime
     * @param addresseePhone
     * @param state
     * @param billType
     * @param billHeaderType
     * @return
     */
    EntityWrapper<TBill> getPageListWrapper(String createTime, String addresseePhone, Integer state, Integer billType, Integer billHeaderType);
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITBroadcastService.java
New file
@@ -0,0 +1,23 @@
package com.stylefeng.guns.modular.system.service;
import com.stylefeng.guns.modular.system.model.TBroadcast;
import com.baomidou.mybatisplus.service.IService;
/**
 * <p>
 * 广播 服务类
 * </p>
 *
 * @author stylefeng
 * @since 2023-03-16
 */
public interface ITBroadcastService extends IService<TBroadcast> {
    /**
     * 判断是否存在该排序
     *
     * @return
     */
    Boolean isExit(String id, Integer sort);
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITCommercialService.java
New file
@@ -0,0 +1,16 @@
package com.stylefeng.guns.modular.system.service;
import com.stylefeng.guns.modular.system.model.TCommercial;
import com.baomidou.mybatisplus.service.IService;
/**
 * <p>
 * 广告 服务类
 * </p>
 *
 * @author stylefeng
 * @since 2023-03-16
 */
public interface ITCommercialService extends IService<TCommercial> {
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITEditionService.java
New file
@@ -0,0 +1,16 @@
package com.stylefeng.guns.modular.system.service;
import com.stylefeng.guns.modular.system.model.TEdition;
import com.baomidou.mybatisplus.service.IService;
/**
 * <p>
 * 版本管理 服务类
 * </p>
 *
 * @author stylefeng
 * @since 2023-03-14
 */
public interface ITEditionService extends IService<TEdition> {
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITRevenueService.java
New file
@@ -0,0 +1,55 @@
package com.stylefeng.guns.modular.system.service;
import com.stylefeng.guns.modular.system.controller.resp.RevenueExpenditureResp;
import com.stylefeng.guns.modular.system.model.TRevenue;
import com.baomidou.mybatisplus.service.IService;
import org.springframework.ui.Model;
import java.util.List;
/**
 * <p>
 * 收入记录 服务类
 * </p>
 *
 * @author stylefeng
 * @since 2023-03-13
 */
public interface ITRevenueService extends IService<TRevenue> {
    /**
     * 获取列表
     * @param code 订单号
     * @param businessType 交易类型
     * @param payType 支付类型
     * @param driverName 司机名称
     * @param businessTime 交易时间
     * @return
     */
    List<RevenueExpenditureResp> getPageList(String code, Integer businessType, Integer payType, String driverName, String businessTime);
    /**
     * 跳转到佣金提现详情
     * @param code
     * @param model
     */
    void commissionDetail(String code, Model model);
    /**
     * 跳转到余额提现详情
     * @param code
     * @param model
     */
    void balanceDetail(String code, Model model);
    /**
     * 佣金提现余额提现封装model
     */
    void packageModel(RevenueExpenditureResp revenueExpenditureResp,Model model);
    /**
     * 跳转到支付订单详情
     * @param code
     * @param model
     */
    void orderDetail(String code, Model model);
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITSystemBulletinService.java
New file
@@ -0,0 +1,21 @@
package com.stylefeng.guns.modular.system.service;
import com.stylefeng.guns.modular.system.model.TSystemBulletin;
import com.baomidou.mybatisplus.service.IService;
/**
 * <p>
 * 系统公告 服务类
 * </p>
 *
 * @author stylefeng
 * @since 2023-03-16
 */
public interface ITSystemBulletinService extends IService<TSystemBulletin> {
    /**
     * 发送消息给司机
     * @param tSystemBulletin
     */
    void sendBulletin(TSystemBulletin tSystemBulletin);
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITSystemBulletinUserService.java
New file
@@ -0,0 +1,22 @@
package com.stylefeng.guns.modular.system.service;
import com.stylefeng.guns.modular.system.model.TSystemBulletinUser;
import com.baomidou.mybatisplus.service.IService;
/**
 * <p>
 * 系统公告-用户关系 服务类
 * </p>
 *
 * @author stylefeng
 * @since 2023-03-16
 */
public interface ITSystemBulletinUserService extends IService<TSystemBulletinUser> {
    /**
     * 修改公告用户关联状态
     * @param tSystemBulletinId
     */
    void deleteBulletinUser(Integer tSystemBulletinId);
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAgentServiceImpl.java
@@ -7,6 +7,7 @@
import com.stylefeng.guns.modular.system.dao.*;
import com.stylefeng.guns.modular.system.enums.OrderStateEnum;
import com.stylefeng.guns.modular.system.enums.PayStatusEnum;
import com.stylefeng.guns.modular.system.enums.StatusEnum;
import com.stylefeng.guns.modular.system.enums.UserTypeEnum;
import com.stylefeng.guns.modular.system.model.*;
import com.stylefeng.guns.modular.system.service.ITAgentService;
@@ -72,6 +73,7 @@
        if(Objects.requireNonNull(ShiroKit.getUser()).getRoleType() == 3){
            wrapper.eq("id",ShiroKit.getUser().getObjectId());
        }
        wrapper.ne("status", StatusEnum.DELETE.getCode());
        return wrapper;
    }
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAppUserServiceImpl.java
@@ -7,6 +7,7 @@
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.enums.StatusEnum;
import com.stylefeng.guns.modular.system.model.TAppUser;
import com.stylefeng.guns.modular.system.dao.TAppUserMapper;
import com.stylefeng.guns.modular.system.model.TCoupon;
@@ -151,6 +152,7 @@
        if(Objects.nonNull(status)){
            wrapper.eq("status",status);
        }
        wrapper.ne("status", StatusEnum.DELETE.getCode());
        return wrapper;
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBillServiceImpl.java
New file
@@ -0,0 +1,50 @@
package com.stylefeng.guns.modular.system.service.impl;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.core.util.DateUtil;
import com.stylefeng.guns.modular.system.model.TBill;
import com.stylefeng.guns.modular.system.dao.TBillMapper;
import com.stylefeng.guns.modular.system.service.ITBillService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.Date;
import java.util.Objects;
/**
 * <p>
 * 发票管理 服务实现类
 * </p>
 *
 * @author stylefeng
 * @since 2023-03-14
 */
@Service
public class TBillServiceImpl extends ServiceImpl<TBillMapper, TBill> implements ITBillService {
    @Override
    public EntityWrapper<TBill> getPageListWrapper(String createTime, String addresseePhone, Integer state, Integer billType, Integer billHeaderType) {
        EntityWrapper<TBill> wrapper = new EntityWrapper<>();
        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);
        }
        if(StringUtils.hasLength(addresseePhone)){
            wrapper.like("addresseePhone",addresseePhone);
        }
        if(Objects.nonNull(state)){
            wrapper.eq("state",state);
        }
        if(Objects.nonNull(billType)){
            wrapper.eq("billType",billType);
        }
        if(Objects.nonNull(billHeaderType)){
            wrapper.eq("billHeaderType",billHeaderType);
        }
        return wrapper;
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBranchOfficeServiceImpl.java
@@ -5,6 +5,7 @@
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.enums.StatusEnum;
import com.stylefeng.guns.modular.system.model.*;
import com.stylefeng.guns.modular.system.service.ITBranchOfficeService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
@@ -125,6 +126,7 @@
        if(Objects.nonNull(status)){
            wrapper.eq("status",status);
        }
        wrapper.ne("status", StatusEnum.DELETE.getCode());
        // 判断代理商 分公司
        Integer roleType = Objects.requireNonNull(ShiroKit.getUser()).getRoleType();
        Integer objectId = Objects.requireNonNull(ShiroKit.getUser()).getObjectId();
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBroadcastServiceImpl.java
New file
@@ -0,0 +1,41 @@
package com.stylefeng.guns.modular.system.service.impl;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.modular.system.model.TBroadcast;
import com.stylefeng.guns.modular.system.dao.TBroadcastMapper;
import com.stylefeng.guns.modular.system.service.ITBroadcastService;
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.Objects;
/**
 * <p>
 * 广播 服务实现类
 * </p>
 *
 * @author stylefeng
 * @since 2023-03-16
 */
@Service
public class TBroadcastServiceImpl extends ServiceImpl<TBroadcastMapper, TBroadcast> implements ITBroadcastService {
    @Autowired
    private TBroadcastMapper tBroadcastMapper;
    @Override
    public Boolean isExit(String id, Integer sort) {
        Integer count = tBroadcastMapper.selectCount(new EntityWrapper<TBroadcast>()
                .eq("sort", sort));
        if (StringUtils.hasLength(id)) {
            // 修改
            TBroadcast tBroadcast = tBroadcastMapper.selectById(id);
            return Objects.nonNull(tBroadcast) && !tBroadcast.getSort().equals(sort) && count > 0;
        } else {
            // 新增
            return count > 0;
        }
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCommercialServiceImpl.java
New file
@@ -0,0 +1,20 @@
package com.stylefeng.guns.modular.system.service.impl;
import com.stylefeng.guns.modular.system.model.TCommercial;
import com.stylefeng.guns.modular.system.dao.TCommercialMapper;
import com.stylefeng.guns.modular.system.service.ITCommercialService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 广告 服务实现类
 * </p>
 *
 * @author stylefeng
 * @since 2023-03-16
 */
@Service
public class TCommercialServiceImpl extends ServiceImpl<TCommercialMapper, TCommercial> implements ITCommercialService {
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverServiceImpl.java
@@ -11,6 +11,7 @@
import com.stylefeng.guns.modular.system.controller.util.UUIDUtil;
import com.stylefeng.guns.modular.system.dao.*;
import com.stylefeng.guns.modular.system.enums.OrderStateEnum;
import com.stylefeng.guns.modular.system.enums.StatusEnum;
import com.stylefeng.guns.modular.system.model.*;
import com.stylefeng.guns.modular.system.service.ITDriverService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
@@ -291,7 +292,7 @@
        // 通过省市查询代理商
        List<TAgent> tAgent = tAgentMapper.selectList(new EntityWrapper<TAgent>().eq("provinceCode", province.getCode())
                .eq("cityCode", city.getCode())
                .eq("status", 1)
                .eq("status", StatusEnum.NORMAL.getCode())
                .last("LIMIT 1"));
        if(!CollectionUtils.isEmpty(tAgent)){
            tDriver.setAgentId(tAgent.get(0).getId());
@@ -312,7 +313,7 @@
        // 通过省市区查询分公司
        List<TBranchOffice> tBranchOffice = tBranchOfficeMapper.selectList(new EntityWrapper<TBranchOffice>().eq("provinceCode", province.getCode())
                .eq("cityCode", city.getCode())
                .eq("status", 1)
                .eq("status", StatusEnum.NORMAL.getCode())
                .eq("districtCode", area.getCode())
                .last("LIMIT 1"));
        if(!CollectionUtils.isEmpty(tBranchOffice)){
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TEditionServiceImpl.java
New file
@@ -0,0 +1,20 @@
package com.stylefeng.guns.modular.system.service.impl;
import com.stylefeng.guns.modular.system.model.TEdition;
import com.stylefeng.guns.modular.system.dao.TEditionMapper;
import com.stylefeng.guns.modular.system.service.ITEditionService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 版本管理 服务实现类
 * </p>
 *
 * @author stylefeng
 * @since 2023-03-14
 */
@Service
public class TEditionServiceImpl extends ServiceImpl<TEditionMapper, TEdition> implements ITEditionService {
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java
@@ -97,6 +97,7 @@
        // 查询司机
        TDriver tDriver = tDriverMapper.selectById(tOrder.getDriverId());
        model.addAttribute("driverName",tDriver.getName());
        model.addAttribute("driverPhone",tDriver.getPhone());
        // 查询司机所属分公司
        TBranchOffice tBranchOffice = tBranchOfficeMapper.selectById(tDriver.getBranchOfficeId());
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TRevenueServiceImpl.java
New file
@@ -0,0 +1,131 @@
package com.stylefeng.guns.modular.system.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.core.shiro.ShiroKit;
import com.stylefeng.guns.modular.system.controller.resp.RevenueExpenditureResp;
import com.stylefeng.guns.modular.system.dao.*;
import com.stylefeng.guns.modular.system.enums.CashWithdrawalTypeEnum;
import com.stylefeng.guns.modular.system.enums.RevenueTypeEnum;
import com.stylefeng.guns.modular.system.enums.SystemConfigTypeEnum;
import com.stylefeng.guns.modular.system.enums.UserTypeEnum;
import com.stylefeng.guns.modular.system.model.*;
import com.stylefeng.guns.modular.system.service.ITEvaluateService;
import com.stylefeng.guns.modular.system.service.ITOrderService;
import com.stylefeng.guns.modular.system.service.ITRevenueService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.stylefeng.guns.modular.system.service.ITSystemConfigService;
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.List;
import java.util.Objects;
import java.util.Optional;
/**
 * <p>
 * 收入记录 服务实现类
 * </p>
 *
 * @author stylefeng
 * @since 2023-03-13
 */
@Service
public class TRevenueServiceImpl extends ServiceImpl<TRevenueMapper, TRevenue> implements ITRevenueService {
    @Autowired
    private TRevenueMapper tRevenueMapper;
    @Autowired
    private TAppUserMapper tAppUserMapper;
    @Autowired
    private ITSystemConfigService tSystemConfigService;
    @Autowired
    private ITOrderService tOrderService;
    @Autowired
    private ITEvaluateService tEvaluateService;
    @Override
    public List<RevenueExpenditureResp> getPageList(String code, Integer businessType, Integer payType, String driverName, String businessTime) {
        String startTime = null;
        String endTime = null;
        // 开始,结束时间
        if(StringUtils.hasLength(businessTime)){
            String[] split = businessTime.split(" - ");
            startTime = split[0];
            endTime = split[1];
        }
        Integer roleType = Objects.requireNonNull(ShiroKit.getUser()).getRoleType();
        Integer objectId = Objects.requireNonNull(ShiroKit.getUser()).getObjectId();
        List<RevenueExpenditureResp> pageList = tRevenueMapper.getPageList(startTime, endTime, code, businessType, payType, driverName, roleType, objectId);
        // 查询抽佣规则
        TSystemConfig tSystemConfig = tSystemConfigService.selectOne(new EntityWrapper<TSystemConfig>()
                .eq("type", SystemConfigTypeEnum.EXTRACTION_RULE.getCode()));
        for (RevenueExpenditureResp revenueExpenditureResp : pageList) {
            BigDecimal commissionAmount = BigDecimal.ZERO;
            if(1 == revenueExpenditureResp.getBusinessType()){
                // 计算佣金提成
                // 1.该订单的代驾用户是否为该司机邀请
                Integer count = tAppUserMapper.selectCount(new EntityWrapper<TAppUser>()
                        .eq("inviterType", UserTypeEnum.DRIVER.getCode())
                        .eq("inviterId", revenueExpenditureResp.getDriverId()));
                if(count>0){
                    commissionAmount = commissionAmount.add(JSONObject.parseObject(tSystemConfig.getContent()).getBigDecimal("num1"));
                }
                // 2.查询跟该订单相关的分佣收入
                List<TRevenue> tRevenues = tRevenueMapper.selectList(new EntityWrapper<TRevenue>()
                        .eq("type", RevenueTypeEnum.COMMISSION_INCOME.getCode())
                        .eq("orderId", revenueExpenditureResp.getOrderId()));
                Optional<BigDecimal> reduce = tRevenues.stream().map(TRevenue::getAmount).reduce(BigDecimal::add);
                if(reduce.isPresent()){
                    commissionAmount = commissionAmount.add(reduce.get());
                }
                revenueExpenditureResp.setCommissionAmount(commissionAmount);
            }
        }
        return pageList;
    }
    @Override
    public void commissionDetail(String code, Model model) {
        RevenueExpenditureResp revenueExpenditureResp = tRevenueMapper.commissionOrBalanceDetail(code, CashWithdrawalTypeEnum.COMMISSION_WITHDRAWAL.getCode());
        this.packageModel(revenueExpenditureResp,model);
    }
    @Override
    public void balanceDetail(String code, Model model) {
        RevenueExpenditureResp revenueExpenditureResp = tRevenueMapper.commissionOrBalanceDetail(code, CashWithdrawalTypeEnum.BALANCE_WITHDRAWAL.getCode());
        this.packageModel(revenueExpenditureResp,model);
    }
    @Override
    public void packageModel(RevenueExpenditureResp revenueExpenditureResp,Model model) {
        model.addAttribute("code",revenueExpenditureResp.getCode());
        model.addAttribute("businessTime",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(revenueExpenditureResp.getBusinessTime()));
        model.addAttribute("businessType",revenueExpenditureResp.getBusinessType());
        model.addAttribute("driverName",revenueExpenditureResp.getDriverName());
        model.addAttribute("driverPhone",revenueExpenditureResp.getDriverPhone());
        model.addAttribute("amount",revenueExpenditureResp.getAmount());
        model.addAttribute("accountBalance",revenueExpenditureResp.getAccountBalance());
    }
    @Override
    public void orderDetail(String code, Model model) {
        // 查询订单
        TOrder tOrder = tOrderService.selectOne(new EntityWrapper<TOrder>().eq("code", code)
                .last("LIMIT 1"));
        tOrderService.orderDetail(tOrder.getId(),model);
        // 查询评价
        TEvaluate tEvaluate = tEvaluateService.selectOne(new EntityWrapper<TEvaluate>().eq("orderId", tOrder.getId()));
        if(Objects.nonNull(tEvaluate)){
            model.addAttribute("evaluateScore",tEvaluate.getScore());
            model.addAttribute("evaluateContent",tEvaluate.getEvaluate());
        }else {
            model.addAttribute("evaluateScore","");
            model.addAttribute("evaluateContent","");
        }
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TSystemBulletinServiceImpl.java
New file
@@ -0,0 +1,56 @@
package com.stylefeng.guns.modular.system.service.impl;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.modular.system.dao.TDriverMapper;
import com.stylefeng.guns.modular.system.enums.UserTypeEnum;
import com.stylefeng.guns.modular.system.model.TDriver;
import com.stylefeng.guns.modular.system.model.TSystemBulletin;
import com.stylefeng.guns.modular.system.dao.TSystemBulletinMapper;
import com.stylefeng.guns.modular.system.model.TSystemBulletinUser;
import com.stylefeng.guns.modular.system.service.ITSystemBulletinService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.stylefeng.guns.modular.system.service.ITSystemBulletinUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * <p>
 * 系统公告 服务实现类
 * </p>
 *
 * @author stylefeng
 * @since 2023-03-16
 */
@Service
public class TSystemBulletinServiceImpl extends ServiceImpl<TSystemBulletinMapper, TSystemBulletin> implements ITSystemBulletinService {
    @Autowired
    private ITSystemBulletinUserService tSystemBulletinUserService;
    @Autowired
    private TDriverMapper tDriverMapper;
    @Override
    public void sendBulletin(TSystemBulletin tSystemBulletin) {
        // 判断发送状态
        if(2 == tSystemBulletin.getState()){
            // 查找所有司机
            List<TDriver> list = tDriverMapper.selectList(new EntityWrapper<TDriver>().eq("id",1));
            List<TSystemBulletinUser> tSystemBulletinUsers = new ArrayList<>(list.size());
            for (TDriver tDriver : list) {
                TSystemBulletinUser tSystemBulletinUser = new TSystemBulletinUser();
                tSystemBulletinUser.setCreateTime(new Date());
                tSystemBulletinUser.setStatus(1);
                tSystemBulletinUser.setSystemBulletinId(tSystemBulletin.getId());
                tSystemBulletinUser.setUserId(tDriver.getId());
                tSystemBulletinUser.setUserType(UserTypeEnum.DRIVER.getCode());
                tSystemBulletinUser.setIsRead(0);
                tSystemBulletinUsers.add(tSystemBulletinUser);
            }
            tSystemBulletinUserService.insertBatch(tSystemBulletinUsers);
        }
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TSystemBulletinUserServiceImpl.java
New file
@@ -0,0 +1,34 @@
package com.stylefeng.guns.modular.system.service.impl;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.stylefeng.guns.modular.system.dao.TSystemBulletinUserMapper;
import com.stylefeng.guns.modular.system.enums.StatusEnum;
import com.stylefeng.guns.modular.system.model.TSystemBulletinUser;
import com.stylefeng.guns.modular.system.service.ITSystemBulletinUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * <p>
 * 系统公告-用户关系 服务实现类
 * </p>
 *
 * @author stylefeng
 * @since 2023-03-16
 */
@Service
public class TSystemBulletinUserServiceImpl extends ServiceImpl<TSystemBulletinUserMapper, TSystemBulletinUser> implements ITSystemBulletinUserService {
    @Autowired
    private TSystemBulletinUserMapper tSystemBulletinUserMapper;
    @Override
    public void deleteBulletinUser(Integer bulletinId) {
        List<TSystemBulletinUser> tSystemBulletinUsers = tSystemBulletinUserMapper.selectList(new EntityWrapper<TSystemBulletinUser>().eq("systemBulletinId", bulletinId));
        tSystemBulletinUsers.forEach(bulletin->bulletin.setStatus(StatusEnum.DELETE.getCode()));
        this.updateBatchById(tSystemBulletinUsers);
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/DateUtil.java
@@ -1120,6 +1120,42 @@
        return defaultStartDate + "," + defaultEndDate;
    }
    /**
     * 获取当前日期周几
     * @param date
     * @return
     */
    public static String getWeekDay(Date date){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        int weekIdx = calendar.get(Calendar.DAY_OF_WEEK) - 1;
        String day = null;
        switch (weekIdx) {
            case 1:
                day = "周一";
                break;
            case 2:
                day = "周二";
                break;
            case 3:
                day = "周三";
                break;
            case 4:
                day = "周四";
                break;
            case 5:
                day = "周五";
                break;
            case 6:
                day = "周六";
                break;
            default:
                day = "周日";
                break;
        }
        return day;
    }
    
    
    
management/guns-admin/src/main/webapp/WEB-INF/view/common/tags/uploadFile.tag
@@ -5,7 +5,7 @@
        <input type="hidden" id="${id}" name="${id}"/>
    </div>
    <div class="col-sm-2">
        <button class="btn btn-outline btn-success" type="button" onclick="UploadFileFn()"><i class="fa fa-upload"></i>上传文件</button>
        <button class="btn btn-outline btn-success" type="button" onclick="TEdition.previewFile()"><i class="fa fa-upload"></i>上传文件</button>
    </div>
</div>
<div class="col-sm-12 progress progress-striped" style="margin-top: 10px;">
management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgent_add.html
@@ -10,21 +10,21 @@
                        <div class="initialLevel col-sm-6 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>
                            <input id="principal" name="principal" type="text" maxlength="20" placeholder="请输入" style="height: 30px" required>
                        </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>
                            <label class="control-label" >联系电话:</label>
                            <input id="principalPhone" name="principalPhone" type="number" style="height: 30px" required>
                            <input id="principalPhone" name="principalPhone" maxlength="11" type="number" placeholder="请输入" style="height: 30px" required>
                        </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="email" name="email" type="email" style="height: 30px">
                            <input id="email" name="email" type="email" maxlength="40" placeholder="请输入" style="height: 30px">
                        </div>
                    </div>
@@ -39,14 +39,14 @@
                    <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">
                            <input id="bankDeposit" name="bankDeposit" type="text" maxlength="20" placeholder="请输入" 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">
                            <input id="bankAccount" name="bankAccount" type="number" maxlength="20" placeholder="请输入" style="height: 30px">
                        </div>
                    </div>
management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tAppUser.html
@@ -26,7 +26,6 @@
                                    <option value="">状态</option>
                                    <option value="1">正常</option>
                                    <option value="2">冻结</option>
                                    <option value="3">已删除</option>
                                </select>
                            </div>
                            <div class="col-sm-2">
management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tAppUserException.html
@@ -26,7 +26,6 @@
                                    <option value="">状态</option>
                                    <option value="1">正常</option>
                                    <option value="2">冻结</option>
                                    <option value="3">已删除</option>
                                </select>
                            </div>
                            <div class="col-sm-2">
management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tAppUserStartAndStop.html
@@ -9,10 +9,10 @@
                        <input hidden id="status" value="${status}">
                        <div class="col-lg-3">
                            @if(status==1){
                                冻结理由:<textarea id="stopRemark" placeholder="请输入冻结理由" style="width: 681px; height: 249px;"></textarea>
                                冻结理由:<textarea id="stopRemark" placeholder="请输入冻结理由" maxlength="200" style="width: 681px; height: 249px;"></textarea>
                            @}
                            @if(status==2){
                                启用理由:<textarea id="startRemark" placeholder="请输入启用理由" style="width: 681px; height: 249px;"></textarea>
                                启用理由:<textarea id="startRemark" placeholder="请输入启用理由" maxlength="200" style="width: 681px; height: 249px;"></textarea>
                            @}
                        </div>
                        <div class="hidden-xs" id="TAppUserTableToolbar" role="group"  style="margin-left:300px">
management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tAppUserStartAndStopException.html
@@ -9,10 +9,10 @@
                        <input hidden id="status" value="${status}">
                        <div class="col-lg-3">
                            @if(status==1){
                                冻结理由:<textarea id="stopRemark" placeholder="请输入冻结理由" style="width: 681px; height: 249px;"></textarea>
                                冻结理由:<textarea id="stopRemark" placeholder="请输入冻结理由" maxlength="200" style="width: 681px; height: 249px;"></textarea>
                            @}
                            @if(status==2){
                                启用理由:<textarea id="startRemark" placeholder="请输入启用理由" style="width: 681px; height: 249px;"></textarea>
                                启用理由:<textarea id="startRemark" placeholder="请输入启用理由" maxlength="200" style="width: 681px; height: 249px;"></textarea>
                            @}
                        </div>
                        <div class="hidden-xs" id="TAppUserTableToolbar" role="group"  style="margin-left:300px">
management/guns-admin/src/main/webapp/WEB-INF/view/system/tBill/tBill.html
New file
@@ -0,0 +1,75 @@
@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="addresseePhone" name="手机号" />
                            </div>
                            <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>
                                    <option value="3">开票失败</option>
                                </select>
                            </div>
                            <div class="col-sm-2">
                                <select class="input-group" id="billType" style="width: 180px;height: 33px" name="billType">
                                    <option value="">发票类型</option>
                                    <option value="1">电子发票</option>
                                </select>
                            </div>
                            <div class="col-sm-2">
                                <select class="input-group" id="billHeaderType" style="width: 180px;height: 33px" name="billHeaderType">
                                    <option value="">抬头类型</option>
                                    <option value="1">公司</option>
                                    <option value="2">个人</option>
                                </select>
                            </div>
                            <div class="col-sm-2">
                                <#button name="搜索" icon="fa-search" clickFun="TBill.search()"/>
                                <#button name="重置" icon="fa-trash" clickFun="TBill.resetSearch()" space="true"/>
                            </div>
                            <div class="col-sm-12">
                                <button type="button" class="btn btn-primary " onclick="TBill.export()" id="export">
                                    <i class="fa "></i>&nbsp;导出
                                </button>
                            </div>
                        </div>
                        <div class="hidden-xs" id="TBillTableToolbar" role="group">
                            @if(shiro.hasPermission("/tBill/add")){
                                <#button name="添加" icon="fa-plus" clickFun="TBill.openAddTBill()"/>
                            @}
                            @if(shiro.hasPermission("/tBill/update")){
                                <#button name="修改" icon="fa-edit" clickFun="TBill.openTBillDetail()" space="true"/>
                            @}
                            @if(shiro.hasPermission("/tBill/delete")){
                                <#button name="删除" icon="fa-remove" clickFun="TBill.delete()" space="true"/>
                            @}
                        </div>
                        <#table id="TBillTable"/>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tBill/tBill.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/tBill/tBill_add.html
New file
@@ -0,0 +1,39 @@
@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="billType" name="发票类型 1电子发票" underline="true"/>
                            <#input id="billHeaderType" name="发票抬头 1公司 2个人" underline="true"/>
                            <#input id="companyName" name="公司名称/个人抬头名称" underline="true"/>
                            <#input id="companyTaxNumber" name="公司税号" underline="true"/>
                            <#input id="billContent" name="发票内容"/>
                </div>
                <div class="col-sm-6">
                            <#input id="moreContent" name="更多内容" underline="true"/>
                            <#input id="billAmount" name="发票金额" underline="true"/>
                            <#input id="addresseeName" name="收件人姓名" underline="true"/>
                            <#input id="addresseePhone" name="收件人电话" underline="true"/>
                            <#input id="addresseeEmail" name="收件人邮箱" underline="true"/>
                            <#input id="state" 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="TBillInfoDlg.addSubmit()"/>
                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TBillInfoDlg.close()"/>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tBill/tBill_info.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tBill/tBill_edit.html
New file
@@ -0,0 +1,39 @@
@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="billType" name="发票类型 1电子发票" value="${item.billType}" underline="true"/>
                            <#input id="billHeaderType" name="发票抬头 1公司 2个人" value="${item.billHeaderType}" underline="true"/>
                            <#input id="companyName" name="公司名称/个人抬头名称" value="${item.companyName}" underline="true"/>
                            <#input id="companyTaxNumber" name="公司税号" value="${item.companyTaxNumber}" underline="true"/>
                            <#input id="billContent" name="发票内容" value="${item.billContent}" />
                </div>
                <div class="col-sm-6">
                            <#input id="moreContent" name="更多内容" value="${item.moreContent}" underline="true"/>
                            <#input id="billAmount" name="发票金额" value="${item.billAmount}" underline="true"/>
                            <#input id="addresseeName" name="收件人姓名" value="${item.addresseeName}" underline="true"/>
                            <#input id="addresseePhone" name="收件人电话" value="${item.addresseePhone}" underline="true"/>
                            <#input id="addresseeEmail" name="收件人邮箱" value="${item.addresseeEmail}" underline="true"/>
                            <#input id="state" name="开票状态 1代开票 2已开票 3开票失败" value="${item.state}" 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="TBillInfoDlg.editSubmit()"/>
                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TBillInfoDlg.close()"/>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tBill/tBill_info.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOffice.html
@@ -35,7 +35,6 @@
                                    <option value="">选择状态</option>
                                    <option value="1">正常</option>
                                    <option value="2">冻结</option>
                                    <option value="3">已删除</option>
                                </select>
                            </div>
                            <div class="col-sm-2">
management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOffice_add.html
@@ -15,7 +15,7 @@
                                <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">
                                    <input id="branchOfficeName" name="branchOfficeName" type="text" maxlength="20" style="height: 30px" required="required">
                                </div>
                            </div>
@@ -23,19 +23,19 @@
                                <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">
                                    <input id="principal" name="principal" type="text" style="height: 30px" maxlength="20"  placeholder="请输入" 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">
                                    <input id="principalPhone" name="principalPhone" type="number" maxlength="11" placeholder="请输入" 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">
                                    <input id="email" type="email" maxlength="40" placeholder="请输入" style="height: 30px">
                                </div>
                            </div>
@@ -50,14 +50,14 @@
                            <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">
                                    <input id="bankDeposit" type="text" maxlength="20" placeholder="请输入" 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">
                                    <input id="bankAccount" type="text" maxlength="20" placeholder="请输入" style="height: 30px">
                                </div>
                            </div>
management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOffice_edit.html
@@ -17,7 +17,7 @@
                                <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">
                                    <input id="branchOfficeName" value="${item.branchOfficeName}" name="branchOfficeName" type="text" maxlength="20" style="height: 30px" required="required">
                                </div>
                            </div>
@@ -25,19 +25,19 @@
                                <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">
                                    <input id="principal" value="${item.principal}" name="principal" type="text" maxlength="20" 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">
                                    <input id="principalPhone" value="${item.principalPhone}" name="principalPhone" type="number" maxlength="20" 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">
                                    <input id="email" value="${item.email}" type="email"  maxlength="40" style="height: 30px">
                                </div>
                            </div>
@@ -52,14 +52,14 @@
                            <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">
                                    <input id="bankDeposit" value="${item.bankDeposit}" type="text" maxlength="20" 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">
                                    <input id="bankAccount" value="${item.bankAccount}" type="text" maxlength="20" style="height: 30px">
                                </div>
                            </div>
management/guns-admin/src/main/webapp/WEB-INF/view/system/tBroadcast/tBroadcast.html
New file
@@ -0,0 +1,49 @@
@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="content" name="消息内容" />
                            </div>
                            <div class="col-sm-2">
                                <#button name="搜索" icon="fa-search" clickFun="TBroadcast.search()"/>
                                <#button name="重置" icon="fa-trash" clickFun="TBroadcast.resetSearch()"/>
                            </div>
                        </div>
                        <div class="hidden-xs" id="TBroadcastTableToolbar" role="group">
                            @if(shiro.hasPermission("/tBroadcast/add")){
                                <#button name="添加" icon="fa-plus" clickFun="TBroadcast.openAddTBroadcast()"/>
                            @}
                            @if(shiro.hasPermission("/tBroadcast/update")){
                                <#button name="修改" icon="fa-edit" clickFun="TBroadcast.openTBroadcastDetail()" space="true"/>
                            @}
                            @if(shiro.hasPermission("/tBroadcast/delete")){
                                <#button name="删除" icon="fa-remove" clickFun="TBroadcast.delete()" space="true"/>
                            @}
                        </div>
                        <#table id="TBroadcastTable"/>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tBroadcast/tBroadcast.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/tBroadcast/tBroadcast_add.html
New file
@@ -0,0 +1,30 @@
@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="content" name="消息内容" underline="true"/>
                            <#input id="sort" name="排序"/>
                </div>
                <div class="col-sm-6">
                            <#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="TBroadcastInfoDlg.addSubmit()"/>
                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TBroadcastInfoDlg.close()"/>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tBroadcast/tBroadcast_info.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tBroadcast/tBroadcast_edit.html
New file
@@ -0,0 +1,30 @@
@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="content" name="消息内容" value="${item.content}" underline="true"/>
                            <#input id="sort" name="排序" value="${item.sort}" />
                </div>
                <div class="col-sm-6">
                            <#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="TBroadcastInfoDlg.editSubmit()"/>
                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TBroadcastInfoDlg.close()"/>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tBroadcast/tBroadcast_info.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tCommercial/tCommercial.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="TCommercial.search()"/>
                            </div>
                        </div>
                        <div class="hidden-xs" id="TCommercialTableToolbar" role="group">
                            @if(shiro.hasPermission("/tCommercial/add")){
                                <#button name="添加" icon="fa-plus" clickFun="TCommercial.openAddTCommercial()"/>
                            @}
                            @if(shiro.hasPermission("/tCommercial/update")){
                                <#button name="修改" icon="fa-edit" clickFun="TCommercial.openTCommercialDetail()" space="true"/>
                            @}
                            @if(shiro.hasPermission("/tCommercial/delete")){
                                <#button name="删除" icon="fa-remove" clickFun="TCommercial.delete()" space="true"/>
                            @}
                        </div>
                        <#table id="TCommercialTable"/>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tCommercial/tCommercial.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tCommercial/tCommercial_add.html
New file
@@ -0,0 +1,40 @@
@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=底部广告)" underline="true"/>
                            <#input id="name" name="名称" underline="true"/>
                            <#input id="url" name="广告地址" underline="true"/>
                            <#input id="device" name="设备(1=小程序,2=司机端)" underline="true"/>
                            <#input id="isJump" name="是否跳转(0=否,1=是)" underline="true"/>
                            <#input id="jumpType" name="跳转类型(1=内部跳转,2=外部跳转)" underline="true"/>
                            <#input id="jumpUrl" name="跳转连接"/>
                </div>
                <div class="col-sm-6">
                            <#input id="html" name="富文本" underline="true"/>
                            <#input id="sort" name="排序" underline="true"/>
                            <#input id="status" name="状态(1=正常,2=冻结,3=删除)" underline="true"/>
                            <#input id="createTime" name="添加时间" underline="true"/>
                            <#input id="createUserId" name="添加人员id" underline="true"/>
                            <#input id="updateTime" name="更新时间" underline="true"/>
                            <#input id="updateUserId" name="更新人员id" 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="TCommercialInfoDlg.addSubmit()"/>
                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TCommercialInfoDlg.close()"/>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tCommercial/tCommercial_info.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tCommercial/tCommercial_edit.html
New file
@@ -0,0 +1,40 @@
@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=底部广告)" value="${item.type}" underline="true"/>
                            <#input id="name" name="名称" value="${item.name}" underline="true"/>
                            <#input id="url" name="广告地址" value="${item.url}" underline="true"/>
                            <#input id="device" name="设备(1=小程序,2=司机端)" value="${item.device}" underline="true"/>
                            <#input id="isJump" name="是否跳转(0=否,1=是)" value="${item.isJump}" underline="true"/>
                            <#input id="jumpType" name="跳转类型(1=内部跳转,2=外部跳转)" value="${item.jumpType}" underline="true"/>
                            <#input id="jumpUrl" name="跳转连接" value="${item.jumpUrl}" />
                </div>
                <div class="col-sm-6">
                            <#input id="html" name="富文本" value="${item.html}" underline="true"/>
                            <#input id="sort" name="排序" value="${item.sort}" underline="true"/>
                            <#input id="status" name="状态(1=正常,2=冻结,3=删除)" value="${item.status}" underline="true"/>
                            <#input id="createTime" name="添加时间" value="${item.createTime}" underline="true"/>
                            <#input id="createUserId" name="添加人员id" value="${item.createUserId}" underline="true"/>
                            <#input id="updateTime" name="更新时间" value="${item.updateTime}" underline="true"/>
                            <#input id="updateUserId" name="更新人员id" value="${item.updateUserId}" />
                </div>
            </div>
            <div class="row btn-group-m-t">
                <div class="col-sm-10">
                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TCommercialInfoDlg.editSubmit()"/>
                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TCommercialInfoDlg.close()"/>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tCommercial/tCommercial_info.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tCoupon/tCoupon_add.html
@@ -14,7 +14,7 @@
                            <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">
                                <input id="couponName" name="couponName" type="text" maxlength="20" placeholder="最多输入20个字符" style="height: 30px" required="required">
                            </div>
                        </div>
@@ -45,7 +45,7 @@
                            <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>
                                <input id="couponCount" name="couponCount" type="number" maxlength="4" placeholder="最多4位数字" style="height: 30px" required>
                            </div>
                        </div>
@@ -53,7 +53,7 @@
                            <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>
                                <input id="couponConditionalAmount" name="couponConditionalAmount" type="number" maxlength="4" placeholder="最多4位数字" style="height: 30px" required>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group" style="text-align: left" >
                                <label>可使用</label>
@@ -64,7 +64,7 @@
                            <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>
                                <input id="couponPreferentialAmount" name="couponPreferentialAmount" type="number" maxlength="4" placeholder="最多4位数字" style="height: 30px" required>
                            </div>
                        </div>
@@ -72,7 +72,7 @@
                            <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>
                                <input id="couponValidity" name="couponValidity" type="number" maxlength="4" placeholder="最多4位数字" style="height: 30px" required>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group" style="text-align: left" >
                                <label>天</label>
@@ -83,7 +83,7 @@
                            <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>
                                <input id="remainingQuantity" name="remainingQuantity" type="number" maxlength="4" placeholder="最多4位数字" style="height: 30px" required>
                            </div>
                        </div>
@@ -91,7 +91,7 @@
                            <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>
                                <input id="couponSendQuantity" name="couponSendQuantity" type="number" maxlength="4" placeholder="最多4位数字" style="height: 30px" required>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group" style="text-align: left" >
                                <label>张</label>
management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverAudit.html
@@ -124,7 +124,7 @@
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-2 control-label form-group" >
                                <textarea id="approvalNotes" placeholder="请输入原因" class="control-label" style="width: 280px;height: 100px"></textarea>
                                <textarea id="approvalNotes" placeholder="请输入原因" maxlength="200" class="control-label" style="width: 280px;height: 100px"></textarea>
                            </div>
                        </div>
management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverExceptionStartAndStop.html
@@ -9,10 +9,10 @@
                        <input hidden id="status" value="${status}">
                        <div class="col-lg-3">
                            @if(status==1){
                                冻结理由:<textarea id="stopRemark" placeholder="请输入冻结理由" style="width: 681px; height: 249px;"></textarea>
                                冻结理由:<textarea id="stopRemark" placeholder="请输入冻结理由" maxlength="200" style="width: 681px; height: 249px;"></textarea>
                            @}
                            @if(status==2){
                                解冻理由:<textarea id="startRemark" placeholder="请输入解冻理由" style="width: 681px; height: 249px;"></textarea>
                                解冻理由:<textarea id="startRemark" placeholder="请输入解冻理由" maxlength="200" style="width: 681px; height: 249px;"></textarea>
                            @}
                        </div>
                        <div class="hidden-xs" id="TDriverTableToolbar" role="group"  style="margin-left:300px">
management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverRechargeBalancePage.html
@@ -7,7 +7,7 @@
                    <div class="col-sm-12">
                        <input hidden id="id" value="${id}">
                        <div class="col-sm-12" style="text-align: center;height: 60px">
                            充值余额:<input id="backgroundBalance" placeholder="请输入充值金额" style="width: 300px; height: 30px;" required/>
                            充值余额:<input id="backgroundBalance" placeholder="请输入充值金额" maxlength="4" style="width: 300px; height: 30px;" required/>
                        </div>
                        <div class="hidden-xs" id="TAppUserTableToolbar" role="group" style="text-align: center">
                            <#button name="取消" icon="fa-plus" clickFun="TDriverInfoDlg.close()" />
management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverStartAndStop.html
@@ -9,10 +9,10 @@
                        <input hidden id="status" value="${status}">
                        <div class="col-lg-3">
                            @if(status==1){
                                冻结理由:<textarea id="stopRemark" placeholder="请输入冻结理由" style="width: 681px; height: 249px;"></textarea>
                                冻结理由:<textarea id="stopRemark" placeholder="请输入冻结理由" maxlength="200" style="width: 681px; height: 249px;"></textarea>
                            @}
                            @if(status==2){
                                解冻理由:<textarea id="startRemark" placeholder="请输入解冻理由" style="width: 681px; height: 249px;"></textarea>
                                解冻理由:<textarea id="startRemark" placeholder="请输入解冻理由" maxlength="200" style="width: 681px; height: 249px;"></textarea>
                            @}
                        </div>
                        <div class="hidden-xs" id="TDriverTableToolbar" role="group"  style="margin-left:300px">
management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver_add.html
@@ -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" name="name" type="text" style="height: 30px" required="required">
                                    <input id="name" name="name" type="text" style="height: 30px" maxlength="20" placeholder="请输入" 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" name="phone" type="number" style="height: 30px" required="required">
                                    <input id="phone" name="phone" type="number" style="height: 30px" maxlength="11" placeholder="请输入" required="required">
                                </div>
                            </div>
@@ -35,23 +35,23 @@
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <span style="color:red">*</span>
                                    <label class="control-label" >紧急联系人姓名:</label>
                                    <input id="emergencyContact" name="emergencyContact" type="text" style="height: 30px" required>
                                    <input id="emergencyContact" name="emergencyContact" type="text" maxlength="20" placeholder="请输入" 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" name="emergencyPhone" type="number" style="height: 30px" required>
                                    <input id="emergencyPhone" name="emergencyPhone" type="number" maxlength="11" placeholder="请输入" 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"  >
                                    <label class="control-label" >邀约人姓名:</label>
                                    <input id="inviterName" type="text" style="height: 30px">
                                    <input id="inviterName" type="text" maxlength="20" placeholder="请输入" style="height: 30px">
                                </div>
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <label class="control-label" >邀约人电话:</label>
                                    <input id="inviterPhone" type="number" style="height: 30px">
                                    <input id="inviterPhone" type="number"  maxlength="11" placeholder="请输入" style="height: 30px">
                                </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" name="idcard" type="text" style="height: 30px" required>
                                    <input id="idcard" name="idcard" type="text" maxlength="20" placeholder="请输入" style="height: 30px" required>
                                </div>
                            </div>
management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver_edit.html
@@ -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" name="name" value="${item.name}" type="text" style="height: 30px" required>
                                    <input id="name" name="name" value="${item.name}" type="text" maxlength="20" 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" name="phone" value="${item.phone}" type="number" style="height: 30px" required>
                                    <input id="phone" name="phone" value="${item.phone}" type="number" maxlength="11" style="height: 30px" required>
                                </div>
                            </div>
@@ -35,23 +35,23 @@
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <span style="color:red">*</span>
                                    <label class="control-label" >紧急联系人姓名:</label>
                                    <input id="emergencyContact" name="emergencyContact" value="${item.emergencyContact}" type="text" style="height: 30px" required>
                                    <input id="emergencyContact" name="emergencyContact" value="${item.emergencyContact}" type="text" maxlength="20" 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" name="emergencyPhone" value="${item.emergencyPhone}" type="number" style="height: 30px" required>
                                    <input id="emergencyPhone" name="emergencyPhone" value="${item.emergencyPhone}" type="number" maxlength="11" 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"  >
                                    <label class="control-label" >邀约人姓名:</label>
                                    <input id="inviterName" value="${item.inviterName}" type="text" style="height: 30px">
                                    <input id="inviterName" value="${item.inviterName}" type="text" maxlength="20" style="height: 30px">
                                </div>
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <label class="control-label" >邀约人电话:</label>
                                    <input id="inviterPhone" value="${item.inviterPhone}" type="number" style="height: 30px">
                                    <input id="inviterPhone" value="${item.inviterPhone}" type="number" maxlength="11" style="height: 30px">
                                </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" name="idcard" value="${item.idcard}" type="text" style="height: 30px" required>
                                    <input id="idcard" name="idcard" value="${item.idcard}" type="text" maxlength="20" style="height: 30px" required>
                                </div>
                            </div>
management/guns-admin/src/main/webapp/WEB-INF/view/system/tEdition/tEdition.html
New file
@@ -0,0 +1,49 @@
@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-3">
                                <#NameCon id="editionNo" name="版本号" />
                            </div>
                            <div class="col-sm-3">
                                <#button name="搜索" icon="fa-search" clickFun="TEdition.search()"/>
                                <#button name="重置" icon="fa-trash" clickFun="TEdition.resetSearch()" space="true"/>
                            </div>
                        </div>
                        <div class="hidden-xs" id="TEditionTableToolbar" role="group">
                            @if(shiro.hasPermission("/tEdition/add")){
                                <#button name="添加" icon="fa-plus" clickFun="TEdition.openAddTEdition()"/>
                            @}
                            @if(shiro.hasPermission("/tEdition/update")){
                                <#button name="修改" icon="fa-edit" clickFun="TEdition.openTEditionDetail()" space="true"/>
                            @}
                            @if(shiro.hasPermission("/tEdition/delete")){
                                <#button name="删除" icon="fa-remove" clickFun="TEdition.delete()" space="true"/>
                            @}
                        </div>
                        <#table id="TEditionTable"/>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tEdition/tEdition.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/tEdition/tEdition_add.html
New file
@@ -0,0 +1,91 @@
@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="editionInfoForm">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <div class="col-sm-12"  style="cursor: pointer;text-align: left;">
                            <div class="initialLevel col-sm-12 control-label form-group"  >
                                <div class="initialLevel col-sm-5 control-label form-group"  >
                                    <label class="control-label  col-sm-2" >版本编号:</label>
                                    <input id="editionNo" name="editionNo" type="text" class="col-sm-3" placeholder="版本编号" style="width: 180px;height: 30px" required="required">
                                </div>
                            </div>
                            <div class="initialLevel col-sm-12 control-label form-group"  >
                                <div class="initialLevel col-sm-5 control-label form-group"  >
                                    <label class="control-label  col-sm-2" >端&emsp;&emsp;口:</label>
                                    <select id="editionPort" class="col-sm-3" style="width: 180px;height: 30px" name="editionPort">
                                        <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-6 control-label form-group"  >
                                    <label class="control-label col-sm-2" >上传apk文件:</label>
                                    <input id="upFile" type="file" onclick="TEdition.previewFile()" class="col-sm-3" style="width: 180px;height: 30px" required="required">
                                    <input hidden id="editionFile" name="editionFile">
                                </div>
                            </div>
                            <div class="initialLevel col-sm-12 control-label form-group"  >
                                <div class="initialLevel col-sm-5 control-label form-group"  >
                                    <label class="control-label  col-sm-2" >版本公告:</label>
                                    <textarea id="editionAnnouncement" name="editionAnnouncement" placeholder="多行输入" class="col-sm-3" maxlength="500" style="width: 180px;height: 80px"></textarea>
                                </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="TEditionInfoDlg.close()"/>
                        <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TEditionInfoDlg.addSubmit()"/>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<!--<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="editionNo" name="版本编号" underline="true"/>
                            <#input id="editionFile" name="版本文件"/>
                </div>
                <div class="col-sm-6">
                            <#input id="editionAnnouncement" name="版本公告" 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="TEditionInfoDlg.addSubmit()"/>
                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TEditionInfoDlg.close()"/>
                </div>
            </div>
        </div>
    </div>
</div>-->
<script src="${ctxPath}/static/modular/system/tEdition/tEdition_info.js"></script>
<script src="${ctxPath}/static/modular/system/tEdition/tEdition.js"></script>
<script src="${ctxPath}/static/js/common/web-upload-file.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tEdition/tEdition_edit.html
New file
@@ -0,0 +1,30 @@
@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="editionNo" name="版本编号" value="${item.editionNo}" underline="true"/>
                            <#input id="editionFile" name="版本文件" value="${item.editionFile}" />
                </div>
                <div class="col-sm-6">
                            <#input id="editionAnnouncement" name="版本公告" value="${item.editionAnnouncement}" 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="TEditionInfoDlg.editSubmit()"/>
                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TEditionInfoDlg.close()"/>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tEdition/tEdition_info.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tHomePage/tHomePageMap.html
New file
@@ -0,0 +1,46 @@
@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="couponInfoForm">
                <div class="row row-lg">
                    <div class="col-sm-12" >
                        <div class="initialLevel col-sm-12 control-label form-group" style="cursor: pointer;text-align: left;">
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >运营数据总览/车辆地图总览/</label>
                                <label class="control-label" style="color: red">订单热点图</label>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group" style="cursor: pointer;text-align: left;">
                            <div class="initialLevel col-sm-1 control-label form-group"  >
                                <select class="input-group" id="agentName" style="width: 120px;height: 33px" name="agentName">
                                    <option value="">请选择代理商</option>
                                </select>
                            </div>
                            <div class="initialLevel col-sm-1 control-label form-group"  >
                                <select class="input-group" id="orderType" style="width: 125px;height: 33px" name="orderType">
                                    <option value="">请选择订单类型</option>
                                </select>
                            </div>
                            <div class="initialLevel col-sm-2 control-label form-group"  >
                                <#button name="搜索" icon="fa-search" clickFun="TCoupon.search()"/>
                                <#button name="重置" icon="fa-trash" clickFun="TCoupon.resetSearch()" space="true"/>
                            </div>
                        </div>
                    </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/tHomePage/tHomePageStatistics.html
New file
@@ -0,0 +1,32 @@
@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="couponInfoForm">
                <div class="row row-lg">
                    <div class="col-sm-12" >
                        <div class="initialLevel col-sm-12 control-label form-group" style="cursor: pointer;text-align: left;">
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <span class="control-label" style="font-size: 30px">今天</span>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group" style="cursor: pointer;text-align: left;">
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label>${txt}</label>
                            </div>
                        </div>
                    </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/tRechargeRecord/tRechargeRecord.html
@@ -9,11 +9,38 @@
                <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="code" name="订单号" />
                            </div>
                            <div class="col-sm-3">
                            <div class="col-sm-2">
                                <select class="input-group" id="businessType" style="width: 180px;height: 33px" name="businessType">
                                    <option value="">交易类型</option>
                                    <option value="1">佣金提现</option>
                                    <option value="2">余额提现</option>
                                    <option value="3">支付订单</option>
                                </select>
                            </div>
                            <div class="col-sm-2">
                                <select class="input-group" id="payType" style="width: 180px;height: 33px" name="payType">
                                    <option value="">支付渠道</option>
                                    <option value="1">微信支付</option>
                                    <option value="2">余额支付</option>
                                </select>
                            </div>
                            <div class="col-sm-2">
                                <#NameCon id="driverName" name="司机姓名" />
                            </div>
                            <div class="col-sm-2">
                                <#TimeCon id="businessTime" name="交易时间" />
                            </div>
                            <div class="col-sm-2">
                                <#button name="搜索" icon="fa-search" clickFun="TRechargeRecord.search()"/>
                                <#button name="重置" icon="fa-trash" clickFun="TRechargeRecord.resetSearch()" space="true"/>
                            </div>
                            <div class="col-sm-12">
                                <button type="button" class="btn btn-primary " onclick="TRechargeRecord.export()" id="export">
                                    <i class="fa "></i>&nbsp;导出
                                </button>
                            </div>
                        </div>
                        <div class="hidden-xs" id="TRechargeRecordTableToolbar" role="group">
@@ -35,4 +62,11 @@
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tRechargeRecord/tRechargeRecord.js"></script>
<script type="text/javascript">
    laydate.render({
        elem: '#businessTime',
        type: 'date',
        range: true
    });
</script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tRevenue/tRevenue.html
New file
@@ -0,0 +1,73 @@
@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="code" name="订单号" />
                            </div>
                            <div class="col-sm-2">
                                <select class="input-group" id="businessType" style="width: 180px;height: 33px" name="businessType">
                                    <option value="">交易类型</option>
                                    <option value="11">佣金提现</option>
                                    <option value="12">余额提现</option>
                                    <option value="1">支付订单</option>
                                </select>
                            </div>
                            <div class="col-sm-2">
                                <select class="input-group" id="payType" style="width: 180px;height: 33px" name="payType">
                                    <option value="">支付渠道</option>
                                    <option value="1">微信支付</option>
                                    <option value="2">余额支付</option>
                                    <option value="3">线下收款</option>
                                </select>
                            </div>
                            <div class="col-sm-2">
                                <#NameCon id="driverName" name="司机姓名" />
                            </div>
                            <div class="col-sm-2">
                                <#TimeCon id="businessTime" name="交易时间" />
                            </div>
                            <div class="col-sm-2">
                                <#button name="搜索" icon="fa-search" clickFun="TRevenue.search()"/>
                                <#button name="重置" icon="fa-trash" clickFun="TRevenue.resetSearch()" space="true"/>
                            </div>
                            <div class="col-sm-12">
                                <button type="button" class="btn btn-primary " onclick="TRevenue.export()" id="export">
                                    <i class="fa "></i>&nbsp;导出
                                </button>
                            </div>
                        </div>
                        <div class="hidden-xs" id="TRevenueTableToolbar" role="group">
                            @if(shiro.hasPermission("/tRevenue/add")){
                                <#button name="添加" icon="fa-plus" clickFun="TRevenue.openAddTRevenue()"/>
                            @}
                            @if(shiro.hasPermission("/tRevenue/update")){
                                <#button name="修改" icon="fa-edit" clickFun="TRevenue.openTRevenueDetail()" space="true"/>
                            @}
                            @if(shiro.hasPermission("/tRevenue/delete")){
                                <#button name="删除" icon="fa-remove" clickFun="TRevenue.delete()" space="true"/>
                            @}
                        </div>
                        <#table id="TRevenueTable"/>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tRevenue/tRevenue.js"></script>
<script type="text/javascript">
    laydate.render({
        elem: '#businessTime',
        type: 'date',
        range: true
    });
</script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tRevenue/tRevenueBalanceDetail.html
New file
@@ -0,0 +1,75 @@
@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>
                                <label>${code}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >交易时间:</label>
                                <label>${businessTime}</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(businessType==1){
                                <label>支付订单</label>
                                @}
                                @if(businessType==11){
                                <label>佣金提现</label>
                                @}
                                @if(businessType==12){
                                <label>余额提现</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>${driverName}</label>
                            </div>
                            <div class="initialLevel col-sm-2 control-label form-group" >
                                <label class="control-label">司机电话:</label>
                                <label>${driverPhone}</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>${amount}</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>${accountBalance}</label>
                            </div>
                        </div>
                        <div class="hidden-xs" id="TDriverTableToolbar" role="group"  style="text-align: center">
                            <#button name="取消" icon="fa-plus" clickFun="TRevenueInfoDlg.close()" />
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tRevenue/tRevenue.js"></script>
<script src="${ctxPath}/static/modular/system/tRevenue/tRevenue_info.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tRevenue/tRevenueCommissionDetail.html
New file
@@ -0,0 +1,75 @@
@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>
                                <label>${code}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >交易时间:</label>
                                <label>${businessTime}</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(businessType==1){
                                <label>支付订单</label>
                                @}
                                @if(businessType==11){
                                <label>佣金提现</label>
                                @}
                                @if(businessType==12){
                                <label>余额提现</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>${driverName}</label>
                            </div>
                            <div class="initialLevel col-sm-2 control-label form-group" >
                                <label class="control-label">司机电话:</label>
                                <label>${driverPhone}</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>${amount}</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>${accountBalance}</label>
                            </div>
                        </div>
                        <div class="hidden-xs" id="TDriverTableToolbar" role="group"  style="text-align: center">
                            <#button name="取消" icon="fa-plus" clickFun="TRevenueInfoDlg.close()" />
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tRevenue/tRevenue.js"></script>
<script src="${ctxPath}/static/modular/system/tRevenue/tRevenue_info.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tRevenue/tRevenueOrderDetail.html
New file
@@ -0,0 +1,208 @@
@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>${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-3 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-2 control-label form-group" >
                                <label class="control-label">司机电话:</label>
                                <label>${driverPhone}</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-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>
                        <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(evaluateScore==1){
                                <label>非常差</label>
                                @}
                                @if(evaluateScore==2){
                                <label>差</label>
                                @}
                                @if(evaluateScore==3){
                                <label>一般</label>
                                @}
                                @if(evaluateScore==4){
                                <label>满意</label>
                                @}
                                @if(evaluateScore==5){
                                <label>非常满意</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>${evaluateContent}</label>
                            </div>
                        </div>
                        <div class="hidden-xs" id="TDriverTableToolbar" role="group"  style="text-align: center">
                            <#button name="取消" icon="fa-plus" clickFun="TRevenueInfoDlg.close()" />
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tRevenue/tRevenue.js"></script>
<script src="${ctxPath}/static/modular/system/tRevenue/tRevenue_info.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tRevenue/tRevenue_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="type" name="收入类型(1=订单收入,2=分佣收入)" underline="true"/>
                            <#input id="userType" name="用户类型(1=用户,2=司机,3=代理商)" underline="true"/>
                            <#input id="userId" name="用户id"/>
                </div>
                <div class="col-sm-6">
                            <#input id="orderId" name="订单id" underline="true"/>
                            <#input id="amount" name="收入金额" 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="TRevenueInfoDlg.addSubmit()"/>
                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TRevenueInfoDlg.close()"/>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tRevenue/tRevenue_info.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tRevenue/tRevenue_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="type" name="收入类型(1=订单收入,2=分佣收入)" value="${item.type}" underline="true"/>
                            <#input id="userType" name="用户类型(1=用户,2=司机,3=代理商)" value="${item.userType}" underline="true"/>
                            <#input id="userId" name="用户id" value="${item.userId}" />
                </div>
                <div class="col-sm-6">
                            <#input id="orderId" name="订单id" value="${item.orderId}" underline="true"/>
                            <#input id="amount" name="收入金额" value="${item.amount}" 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="TRevenueInfoDlg.editSubmit()"/>
                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TRevenueInfoDlg.close()"/>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tRevenue/tRevenue_info.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemBulletin/tSystemBulletin.html
New file
@@ -0,0 +1,49 @@
@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="content" name="消息内容" />
                            </div>
                            <div class="col-sm-2">
                                <#button name="搜索" icon="fa-search" clickFun="TSystemBulletin.search()"/>
                                <#button name="重置" icon="fa-trash" clickFun="TSystemBulletin.resetSearch()"/>
                            </div>
                        </div>
                        <div class="hidden-xs" id="TSystemBulletinTableToolbar" role="group">
                            @if(shiro.hasPermission("/tSystemBulletin/add")){
                                <#button name="添加" icon="fa-plus" clickFun="TSystemBulletin.openAddTSystemBulletin()"/>
                            @}
                            @if(shiro.hasPermission("/tSystemBulletin/update")){
                                <#button name="修改" icon="fa-edit" clickFun="TSystemBulletin.openTSystemBulletinDetail()" space="true"/>
                            @}
                            @if(shiro.hasPermission("/tSystemBulletin/delete")){
                                <#button name="删除" icon="fa-remove" clickFun="TSystemBulletin.delete()" space="true"/>
                            @}
                        </div>
                        <#table id="TSystemBulletinTable"/>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tSystemBulletin/tSystemBulletin.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/tSystemBulletin/tSystemBulletin_add.html
New file
@@ -0,0 +1,63 @@
@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="systemBulletinInfoForm">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <div class="col-sm-12" style="cursor: pointer;text-align: left;">
                            <div class="initialLevel col-sm-12 control-label form-group">
                                <div class="initialLevel col-sm-1 control-label form-group"  >
                                    <span style="color:red">*</span>
                                    <label class="control-label" >介绍:</label>
                                </div>
                                <div class="initialLevel col-sm-2 control-label form-group"  >
                                    <textarea id="introduce" name="introduce" type="text" placeholder="最多50个字" maxlength="50" style="width:100%;height: 80px" required></textarea>
                                </div>
                            </div>
                            <div class="initialLevel col-sm-12 control-label form-group">
                                <div class="initialLevel col-sm-1 control-label form-group"  >
                                    <label class="control-label" >图片:</label>
                                </div>
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <#uploadImg id="img"/>
                                </div>
                            </div>
                            <div class="initialLevel col-sm-12 control-label form-group">
                                <div class="initialLevel col-sm-6 control-label form-group"  >
                                    <textarea type="text/plain" id="content" name="content" style="width:100%;height:350px;"></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="TSystemBulletinInfoDlg.addSubmit()"/>
                        <#button btnCss="danger" name="发送" id="send" icon="fa-check" clickFun="TSystemBulletinInfoDlg.addSend()"/>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tSystemBulletin/tSystemBulletin_info.js"></script>
<script src="${ctxPath}/static/js/ueditor/jsp/ueditor.all.js"></script>
<script type="text/javascript">
    $(function () {
        var idCardPositive = new $WebUpload("img");
        idCardPositive.setUploadBarId("progressBar");
        idCardPositive.init();
    });
</script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemBulletin/tSystemBulletin_edit.html
New file
@@ -0,0 +1,65 @@
@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="systemBulletinInfoForm">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <input hidden id="id"  value="${item.id}">
                        <div class="col-sm-12" style="cursor: pointer;text-align: left;">
                            <div class="initialLevel col-sm-12 control-label form-group">
                                <div class="initialLevel col-sm-1 control-label form-group"  >
                                    <span style="color:red">*</span>
                                    <label class="control-label" >介绍:</label>
                                </div>
                                <div class="initialLevel col-sm-2 control-label form-group"  >
                                    <textarea id="introduce" name="introduce" type="text" maxlength="50" style="width:300px;height: 80px" required>${item.introduce}</textarea>
                                </div>
                            </div>
                            <div class="initialLevel col-sm-12 control-label form-group">
                                <div class="initialLevel col-sm-1 control-label form-group"  >
                                    <label class="control-label" >图片:</label>
                                </div>
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <#uploadImg id="img" fileImg="${item.img}"/>
                                </div>
                            </div>
                            <div class="initialLevel col-sm-12 control-label form-group">
                                <div class="initialLevel col-sm-6 control-label form-group"  >
                                    <input hidden id="contentHtml" value="${item.content}">
                                    <textarea type="text/plain" id="content" name="content"  style="width:100%;height:350px;">${item.content}</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="TSystemBulletinInfoDlg.editSubmit()"/>
                        <#button btnCss="danger" name="发送" id="send" icon="fa-check" clickFun="TSystemBulletinInfoDlg.editSend()"/>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tSystemBulletin/tSystemBulletin_info.js"></script>
<script src="${ctxPath}/static/js/ueditor/jsp/ueditor.all.js"></script>
<script type="text/javascript">
    $(function () {
        var idCardPositive = new $WebUpload("img");
        idCardPositive.setUploadBarId("progressBar");
        idCardPositive.init();
    });
</script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tYouTui/tYouTui_add.html
@@ -38,7 +38,7 @@
                                <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>
                                    <input id="integral" name="integral" type="number" maxlength="4" placeholder="最多4位数" style="height: 30px" required>
                                </div>
                                <div class="initialLevel col-sm-3 control-label form-group" style="text-align: left" >
                                    <label>积分</label>
@@ -71,7 +71,7 @@
                                <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>
                                    <textarea id="serviceContent" name="serviceContent" placeholder="请输入" maxlength="500" style="height: 80px" required></textarea>
                                </div>
                            </div>
management/guns-admin/src/main/webapp/static/js/common/web-upload-file.js
@@ -3,6 +3,7 @@
 */
// 开始上传文件
function UploadFileFn() {
    console.log(111)
    $("#progressBarFile").html("0%").css("width", "0%");
    var upFile = $("#upFile").get(0).files[0]; //input file标签
    var formData = new FormData(); //创建FormData对象
management/guns-admin/src/main/webapp/static/modular/system/tBill/tBill.js
New file
@@ -0,0 +1,212 @@
/**
 * 管理初始化
 */
var TBill = {
    id: "TBillTable",    //表格id
    seItem: null,        //选中的条目
    table: null,
    layerIndex: -1
};
/**
 * 初始化表格的列
 */
TBill.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: '申请时间', field: 'createTime', visible: true, align: 'center', valign: 'middle'},
        {title: '发票类型', field: 'billType', visible: true, align: 'center', valign: 'middle',
                formatter: function (value, row) {
                    if(row.billType === 1){
                        return '<span>电子发票</span>'
                    }
                }
            },
        {title: '抬头类型', field: 'billHeaderType', visible: true, align: 'center', valign: 'middle',
                formatter: function (value, row) {
                    if(row.billHeaderType === 1){
                        return '<span>公司</span>'
                    }else if(row.billHeaderType === 2){
                        return '<span>个人</span>'
                    }
                }
            },
        {title: '发票抬头', field: 'companyName', visible: true, align: 'center', valign: 'middle'},
        {title: '公司税号', field: 'companyTaxNumber', visible: true, align: 'center', valign: 'middle'},
        {title: '发票内容', field: 'billContent', visible: true, align: 'center', valign: 'middle'},
        {title: '更多内容', field: 'moreContent', visible: false, align: 'center', valign: 'middle'},
        {title: '发票金额', field: 'billAmount', visible: true, align: 'center', valign: 'middle'},
        {title: '收件人姓名', field: 'addresseeName', visible: true, align: 'center', valign: 'middle'},
        {title: '收件人电话', field: 'addresseePhone', visible: true, align: 'center', valign: 'middle'},
        {title: '收件人邮箱', field: 'addresseeEmail', visible: true, align: 'center', valign: 'middle'},
        {title: '开票状态', field: 'state', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                if(row.state === 1){
                    return '<span>待开票</span>'
                }else if(row.state === 2){
                    return '<span>已开票</span>'
                }else if(row.state === 3){
                    return '<span>开票失败</span>'
                }
            }
        },
        {title: '操作', visible: true, align: 'center', valign: 'middle',width:150,
            formatter: function (value, row) {
                return '<a href="#" onclick="TBill.confirm('+row.id+','+row.state+')" style="color:blue">确定</a>' + '&emsp;' +
                    '<a href="#" onclick="TBill.cancel('+row.id+','+row.state+')" style="color:red">取消</a>'
            }
        }
    ];
};
/**
 * 检查是否选中
 */
TBill.check = function () {
    var selected = $('#' + this.id).bootstrapTable('getSelections');
    if(selected.length == 0){
        Feng.info("请先选中表格中的某一记录!");
        return false;
    }else{
        TBill.seItem = selected[0];
        return true;
    }
};
/**
 * 点击添加
 */
TBill.openAddTBill = function () {
    var index = layer.open({
        type: 2,
        title: '添加',
        area: ['800px', '420px'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tBill/tBill_add'
    });
    this.layerIndex = index;
};
/**
 * 打开查看详情
 */
TBill.openTBillDetail = function () {
    if (this.check()) {
        var index = layer.open({
            type: 2,
            title: '详情',
            area: ['800px', '420px'], //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/tBill/tBill_update/' + TBill.seItem.id
        });
        this.layerIndex = index;
    }
};
/**
 * 删除
 */
TBill.delete = function () {
    if (this.check()) {
        var ajax = new $ax(Feng.ctxPath + "/tBill/delete", function (data) {
            Feng.success("删除成功!");
            TBill.table.refresh();
        }, function (data) {
            Feng.error("删除失败!" + data.responseJSON.message + "!");
        });
        ajax.set("tBillId",this.seItem.id);
        ajax.start();
    }
};
/**
 * 确认通过发票
 */
TBill.confirm = function (id,state) {
    if(1 !== state){
        Feng.error("该条数据已审核");
        return;
    }
    var ajax = new $ax(Feng.ctxPath + "/tBill/confirm", function (data) {
        Feng.success("操作成功!");
        TBill.table.refresh();
    }, function (data) {
        Feng.error("操作失败!" + data.responseJSON.message + "!");
    });
    ajax.set("tBillId",id);
    ajax.start();
};
/**
 * 发票失败
 */
TBill.cancel = function (id,state) {
    if(1 !== state){
        Feng.error("该条数据已审核");
        return;
    }
    var ajax = new $ax(Feng.ctxPath + "/tBill/cancel", function (data) {
        Feng.success("操作成功!");
        TBill.table.refresh();
    }, function (data) {
        Feng.error("操作失败!" + data.responseJSON.message + "!");
    });
    ajax.set("tBillId",id);
    ajax.start();
};
/**
 * 发票信息导出
 */
TBill.export=function(){
    var createTime=$("#createTime").val()
    var addresseePhone=$("#addresseePhone").val()
    var state=$("#state").val()
    var billType=$("#billType").val()
    var billHeaderType=$("#billHeaderType").val()
    window.location.href=Feng.ctxPath + "/tBill/export?createTime="+createTime
        +"&addresseePhone="+addresseePhone
        +"&state="+state
        +"&billType="+billType
        +"&billHeaderType="+billHeaderType
    ;
}
/**
 * 查询列表
 */
TBill.search = function () {
    var queryData = {};
    queryData['createTime'] = $("#createTime").val();
    queryData['addresseePhone'] = $("#addresseePhone").val();
    queryData['state'] = $("#state").val();
    queryData['billType'] = $("#billType").val();
    queryData['billHeaderType'] = $("#billHeaderType").val();
    TBill.table.refresh({query: queryData});
};
/**
 * 重置
 */
TBill.resetSearch = function (){
    $("#createTime").val('');
    $("#addresseePhone").val('');
    $("#state").val('');
    $("#billType").val('');
    $("#billHeaderType").val('');
    TBill.search();
}
$(function () {
    var defaultColunms = TBill.initColumn();
    var table = new BSTable(TBill.id, "/tBill/list", defaultColunms);
    table.setPaginationType("client");
    TBill.table = table.init();
});
management/guns-admin/src/main/webapp/static/modular/system/tBill/tBill_info.js
New file
@@ -0,0 +1,106 @@
/**
 * 初始化详情对话框
 */
var TBillInfoDlg = {
    tBillInfoData : {}
};
/**
 * 清除数据
 */
TBillInfoDlg.clearData = function() {
    this.tBillInfoData = {};
}
/**
 * 设置对话框中的数据
 *
 * @param key 数据的名称
 * @param val 数据的具体值
 */
TBillInfoDlg.set = function(key, val) {
    this.tBillInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val;
    return this;
}
/**
 * 设置对话框中的数据
 *
 * @param key 数据的名称
 * @param val 数据的具体值
 */
TBillInfoDlg.get = function(key) {
    return $("#" + key).val();
}
/**
 * 关闭此对话框
 */
TBillInfoDlg.close = function() {
    parent.layer.close(window.parent.TBill.layerIndex);
}
/**
 * 收集数据
 */
TBillInfoDlg.collectData = function() {
    this
    .set('id')
    .set('orderId')
    .set('billType')
    .set('billHeaderType')
    .set('companyName')
    .set('companyTaxNumber')
    .set('billContent')
    .set('moreContent')
    .set('billAmount')
    .set('addresseeName')
    .set('addresseePhone')
    .set('addresseeEmail')
    .set('state')
    .set('createTime');
}
/**
 * 提交添加
 */
TBillInfoDlg.addSubmit = function() {
    this.clearData();
    this.collectData();
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tBill/add", function(data){
        Feng.success("添加成功!");
        window.parent.TBill.table.refresh();
        TBillInfoDlg.close();
    },function(data){
        Feng.error("添加失败!" + data.responseJSON.message + "!");
    });
    ajax.set(this.tBillInfoData);
    ajax.start();
}
/**
 * 提交修改
 */
TBillInfoDlg.editSubmit = function() {
    this.clearData();
    this.collectData();
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tBill/update", function(data){
        Feng.success("修改成功!");
        window.parent.TBill.table.refresh();
        TBillInfoDlg.close();
    },function(data){
        Feng.error("修改失败!" + data.responseJSON.message + "!");
    });
    ajax.set(this.tBillInfoData);
    ajax.start();
}
$(function() {
});
management/guns-admin/src/main/webapp/static/modular/system/tBroadcast/tBroadcast.js
New file
@@ -0,0 +1,128 @@
/**
 * 管理初始化
 */
var TBroadcast = {
    id: "TBroadcastTable",    //表格id
    seItem: null,        //选中的条目
    table: null,
    layerIndex: -1
};
/**
 * 初始化表格的列
 */
TBroadcast.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: 'content', visible: true, align: 'center', valign: 'middle'},
        {title: '是否显示', field: 'isShow', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                if (row.isShow){
                    return '<span>是</span>'
                }else {
                    return '<span>否</span>'
                }
            }
        },
        {title: '排序', field: 'sort', visible: true, align: 'center', valign: 'middle'},
        {title: '状态(1=正常,2=冻结,3=删除)', field: 'status', visible: false, align: 'center', valign: 'middle'},
        {title: '操作', visible: true, align: 'center', valign: 'middle',width:150,
            formatter: function (value, row) {
                if (row.isShow){
                    return '<a href="#" onclick="TBroadcast.updateStatus('+row.id+')" style="color:red">下架</a>'
                }else{
                    return '<a href="#" onclick="TBroadcast.updateStatus('+row.id+')" style="color:blue">上架</a>' +'&nbsp;' +
                        '<a href="#" onclick="TBroadcast.delete('+row.id+')" style="color:red">删除</a>'
                }
            }
        }
    ];
};
/**
 * 检查是否选中
 */
TBroadcast.check = function () {
    var selected = $('#' + this.id).bootstrapTable('getSelections');
    if(selected.length == 0){
        Feng.info("请先选中表格中的某一记录!");
        return false;
    }else{
        TBroadcast.seItem = selected[0];
        return true;
    }
};
/**
 * 点击添加
 */
TBroadcast.openAddTBroadcast = function () {
    var index = layer.open({
        type: 2,
        title: '添加',
        area: ['800px', '420px'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tBroadcast/tBroadcast_add'
    });
    this.layerIndex = index;
};
/**
 * 打开查看详情
 */
TBroadcast.openTBroadcastDetail = function () {
    if (this.check()) {
        var index = layer.open({
            type: 2,
            title: '详情',
            area: ['800px', '420px'], //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/tBroadcast/tBroadcast_update/' + TBroadcast.seItem.id
        });
        this.layerIndex = index;
    }
};
/**
 * 删除
 */
TBroadcast.delete = function (id) {
    var ajax = new $ax(Feng.ctxPath + "/tBroadcast/delete", function (data) {
        Feng.success("删除成功!");
        TBroadcast.table.refresh();
    }, function (data) {
        Feng.error("删除失败!" + data.responseJSON.message + "!");
    });
    ajax.set("tBroadcastId",id);
    ajax.start();
};
/**
 * 查询列表
 */
TBroadcast.search = function () {
    var queryData = {};
    queryData['createTime'] = $("#createTime").val();
    queryData['content'] = $("#content").val();
    TBroadcast.table.refresh({query: queryData});
};
/**
 * 重置
 */
TBroadcast.resetSearch = function (){
    $("#createTime").val('');
    $("#content").val('');
    TBroadcast.search();
}
$(function () {
    var defaultColunms = TBroadcast.initColumn();
    var table = new BSTable(TBroadcast.id, "/tBroadcast/list", defaultColunms);
    table.setPaginationType("client");
    TBroadcast.table = table.init();
});
management/guns-admin/src/main/webapp/static/modular/system/tBroadcast/tBroadcast_info.js
New file
@@ -0,0 +1,97 @@
/**
 * 初始化详情对话框
 */
var TBroadcastInfoDlg = {
    tBroadcastInfoData : {}
};
/**
 * 清除数据
 */
TBroadcastInfoDlg.clearData = function() {
    this.tBroadcastInfoData = {};
}
/**
 * 设置对话框中的数据
 *
 * @param key 数据的名称
 * @param val 数据的具体值
 */
TBroadcastInfoDlg.set = function(key, val) {
    this.tBroadcastInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val;
    return this;
}
/**
 * 设置对话框中的数据
 *
 * @param key 数据的名称
 * @param val 数据的具体值
 */
TBroadcastInfoDlg.get = function(key) {
    return $("#" + key).val();
}
/**
 * 关闭此对话框
 */
TBroadcastInfoDlg.close = function() {
    parent.layer.close(window.parent.TBroadcast.layerIndex);
}
/**
 * 收集数据
 */
TBroadcastInfoDlg.collectData = function() {
    this
    .set('id')
    .set('content')
    .set('sort')
    .set('status')
    .set('createTime');
}
/**
 * 提交添加
 */
TBroadcastInfoDlg.addSubmit = function() {
    this.clearData();
    this.collectData();
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tBroadcast/add", function(data){
        Feng.success("添加成功!");
        window.parent.TBroadcast.table.refresh();
        TBroadcastInfoDlg.close();
    },function(data){
        Feng.error("添加失败!" + data.responseJSON.message + "!");
    });
    ajax.set(this.tBroadcastInfoData);
    ajax.start();
}
/**
 * 提交修改
 */
TBroadcastInfoDlg.editSubmit = function() {
    this.clearData();
    this.collectData();
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tBroadcast/update", function(data){
        Feng.success("修改成功!");
        window.parent.TBroadcast.table.refresh();
        TBroadcastInfoDlg.close();
    },function(data){
        Feng.error("修改失败!" + data.responseJSON.message + "!");
    });
    ajax.set(this.tBroadcastInfoData);
    ajax.start();
}
$(function() {
});
management/guns-admin/src/main/webapp/static/modular/system/tCommercial/tCommercial.js
New file
@@ -0,0 +1,111 @@
/**
 * 管理初始化
 */
var TCommercial = {
    id: "TCommercialTable",    //表格id
    seItem: null,        //选中的条目
    table: null,
    layerIndex: -1
};
/**
 * 初始化表格的列
 */
TCommercial.initColumn = function () {
    return [
        {field: 'selectItem', radio: true},
            {title: '主键', field: 'id', visible: true, align: 'center', valign: 'middle'},
            {title: '类型(1=弹窗广告,2=底部广告)', field: 'type', visible: true, align: 'center', valign: 'middle'},
            {title: '名称', field: 'name', visible: true, align: 'center', valign: 'middle'},
            {title: '广告地址', field: 'url', visible: true, align: 'center', valign: 'middle'},
            {title: '设备(1=小程序,2=司机端)', field: 'device', visible: true, align: 'center', valign: 'middle'},
            {title: '是否跳转(0=否,1=是)', field: 'isJump', visible: true, align: 'center', valign: 'middle'},
            {title: '跳转类型(1=内部跳转,2=外部跳转)', field: 'jumpType', visible: true, align: 'center', valign: 'middle'},
            {title: '跳转连接', field: 'jumpUrl', visible: true, align: 'center', valign: 'middle'},
            {title: '富文本', field: 'html', visible: true, align: 'center', valign: 'middle'},
            {title: '排序', field: 'sort', 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: '添加人员id', field: 'createUserId', visible: true, align: 'center', valign: 'middle'},
            {title: '更新时间', field: 'updateTime', visible: true, align: 'center', valign: 'middle'},
            {title: '更新人员id', field: 'updateUserId', visible: true, align: 'center', valign: 'middle'}
    ];
};
/**
 * 检查是否选中
 */
TCommercial.check = function () {
    var selected = $('#' + this.id).bootstrapTable('getSelections');
    if(selected.length == 0){
        Feng.info("请先选中表格中的某一记录!");
        return false;
    }else{
        TCommercial.seItem = selected[0];
        return true;
    }
};
/**
 * 点击添加
 */
TCommercial.openAddTCommercial = function () {
    var index = layer.open({
        type: 2,
        title: '添加',
        area: ['800px', '420px'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tCommercial/tCommercial_add'
    });
    this.layerIndex = index;
};
/**
 * 打开查看详情
 */
TCommercial.openTCommercialDetail = function () {
    if (this.check()) {
        var index = layer.open({
            type: 2,
            title: '详情',
            area: ['800px', '420px'], //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/tCommercial/tCommercial_update/' + TCommercial.seItem.id
        });
        this.layerIndex = index;
    }
};
/**
 * 删除
 */
TCommercial.delete = function () {
    if (this.check()) {
        var ajax = new $ax(Feng.ctxPath + "/tCommercial/delete", function (data) {
            Feng.success("删除成功!");
            TCommercial.table.refresh();
        }, function (data) {
            Feng.error("删除失败!" + data.responseJSON.message + "!");
        });
        ajax.set("tCommercialId",this.seItem.id);
        ajax.start();
    }
};
/**
 * 查询列表
 */
TCommercial.search = function () {
    var queryData = {};
    queryData['condition'] = $("#condition").val();
    TCommercial.table.refresh({query: queryData});
};
$(function () {
    var defaultColunms = TCommercial.initColumn();
    var table = new BSTable(TCommercial.id, "/tCommercial/list", defaultColunms);
    table.setPaginationType("client");
    TCommercial.table = table.init();
});
management/guns-admin/src/main/webapp/static/modular/system/tCommercial/tCommercial_info.js
New file
@@ -0,0 +1,107 @@
/**
 * 初始化详情对话框
 */
var TCommercialInfoDlg = {
    tCommercialInfoData : {}
};
/**
 * 清除数据
 */
TCommercialInfoDlg.clearData = function() {
    this.tCommercialInfoData = {};
}
/**
 * 设置对话框中的数据
 *
 * @param key 数据的名称
 * @param val 数据的具体值
 */
TCommercialInfoDlg.set = function(key, val) {
    this.tCommercialInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val;
    return this;
}
/**
 * 设置对话框中的数据
 *
 * @param key 数据的名称
 * @param val 数据的具体值
 */
TCommercialInfoDlg.get = function(key) {
    return $("#" + key).val();
}
/**
 * 关闭此对话框
 */
TCommercialInfoDlg.close = function() {
    parent.layer.close(window.parent.TCommercial.layerIndex);
}
/**
 * 收集数据
 */
TCommercialInfoDlg.collectData = function() {
    this
    .set('id')
    .set('type')
    .set('name')
    .set('url')
    .set('device')
    .set('isJump')
    .set('jumpType')
    .set('jumpUrl')
    .set('html')
    .set('sort')
    .set('status')
    .set('createTime')
    .set('createUserId')
    .set('updateTime')
    .set('updateUserId');
}
/**
 * 提交添加
 */
TCommercialInfoDlg.addSubmit = function() {
    this.clearData();
    this.collectData();
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tCommercial/add", function(data){
        Feng.success("添加成功!");
        window.parent.TCommercial.table.refresh();
        TCommercialInfoDlg.close();
    },function(data){
        Feng.error("添加失败!" + data.responseJSON.message + "!");
    });
    ajax.set(this.tCommercialInfoData);
    ajax.start();
}
/**
 * 提交修改
 */
TCommercialInfoDlg.editSubmit = function() {
    this.clearData();
    this.collectData();
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tCommercial/update", function(data){
        Feng.success("修改成功!");
        window.parent.TCommercial.table.refresh();
        TCommercialInfoDlg.close();
    },function(data){
        Feng.error("修改失败!" + data.responseJSON.message + "!");
    });
    ajax.set(this.tCommercialInfoData);
    ajax.start();
}
$(function() {
});
management/guns-admin/src/main/webapp/static/modular/system/tEdition/tEdition.js
New file
@@ -0,0 +1,165 @@
/**
 * 管理初始化
 */
var TEdition = {
    id: "TEditionTable",    //表格id
    seItem: null,        //选中的条目
    table: null,
    layerIndex: -1
};
/**
 * 初始化表格的列
 */
TEdition.initColumn = function () {
    return [
        {field: 'selectItem', radio: true},
            {title: '主键', field: 'id', visible: true, align: 'center', valign: 'middle'},
            {title: '版本编号', field: 'editionNo', visible: true, align: 'center', valign: 'middle'},
            {title: '版本文件', field: 'editionFile', visible: true, align: 'center', valign: 'middle',
                formatter: function (value, row) {
                    return row.editionFile.substr(47,row.editionFile.length)
                }
            },
            {title: '版本公告', field: 'editionAnnouncement', visible: true, align: 'center', valign: 'middle'},
            {title: '端口', field: 'editionPort', 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="TEdition.delete('+row.id+')" style="color:red">删除</a>'
            }
        }
    ];
};
/**
 * 检查是否选中
 */
TEdition.check = function () {
    var selected = $('#' + this.id).bootstrapTable('getSelections');
    if(selected.length == 0){
        Feng.info("请先选中表格中的某一记录!");
        return false;
    }else{
        TEdition.seItem = selected[0];
        return true;
    }
};
/**
 * 点击添加
 */
TEdition.openAddTEdition = function () {
    var index = layer.open({
        type: 2,
        title: '添加',
        area: ['100%', '100%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tEdition/tEdition_add'
    });
    this.layerIndex = index;
};
/**
 * 打开查看详情
 */
TEdition.openTEditionDetail = function () {
    if (this.check()) {
        var index = layer.open({
            type: 2,
            title: '详情',
            area: ['800px', '420px'], //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/tEdition/tEdition_update/' + TEdition.seItem.id
        });
        this.layerIndex = index;
    }
};
/**
 * 删除
 */
TEdition.delete = function (id) {
    var ajax = new $ax(Feng.ctxPath + "/tEdition/delete", function (data) {
        Feng.success("删除成功!");
        TEdition.table.refresh();
    }, function (data) {
        Feng.error("删除失败!" + data.responseJSON.message + "!");
    });
    ajax.set("tEditionId",id);
    ajax.start();
};
TEdition.previewFile = function(){
    $("#upFile").change(function(){
        var file = document.querySelector('#upFile').files[0];
        var pic = ["apk"];
        var index1 = file.name.lastIndexOf(".");
        var ext = file.name.substr(index1+1);
        for (var a = 0;a < pic.length; a++ ){
            if (ext != pic[a]){
                console.log(pic[a])
                Feng.error("请上传apk文件");
                return;
            }
        }
        if (file) {
            TEdition.uploadApk(file);
        } else {
        }
    });
}
TEdition.uploadApk = function(file){
    var index = layer.load(1, {
        shade: [0.1,'#fff'] //0.1透明度的白色背景
    });
    var formData = new FormData();
    formData.append("myfile", file);
    $.ajax({
        url : Feng.ctxPath + "/mgr/saveApk",
        type : "POST",
        data : formData,
        contentType : false,
        processData : false,
        success : function(data) {
            $("#editionFile").val(data);
            Feng.success("上传成功!");
            layer.close(index);
        },
        error : function() {
            Feng.error("上传失败");
            layer.close(index);
        }
    })
}
/**
 * 查询列表
 */
TEdition.search = function () {
    var queryData = {};
    queryData['createTime'] = $("#createTime").val();
    queryData['editionNo'] = $("#editionNo").val();
    TEdition.table.refresh({query: queryData});
};
/**
 * 重置
 */
TEdition.resetSearch = function (){
    $("#createTime").val('');
    $("#editionNo").val('');
    TEdition.search();
}
$(function () {
    var defaultColunms = TEdition.initColumn();
    var table = new BSTable(TEdition.id, "/tEdition/list", defaultColunms);
    table.setPaginationType("client");
    TEdition.table = table.init();
});
management/guns-admin/src/main/webapp/static/modular/system/tEdition/tEdition_info.js
New file
@@ -0,0 +1,140 @@
/**
 * 初始化详情对话框
 */
var TEditionInfoDlg = {
    tEditionInfoData : {},
    validateFields: {
        editionNo: {
            validators: {
                notEmpty: {
                    message: '版本编号不能为空'
                }
            }
        },
        editionPort: {
            validators: {
                notEmpty: {
                    message: '请选择端口'
                }
            }
        },
        editionAnnouncement: {
            validators: {
                notEmpty: {
                    message: '版本公告不能为空'
                }
            }
        },
    }
};
/**
 * 验证数据是否为空
 */
TEditionInfoDlg.validate = function () {
    $('#editionInfoForm').data("bootstrapValidator").resetForm();
    $('#editionInfoForm').bootstrapValidator('validate');
    return $("#editionInfoForm").data('bootstrapValidator').isValid();
};
/**
 * 清除数据
 */
TEditionInfoDlg.clearData = function() {
    this.tEditionInfoData = {};
}
/**
 * 设置对话框中的数据
 *
 * @param key 数据的名称
 * @param val 数据的具体值
 */
TEditionInfoDlg.set = function(key, val) {
    this.tEditionInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val;
    return this;
}
/**
 * 设置对话框中的数据
 *
 * @param key 数据的名称
 * @param val 数据的具体值
 */
TEditionInfoDlg.get = function(key) {
    return $("#" + key).val();
}
/**
 * 关闭此对话框
 */
TEditionInfoDlg.close = function() {
    parent.layer.close(window.parent.TEdition.layerIndex);
}
/**
 * 收集数据
 */
TEditionInfoDlg.collectData = function() {
    this
    .set('id')
    .set('editionNo')
    .set('editionFile')
    .set('editionAnnouncement')
    .set('editionPort')
    .set('createTime');
}
/**
 * 提交添加
 */
TEditionInfoDlg.addSubmit = function() {
    this.clearData();
    this.collectData();
    if(!this.validate()){
        return ;
    }
    var editionFile = $("#editionFile").val();
    if ("" == editionFile){
        Feng.info("请上传apk文件");
        return;
    }
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tEdition/add", function(data){
        Feng.success("添加成功!");
        window.parent.TEdition.table.refresh();
        TEditionInfoDlg.close();
    },function(data){
        Feng.error("添加失败!" + data.responseJSON.message + "!");
    });
    ajax.set(this.tEditionInfoData);
    ajax.start();
}
/**
 * 提交修改
 */
TEditionInfoDlg.editSubmit = function() {
    this.clearData();
    this.collectData();
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tEdition/update", function(data){
        Feng.success("修改成功!");
        window.parent.TEdition.table.refresh();
        TEditionInfoDlg.close();
    },function(data){
        Feng.error("修改失败!" + data.responseJSON.message + "!");
    });
    ajax.set(this.tEditionInfoData);
    ajax.start();
}
$(function() {
    Feng.initValidator("editionInfoForm", TEditionInfoDlg.validateFields);
});
management/guns-admin/src/main/webapp/static/modular/system/tRevenue/tRevenue.js
New file
@@ -0,0 +1,236 @@
/**
 * 管理初始化
 */
var TRevenue = {
    id: "TRevenueTable",    //表格id
    seItem: null,        //选中的条目
    table: null,
    layerIndex: -1
};
/**
 * 初始化表格的列
 */
TRevenue.initColumn = function () {
    return [
        {field: 'selectItem', radio: true},
            {title: '主键', field: 'id', visible: false, align: 'center', valign: 'middle'},
            {title: '收入类型(1=订单收入,2=分佣收入)', field: 'type', visible: false, align: 'center', valign: 'middle'},
            {title: '用户类型(1=用户,2=司机,3=代理商)', field: 'userType', visible: false, align: 'center', valign: 'middle'},
            {title: '用户id', field: 'userId', visible: false, align: 'center', valign: 'middle'},
            {title: '订单id', field: 'orderId', visible: false, align: 'center', valign: 'middle'},
            {title: '收入金额', field: 'amount', visible: false, align: 'center', valign: 'middle'},
            {title: '添加时间', field: 'createTime', visible: false, align: 'center', valign: 'middle'},
            {title: '订单号', field: 'code', visible: true, align: 'center', valign: 'middle'},
            {title: '交易时间', field: 'businessTime', visible: true, align: 'center', valign: 'middle'},
            {title: '交易类型', field: 'businessType', visible: true, align: 'center', valign: 'middle',
                formatter: function (value, row) {
                    if (row.businessType === 1){
                        return '<span>支付订单</span>'
                    }else if (row.businessType === 11){
                        return '<span>佣金提现</span>'
                    }else if (row.businessType === 12){
                        return '<span>余额提现</span>'
                    }
                }
            },
            {title: '司机姓名', field: 'driverName', visible: true, align: 'center', valign: 'middle'},
            {title: '司机电话', field: 'driverPhone', 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 if (row.payType === 3){
                        return '<span>线下收款</span>'
                    }else if (row.payType === 0){
                        return ''
                    }
                }
            },
            {title: '金额', field: 'amount', visible: true, align: 'center', valign: 'middle'},
            {title: '佣金提成', field: 'commissionAmount', visible: true, align: 'center', valign: 'middle'},
            {title: '优惠券', field: 'discountedPrice', visible: true, align: 'center', valign: 'middle'},
            {title: '余额', field: 'accountBalance', visible: true, align: 'center', valign: 'middle'},
            {title: '状态', field: 'state', visible: true, align: 'center', valign: 'middle',
                formatter: function (value, row) {
                    if (row.state === 2){
                        return '<span>完成</span>'
                    }else if (row.state === 108){
                        return '<span>完成</span>'
                    }else if (row.state === 109){
                        return '<span>完成</span>'
                    }
                }
            },
        {title: '操作', visible: true, align: 'center', valign: 'middle',width:150,
            formatter: function (value, row) {
                if (row.businessType === 1){
                    return '<a href="#" onclick="TRevenue.searchTRevenueOrderDetail('+row.code+')" style="color:blue">详情</a>'
                }else if (row.businessType === 11){
                    return '<a href="#" onclick="TRevenue.searchTRevenueCommissionDetail('+row.code+')" style="color:blue">详情</a>'
                }else if (row.businessType === 12){
                    return '<a href="#" onclick="TRevenue.searchTRevenueBalanceDetail('+row.code+')" style="color:blue">详情</a>'
                }
            }
        }
    ];
};
/**
 * 检查是否选中
 */
TRevenue.check = function () {
    var selected = $('#' + this.id).bootstrapTable('getSelections');
    if(selected.length == 0){
        Feng.info("请先选中表格中的某一记录!");
        return false;
    }else{
        TRevenue.seItem = selected[0];
        return true;
    }
};
/**
 * 点击添加
 */
TRevenue.openAddTRevenue = function () {
    var index = layer.open({
        type: 2,
        title: '添加',
        area: ['800px', '420px'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tRevenue/tRevenue_add'
    });
    this.layerIndex = index;
};
/**
 * 打开查看详情
 */
TRevenue.openTRevenueDetail = function () {
    if (this.check()) {
        var index = layer.open({
            type: 2,
            title: '详情',
            area: ['800px', '420px'], //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/tRevenue/tRevenue_update/' + TRevenue.seItem.id
        });
        this.layerIndex = index;
    }
};
/**
 * 打开查看佣金提现详情(使用中)
 */
TRevenue.searchTRevenueCommissionDetail = function (code) {
    var index = layer.open({
        type: 2,
        title: '佣金提现详情',
        area: ['100%', '100%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tRevenue/commissionDetail?code=' + code
    });
    this.layerIndex = index;
};
/**
 * 打开查看余额提现详情(使用中)
 */
TRevenue.searchTRevenueBalanceDetail = function (code) {
    var index = layer.open({
        type: 2,
        title: '余额提现详情',
        area: ['100%', '100%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tRevenue/balanceDetail?code=' + code
    });
    this.layerIndex = index;
};
/**
 * 打开查看支付订单详情(使用中)
 */
TRevenue.searchTRevenueOrderDetail = function (code) {
    var index = layer.open({
        type: 2,
        title: '支付订单详情',
        area: ['100%', '100%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tRevenue/orderDetail?code=' + code
    });
    this.layerIndex = index;
};
/**
 * 删除
 */
TRevenue.delete = function () {
    if (this.check()) {
        var ajax = new $ax(Feng.ctxPath + "/tRevenue/delete", function (data) {
            Feng.success("删除成功!");
            TRevenue.table.refresh();
        }, function (data) {
            Feng.error("删除失败!" + data.responseJSON.message + "!");
        });
        ajax.set("tRevenueId",this.seItem.id);
        ajax.start();
    }
};
/**
 * 司机信息导出
 */
TRevenue.export=function(){
    var code=$("#code").val()
    var businessType=$("#businessType").val()
    var payType=$("#payType").val()
    var driverName=$("#driverName").val()
    var businessTime=$("#businessTime").val()
    window.location.href=Feng.ctxPath + "/tRevenue/export?code="+code
        +"&businessType="+businessType
        +"&payType="+payType
        +"&driverName="+driverName
        +"&businessTime="+businessTime
    ;
}
/**
 * 查询列表
 */
TRevenue.search = function () {
    var queryData = {};
    queryData['code'] = $("#code").val();
    queryData['businessType'] = $("#businessType").val();
    queryData['payType'] = $("#payType").val();
    queryData['driverName'] = $("#driverName").val();
    queryData['businessTime'] = $("#businessTime").val();
    TRevenue.table.refresh({query: queryData});
};
/**
 * 重置
 */
TRevenue.resetSearch = function (){
    $("#code").val('');
    $("#businessType").val('');
    $("#payType").val('');
    $("#driverName").val('');
    $("#businessTime").val('');
    TRevenue.search();
}
$(function () {
    var defaultColunms = TRevenue.initColumn();
    var table = new BSTable(TRevenue.id, "/tRevenue/list", defaultColunms);
    table.setPaginationType("client");
    TRevenue.table = table.init();
});
management/guns-admin/src/main/webapp/static/modular/system/tRevenue/tRevenue_info.js
New file
@@ -0,0 +1,99 @@
/**
 * 初始化详情对话框
 */
var TRevenueInfoDlg = {
    tRevenueInfoData : {}
};
/**
 * 清除数据
 */
TRevenueInfoDlg.clearData = function() {
    this.tRevenueInfoData = {};
}
/**
 * 设置对话框中的数据
 *
 * @param key 数据的名称
 * @param val 数据的具体值
 */
TRevenueInfoDlg.set = function(key, val) {
    this.tRevenueInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val;
    return this;
}
/**
 * 设置对话框中的数据
 *
 * @param key 数据的名称
 * @param val 数据的具体值
 */
TRevenueInfoDlg.get = function(key) {
    return $("#" + key).val();
}
/**
 * 关闭此对话框
 */
TRevenueInfoDlg.close = function() {
    parent.layer.close(window.parent.TRevenue.layerIndex);
}
/**
 * 收集数据
 */
TRevenueInfoDlg.collectData = function() {
    this
    .set('id')
    .set('type')
    .set('userType')
    .set('userId')
    .set('orderId')
    .set('amount')
    .set('createTime');
}
/**
 * 提交添加
 */
TRevenueInfoDlg.addSubmit = function() {
    this.clearData();
    this.collectData();
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tRevenue/add", function(data){
        Feng.success("添加成功!");
        window.parent.TRevenue.table.refresh();
        TRevenueInfoDlg.close();
    },function(data){
        Feng.error("添加失败!" + data.responseJSON.message + "!");
    });
    ajax.set(this.tRevenueInfoData);
    ajax.start();
}
/**
 * 提交修改
 */
TRevenueInfoDlg.editSubmit = function() {
    this.clearData();
    this.collectData();
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tRevenue/update", function(data){
        Feng.success("修改成功!");
        window.parent.TRevenue.table.refresh();
        TRevenueInfoDlg.close();
    },function(data){
        Feng.error("修改失败!" + data.responseJSON.message + "!");
    });
    ajax.set(this.tRevenueInfoData);
    ajax.start();
}
$(function() {
});
management/guns-admin/src/main/webapp/static/modular/system/tSystemBulletin/tSystemBulletin.js
New file
@@ -0,0 +1,127 @@
/**
 * 管理初始化
 */
var TSystemBulletin = {
    id: "TSystemBulletinTable",    //表格id
    seItem: null,        //选中的条目
    table: null,
    layerIndex: -1
};
/**
 * 初始化表格的列
 */
TSystemBulletin.initColumn = function () {
    return [
        {field: 'selectItem', radio: true},
            {title: '主键', field: 'id', visible: false, align: 'center', valign: 'middle'},
            {title: '标题', field: 'introduce', visible: false, align: 'center', valign: 'middle'},
        {title: '添加时间', field: 'createTime', visible: true, align: 'center', valign: 'middle'},
        {title: '图片', field: 'img', visible: false, align: 'center', valign: 'middle'},
        {title: '消息内容', field: 'content', visible: true, align: 'center', valign: 'middle'},
        {title: '状态', field: 'status', visible: false, align: 'center', valign: 'middle'},
        {title: '状态', field: 'state', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                if (row.state === 1){
                    return '<span>未发送</span>'
                }else if (row.state === 2){
                    return '<span>已发送</span>'
                }
            }
        },
        {title: '操作', visible: true, align: 'center', valign: 'middle',width:150,
            formatter: function (value, row) {
                if (row.state === 1){
                    return '<a href="#" onclick="TSystemBulletin.openTSystemBulletinDetail('+row.id+')" style="color:blue">编辑</a>' +'&nbsp;' +
                        '<a href="#" onclick="TSystemBulletin.delete('+row.id+')" style="color:red">删除</a>'
                }else if (row.state === 2){
                    return '<a href="#" onclick="TSystemBulletin.delete('+row.id+')" style="color:red">删除</a>'
                }
            }
        }
    ];
};
/**
 * 检查是否选中
 */
TSystemBulletin.check = function () {
    var selected = $('#' + this.id).bootstrapTable('getSelections');
    if(selected.length == 0){
        Feng.info("请先选中表格中的某一记录!");
        return false;
    }else{
        TSystemBulletin.seItem = selected[0];
        return true;
    }
};
/**
 * 点击添加
 */
TSystemBulletin.openAddTSystemBulletin = function () {
    var index = layer.open({
        type: 2,
        title: '添加',
        area: ['100%', '100%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tSystemBulletin/tSystemBulletin_add'
    });
    this.layerIndex = index;
};
/**
 * 打开查看详情
 */
TSystemBulletin.openTSystemBulletinDetail = function (id) {
    var index = layer.open({
        type: 2,
        title: '详情',
        area: ['100%', '100%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tSystemBulletin/tSystemBulletin_update/' + id
    });
    this.layerIndex = index;
};
/**
 * 删除
 */
TSystemBulletin.delete = function (id) {
    var ajax = new $ax(Feng.ctxPath + "/tSystemBulletin/delete", function (data) {
        Feng.success("删除成功!");
        TSystemBulletin.table.refresh();
    }, function (data) {
        Feng.error("删除失败!" + data.responseJSON.message + "!");
    });
    ajax.set("tSystemBulletinId",id);
    ajax.start();
};
/**
 * 查询列表
 */
TSystemBulletin.search = function () {
    var queryData = {};
    queryData['createTime'] = $("#createTime").val();
    queryData['content'] = $("#content").val();
    TSystemBulletin.table.refresh({query: queryData});
};
/**
 * 重置
 */
TSystemBulletin.resetSearch = function (){
    $("#createTime").val('');
    $("#content").val('');
    TSystemBulletin.search();
}
$(function () {
    var defaultColunms = TSystemBulletin.initColumn();
    var table = new BSTable(TSystemBulletin.id, "/tSystemBulletin/list", defaultColunms);
    table.setPaginationType("client");
    TSystemBulletin.table = table.init();
});
management/guns-admin/src/main/webapp/static/modular/system/tSystemBulletin/tSystemBulletin_info.js
New file
@@ -0,0 +1,177 @@
/**
 * 初始化详情对话框
 */
var TSystemBulletinInfoDlg = {
    tSystemBulletinInfoData : {},
    validateFields: {
        introduce: {
            validators: {
                notEmpty: {
                    message: '介绍不能为空'
                }
            }
        },
    }
};
/**
 * 验证数据是否为空
 */
TSystemBulletinInfoDlg.validate = function () {
    $('#systemBulletinInfoForm').data("bootstrapValidator").resetForm();
    $('#systemBulletinInfoForm').bootstrapValidator('validate');
    return $("#systemBulletinInfoForm").data('bootstrapValidator').isValid();
};
/**
 * 清除数据
 */
TSystemBulletinInfoDlg.clearData = function() {
    this.tSystemBulletinInfoData = {};
}
/**
 * 设置对话框中的数据
 *
 * @param key 数据的名称
 * @param val 数据的具体值
 */
TSystemBulletinInfoDlg.set = function(key, val) {
    this.tSystemBulletinInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val;
    return this;
}
/**
 * 设置对话框中的数据
 *
 * @param key 数据的名称
 * @param val 数据的具体值
 */
TSystemBulletinInfoDlg.get = function(key) {
    return $("#" + key).val();
}
/**
 * 关闭此对话框
 */
TSystemBulletinInfoDlg.close = function() {
    parent.layer.close(window.parent.TSystemBulletin.layerIndex);
}
/**
 * 收集数据
 */
TSystemBulletinInfoDlg.collectData = function() {
    if(UE.getEditor('content').hasContents()){
        $('#content').val(UE.getEditor('content').getContent());
    }
    this
    .set('id')
    .set('introduce')
    .set('img')
    .set('content')
    .set('status')
    .set('state')
    .set('createTime');
}
/**
 * 提交添加
 */
TSystemBulletinInfoDlg.addSubmit = function() {
    this.clearData();
    this.collectData();
    if(!this.validate()){
        return ;
    }
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tSystemBulletin/add", function(data){
        Feng.success("添加成功!");
        window.parent.TSystemBulletin.table.refresh();
        TSystemBulletinInfoDlg.close();
    },function(data){
        Feng.error("添加失败!" + data.responseJSON.message + "!");
    });
    ajax.set(this.tSystemBulletinInfoData);
    ajax.start();
}
/**
 * 提交添加
 */
TSystemBulletinInfoDlg.addSend = function() {
    this.clearData();
    this.collectData();
    if(!this.validate()){
        return ;
    }
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tSystemBulletin/addSend", function(data){
        Feng.success("发送成功!");
        window.parent.TSystemBulletin.table.refresh();
        TSystemBulletinInfoDlg.close();
    },function(data){
        Feng.error("发送失败!" + data.responseJSON.message + "!");
    });
    ajax.set(this.tSystemBulletinInfoData);
    ajax.start();
}
/**
 * 提交修改
 */
TSystemBulletinInfoDlg.editSubmit = function() {
    this.clearData();
    this.collectData();
    if(!this.validate()){
        return ;
    }
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tSystemBulletin/update", function(data){
        Feng.success("修改成功!");
        window.parent.TSystemBulletin.table.refresh();
        TSystemBulletinInfoDlg.close();
    },function(data){
        Feng.error("修改失败!" + data.responseJSON.message + "!");
    });
    ajax.set(this.tSystemBulletinInfoData);
    ajax.start();
}
/**
 * 提交修改发送
 */
TSystemBulletinInfoDlg.editSend = function() {
    this.clearData();
    this.collectData();
    if(!this.validate()){
        return ;
    }
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tSystemBulletin/editSend", function(data){
        Feng.success("发送成功!");
        window.parent.TSystemBulletin.table.refresh();
        TSystemBulletinInfoDlg.close();
    },function(data){
        Feng.error("发送失败!" + data.responseJSON.message + "!");
    });
    ajax.set(this.tSystemBulletinInfoData);
    ajax.start();
}
$(function() {
    TSystemBulletinInfoDlg.editor = UE.getEditor('content');
    Feng.initValidator("systemBulletinInfoForm", TSystemBulletinInfoDlg.validateFields);
});