From d66b7dc9b6d41dac2b8d2e37636a846dc80cd7e3 Mon Sep 17 00:00:00 2001 From: wzw <1794779437@qq.com> Date: Mon, 17 Mar 2025 21:19:36 +0800 Subject: [PATCH] 122 --- .../CLodopPrint_Setup_for_Win32NT_2.042.exe | Bin 0 -> 2304590 bytes documents/haixian.pdm | 8549 ++++++ ...送管理系统功能概要(二版).docx | Bin 0 -> 161948 bytes documents/订单业务属性.doc | Bin 0 -> 17658 bytes documents/订单管理表模型2.0.rtf | 3619 +++ documents/订单管理表模型3.25.rtf | 1 + .../exceptions/ArgumentValidException.java | 34 + .../web/interceptor/CrossInterceptor.java | 28 + .../module/account/model/CreateUser.java | 52 + .../com/xmomen/module/account/model/User.java | 25 + .../module/account/realm/UserRealm.java | 112 + .../account/service/PasswordHelper.java | 43 + .../service/PermissionServiceImpl.java | 33 + .../web/controller/PermissionController.java | 114 + .../web/controller/UserController.java | 147 + .../web/controller/vo/CreateUserVo.java | 37 + .../web/controller/vo/UpdateUserVo.java | 39 + .../xmomen/module/advice/entity/Advice.java | 149 + .../advice/entity/mapper/AdviceMapper.java | 16 + .../module/advice/mapper/AdviceMapperExt.xml | 36 + .../module/advice/model/AdviceModel.java | 87 + .../service/impl/AdviceServiceImpl.java | 222 + .../module/base/constant/AppConstants.java | 68 + .../base/controller/CompanyController.java | 113 + .../base/controller/ContractController.java | 102 + .../controller/CouponCategoryController.java | 122 + .../base/controller/CouponController.java | 508 + .../base/controller/ExpressController.java | 214 + .../base/controller/PublicController.java | 62 + .../module/base/entity/CdActivityAddress.java | 149 + .../base/entity/CdActivityAddressExample.java | 689 + .../base/entity/CdAttachmentExample.java | 742 + .../com/xmomen/module/base/entity/CdBind.java | 91 + .../module/base/entity/CdCategoryExample.java | 391 + .../xmomen/module/base/entity/CdCompany.java | 129 + .../xmomen/module/base/entity/CdContract.java | 226 + .../module/base/entity/CdContractItem.java | 130 + .../base/entity/CdContractItemExample.java | 562 + .../xmomen/module/base/entity/CdCoupon.java | 435 + .../module/base/entity/CdCouponCategory.java | 72 + .../entity/CdCouponCategoryRefExample.java | 591 + .../module/base/entity/CdCouponExample.java | 1573 + .../module/base/entity/CdCouponRef.java | 129 + .../com/xmomen/module/base/entity/CdItem.java | 511 + .../module/base/entity/CdItemDetail.java | 72 + .../module/base/entity/CdItemExample.java | 1893 ++ .../xmomen/module/base/entity/CdMember.java | 360 + .../base/entity/CdMemberCouponRelation.java | 72 + .../module/base/entity/CdMemberExample.java | 1421 + .../com/xmomen/module/base/entity/CdPlan.java | 245 + .../module/base/entity/CdPlanExample.java | 953 + .../xmomen/module/base/entity/CdPlanItem.java | 91 + .../module/base/entity/CdPlanItemExample.java | 441 + .../base/entity/mapper/CdActivityMapper.java | 16 + .../base/entity/mapper/CdBindMapper.java | 16 + .../base/entity/mapper/CdCategoryMapper.java | 16 + .../base/entity/mapper/CdCompanyMapper.java | 16 + .../entity/mapper/CdContractItemMapper.java | 16 + .../mapper/CdCouponCategoryRefMapper.java | 16 + .../base/entity/mapper/CdCouponMapper.java | 16 + .../base/entity/mapper/CdCouponRefMapper.java | 16 + .../base/entity/mapper/CdExpressMapper.java | 16 + .../entity/mapper/CdExpressMemberMapper.java | 16 + .../base/entity/mapper/CdPlanMapper.java | 16 + .../module/base/mapper/BasePlanMapper.xml | 42 + .../module/base/mapper/CompanyMapper.xml | 64 + .../module/base/mapper/ContractMapper.xml | 63 + .../base/mapper/CouponCategoryMapper.java | 11 + .../base/mapper/CouponCategoryMapper.xml | 27 + .../module/base/mapper/CouponMapper.xml | 316 + .../module/base/mapper/ExpressMapper.java | 6 + .../module/base/mapper/ExpressMapper.xml | 215 + .../base/mapper/ExpressMemberMapper.java | 6 + .../base/mapper/ItemCategoryMapper.java | 19 + .../module/base/mapper/ItemDetailMapper.java | 6 + .../module/base/mapper/ItemDetailMapper.xml | 5 + .../xmomen/module/base/mapper/ItemMapper.java | 6 + .../module/base/mapper/MemberMapper.java | 5 + .../module/base/mapper/MemberMapper.xml | 52 + .../module/base/mapper/PublicMapper.java | 13 + .../module/base/model/ActivityRefModel.java | 51 + .../module/base/model/CompanyModel.java | 94 + .../module/base/model/ContractItemModel.java | 40 + .../module/base/model/ContractModel.java | 59 + .../base/model/CouponActivityAddressHead.java | 16 + .../xmomen/module/base/model/CouponModel.java | 152 + .../xmomen/module/base/model/CouponQuery.java | 29 + .../module/base/model/CouponRelationItem.java | 28 + .../module/base/model/CouponReportModel.java | 119 + .../module/base/model/CreateContractItem.java | 36 + .../module/base/model/CreateCoupon.java | 32 + .../base/model/CreateCouponCategory.java | 48 + .../module/base/model/CreateItemDetail.java | 23 + .../module/base/model/CreateMember.java | 165 + .../module/base/model/ExpressMemberModel.java | 29 + .../module/base/model/ItemCategoryModel.java | 55 + .../module/base/model/ItemChildModel.java | 16 + .../module/base/model/ItemDetailQuery.java | 21 + .../xmomen/module/base/model/ItemQuery.java | 23 + .../module/base/model/MemberCouponModel.java | 21 + .../xmomen/module/base/model/MemberModel.java | 249 + .../module/base/model/PlanItemModel.java | 41 + .../xmomen/module/base/model/PlanModel.java | 72 + .../xmomen/module/base/model/ReadCardVo.java | 43 + .../module/base/model/UpdateActivity.java | 129 + .../module/base/model/UpdateContract.java | 58 + .../module/base/model/UpdateCoupon.java | 33 + .../xmomen/module/base/model/UpdateItem.java | 342 + .../module/base/model/UpdateItemDetail.java | 21 + .../module/base/model/UpdateMember.java | 131 + .../xmomen/module/base/model/UpdatePlan.java | 78 + .../module/base/service/ActivityService.java | 13 + .../module/base/service/BasePlanService.java | 19 + .../module/base/service/CouponService.java | 448 + .../module/base/service/ItemService.java | 25 + .../module/base/service/MemberService.java | 42 + .../service/impl/ContractServiceImpl.java | 80 + .../impl/CouponCategoryServiceImpl.java | 88 + .../impl/ExpressMemberServiceImpl.java | 36 + .../service/impl/ItemDetailServiceImpl.java | 56 + .../base/service/impl/MemberServiceImpl.java | 333 + .../entity/BeforehandPackageRecord.java | 149 + .../mapper/BeforehandPackageRecordMapper.java | 16 + .../mapper/BeforehandPackageRecordMapper.xml | 177 + .../BeforehandPackageRecordMapperExt.java | 12 + .../model/BeforehandPackageRecordQuery.java | 30 + .../model/BeforehandPackageRecordUpdate.java | 40 + .../com/xmomen/module/common/SysConstant.java | 10 + .../MultiLoginAuthenticator.java | 49 + .../web/controller/AccountController.java | 54 + .../core/web/controller/CoreController.java | 84 + .../core/web/controller/dto/RegisterDto.java | 43 + .../exception/DefaultExceptionHandler.java | 45 + .../GlobalMappingExceptionResolver.java | 53 + .../filter/FormAuthenticationFilterExt.java | 169 + .../core/web/mgt/WebSecurityManagerExt.java | 55 + .../core/web/token/MemberUserToken.java | 19 + .../module/export/model/UploadFileVo.java | 203 + .../module/export/service/ExportService.java | 113 + .../xmomen/module/export/util/PrintUtils.java | 156 + .../controller/JobOperationLogController.java | 70 + .../module/job/entity/TbJobOperationLog.java | 130 + .../job/mapper/JobOperationLogMapper.java | 6 + .../module/job/mapper/PackageTaskMapper.java | 6 + .../module/job/mapper/PackageTaskMapper.xml | 74 + .../module/job/model/CreatePackageTask.java | 152 + .../job/model/JobOperationLogModel.java | 42 + .../module/job/model/PackageTaskModel.java | 291 + .../job/model/UpdateJobOperationLog.java | 18 + .../module/job/model/UpdatePackageTask.java | 151 + .../service/impl/PackageTaskServiceImpl.java | 91 + .../java/com/xmomen/module/logger/Log.java | 15 + .../controller/MemberAddressController.java | 132 + .../module/member/entity/MemberAddress.java | 205 + .../member/mapper/MemberAddressMapperExt.java | 12 + .../member/model/MemberAddressQuery.java | 30 + .../member/model/MemberAddressUpdate.java | 46 + .../impl/MemberAddressServiceImpl.java | 231 + .../xmomen/module/order/entity/TbOrder.java | 701 + .../module/order/entity/TbOrderExample.java | 2453 ++ .../module/order/entity/TbOrderItem.java | 245 + .../order/entity/TbOrderItemExample.java | 963 + .../module/order/entity/TbOrderRef.java | 91 + .../module/order/entity/TbOrderRelation.java | 91 + .../module/order/entity/TbOrderSendLog.java | 130 + .../order/entity/TbOrderSendLogExample.java | 572 + .../xmomen/module/order/entity/TbPacking.java | 92 + .../module/order/entity/TbPackingRecord.java | 111 + .../module/order/entity/TbPurchase.java | 226 + .../order/entity/TbPurchaseExample.java | 883 + .../module/order/entity/TbReturnOrder.java | 245 + .../order/entity/TbTradeRecordExample.java | 653 + .../entity/mapper/TbOrderItemMapper.java | 16 + .../entity/mapper/TbOrderSendLogMapper.java | 16 + .../entity/mapper/TbTradeRecordMapper.java | 16 + .../module/order/mapper/OrderMapper.xml | 748 + .../module/order/mapper/TradeRecordMapper.xml | 20 + .../module/order/model/CreateOrder.java | 329 + .../module/order/model/CreatePacking.java | 21 + .../xmomen/module/order/model/OrderQuery.java | 44 + .../module/order/model/PackingModel.java | 20 + .../order/model/PackingOrderItemModel.java | 20 + .../module/order/model/PackingOrderModel.java | 23 + .../module/order/model/PackingOrderQuery.java | 19 + .../order/model/PackingRecordQuery.java | 22 + .../module/order/model/PackingTask.java | 28 + .../module/order/model/PurchaseModel.java | 36 + .../module/order/model/ReturnOrder.java | 22 + .../module/order/model/UpdateOrder.java | 164 + .../module/order/service/PackingService.java | 297 + .../module/order/service/PurchaseService.java | 155 + .../pick/controller/PickController.java | 53 + .../module/pick/entity/TbExchangeCardLog.java | 148 + .../pick/entity/TbExchangeCardLogExample.java | 641 + .../com/xmomen/module/pick/entity/TbPick.java | 207 + .../module/pick/entity/TbPickExample.java | 813 + .../module/pick/entity/TbRechargeLog.java | 131 + .../pick/entity/TbRechargeLogExample.java | 573 + .../mapper/TbExchangeCardLogMapper.java | 16 + .../entity/mapper/TbRechargeLogMapper.java | 16 + .../com/xmomen/module/pick/model/PickVo.java | 15 + .../module/pick/service/PickService.java | 10 + .../plan/controller/TablePlanController.java | 139 + .../module/plan/entity/TbTablePlan.java | 339 + .../plan/entity/mapper/TbTablePlanMapper.java | 16 + .../module/plan/mapper/TablePlanMapper.xml | 82 + .../module/plan/model/UpdateTablePlan.java | 60 + .../plan/service/TablePlanSercvice.java | 17 + .../service/impl/TablePlanSercviceImpl.java | 241 + .../product/mapper/ProductCategoryMapper.xml | 13 + .../module/product/model/ProductLabel.java | 30 + .../module/product/model/ProductModel.java | 40 + .../module/product/model/ProductQuery.java | 18 + .../service/impl/CategoryServiceImpl.java | 58 + .../service/impl/ProductServiceImpl.java | 104 + .../ReceivingCodeRequestController.java | 44 + .../controller/ReturnOrderController.java | 119 + .../model/ReceivingCodeRequestModel.java | 48 + .../receipt/model/ReturnOrderQuery.java | 25 + .../controller/OrderReportController.java | 192 + .../report/mapper/ReportOrderMapper.java | 9 + .../report/mapper/ReportOrderMapper.xml | 513 + .../module/report/model/ReportQuery.java | 15 + .../report/service/ReportOrderService.java | 135 + .../xmomen/module/resource/api/DfsPath.java | 45 + .../xmomen/module/resource/api/DfsSdk.java | 18 + .../module/resource/api/FastDfsService.java | 362 + .../controller/ResourceController.java | 130 + .../module/resource/entity/Resource.java | 129 + .../entity/mapper/ResourceMapper.java | 16 + .../resource/mapper/ResourceMapperExt.java | 12 + .../module/resource/model/ResourceQuery.java | 32 + .../service/impl/ResourceServiceImpl.java | 216 + .../module/schedule/ItemPurchaseJob.java | 34 + .../schedule/controller/vo/AddQuartzJob.java | 83 + .../module/schedule/entity/ScheduleJob.java | 144 + .../schedule/entity/ScheduleJobExample.java | 672 + .../entity/mapper/ScheduleJobMapper.java | 16 + .../schedule/service/ScheduleJobService.java | 161 + .../com/xmomen/module/sms/api/Client.java | 94 + .../module/sms/api/SmsMessageService.java | 130 + .../xmomen/module/sms/constant/Constants.java | 47 + .../module/sms/constant/HttpMethod.java | 33 + .../com/xmomen/module/sms/enums/Method.java | 27 + .../module/sms/model/IdentifyCodeModel.java | 58 + .../com/xmomen/module/sms/util/HttpUtil.java | 491 + .../com/xmomen/module/sms/util/SignUtil.java | 229 + .../stock/controller/StockController.java | 170 + .../controller/StockRecordController.java | 132 + .../com/xmomen/module/stock/entity/Stock.java | 168 + .../module/stock/entity/StockExample.java | 692 + .../stock/entity/StockRecordExample.java | 832 + .../entity/mapper/StockRecordMapper.java | 16 + .../stock/entity/mapper/StockRecordMapper.xml | 208 + .../module/stock/model/StockChange.java | 19 + .../xmomen/module/stock/model/StockQuery.java | 34 + .../module/stock/model/StockRecordCreate.java | 45 + .../module/stock/model/StockRecordModel.java | 110 + .../stock/service/StockRecordService.java | 115 + .../module/stock/service/StockService.java | 171 + .../service/impl/StockRecordServiceImpl.java | 211 + .../stock/service/impl/StockServiceImpl.java | 413 + .../controller/StockDailyController.java | 139 + .../entity/mapper/StockDailyMapper.java | 16 + .../entity/mapper/StockDailyMapper.xml | 228 + .../mapper/StockDailyMapperExt.java | 12 + .../stockdaily/model/StockDailyCreate.java | 49 + .../stockdaily/model/StockDailyModel.java | 123 + .../stockdaily/model/StockDailyQuery.java | 34 + .../stockdaily/model/StockDailyUpdate.java | 50 + .../stockdaily/service/StockDailyService.java | 144 + .../controller/OrganizationController.java | 112 + .../system/controller/TaskController.java | 78 + .../system/entity/SysDictionaryExample.java | 461 + .../module/system/entity/SysOrganization.java | 91 + .../module/system/entity/SysTaskHead.java | 72 + .../system/entity/SysUserOrganization.java | 72 + .../entity/SysUserOrganizationExample.java | 381 + .../mapper/SysDictionaryParameterMapper.java | 16 + .../entity/mapper/SysOrganizationMapper.java | 16 + .../system/mapper/DictionaryMapper.java | 16 + .../system/mapper/OrganizationMapper.java | 18 + .../module/system/mapper/TaskMapper.java | 9 + .../module/system/model/CreateDictionary.java | 83 + .../module/system/model/CreateTask.java | 15 + .../module/system/model/Dictionary.java | 100 + .../module/system/model/DictionaryGroup.java | 76 + .../module/system/model/UpdateDictionary.java | 93 + .../service/DictionaryGroupService.java | 48 + .../system/service/DictionaryService.java | 47 + .../system/service/OrganizationService.java | 165 + .../module/user/entity/SysPermissions.java | 90 + .../user/entity/SysPermissionsExample.java | 461 + .../xmomen/module/user/entity/SysRoles.java | 90 + .../module/user/entity/SysRolesExample.java | 461 + .../entity/SysRolesPermissionsExample.java | 382 + .../xmomen/module/user/entity/SysUsers.java | 243 + .../module/user/entity/SysUsersRoles.java | 68 + .../user/entity/SysUsersRolesExample.java | 382 + .../entity/mapper/SysPermissionsMapper.java | 16 + .../mapper/SysRolesPermissionsMapper.java | 16 + .../wb/controller/CommonMemberController.java | 269 + .../wb/controller/PcBaseController.java | 23 + .../wb/controller/PcCouponController.java | 55 + .../xmomen/module/wb/model/PcMemberInfo.java | 11 + .../module/wx/constants/AppCodeConsts.java | 59 + .../xmomen/module/wx/constants/EventEnum.java | 28 + .../module/wx/constants/RequestEventEnum.java | 45 + .../wx/constants/WechatUrlConstants.java | 28 + .../module/wx/controller/BindController.java | 409 + .../wx/controller/UserInfoController.java | 66 + .../wx/controller/WxAdviceController.java | 32 + .../controller/WxMemberAddressController.java | 122 + .../wx/controller/WxMemberController.java | 44 + .../xmomen/module/wx/entity/WxAppSetting.java | 320 + .../wx/entity/mapper/WxAppSettingMapper.java | 16 + .../module/wx/model/AccessTokenOAuth.java | 73 + .../xmomen/module/wx/model/MessageBase.java | 60 + .../module/wx/model/PayAttachModel.java | 22 + .../CustomSendMessageTextModel.java | 42 + .../PushMessageTemplateModel.java | 232 + .../WeixinResponseStatusModel.java | 46 + .../event/RequestMessageEventLocation.java | 64 + .../event/RequestMessageEventScan.java | 29 + .../event/RequestMessageEventScanCode.java | 44 + ...uestMessageEventTemplateSendJobFinish.java | 44 + .../message/RequestMessageLink.java | 51 + .../message/RequestMessageText.java | 33 + .../message/RequestMessageVideo.java | 35 + .../message/RequestMessageVoice.java | 36 + .../responseModel/ResponseMessageImage.java | 43 + .../responseModel/ResponseMessageMusic.java | 84 + .../responseModel/ResponseMessageText.java | 30 + .../responseModel/ResponseMessageVoice.java | 42 + .../address/controller/AddressController.java | 72 + .../bind/controller/BindMemberController.java | 31 + .../cart/controller/CartController.java | 50 + .../wx/module/cart/entity/TbCartItem.java | 81 + .../wx/module/cart/mapper/CartMapper.java | 5 + .../wx/module/cart/mapper/CartMapper.xml | 44 + .../wx/module/cart/model/CartItemQuery.java | 9 + .../wx/module/cart/service/CartService.java | 362 + .../module/coupon/model/CouponQueryModel.java | 10 + .../order/controller/MyOrderController.java | 123 + .../wx/module/order/mapper/MyOrderMapper.java | 5 + .../wx/module/order/mapper/MyOrderMapper.xml | 239 + .../order/model/OrderStatisticModel.java | 12 + .../module/order/service/MyOrderService.java | 23 + .../service/impl/MyOrderServiceImpl.java | 274 + .../wx/pay/common/RandomStringGenerator.java | 39 + .../module/wx/pay/common/Signature.java | 123 + .../module/wx/pay/common/XMLParser.java | 48 + .../module/wx/pay/entity/TbPayRecord.java | 172 + .../wx/pay/entity/mapper/PayRecordMapper.xml | 99 + .../module/wx/pay/model/PayReqData.java | 229 + .../module/wx/pay/model/RefundResData.java | 129 + .../module/wx/pay/model/WeixinPayRecord.java | 42 + .../module/wx/pay/service/BaseService.java | 43 + .../wx/pay/service/PayRecordService.java | 69 + .../module/wx/pay/service/PayService.java | 33 + .../module/wx/pay/service/RefundService.java | 33 + .../xmomen/module/wx/service/BindService.java | 147 + .../wx/service/MessageHandlerService.java | 173 + .../service/ResponseMessageBaseService.java | 21 + .../service/ResponseMessageVideoService.java | 35 + .../service/ResponseMessageVoiceService.java | 35 + .../module/wx/service/WeixinApiService.java | 409 + .../xmomen/module/wx/util/Auth2Handler.java | 98 + .../com/xmomen/module/wx/util/Constant.java | 11 + .../com/xmomen/module/wx/util/DateUtils.java | 29 + .../xmomen/module/wx/util/EmojiFilter.java | 88 + .../com/xmomen/module/wx/util/HttpClient.java | 483 + .../module/wx/util/HttpConnectionManager.java | 141 + .../com/xmomen/module/wx/util/HttpUtils.java | 355 + .../xmomen/module/wx/util/MessageUtils.java | 86 + .../module/wx/util/PropertiesUtils.java | 98 + .../module/wx/util/WeixinMediaUtils.java | 79 + .../com/xmomen/module/wx/util/XMLUtils.java | 201 + .../java/org/csource/common/MyException.java | 26 + .../org/csource/fastdfs/DownloadCallback.java | 31 + .../org/csource/fastdfs/DownloadStream.java | 50 + .../java/org/csource/fastdfs/FileInfo.java | 125 + .../java/org/csource/fastdfs/ProtoCommon.java | 553 + .../csource/fastdfs/ProtoStructDecoder.java | 55 + .../java/org/csource/fastdfs/StructBase.java | 84 + .../org/csource/fastdfs/TrackerGroup.java | 121 + .../org/csource/fastdfs/TrackerServer.java | 89 + .../org/csource/fastdfs/UploadCallback.java | 29 + .../org/csource/fastdfs/UploadStream.java | 61 + .../base/entity/mapper/CdAttachmentMapper.xml | 188 + .../base/entity/mapper/CdBindMapper.xml | 148 + .../base/entity/mapper/CdCategoryMapper.xml | 138 + .../entity/mapper/CdContractItemMapper.xml | 168 + .../base/entity/mapper/CdContractMapper.xml | 219 + .../entity/mapper/CdCouponCategoryMapper.xml | 138 + .../base/entity/mapper/CdCouponRefMapper.xml | 168 + .../base/entity/mapper/CdItemDetailMapper.xml | 140 + .../entity/mapper/CdManagerCompanyMapper.xml | 138 + .../base/entity/mapper/CdMemberMapper.xml | 290 + .../base/entity/mapper/CdPlanItemMapper.xml | 148 + .../module/job/entity/mapper/TbJobMapper.xml | 239 + .../entity/mapper/TbJobOperationLogMapper.xml | 168 + .../order/entity/mapper/TbOrderItemMapper.xml | 229 + .../order/entity/mapper/TbOrderMapper.xml | 473 + .../entity/mapper/TbOrderSendLogMapper.xml | 168 + .../entity/mapper/TbPackingRecordMapper.xml | 158 + .../entity/mapper/TbReturnOrderMapper.xml | 229 + .../entity/mapper/TbTradeRecordMapper.xml | 178 + .../entity/mapper/TbExchangeCardLogMapper.xml | 178 + .../entity/mapper/TbRechargeLogMapper.xml | 168 + .../plan/entity/mapper/TbTablePlanMapper.xml | 280 + .../mapper/TbReceivingCodeRequestMapper.xml | 168 + .../entity/mapper/ScheduleJobMapper.xml | 178 + .../entity/mapper/SysDictionaryMapper.xml | 148 + .../mapper/SysDictionaryParameterMapper.xml | 168 + .../entity/mapper/SysOrganizationMapper.xml | 148 + .../mapper/SysUserOrganizationMapper.xml | 138 + .../user/entity/mapper/SysRolesMapper.xml | 148 + .../mapper/SysRolesPermissionsMapper.xml | 138 + .../user/entity/mapper/SysUsersMapper.xml | 229 + .../entity/mapper/SysUsersRolesMapper.xml | 138 + src/main/resources/config/mybatis-config.xml | 30 + src/main/resources/config/spring-core.xml | 36 + src/main/resources/config/spring-jdbc.xml | 34 + src/main/resources/config/spring-mybatis.xml | 27 + src/main/resources/deploy/env-dev.properties | 17 + .../resources/deploy/env-local.properties | 17 + src/main/resources/deploy/env-prd.properties | 18 + src/main/resources/ehcache/ehcache.xml | 70 + .../resources/properties/config.properties | 10 + src/main/resources/template/order.xls | Bin 0 -> 20992 bytes .../tools/generatorConfig-member.xml | 96 + src/main/resources/tools/template/header.ftl | 5 + src/main/resources/tools/template/list-js.ftl | 172 + .../resources/tools/template/mapper-xml.ftl | 50 + src/main/resources/tools/template/mapper.ftl | 8 + .../resources/tools/template/updateModel.ftl | 30 + .../webapp/WEB-INF/excelFile/couponExcel.xlsx | Bin 0 -> 17852 bytes src/main/webapp/WEB-INF/views/404.jsp | 10 + src/main/webapp/WEB-INF/views/500.jsp | 10 + src/main/webapp/WEB-INF/views/login.jsp | 212 + src/main/webapp/WEB-INF/views/register.jsp | 475 + src/main/webapp/WEB-INF/views/src/.bowerrc | 4 + .../views/src/MP_verify_jWIslpvFiCq3GKYd.txt | 1 + src/main/webapp/WEB-INF/views/src/README.md | 6 + src/main/webapp/WEB-INF/views/src/bower.json | 20 + .../webapp/WEB-INF/views/src/css/demo.min.css | 1 + .../views/src/css/font-awesome.min.css | 4 + .../WEB-INF/views/src/css/invoice.min.css | 1 + .../src/css/smartadmin-production.min.css | 51 + .../views/src/css/smartadmin-skins.min.css | 1 + src/main/webapp/WEB-INF/views/src/css/sps.css | 49 + .../views/src/fonts/fontawesome-webfont.ttf | Bin 0 -> 141564 bytes .../views/src/fonts/fontawesome-webfont.woff | Bin 0 -> 83760 bytes .../fonts/glyphicons-halflings-regular.svg | 230 + .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23320 bytes .../webapp/WEB-INF/views/src/ic01java.htm | 416 + .../webapp/WEB-INF/views/src/img/logo.png | Bin 0 -> 5278 bytes .../webapp/WEB-INF/views/src/img/mybg.png | Bin 0 -> 2841 bytes .../WEB-INF/views/src/img/select2-spinner.gif | Bin 0 -> 1849 bytes src/main/webapp/WEB-INF/views/src/index.html | 173 + .../webapp/WEB-INF/views/src/js/app.min.js | 29 + .../angular-permission/config/grunt/concat.js | 24 + .../angular-permission/config/grunt/jshint.js | 16 + .../config/karma/karma.conf.js | 73 + .../dist/angular-permission.js | 810 + .../dist/angular-permission.min.js | 11 + .../dist/angular-permission.min.js.map | 1 + .../src/core/permissionModule.js | 146 + .../src/models/Permission.js | 73 + .../angular-permission/src/models/Role.js | 105 + .../src/stores/RoleStore.js | 71 + .../src/stores/permissionStore.js | 87 + .../test/authorization/Authorization.test.js | 173 + .../test/core/permissionDirective.test.js | 110 + .../test/models/Permission.test.js | 52 + .../models/PermissionMap/exceptParam.test.js | 192 + .../models/PermissionMap/onlyParam.test.js | 192 + .../PermissionMap/redirectToParam.test.js | 292 + .../test/stores/PermissionStore.test.js | 110 + .../angular-ui-router/CONTRIBUTING.md | 65 + .../js/components/angular-ui-router/LICENSE | 21 + .../release/angular-ui-router.min.js | 8 + .../angular-ui-router/src/common.js | 293 + .../angular-ui-router/src/resolve.js | 252 + .../angular-ui-router/src/stateFilters.js | 39 + .../angular-ui-router/src/urlRouter.js | 431 + .../components/angular-ui-router/src/view.js | 45 + .../angular-ui-router/src/viewDirective.js | 351 + .../angular-ui-router/src/viewScroll.js | 52 + .../js/components/angular/angular.min.js.map | 8 + .../src/js/components/angular/package.json | 25 + .../src/js/components/require-css/.bower.json | 25 + .../src/js/components/require-css/LICENSE | 10 + .../src/js/components/require-css/README.md | 250 + .../src/js/components/require-css/bower.json | 6 + .../src/js/components/require-css/css.js | 169 + .../src/js/components/require-css/css.min.js | 1 + .../js/components/require-css/normalize.js | 141 + .../webapp/WEB-INF/views/src/js/langs/ko.js | 81 + .../webapp/WEB-INF/views/src/js/langs/pt.js | 81 + .../webapp/WEB-INF/views/src/js/langs/zh.js | 81 + .../views/src/js/libs/angular-resource.js | 610 + .../src/js/libs/angular-route.min.js.map | 8 + .../views/src/js/libs/angular.min.js.map | 8 + .../ui-bootstrap-custom-tpls-0.11.0.js | 4116 +++ .../views/src/js/libs/jquery-ui-1.10.3.min.js | 12 + .../WEB-INF/views/src/js/lodop/LodopFuncs.js | 122 + .../webapp/WEB-INF/views/src/js/ng/ng.app.js | 57 + .../WEB-INF/views/src/js/ng/ng.directives.js | 1159 + .../bootstraptree/bootstrap-tree.min.js | 6 + .../plugin/jquery-validate/jquery.validate.js | 1398 + .../jquery-validate/jquery.validate.min.js | 1 + .../js/plugin/jquery-validate/messages_zh.js | 23 + .../ueditor/dialogs/attachment/attachment.css | 681 + .../attachment/fileTypeImages/icon_chm.gif | Bin 0 -> 923 bytes .../fileTypeImages/icon_default.png | Bin 0 -> 841 bytes .../attachment/fileTypeImages/icon_doc.gif | Bin 0 -> 1012 bytes .../attachment/fileTypeImages/icon_mv.gif | Bin 0 -> 1001 bytes .../attachment/fileTypeImages/icon_ppt.gif | Bin 0 -> 1001 bytes .../attachment/fileTypeImages/icon_psd.gif | Bin 0 -> 1009 bytes .../attachment/fileTypeImages/icon_rar.gif | Bin 0 -> 1007 bytes .../ueditor/dialogs/attachment/images/bg.png | Bin 0 -> 2810 bytes .../dialogs/attachment/images/file-icons.gif | Bin 0 -> 20097 bytes .../dialogs/attachment/images/file-icons.png | Bin 0 -> 44070 bytes .../dialogs/attachment/images/icons.gif | Bin 0 -> 453 bytes .../dialogs/attachment/images/progress.png | Bin 0 -> 1269 bytes .../dialogs/attachment/images/success.gif | Bin 0 -> 445 bytes .../ueditor/dialogs/emotion/emotion.html | 54 + .../ueditor/dialogs/emotion/images/fface.gif | Bin 0 -> 18479 bytes .../dialogs/emotion/images/jxface2.gif | Bin 0 -> 40706 bytes .../emotion/images/neweditor-tab-bg.png | Bin 0 -> 216 bytes .../ueditor/dialogs/emotion/images/tface.gif | Bin 0 -> 19805 bytes .../ueditor/dialogs/emotion/images/wface.gif | Bin 0 -> 49850 bytes .../js/plugin/ueditor/dialogs/help/help.css | 7 + .../js/plugin/ueditor/dialogs/help/help.html | 82 + .../js/plugin/ueditor/dialogs/image/image.css | 894 + .../ueditor/dialogs/image/images/icons.gif | Bin 0 -> 453 bytes .../ueditor/dialogs/image/images/success.png | Bin 0 -> 1621 bytes .../js/plugin/ueditor/dialogs/link/link.html | 126 + .../views/src/js/plugin/ueditor/index.html | 157 + .../ueditor/lang/zh-cn/images/music.png | Bin 0 -> 23106 bytes .../ueditor/lang/zh-cn/images/upload.png | Bin 0 -> 6608 bytes .../src/js/plugin/ueditor/lang/zh-cn/zh-cn.js | 669 + .../src/js/plugin/ueditor/nodejs/config.json | 94 + .../ueditor/themes/default/css/ueditor.css | 1903 ++ .../ueditor/themes/default/images/arrow.png | Bin 0 -> 1173 bytes .../themes/default/images/arrow_down.png | Bin 0 -> 1610 bytes .../themes/default/images/arrow_up.png | Bin 0 -> 1649 bytes .../themes/default/images/button-bg.gif | Bin 0 -> 1114 bytes .../ueditor/themes/default/images/charts.png | Bin 0 -> 518 bytes .../themes/default/images/cursor_h.gif | Bin 0 -> 253 bytes .../themes/default/images/cursor_h.png | Bin 0 -> 175 bytes .../ueditor/themes/default/images/icons.gif | Bin 0 -> 20947 bytes .../themes/default/images/loaderror.png | Bin 0 -> 3209 bytes .../ueditor/themes/default/images/loading.gif | Bin 0 -> 734 bytes .../default/images/neweditor-tab-bg.png | Bin 0 -> 216 bytes .../themes/default/images/sortable.png | Bin 0 -> 2851 bytes .../themes/default/images/sparator_v.png | Bin 0 -> 122 bytes .../default/images/table-cell-align.png | Bin 0 -> 1847 bytes .../ueditor/themes/default/images/upload.png | Bin 0 -> 6608 bytes .../ueditor/themes/default/images/word.gif | Bin 0 -> 1019 bytes .../themes/default/images/wordpaste.png | Bin 0 -> 6467 bytes .../src/js/plugin/ueditor/themes/iframe.css | 1 + .../ueditor/third-party/jquery-1.10.2.min.js | 6 + .../third-party/webuploader/webuploader.css | 28 + .../webuploader/webuploader.custom.js | 5670 ++++ .../webuploader/webuploader.custom.min.js | 2 + .../webuploader/webuploader.flashonly.js | 4176 +++ .../webuploader/webuploader.flashonly.min.js | 2 + .../webuploader/webuploader.html5only.js | 5559 ++++ .../webuploader/webuploader.html5only.min.js | 2 + .../third-party/webuploader/webuploader.js | 6733 +++++ .../webuploader/webuploader.withoutimage.js | 4593 +++ .../src/js/plugin/ueditor/ueditor.all.min.js | 10 + .../src/js/plugin/ueditor/ueditor.config.js | 285 + .../WEB-INF/views/src/js/ug-ui/ug-dialog.js | 88 + .../WEB-INF/views/src/js/ug-ui/ug-validate.js | 93 + .../WEB-INF/views/src/js/uploadify/index.html | 50 + .../src/js/uploadify/jquery.uploadify.min.js | 16 + .../views/src/js/uploadify/license.txt | 20 + .../views/src/js/uploadify/uploadify.css | 92 + .../views/src/js/uploadify/uploadify.php | 29 + src/main/webapp/WEB-INF/views/src/main.js | 8 + .../webapp/WEB-INF/views/src/package.json | 20 + .../webapp/WEB-INF/views/src/sound/item.wav | Bin 0 -> 66442 bytes .../webapp/WEB-INF/views/src/views/app.js | 305 + .../views/src/views/base/activity.html | 390 + .../WEB-INF/views/src/views/base/activity.js | 215 + .../views/src/views/base/base_module.js | 244 + .../views/src/views/base/company_list.html | 203 + .../views/src/views/base/company_list.js | 93 + .../views/src/views/base/contract.html | 210 + .../views/src/views/base/contract_update.html | 281 + .../views/src/views/base/couponActivity.js | 132 + .../src/views/base/couponActivityAddress.html | 212 + .../views/src/views/base/couponAudit.js | 225 + .../views/src/views/base/couponAuditBack.html | 157 + .../views/src/views/base/couponAuditBack.js | 184 + .../views/src/views/base/couponCategory.js | 174 + .../views/src/views/base/express_list.html | 165 + .../views/src/views/base/express_list.js | 78 + .../src/views/base/express_member_list.js | 99 + .../views/src/views/base/item.detail.html | 12 + .../WEB-INF/views/src/views/base/item.html | 558 + .../views/src/views/base/itemCategory.html | 148 + .../views/src/views/base/member_list.html | 147 + .../views/src/views/base/member_list.js | 43 + .../views/src/views/base/onlineRecharge.js | 55 + .../views/src/views/base/tradeRecordList.js | 26 + .../webapp/WEB-INF/views/src/views/blank.js | 6 + .../views/checklist-model/checklist-model.js | 169 + .../views/src/views/despatch/despatchJob.js | 151 + .../views/despatch/despatchSuccessList.html | 157 + .../src/views/despatch/despatchSuccessList.js | 147 + .../src/views/despatch/despatch_module.js | 50 + .../src/views/despatch/takeDelivery.html | 310 + .../views/src/views/despatch/takeDelivery.js | 150 + .../views/src/views/includes/left-panel.html | 240 + .../WEB-INF/views/src/views/order/order.js | 128 + .../views/src/views/order/order_create.html | 749 + .../views/src/views/order/order_packing.html | 674 + .../views/src/views/order/order_update.html | 634 + .../WEB-INF/views/src/views/order/packing.js | 153 + .../src/views/order/packingTaskSuccessList.js | 71 + .../WEB-INF/views/src/views/order/purchase.js | 160 + .../src/views/package/packageTaskDown.html | 226 + .../src/views/package/packageTaskDown.js | 92 + .../src/views/package/packageTaskList.html | 241 + .../src/views/package/packageTaskView.html | 153 + .../src/views/package/packageTaskView.js | 55 + .../src/views/package/packageWorking.html | 156 + .../views/src/views/package/packageWorking.js | 247 + .../WEB-INF/views/src/views/pick/pick.js | 140 + .../views/src/views/pick/pickCard.html | 169 + .../WEB-INF/views/src/views/pick/pickCard.js | 126 + .../views/src/views/pick/pick_module.js | 59 + .../views/src/views/plan/basePlan.html | 392 + .../views/src/views/plan/plan_module.js | 34 + .../WEB-INF/views/src/views/plan/tablePlan.js | 214 + .../views/src/views/receipt/receipt_module.js | 84 + .../src/views/receipt/receivingCode.html | 170 + .../src/views/receipt/receivingCodeRequest.js | 55 + .../views/src/views/receipt/returnOrder.html | 299 + .../src/views/receipt/returnOrderShouHuo.js | 59 + .../src/views/receipt/reviewDespatch.html | 138 + .../views/src/views/receipt/reviewDespatch.js | 60 + .../views/src/views/receipt/twoSendOrder.html | 313 + .../views/src/views/receipt/twoSendOrder.js | 119 + .../views/src/views/report/reportFinance.html | 97 + .../views/src/views/report/reportFinance.js | 80 + .../views/src/views/schedule/list.html | 323 + .../WEB-INF/views/src/views/schedule/list.js | 151 + .../src/views/schedule/schedule_module.js | 24 + .../views/src/views/service/rest_module.js | 564 + .../src/views/stock/beforehandPackage.html | 225 + .../WEB-INF/views/src/views/stock/stock.html | 248 + .../views/src/views/stock/stock_module.js | 47 + .../WEB-INF/views/src/views/task/task_list.js | 73 + .../views/src/views/user/group_list.html | 241 + .../views/src/views/user/group_list.js | 228 + .../views/src/views/user/organization.html | 187 + .../views/src/views/user/organization.js | 139 + .../views/src/views/user/permission_list.js | 63 + .../views/src/views/user/user_module.js | 62 + .../WEB-INF/views/src/views/wx/advice.html | 153 + .../WEB-INF/views/src/views/wx/advice.js | 81 + .../WEB-INF/views/src/views/wx/wx_module.js | 21 + src/main/webapp/WEB-INF/views/welcome.jsp | 15 + src/main/webapp/WEB-INF/views/wx/bind.jsp | 101 + src/main/webapp/WEB-INF/views/wx/bindFail.jsp | 50 + .../webapp/WEB-INF/views/wx/bindSuccess.jsp | 49 + src/main/webapp/WEB-INF/views/wx/mytags.jsp | 8 + src/main/webapp/WEB-INF/views/wx/receipt.jsp | 228 + .../webapp/WEB-INF/views/wx/receiptNoAuth.jsp | 49 + src/main/webapp/WEB-INF/web.xml | 103 + .../doc/swagger-ui/dist/css/typography.css | 0 .../doc/swagger-ui/dist/fonts/DroidSans.ttf | Bin 0 -> 41028 bytes .../doc/swagger-ui/dist/images/collapse.gif | Bin 0 -> 69 bytes .../swagger-ui/dist/images/explorer_icons.png | Bin 0 -> 5115 bytes .../swagger-ui/dist/images/favicon-16x16.png | Bin 0 -> 445 bytes .../swagger-ui/dist/images/favicon-32x32.png | Bin 0 -> 1141 bytes .../doc/swagger-ui/dist/images/favicon.ico | Bin 0 -> 5430 bytes .../swagger-ui/dist/images/pet_store_api.png | Bin 0 -> 631 bytes .../swagger-ui/dist/images/wordnik_api.png | Bin 0 -> 670 bytes .../webapp/doc/swagger-ui/dist/lang/es.js | 53 + .../webapp/doc/swagger-ui/dist/lang/fr.js | 54 + .../webapp/doc/swagger-ui/dist/lang/it.js | 52 + .../webapp/doc/swagger-ui/dist/lang/pl.js | 53 + .../webapp/doc/swagger-ui/dist/lang/ru.js | 56 + .../webapp/doc/swagger-ui/dist/lang/tr.js | 53 + .../doc/swagger-ui/dist/lang/translator.js | 39 + .../doc/swagger-ui/dist/lib/backbone-min.js | 1 + .../dist/lib/highlight.9.1.0.pack.js | 1 + .../swagger-ui/dist/lib/jquery-1.8.0.min.js | 3 + .../swagger-ui/dist/lib/jquery.ba-bbq.min.js | 1 + .../swagger-ui/dist/lib/jquery.slideto.min.js | 1 + .../swagger-ui/dist/lib/jquery.wiggle.min.js | 1 + .../doc/swagger-ui/dist/lib/js-yaml.min.js | 2 + .../dist/lib/object-assign-pollyfill.js | 1 + .../doc/swagger-ui/dist/lib/swagger-oauth.js | 1 + src/main/webapp/doc/swagger-ui/dist/o2c.html | 20 + .../webapp/doc/swagger-ui/dist/swagger-ui.js | 25126 ++++++++++++++++ src/main/webapp/lang/zh-cn/images/copy.png | Bin 0 -> 4319 bytes .../webapp/lang/zh-cn/images/localimage.png | Bin 0 -> 6979 bytes src/main/webapp/lang/zh-cn/images/music.png | Bin 0 -> 23106 bytes src/main/webapp/lang/zh-cn/zh-cn.js | 669 + .../webapp/themes/default/css/ueditor.css | 1903 ++ .../webapp/themes/default/images/anchor.gif | Bin 0 -> 184 bytes .../themes/default/images/button-bg.gif | Bin 0 -> 1114 bytes .../webapp/themes/default/images/cursor_v.png | Bin 0 -> 177 bytes .../themes/default/images/dialog-title-bg.png | Bin 0 -> 938 bytes .../webapp/themes/default/images/filescan.png | Bin 0 -> 4282 bytes .../webapp/themes/default/images/icons.gif | Bin 0 -> 20947 bytes .../themes/default/images/loaderror.png | Bin 0 -> 3209 bytes .../webapp/themes/default/images/loading.gif | Bin 0 -> 734 bytes .../webapp/themes/default/images/lock.gif | Bin 0 -> 1062 bytes .../webapp/themes/default/images/scale.png | Bin 0 -> 167 bytes .../webapp/themes/default/images/sortable.png | Bin 0 -> 2851 bytes .../default/images/tangram-colorpicker.png | Bin 0 -> 17355 bytes .../webapp/themes/default/images/upload.png | Bin 0 -> 6608 bytes .../themes/default/images/wordpaste.png | Bin 0 -> 6467 bytes src/main/webapp/themes/iframe.css | 1 + src/test/resources/fdfs_client.conf | 11 + 724 files changed, 165120 insertions(+) create mode 100644 documents/CLodopPrint_Setup_for_Win32NT_2.042.exe create mode 100644 documents/haixian.pdm create mode 100644 documents/生鲜配送管理系统功能概要(二版).docx create mode 100644 documents/订单业务属性.doc create mode 100644 documents/订单管理表模型2.0.rtf create mode 100644 documents/订单管理表模型3.25.rtf create mode 100644 src/main/java/com/xmomen/framework/web/exceptions/ArgumentValidException.java create mode 100644 src/main/java/com/xmomen/framework/web/interceptor/CrossInterceptor.java create mode 100644 src/main/java/com/xmomen/module/account/model/CreateUser.java create mode 100644 src/main/java/com/xmomen/module/account/model/User.java create mode 100644 src/main/java/com/xmomen/module/account/realm/UserRealm.java create mode 100644 src/main/java/com/xmomen/module/account/service/PasswordHelper.java create mode 100644 src/main/java/com/xmomen/module/account/service/PermissionServiceImpl.java create mode 100644 src/main/java/com/xmomen/module/account/web/controller/PermissionController.java create mode 100644 src/main/java/com/xmomen/module/account/web/controller/UserController.java create mode 100644 src/main/java/com/xmomen/module/account/web/controller/vo/CreateUserVo.java create mode 100644 src/main/java/com/xmomen/module/account/web/controller/vo/UpdateUserVo.java create mode 100644 src/main/java/com/xmomen/module/advice/entity/Advice.java create mode 100644 src/main/java/com/xmomen/module/advice/entity/mapper/AdviceMapper.java create mode 100644 src/main/java/com/xmomen/module/advice/mapper/AdviceMapperExt.xml create mode 100644 src/main/java/com/xmomen/module/advice/model/AdviceModel.java create mode 100644 src/main/java/com/xmomen/module/advice/service/impl/AdviceServiceImpl.java create mode 100644 src/main/java/com/xmomen/module/base/constant/AppConstants.java create mode 100644 src/main/java/com/xmomen/module/base/controller/CompanyController.java create mode 100644 src/main/java/com/xmomen/module/base/controller/ContractController.java create mode 100644 src/main/java/com/xmomen/module/base/controller/CouponCategoryController.java create mode 100644 src/main/java/com/xmomen/module/base/controller/CouponController.java create mode 100644 src/main/java/com/xmomen/module/base/controller/ExpressController.java create mode 100644 src/main/java/com/xmomen/module/base/controller/PublicController.java create mode 100644 src/main/java/com/xmomen/module/base/entity/CdActivityAddress.java create mode 100644 src/main/java/com/xmomen/module/base/entity/CdActivityAddressExample.java create mode 100644 src/main/java/com/xmomen/module/base/entity/CdAttachmentExample.java create mode 100644 src/main/java/com/xmomen/module/base/entity/CdBind.java create mode 100644 src/main/java/com/xmomen/module/base/entity/CdCategoryExample.java create mode 100644 src/main/java/com/xmomen/module/base/entity/CdCompany.java create mode 100644 src/main/java/com/xmomen/module/base/entity/CdContract.java create mode 100644 src/main/java/com/xmomen/module/base/entity/CdContractItem.java create mode 100644 src/main/java/com/xmomen/module/base/entity/CdContractItemExample.java create mode 100644 src/main/java/com/xmomen/module/base/entity/CdCoupon.java create mode 100644 src/main/java/com/xmomen/module/base/entity/CdCouponCategory.java create mode 100644 src/main/java/com/xmomen/module/base/entity/CdCouponCategoryRefExample.java create mode 100644 src/main/java/com/xmomen/module/base/entity/CdCouponExample.java create mode 100644 src/main/java/com/xmomen/module/base/entity/CdCouponRef.java create mode 100644 src/main/java/com/xmomen/module/base/entity/CdItem.java create mode 100644 src/main/java/com/xmomen/module/base/entity/CdItemDetail.java create mode 100644 src/main/java/com/xmomen/module/base/entity/CdItemExample.java create mode 100644 src/main/java/com/xmomen/module/base/entity/CdMember.java create mode 100644 src/main/java/com/xmomen/module/base/entity/CdMemberCouponRelation.java create mode 100644 src/main/java/com/xmomen/module/base/entity/CdMemberExample.java create mode 100644 src/main/java/com/xmomen/module/base/entity/CdPlan.java create mode 100644 src/main/java/com/xmomen/module/base/entity/CdPlanExample.java create mode 100644 src/main/java/com/xmomen/module/base/entity/CdPlanItem.java create mode 100644 src/main/java/com/xmomen/module/base/entity/CdPlanItemExample.java create mode 100644 src/main/java/com/xmomen/module/base/entity/mapper/CdActivityMapper.java create mode 100644 src/main/java/com/xmomen/module/base/entity/mapper/CdBindMapper.java create mode 100644 src/main/java/com/xmomen/module/base/entity/mapper/CdCategoryMapper.java create mode 100644 src/main/java/com/xmomen/module/base/entity/mapper/CdCompanyMapper.java create mode 100644 src/main/java/com/xmomen/module/base/entity/mapper/CdContractItemMapper.java create mode 100644 src/main/java/com/xmomen/module/base/entity/mapper/CdCouponCategoryRefMapper.java create mode 100644 src/main/java/com/xmomen/module/base/entity/mapper/CdCouponMapper.java create mode 100644 src/main/java/com/xmomen/module/base/entity/mapper/CdCouponRefMapper.java create mode 100644 src/main/java/com/xmomen/module/base/entity/mapper/CdExpressMapper.java create mode 100644 src/main/java/com/xmomen/module/base/entity/mapper/CdExpressMemberMapper.java create mode 100644 src/main/java/com/xmomen/module/base/entity/mapper/CdPlanMapper.java create mode 100644 src/main/java/com/xmomen/module/base/mapper/BasePlanMapper.xml create mode 100644 src/main/java/com/xmomen/module/base/mapper/CompanyMapper.xml create mode 100644 src/main/java/com/xmomen/module/base/mapper/ContractMapper.xml create mode 100644 src/main/java/com/xmomen/module/base/mapper/CouponCategoryMapper.java create mode 100644 src/main/java/com/xmomen/module/base/mapper/CouponCategoryMapper.xml create mode 100644 src/main/java/com/xmomen/module/base/mapper/CouponMapper.xml create mode 100644 src/main/java/com/xmomen/module/base/mapper/ExpressMapper.java create mode 100644 src/main/java/com/xmomen/module/base/mapper/ExpressMapper.xml create mode 100644 src/main/java/com/xmomen/module/base/mapper/ExpressMemberMapper.java create mode 100644 src/main/java/com/xmomen/module/base/mapper/ItemCategoryMapper.java create mode 100644 src/main/java/com/xmomen/module/base/mapper/ItemDetailMapper.java create mode 100644 src/main/java/com/xmomen/module/base/mapper/ItemDetailMapper.xml create mode 100644 src/main/java/com/xmomen/module/base/mapper/ItemMapper.java create mode 100644 src/main/java/com/xmomen/module/base/mapper/MemberMapper.java create mode 100644 src/main/java/com/xmomen/module/base/mapper/MemberMapper.xml create mode 100644 src/main/java/com/xmomen/module/base/mapper/PublicMapper.java create mode 100644 src/main/java/com/xmomen/module/base/model/ActivityRefModel.java create mode 100644 src/main/java/com/xmomen/module/base/model/CompanyModel.java create mode 100644 src/main/java/com/xmomen/module/base/model/ContractItemModel.java create mode 100644 src/main/java/com/xmomen/module/base/model/ContractModel.java create mode 100644 src/main/java/com/xmomen/module/base/model/CouponActivityAddressHead.java create mode 100644 src/main/java/com/xmomen/module/base/model/CouponModel.java create mode 100644 src/main/java/com/xmomen/module/base/model/CouponQuery.java create mode 100644 src/main/java/com/xmomen/module/base/model/CouponRelationItem.java create mode 100644 src/main/java/com/xmomen/module/base/model/CouponReportModel.java create mode 100644 src/main/java/com/xmomen/module/base/model/CreateContractItem.java create mode 100644 src/main/java/com/xmomen/module/base/model/CreateCoupon.java create mode 100644 src/main/java/com/xmomen/module/base/model/CreateCouponCategory.java create mode 100644 src/main/java/com/xmomen/module/base/model/CreateItemDetail.java create mode 100644 src/main/java/com/xmomen/module/base/model/CreateMember.java create mode 100644 src/main/java/com/xmomen/module/base/model/ExpressMemberModel.java create mode 100644 src/main/java/com/xmomen/module/base/model/ItemCategoryModel.java create mode 100644 src/main/java/com/xmomen/module/base/model/ItemChildModel.java create mode 100644 src/main/java/com/xmomen/module/base/model/ItemDetailQuery.java create mode 100644 src/main/java/com/xmomen/module/base/model/ItemQuery.java create mode 100644 src/main/java/com/xmomen/module/base/model/MemberCouponModel.java create mode 100644 src/main/java/com/xmomen/module/base/model/MemberModel.java create mode 100644 src/main/java/com/xmomen/module/base/model/PlanItemModel.java create mode 100644 src/main/java/com/xmomen/module/base/model/PlanModel.java create mode 100644 src/main/java/com/xmomen/module/base/model/ReadCardVo.java create mode 100644 src/main/java/com/xmomen/module/base/model/UpdateActivity.java create mode 100644 src/main/java/com/xmomen/module/base/model/UpdateContract.java create mode 100644 src/main/java/com/xmomen/module/base/model/UpdateCoupon.java create mode 100644 src/main/java/com/xmomen/module/base/model/UpdateItem.java create mode 100644 src/main/java/com/xmomen/module/base/model/UpdateItemDetail.java create mode 100644 src/main/java/com/xmomen/module/base/model/UpdateMember.java create mode 100644 src/main/java/com/xmomen/module/base/model/UpdatePlan.java create mode 100644 src/main/java/com/xmomen/module/base/service/ActivityService.java create mode 100644 src/main/java/com/xmomen/module/base/service/BasePlanService.java create mode 100644 src/main/java/com/xmomen/module/base/service/CouponService.java create mode 100644 src/main/java/com/xmomen/module/base/service/ItemService.java create mode 100644 src/main/java/com/xmomen/module/base/service/MemberService.java create mode 100644 src/main/java/com/xmomen/module/base/service/impl/ContractServiceImpl.java create mode 100644 src/main/java/com/xmomen/module/base/service/impl/CouponCategoryServiceImpl.java create mode 100644 src/main/java/com/xmomen/module/base/service/impl/ExpressMemberServiceImpl.java create mode 100644 src/main/java/com/xmomen/module/base/service/impl/ItemDetailServiceImpl.java create mode 100644 src/main/java/com/xmomen/module/base/service/impl/MemberServiceImpl.java create mode 100644 src/main/java/com/xmomen/module/beforehandpackagerecord/entity/BeforehandPackageRecord.java create mode 100644 src/main/java/com/xmomen/module/beforehandpackagerecord/entity/mapper/BeforehandPackageRecordMapper.java create mode 100644 src/main/java/com/xmomen/module/beforehandpackagerecord/entity/mapper/BeforehandPackageRecordMapper.xml create mode 100644 src/main/java/com/xmomen/module/beforehandpackagerecord/mapper/BeforehandPackageRecordMapperExt.java create mode 100644 src/main/java/com/xmomen/module/beforehandpackagerecord/model/BeforehandPackageRecordQuery.java create mode 100644 src/main/java/com/xmomen/module/beforehandpackagerecord/model/BeforehandPackageRecordUpdate.java create mode 100644 src/main/java/com/xmomen/module/common/SysConstant.java create mode 100644 src/main/java/com/xmomen/module/core/web/authenticator/MultiLoginAuthenticator.java create mode 100644 src/main/java/com/xmomen/module/core/web/controller/AccountController.java create mode 100644 src/main/java/com/xmomen/module/core/web/controller/CoreController.java create mode 100644 src/main/java/com/xmomen/module/core/web/controller/dto/RegisterDto.java create mode 100644 src/main/java/com/xmomen/module/core/web/exception/DefaultExceptionHandler.java create mode 100644 src/main/java/com/xmomen/module/core/web/exception/GlobalMappingExceptionResolver.java create mode 100644 src/main/java/com/xmomen/module/core/web/filter/FormAuthenticationFilterExt.java create mode 100644 src/main/java/com/xmomen/module/core/web/mgt/WebSecurityManagerExt.java create mode 100644 src/main/java/com/xmomen/module/core/web/token/MemberUserToken.java create mode 100644 src/main/java/com/xmomen/module/export/model/UploadFileVo.java create mode 100644 src/main/java/com/xmomen/module/export/service/ExportService.java create mode 100644 src/main/java/com/xmomen/module/export/util/PrintUtils.java create mode 100644 src/main/java/com/xmomen/module/job/controller/JobOperationLogController.java create mode 100644 src/main/java/com/xmomen/module/job/entity/TbJobOperationLog.java create mode 100644 src/main/java/com/xmomen/module/job/mapper/JobOperationLogMapper.java create mode 100644 src/main/java/com/xmomen/module/job/mapper/PackageTaskMapper.java create mode 100644 src/main/java/com/xmomen/module/job/mapper/PackageTaskMapper.xml create mode 100644 src/main/java/com/xmomen/module/job/model/CreatePackageTask.java create mode 100644 src/main/java/com/xmomen/module/job/model/JobOperationLogModel.java create mode 100644 src/main/java/com/xmomen/module/job/model/PackageTaskModel.java create mode 100644 src/main/java/com/xmomen/module/job/model/UpdateJobOperationLog.java create mode 100644 src/main/java/com/xmomen/module/job/model/UpdatePackageTask.java create mode 100644 src/main/java/com/xmomen/module/job/service/impl/PackageTaskServiceImpl.java create mode 100644 src/main/java/com/xmomen/module/logger/Log.java create mode 100644 src/main/java/com/xmomen/module/member/controller/MemberAddressController.java create mode 100644 src/main/java/com/xmomen/module/member/entity/MemberAddress.java create mode 100644 src/main/java/com/xmomen/module/member/mapper/MemberAddressMapperExt.java create mode 100644 src/main/java/com/xmomen/module/member/model/MemberAddressQuery.java create mode 100644 src/main/java/com/xmomen/module/member/model/MemberAddressUpdate.java create mode 100644 src/main/java/com/xmomen/module/member/service/impl/MemberAddressServiceImpl.java create mode 100644 src/main/java/com/xmomen/module/order/entity/TbOrder.java create mode 100644 src/main/java/com/xmomen/module/order/entity/TbOrderExample.java create mode 100644 src/main/java/com/xmomen/module/order/entity/TbOrderItem.java create mode 100644 src/main/java/com/xmomen/module/order/entity/TbOrderItemExample.java create mode 100644 src/main/java/com/xmomen/module/order/entity/TbOrderRef.java create mode 100644 src/main/java/com/xmomen/module/order/entity/TbOrderRelation.java create mode 100644 src/main/java/com/xmomen/module/order/entity/TbOrderSendLog.java create mode 100644 src/main/java/com/xmomen/module/order/entity/TbOrderSendLogExample.java create mode 100644 src/main/java/com/xmomen/module/order/entity/TbPacking.java create mode 100644 src/main/java/com/xmomen/module/order/entity/TbPackingRecord.java create mode 100644 src/main/java/com/xmomen/module/order/entity/TbPurchase.java create mode 100644 src/main/java/com/xmomen/module/order/entity/TbPurchaseExample.java create mode 100644 src/main/java/com/xmomen/module/order/entity/TbReturnOrder.java create mode 100644 src/main/java/com/xmomen/module/order/entity/TbTradeRecordExample.java create mode 100644 src/main/java/com/xmomen/module/order/entity/mapper/TbOrderItemMapper.java create mode 100644 src/main/java/com/xmomen/module/order/entity/mapper/TbOrderSendLogMapper.java create mode 100644 src/main/java/com/xmomen/module/order/entity/mapper/TbTradeRecordMapper.java create mode 100644 src/main/java/com/xmomen/module/order/mapper/OrderMapper.xml create mode 100644 src/main/java/com/xmomen/module/order/mapper/TradeRecordMapper.xml create mode 100644 src/main/java/com/xmomen/module/order/model/CreateOrder.java create mode 100644 src/main/java/com/xmomen/module/order/model/CreatePacking.java create mode 100644 src/main/java/com/xmomen/module/order/model/OrderQuery.java create mode 100644 src/main/java/com/xmomen/module/order/model/PackingModel.java create mode 100644 src/main/java/com/xmomen/module/order/model/PackingOrderItemModel.java create mode 100644 src/main/java/com/xmomen/module/order/model/PackingOrderModel.java create mode 100644 src/main/java/com/xmomen/module/order/model/PackingOrderQuery.java create mode 100644 src/main/java/com/xmomen/module/order/model/PackingRecordQuery.java create mode 100644 src/main/java/com/xmomen/module/order/model/PackingTask.java create mode 100644 src/main/java/com/xmomen/module/order/model/PurchaseModel.java create mode 100644 src/main/java/com/xmomen/module/order/model/ReturnOrder.java create mode 100644 src/main/java/com/xmomen/module/order/model/UpdateOrder.java create mode 100644 src/main/java/com/xmomen/module/order/service/PackingService.java create mode 100644 src/main/java/com/xmomen/module/order/service/PurchaseService.java create mode 100644 src/main/java/com/xmomen/module/pick/controller/PickController.java create mode 100644 src/main/java/com/xmomen/module/pick/entity/TbExchangeCardLog.java create mode 100644 src/main/java/com/xmomen/module/pick/entity/TbExchangeCardLogExample.java create mode 100644 src/main/java/com/xmomen/module/pick/entity/TbPick.java create mode 100644 src/main/java/com/xmomen/module/pick/entity/TbPickExample.java create mode 100644 src/main/java/com/xmomen/module/pick/entity/TbRechargeLog.java create mode 100644 src/main/java/com/xmomen/module/pick/entity/TbRechargeLogExample.java create mode 100644 src/main/java/com/xmomen/module/pick/entity/mapper/TbExchangeCardLogMapper.java create mode 100644 src/main/java/com/xmomen/module/pick/entity/mapper/TbRechargeLogMapper.java create mode 100644 src/main/java/com/xmomen/module/pick/model/PickVo.java create mode 100644 src/main/java/com/xmomen/module/pick/service/PickService.java create mode 100644 src/main/java/com/xmomen/module/plan/controller/TablePlanController.java create mode 100644 src/main/java/com/xmomen/module/plan/entity/TbTablePlan.java create mode 100644 src/main/java/com/xmomen/module/plan/entity/mapper/TbTablePlanMapper.java create mode 100644 src/main/java/com/xmomen/module/plan/mapper/TablePlanMapper.xml create mode 100644 src/main/java/com/xmomen/module/plan/model/UpdateTablePlan.java create mode 100644 src/main/java/com/xmomen/module/plan/service/TablePlanSercvice.java create mode 100644 src/main/java/com/xmomen/module/plan/service/impl/TablePlanSercviceImpl.java create mode 100644 src/main/java/com/xmomen/module/product/mapper/ProductCategoryMapper.xml create mode 100644 src/main/java/com/xmomen/module/product/model/ProductLabel.java create mode 100644 src/main/java/com/xmomen/module/product/model/ProductModel.java create mode 100644 src/main/java/com/xmomen/module/product/model/ProductQuery.java create mode 100644 src/main/java/com/xmomen/module/product/service/impl/CategoryServiceImpl.java create mode 100644 src/main/java/com/xmomen/module/product/service/impl/ProductServiceImpl.java create mode 100644 src/main/java/com/xmomen/module/receipt/controller/ReceivingCodeRequestController.java create mode 100644 src/main/java/com/xmomen/module/receipt/controller/ReturnOrderController.java create mode 100644 src/main/java/com/xmomen/module/receipt/model/ReceivingCodeRequestModel.java create mode 100644 src/main/java/com/xmomen/module/receipt/model/ReturnOrderQuery.java create mode 100644 src/main/java/com/xmomen/module/report/controller/OrderReportController.java create mode 100644 src/main/java/com/xmomen/module/report/mapper/ReportOrderMapper.java create mode 100644 src/main/java/com/xmomen/module/report/mapper/ReportOrderMapper.xml create mode 100644 src/main/java/com/xmomen/module/report/model/ReportQuery.java create mode 100644 src/main/java/com/xmomen/module/report/service/ReportOrderService.java create mode 100644 src/main/java/com/xmomen/module/resource/api/DfsPath.java create mode 100644 src/main/java/com/xmomen/module/resource/api/DfsSdk.java create mode 100644 src/main/java/com/xmomen/module/resource/api/FastDfsService.java create mode 100644 src/main/java/com/xmomen/module/resource/controller/ResourceController.java create mode 100644 src/main/java/com/xmomen/module/resource/entity/Resource.java create mode 100644 src/main/java/com/xmomen/module/resource/entity/mapper/ResourceMapper.java create mode 100644 src/main/java/com/xmomen/module/resource/mapper/ResourceMapperExt.java create mode 100644 src/main/java/com/xmomen/module/resource/model/ResourceQuery.java create mode 100644 src/main/java/com/xmomen/module/resource/service/impl/ResourceServiceImpl.java create mode 100644 src/main/java/com/xmomen/module/schedule/ItemPurchaseJob.java create mode 100644 src/main/java/com/xmomen/module/schedule/controller/vo/AddQuartzJob.java create mode 100644 src/main/java/com/xmomen/module/schedule/entity/ScheduleJob.java create mode 100644 src/main/java/com/xmomen/module/schedule/entity/ScheduleJobExample.java create mode 100644 src/main/java/com/xmomen/module/schedule/entity/mapper/ScheduleJobMapper.java create mode 100644 src/main/java/com/xmomen/module/schedule/service/ScheduleJobService.java create mode 100644 src/main/java/com/xmomen/module/sms/api/Client.java create mode 100644 src/main/java/com/xmomen/module/sms/api/SmsMessageService.java create mode 100644 src/main/java/com/xmomen/module/sms/constant/Constants.java create mode 100644 src/main/java/com/xmomen/module/sms/constant/HttpMethod.java create mode 100644 src/main/java/com/xmomen/module/sms/enums/Method.java create mode 100644 src/main/java/com/xmomen/module/sms/model/IdentifyCodeModel.java create mode 100644 src/main/java/com/xmomen/module/sms/util/HttpUtil.java create mode 100644 src/main/java/com/xmomen/module/sms/util/SignUtil.java create mode 100644 src/main/java/com/xmomen/module/stock/controller/StockController.java create mode 100644 src/main/java/com/xmomen/module/stock/controller/StockRecordController.java create mode 100644 src/main/java/com/xmomen/module/stock/entity/Stock.java create mode 100644 src/main/java/com/xmomen/module/stock/entity/StockExample.java create mode 100644 src/main/java/com/xmomen/module/stock/entity/StockRecordExample.java create mode 100644 src/main/java/com/xmomen/module/stock/entity/mapper/StockRecordMapper.java create mode 100644 src/main/java/com/xmomen/module/stock/entity/mapper/StockRecordMapper.xml create mode 100644 src/main/java/com/xmomen/module/stock/model/StockChange.java create mode 100644 src/main/java/com/xmomen/module/stock/model/StockQuery.java create mode 100644 src/main/java/com/xmomen/module/stock/model/StockRecordCreate.java create mode 100644 src/main/java/com/xmomen/module/stock/model/StockRecordModel.java create mode 100644 src/main/java/com/xmomen/module/stock/service/StockRecordService.java create mode 100644 src/main/java/com/xmomen/module/stock/service/StockService.java create mode 100644 src/main/java/com/xmomen/module/stock/service/impl/StockRecordServiceImpl.java create mode 100644 src/main/java/com/xmomen/module/stock/service/impl/StockServiceImpl.java create mode 100644 src/main/java/com/xmomen/module/stockdaily/controller/StockDailyController.java create mode 100644 src/main/java/com/xmomen/module/stockdaily/entity/mapper/StockDailyMapper.java create mode 100644 src/main/java/com/xmomen/module/stockdaily/entity/mapper/StockDailyMapper.xml create mode 100644 src/main/java/com/xmomen/module/stockdaily/mapper/StockDailyMapperExt.java create mode 100644 src/main/java/com/xmomen/module/stockdaily/model/StockDailyCreate.java create mode 100644 src/main/java/com/xmomen/module/stockdaily/model/StockDailyModel.java create mode 100644 src/main/java/com/xmomen/module/stockdaily/model/StockDailyQuery.java create mode 100644 src/main/java/com/xmomen/module/stockdaily/model/StockDailyUpdate.java create mode 100644 src/main/java/com/xmomen/module/stockdaily/service/StockDailyService.java create mode 100644 src/main/java/com/xmomen/module/system/controller/OrganizationController.java create mode 100644 src/main/java/com/xmomen/module/system/controller/TaskController.java create mode 100644 src/main/java/com/xmomen/module/system/entity/SysDictionaryExample.java create mode 100644 src/main/java/com/xmomen/module/system/entity/SysOrganization.java create mode 100644 src/main/java/com/xmomen/module/system/entity/SysTaskHead.java create mode 100644 src/main/java/com/xmomen/module/system/entity/SysUserOrganization.java create mode 100644 src/main/java/com/xmomen/module/system/entity/SysUserOrganizationExample.java create mode 100644 src/main/java/com/xmomen/module/system/entity/mapper/SysDictionaryParameterMapper.java create mode 100644 src/main/java/com/xmomen/module/system/entity/mapper/SysOrganizationMapper.java create mode 100644 src/main/java/com/xmomen/module/system/mapper/DictionaryMapper.java create mode 100644 src/main/java/com/xmomen/module/system/mapper/OrganizationMapper.java create mode 100644 src/main/java/com/xmomen/module/system/mapper/TaskMapper.java create mode 100644 src/main/java/com/xmomen/module/system/model/CreateDictionary.java create mode 100644 src/main/java/com/xmomen/module/system/model/CreateTask.java create mode 100644 src/main/java/com/xmomen/module/system/model/Dictionary.java create mode 100644 src/main/java/com/xmomen/module/system/model/DictionaryGroup.java create mode 100644 src/main/java/com/xmomen/module/system/model/UpdateDictionary.java create mode 100644 src/main/java/com/xmomen/module/system/service/DictionaryGroupService.java create mode 100644 src/main/java/com/xmomen/module/system/service/DictionaryService.java create mode 100644 src/main/java/com/xmomen/module/system/service/OrganizationService.java create mode 100644 src/main/java/com/xmomen/module/user/entity/SysPermissions.java create mode 100644 src/main/java/com/xmomen/module/user/entity/SysPermissionsExample.java create mode 100644 src/main/java/com/xmomen/module/user/entity/SysRoles.java create mode 100644 src/main/java/com/xmomen/module/user/entity/SysRolesExample.java create mode 100644 src/main/java/com/xmomen/module/user/entity/SysRolesPermissionsExample.java create mode 100644 src/main/java/com/xmomen/module/user/entity/SysUsers.java create mode 100644 src/main/java/com/xmomen/module/user/entity/SysUsersRoles.java create mode 100644 src/main/java/com/xmomen/module/user/entity/SysUsersRolesExample.java create mode 100644 src/main/java/com/xmomen/module/user/entity/mapper/SysPermissionsMapper.java create mode 100644 src/main/java/com/xmomen/module/user/entity/mapper/SysRolesPermissionsMapper.java create mode 100644 src/main/java/com/xmomen/module/wb/controller/CommonMemberController.java create mode 100644 src/main/java/com/xmomen/module/wb/controller/PcBaseController.java create mode 100644 src/main/java/com/xmomen/module/wb/controller/PcCouponController.java create mode 100644 src/main/java/com/xmomen/module/wb/model/PcMemberInfo.java create mode 100644 src/main/java/com/xmomen/module/wx/constants/AppCodeConsts.java create mode 100644 src/main/java/com/xmomen/module/wx/constants/EventEnum.java create mode 100644 src/main/java/com/xmomen/module/wx/constants/RequestEventEnum.java create mode 100644 src/main/java/com/xmomen/module/wx/constants/WechatUrlConstants.java create mode 100644 src/main/java/com/xmomen/module/wx/controller/BindController.java create mode 100644 src/main/java/com/xmomen/module/wx/controller/UserInfoController.java create mode 100644 src/main/java/com/xmomen/module/wx/controller/WxAdviceController.java create mode 100644 src/main/java/com/xmomen/module/wx/controller/WxMemberAddressController.java create mode 100644 src/main/java/com/xmomen/module/wx/controller/WxMemberController.java create mode 100644 src/main/java/com/xmomen/module/wx/entity/WxAppSetting.java create mode 100644 src/main/java/com/xmomen/module/wx/entity/mapper/WxAppSettingMapper.java create mode 100644 src/main/java/com/xmomen/module/wx/model/AccessTokenOAuth.java create mode 100644 src/main/java/com/xmomen/module/wx/model/MessageBase.java create mode 100644 src/main/java/com/xmomen/module/wx/model/PayAttachModel.java create mode 100644 src/main/java/com/xmomen/module/wx/model/messageTemplate/CustomSendMessageTextModel.java create mode 100644 src/main/java/com/xmomen/module/wx/model/messageTemplate/PushMessageTemplateModel.java create mode 100644 src/main/java/com/xmomen/module/wx/model/messageTemplate/WeixinResponseStatusModel.java create mode 100644 src/main/java/com/xmomen/module/wx/model/requestModel/event/RequestMessageEventLocation.java create mode 100644 src/main/java/com/xmomen/module/wx/model/requestModel/event/RequestMessageEventScan.java create mode 100644 src/main/java/com/xmomen/module/wx/model/requestModel/event/RequestMessageEventScanCode.java create mode 100644 src/main/java/com/xmomen/module/wx/model/requestModel/event/RequestMessageEventTemplateSendJobFinish.java create mode 100644 src/main/java/com/xmomen/module/wx/model/requestModel/message/RequestMessageLink.java create mode 100644 src/main/java/com/xmomen/module/wx/model/requestModel/message/RequestMessageText.java create mode 100644 src/main/java/com/xmomen/module/wx/model/requestModel/message/RequestMessageVideo.java create mode 100644 src/main/java/com/xmomen/module/wx/model/requestModel/message/RequestMessageVoice.java create mode 100644 src/main/java/com/xmomen/module/wx/model/responseModel/ResponseMessageImage.java create mode 100644 src/main/java/com/xmomen/module/wx/model/responseModel/ResponseMessageMusic.java create mode 100644 src/main/java/com/xmomen/module/wx/model/responseModel/ResponseMessageText.java create mode 100644 src/main/java/com/xmomen/module/wx/model/responseModel/ResponseMessageVoice.java create mode 100644 src/main/java/com/xmomen/module/wx/module/address/controller/AddressController.java create mode 100644 src/main/java/com/xmomen/module/wx/module/bind/controller/BindMemberController.java create mode 100644 src/main/java/com/xmomen/module/wx/module/cart/controller/CartController.java create mode 100644 src/main/java/com/xmomen/module/wx/module/cart/entity/TbCartItem.java create mode 100644 src/main/java/com/xmomen/module/wx/module/cart/mapper/CartMapper.java create mode 100644 src/main/java/com/xmomen/module/wx/module/cart/mapper/CartMapper.xml create mode 100644 src/main/java/com/xmomen/module/wx/module/cart/model/CartItemQuery.java create mode 100644 src/main/java/com/xmomen/module/wx/module/cart/service/CartService.java create mode 100644 src/main/java/com/xmomen/module/wx/module/coupon/model/CouponQueryModel.java create mode 100644 src/main/java/com/xmomen/module/wx/module/order/controller/MyOrderController.java create mode 100644 src/main/java/com/xmomen/module/wx/module/order/mapper/MyOrderMapper.java create mode 100644 src/main/java/com/xmomen/module/wx/module/order/mapper/MyOrderMapper.xml create mode 100644 src/main/java/com/xmomen/module/wx/module/order/model/OrderStatisticModel.java create mode 100644 src/main/java/com/xmomen/module/wx/module/order/service/MyOrderService.java create mode 100644 src/main/java/com/xmomen/module/wx/module/order/service/impl/MyOrderServiceImpl.java create mode 100644 src/main/java/com/xmomen/module/wx/pay/common/RandomStringGenerator.java create mode 100644 src/main/java/com/xmomen/module/wx/pay/common/Signature.java create mode 100644 src/main/java/com/xmomen/module/wx/pay/common/XMLParser.java create mode 100644 src/main/java/com/xmomen/module/wx/pay/entity/TbPayRecord.java create mode 100644 src/main/java/com/xmomen/module/wx/pay/entity/mapper/PayRecordMapper.xml create mode 100644 src/main/java/com/xmomen/module/wx/pay/model/PayReqData.java create mode 100644 src/main/java/com/xmomen/module/wx/pay/model/RefundResData.java create mode 100644 src/main/java/com/xmomen/module/wx/pay/model/WeixinPayRecord.java create mode 100644 src/main/java/com/xmomen/module/wx/pay/service/BaseService.java create mode 100644 src/main/java/com/xmomen/module/wx/pay/service/PayRecordService.java create mode 100644 src/main/java/com/xmomen/module/wx/pay/service/PayService.java create mode 100644 src/main/java/com/xmomen/module/wx/pay/service/RefundService.java create mode 100644 src/main/java/com/xmomen/module/wx/service/BindService.java create mode 100644 src/main/java/com/xmomen/module/wx/service/MessageHandlerService.java create mode 100644 src/main/java/com/xmomen/module/wx/service/ResponseMessageBaseService.java create mode 100644 src/main/java/com/xmomen/module/wx/service/ResponseMessageVideoService.java create mode 100644 src/main/java/com/xmomen/module/wx/service/ResponseMessageVoiceService.java create mode 100644 src/main/java/com/xmomen/module/wx/service/WeixinApiService.java create mode 100644 src/main/java/com/xmomen/module/wx/util/Auth2Handler.java create mode 100644 src/main/java/com/xmomen/module/wx/util/Constant.java create mode 100644 src/main/java/com/xmomen/module/wx/util/DateUtils.java create mode 100644 src/main/java/com/xmomen/module/wx/util/EmojiFilter.java create mode 100644 src/main/java/com/xmomen/module/wx/util/HttpClient.java create mode 100644 src/main/java/com/xmomen/module/wx/util/HttpConnectionManager.java create mode 100644 src/main/java/com/xmomen/module/wx/util/HttpUtils.java create mode 100644 src/main/java/com/xmomen/module/wx/util/MessageUtils.java create mode 100644 src/main/java/com/xmomen/module/wx/util/PropertiesUtils.java create mode 100644 src/main/java/com/xmomen/module/wx/util/WeixinMediaUtils.java create mode 100644 src/main/java/com/xmomen/module/wx/util/XMLUtils.java create mode 100644 src/main/java/org/csource/common/MyException.java create mode 100644 src/main/java/org/csource/fastdfs/DownloadCallback.java create mode 100644 src/main/java/org/csource/fastdfs/DownloadStream.java create mode 100644 src/main/java/org/csource/fastdfs/FileInfo.java create mode 100644 src/main/java/org/csource/fastdfs/ProtoCommon.java create mode 100644 src/main/java/org/csource/fastdfs/ProtoStructDecoder.java create mode 100644 src/main/java/org/csource/fastdfs/StructBase.java create mode 100644 src/main/java/org/csource/fastdfs/TrackerGroup.java create mode 100644 src/main/java/org/csource/fastdfs/TrackerServer.java create mode 100644 src/main/java/org/csource/fastdfs/UploadCallback.java create mode 100644 src/main/java/org/csource/fastdfs/UploadStream.java create mode 100644 src/main/resources/com/xmomen/module/base/entity/mapper/CdAttachmentMapper.xml create mode 100644 src/main/resources/com/xmomen/module/base/entity/mapper/CdBindMapper.xml create mode 100644 src/main/resources/com/xmomen/module/base/entity/mapper/CdCategoryMapper.xml create mode 100644 src/main/resources/com/xmomen/module/base/entity/mapper/CdContractItemMapper.xml create mode 100644 src/main/resources/com/xmomen/module/base/entity/mapper/CdContractMapper.xml create mode 100644 src/main/resources/com/xmomen/module/base/entity/mapper/CdCouponCategoryMapper.xml create mode 100644 src/main/resources/com/xmomen/module/base/entity/mapper/CdCouponRefMapper.xml create mode 100644 src/main/resources/com/xmomen/module/base/entity/mapper/CdItemDetailMapper.xml create mode 100644 src/main/resources/com/xmomen/module/base/entity/mapper/CdManagerCompanyMapper.xml create mode 100644 src/main/resources/com/xmomen/module/base/entity/mapper/CdMemberMapper.xml create mode 100644 src/main/resources/com/xmomen/module/base/entity/mapper/CdPlanItemMapper.xml create mode 100644 src/main/resources/com/xmomen/module/job/entity/mapper/TbJobMapper.xml create mode 100644 src/main/resources/com/xmomen/module/job/entity/mapper/TbJobOperationLogMapper.xml create mode 100644 src/main/resources/com/xmomen/module/order/entity/mapper/TbOrderItemMapper.xml create mode 100644 src/main/resources/com/xmomen/module/order/entity/mapper/TbOrderMapper.xml create mode 100644 src/main/resources/com/xmomen/module/order/entity/mapper/TbOrderSendLogMapper.xml create mode 100644 src/main/resources/com/xmomen/module/order/entity/mapper/TbPackingRecordMapper.xml create mode 100644 src/main/resources/com/xmomen/module/order/entity/mapper/TbReturnOrderMapper.xml create mode 100644 src/main/resources/com/xmomen/module/order/entity/mapper/TbTradeRecordMapper.xml create mode 100644 src/main/resources/com/xmomen/module/pick/entity/mapper/TbExchangeCardLogMapper.xml create mode 100644 src/main/resources/com/xmomen/module/pick/entity/mapper/TbRechargeLogMapper.xml create mode 100644 src/main/resources/com/xmomen/module/plan/entity/mapper/TbTablePlanMapper.xml create mode 100644 src/main/resources/com/xmomen/module/receipt/entity/mapper/TbReceivingCodeRequestMapper.xml create mode 100644 src/main/resources/com/xmomen/module/schedule/entity/mapper/ScheduleJobMapper.xml create mode 100644 src/main/resources/com/xmomen/module/system/entity/mapper/SysDictionaryMapper.xml create mode 100644 src/main/resources/com/xmomen/module/system/entity/mapper/SysDictionaryParameterMapper.xml create mode 100644 src/main/resources/com/xmomen/module/system/entity/mapper/SysOrganizationMapper.xml create mode 100644 src/main/resources/com/xmomen/module/system/entity/mapper/SysUserOrganizationMapper.xml create mode 100644 src/main/resources/com/xmomen/module/user/entity/mapper/SysRolesMapper.xml create mode 100644 src/main/resources/com/xmomen/module/user/entity/mapper/SysRolesPermissionsMapper.xml create mode 100644 src/main/resources/com/xmomen/module/user/entity/mapper/SysUsersMapper.xml create mode 100644 src/main/resources/com/xmomen/module/user/entity/mapper/SysUsersRolesMapper.xml create mode 100644 src/main/resources/config/mybatis-config.xml create mode 100644 src/main/resources/config/spring-core.xml create mode 100644 src/main/resources/config/spring-jdbc.xml create mode 100644 src/main/resources/config/spring-mybatis.xml create mode 100644 src/main/resources/deploy/env-dev.properties create mode 100644 src/main/resources/deploy/env-local.properties create mode 100644 src/main/resources/deploy/env-prd.properties create mode 100644 src/main/resources/ehcache/ehcache.xml create mode 100644 src/main/resources/properties/config.properties create mode 100644 src/main/resources/template/order.xls create mode 100644 src/main/resources/tools/generatorConfig-member.xml create mode 100644 src/main/resources/tools/template/header.ftl create mode 100644 src/main/resources/tools/template/list-js.ftl create mode 100644 src/main/resources/tools/template/mapper-xml.ftl create mode 100644 src/main/resources/tools/template/mapper.ftl create mode 100644 src/main/resources/tools/template/updateModel.ftl create mode 100644 src/main/webapp/WEB-INF/excelFile/couponExcel.xlsx create mode 100644 src/main/webapp/WEB-INF/views/404.jsp create mode 100644 src/main/webapp/WEB-INF/views/500.jsp create mode 100644 src/main/webapp/WEB-INF/views/login.jsp create mode 100644 src/main/webapp/WEB-INF/views/register.jsp create mode 100644 src/main/webapp/WEB-INF/views/src/.bowerrc create mode 100644 src/main/webapp/WEB-INF/views/src/MP_verify_jWIslpvFiCq3GKYd.txt create mode 100644 src/main/webapp/WEB-INF/views/src/README.md create mode 100644 src/main/webapp/WEB-INF/views/src/bower.json create mode 100644 src/main/webapp/WEB-INF/views/src/css/demo.min.css create mode 100644 src/main/webapp/WEB-INF/views/src/css/font-awesome.min.css create mode 100644 src/main/webapp/WEB-INF/views/src/css/invoice.min.css create mode 100644 src/main/webapp/WEB-INF/views/src/css/smartadmin-production.min.css create mode 100644 src/main/webapp/WEB-INF/views/src/css/smartadmin-skins.min.css create mode 100644 src/main/webapp/WEB-INF/views/src/css/sps.css create mode 100644 src/main/webapp/WEB-INF/views/src/fonts/fontawesome-webfont.ttf create mode 100644 src/main/webapp/WEB-INF/views/src/fonts/fontawesome-webfont.woff create mode 100644 src/main/webapp/WEB-INF/views/src/fonts/glyphicons-halflings-regular.svg create mode 100644 src/main/webapp/WEB-INF/views/src/fonts/glyphicons-halflings-regular.woff create mode 100644 src/main/webapp/WEB-INF/views/src/ic01java.htm create mode 100644 src/main/webapp/WEB-INF/views/src/img/logo.png create mode 100644 src/main/webapp/WEB-INF/views/src/img/mybg.png create mode 100644 src/main/webapp/WEB-INF/views/src/img/select2-spinner.gif create mode 100644 src/main/webapp/WEB-INF/views/src/index.html create mode 100644 src/main/webapp/WEB-INF/views/src/js/app.min.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/angular-permission/config/grunt/concat.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/angular-permission/config/grunt/jshint.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/angular-permission/config/karma/karma.conf.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/angular-permission/dist/angular-permission.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/angular-permission/dist/angular-permission.min.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/angular-permission/dist/angular-permission.min.js.map create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/angular-permission/src/core/permissionModule.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/angular-permission/src/models/Permission.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/angular-permission/src/models/Role.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/angular-permission/src/stores/RoleStore.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/angular-permission/src/stores/permissionStore.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/angular-permission/test/authorization/Authorization.test.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/angular-permission/test/core/permissionDirective.test.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/angular-permission/test/models/Permission.test.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/angular-permission/test/models/PermissionMap/exceptParam.test.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/angular-permission/test/models/PermissionMap/onlyParam.test.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/angular-permission/test/models/PermissionMap/redirectToParam.test.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/angular-permission/test/stores/PermissionStore.test.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/angular-ui-router/CONTRIBUTING.md create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/angular-ui-router/LICENSE create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/angular-ui-router/release/angular-ui-router.min.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/angular-ui-router/src/common.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/angular-ui-router/src/resolve.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/angular-ui-router/src/stateFilters.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/angular-ui-router/src/urlRouter.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/angular-ui-router/src/view.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/angular-ui-router/src/viewDirective.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/angular-ui-router/src/viewScroll.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/angular/angular.min.js.map create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/angular/package.json create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/require-css/.bower.json create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/require-css/LICENSE create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/require-css/README.md create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/require-css/bower.json create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/require-css/css.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/require-css/css.min.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/components/require-css/normalize.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/langs/ko.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/langs/pt.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/langs/zh.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/libs/angular-resource.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/libs/angular-route.min.js.map create mode 100644 src/main/webapp/WEB-INF/views/src/js/libs/angular.min.js.map create mode 100644 src/main/webapp/WEB-INF/views/src/js/libs/angular/ui-bootstrap-custom-tpls-0.11.0.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/libs/jquery-ui-1.10.3.min.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/lodop/LodopFuncs.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/ng/ng.app.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/ng/ng.directives.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/bootstraptree/bootstrap-tree.min.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/jquery-validate/jquery.validate.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/jquery-validate/jquery.validate.min.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/jquery-validate/messages_zh.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/attachment/attachment.css create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/attachment/fileTypeImages/icon_chm.gif create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/attachment/fileTypeImages/icon_default.png create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/attachment/fileTypeImages/icon_doc.gif create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/attachment/fileTypeImages/icon_mv.gif create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/attachment/fileTypeImages/icon_ppt.gif create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/attachment/fileTypeImages/icon_psd.gif create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/attachment/fileTypeImages/icon_rar.gif create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/attachment/images/bg.png create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/attachment/images/file-icons.gif create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/attachment/images/file-icons.png create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/attachment/images/icons.gif create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/attachment/images/progress.png create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/attachment/images/success.gif create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/emotion/emotion.html create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/emotion/images/fface.gif create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/emotion/images/jxface2.gif create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/emotion/images/neweditor-tab-bg.png create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/emotion/images/tface.gif create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/emotion/images/wface.gif create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/help/help.css create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/help/help.html create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/image/image.css create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/image/images/icons.gif create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/image/images/success.png create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/link/link.html create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/index.html create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/lang/zh-cn/images/music.png create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/lang/zh-cn/images/upload.png create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/lang/zh-cn/zh-cn.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/nodejs/config.json create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/css/ueditor.css create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/arrow.png create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/arrow_down.png create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/arrow_up.png create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/button-bg.gif create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/charts.png create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/cursor_h.gif create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/cursor_h.png create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/icons.gif create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/loaderror.png create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/loading.gif create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/neweditor-tab-bg.png create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/sortable.png create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/sparator_v.png create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/table-cell-align.png create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/upload.png create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/word.gif create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/wordpaste.png create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/iframe.css create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/third-party/jquery-1.10.2.min.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/third-party/webuploader/webuploader.css create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/third-party/webuploader/webuploader.custom.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/third-party/webuploader/webuploader.custom.min.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/third-party/webuploader/webuploader.flashonly.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/third-party/webuploader/webuploader.flashonly.min.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/third-party/webuploader/webuploader.html5only.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/third-party/webuploader/webuploader.html5only.min.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/third-party/webuploader/webuploader.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/third-party/webuploader/webuploader.withoutimage.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/ueditor.all.min.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/ueditor.config.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/ug-ui/ug-dialog.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/ug-ui/ug-validate.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/uploadify/index.html create mode 100644 src/main/webapp/WEB-INF/views/src/js/uploadify/jquery.uploadify.min.js create mode 100644 src/main/webapp/WEB-INF/views/src/js/uploadify/license.txt create mode 100644 src/main/webapp/WEB-INF/views/src/js/uploadify/uploadify.css create mode 100644 src/main/webapp/WEB-INF/views/src/js/uploadify/uploadify.php create mode 100644 src/main/webapp/WEB-INF/views/src/main.js create mode 100644 src/main/webapp/WEB-INF/views/src/package.json create mode 100644 src/main/webapp/WEB-INF/views/src/sound/item.wav create mode 100644 src/main/webapp/WEB-INF/views/src/views/app.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/base/activity.html create mode 100644 src/main/webapp/WEB-INF/views/src/views/base/activity.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/base/base_module.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/base/company_list.html create mode 100644 src/main/webapp/WEB-INF/views/src/views/base/company_list.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/base/contract.html create mode 100644 src/main/webapp/WEB-INF/views/src/views/base/contract_update.html create mode 100644 src/main/webapp/WEB-INF/views/src/views/base/couponActivity.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/base/couponActivityAddress.html create mode 100644 src/main/webapp/WEB-INF/views/src/views/base/couponAudit.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/base/couponAuditBack.html create mode 100644 src/main/webapp/WEB-INF/views/src/views/base/couponAuditBack.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/base/couponCategory.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/base/express_list.html create mode 100644 src/main/webapp/WEB-INF/views/src/views/base/express_list.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/base/express_member_list.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/base/item.detail.html create mode 100644 src/main/webapp/WEB-INF/views/src/views/base/item.html create mode 100644 src/main/webapp/WEB-INF/views/src/views/base/itemCategory.html create mode 100644 src/main/webapp/WEB-INF/views/src/views/base/member_list.html create mode 100644 src/main/webapp/WEB-INF/views/src/views/base/member_list.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/base/onlineRecharge.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/base/tradeRecordList.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/blank.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/checklist-model/checklist-model.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/despatch/despatchJob.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/despatch/despatchSuccessList.html create mode 100644 src/main/webapp/WEB-INF/views/src/views/despatch/despatchSuccessList.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/despatch/despatch_module.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/despatch/takeDelivery.html create mode 100644 src/main/webapp/WEB-INF/views/src/views/despatch/takeDelivery.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/includes/left-panel.html create mode 100644 src/main/webapp/WEB-INF/views/src/views/order/order.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/order/order_create.html create mode 100644 src/main/webapp/WEB-INF/views/src/views/order/order_packing.html create mode 100644 src/main/webapp/WEB-INF/views/src/views/order/order_update.html create mode 100644 src/main/webapp/WEB-INF/views/src/views/order/packing.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/order/packingTaskSuccessList.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/order/purchase.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/package/packageTaskDown.html create mode 100644 src/main/webapp/WEB-INF/views/src/views/package/packageTaskDown.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/package/packageTaskList.html create mode 100644 src/main/webapp/WEB-INF/views/src/views/package/packageTaskView.html create mode 100644 src/main/webapp/WEB-INF/views/src/views/package/packageTaskView.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/package/packageWorking.html create mode 100644 src/main/webapp/WEB-INF/views/src/views/package/packageWorking.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/pick/pick.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/pick/pickCard.html create mode 100644 src/main/webapp/WEB-INF/views/src/views/pick/pickCard.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/pick/pick_module.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/plan/basePlan.html create mode 100644 src/main/webapp/WEB-INF/views/src/views/plan/plan_module.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/plan/tablePlan.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/receipt/receipt_module.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/receipt/receivingCode.html create mode 100644 src/main/webapp/WEB-INF/views/src/views/receipt/receivingCodeRequest.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/receipt/returnOrder.html create mode 100644 src/main/webapp/WEB-INF/views/src/views/receipt/returnOrderShouHuo.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/receipt/reviewDespatch.html create mode 100644 src/main/webapp/WEB-INF/views/src/views/receipt/reviewDespatch.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/receipt/twoSendOrder.html create mode 100644 src/main/webapp/WEB-INF/views/src/views/receipt/twoSendOrder.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/report/reportFinance.html create mode 100644 src/main/webapp/WEB-INF/views/src/views/report/reportFinance.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/schedule/list.html create mode 100644 src/main/webapp/WEB-INF/views/src/views/schedule/list.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/schedule/schedule_module.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/service/rest_module.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/stock/beforehandPackage.html create mode 100644 src/main/webapp/WEB-INF/views/src/views/stock/stock.html create mode 100644 src/main/webapp/WEB-INF/views/src/views/stock/stock_module.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/task/task_list.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/user/group_list.html create mode 100644 src/main/webapp/WEB-INF/views/src/views/user/group_list.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/user/organization.html create mode 100644 src/main/webapp/WEB-INF/views/src/views/user/organization.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/user/permission_list.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/user/user_module.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/wx/advice.html create mode 100644 src/main/webapp/WEB-INF/views/src/views/wx/advice.js create mode 100644 src/main/webapp/WEB-INF/views/src/views/wx/wx_module.js create mode 100644 src/main/webapp/WEB-INF/views/welcome.jsp create mode 100644 src/main/webapp/WEB-INF/views/wx/bind.jsp create mode 100644 src/main/webapp/WEB-INF/views/wx/bindFail.jsp create mode 100644 src/main/webapp/WEB-INF/views/wx/bindSuccess.jsp create mode 100644 src/main/webapp/WEB-INF/views/wx/mytags.jsp create mode 100644 src/main/webapp/WEB-INF/views/wx/receipt.jsp create mode 100644 src/main/webapp/WEB-INF/views/wx/receiptNoAuth.jsp create mode 100644 src/main/webapp/WEB-INF/web.xml create mode 100644 src/main/webapp/doc/swagger-ui/dist/css/typography.css create mode 100644 src/main/webapp/doc/swagger-ui/dist/fonts/DroidSans.ttf create mode 100644 src/main/webapp/doc/swagger-ui/dist/images/collapse.gif create mode 100644 src/main/webapp/doc/swagger-ui/dist/images/explorer_icons.png create mode 100644 src/main/webapp/doc/swagger-ui/dist/images/favicon-16x16.png create mode 100644 src/main/webapp/doc/swagger-ui/dist/images/favicon-32x32.png create mode 100644 src/main/webapp/doc/swagger-ui/dist/images/favicon.ico create mode 100644 src/main/webapp/doc/swagger-ui/dist/images/pet_store_api.png create mode 100644 src/main/webapp/doc/swagger-ui/dist/images/wordnik_api.png create mode 100644 src/main/webapp/doc/swagger-ui/dist/lang/es.js create mode 100644 src/main/webapp/doc/swagger-ui/dist/lang/fr.js create mode 100644 src/main/webapp/doc/swagger-ui/dist/lang/it.js create mode 100644 src/main/webapp/doc/swagger-ui/dist/lang/pl.js create mode 100644 src/main/webapp/doc/swagger-ui/dist/lang/ru.js create mode 100644 src/main/webapp/doc/swagger-ui/dist/lang/tr.js create mode 100644 src/main/webapp/doc/swagger-ui/dist/lang/translator.js create mode 100644 src/main/webapp/doc/swagger-ui/dist/lib/backbone-min.js create mode 100644 src/main/webapp/doc/swagger-ui/dist/lib/highlight.9.1.0.pack.js create mode 100644 src/main/webapp/doc/swagger-ui/dist/lib/jquery-1.8.0.min.js create mode 100644 src/main/webapp/doc/swagger-ui/dist/lib/jquery.ba-bbq.min.js create mode 100644 src/main/webapp/doc/swagger-ui/dist/lib/jquery.slideto.min.js create mode 100644 src/main/webapp/doc/swagger-ui/dist/lib/jquery.wiggle.min.js create mode 100644 src/main/webapp/doc/swagger-ui/dist/lib/js-yaml.min.js create mode 100644 src/main/webapp/doc/swagger-ui/dist/lib/object-assign-pollyfill.js create mode 100644 src/main/webapp/doc/swagger-ui/dist/lib/swagger-oauth.js create mode 100644 src/main/webapp/doc/swagger-ui/dist/o2c.html create mode 100644 src/main/webapp/doc/swagger-ui/dist/swagger-ui.js create mode 100644 src/main/webapp/lang/zh-cn/images/copy.png create mode 100644 src/main/webapp/lang/zh-cn/images/localimage.png create mode 100644 src/main/webapp/lang/zh-cn/images/music.png create mode 100644 src/main/webapp/lang/zh-cn/zh-cn.js create mode 100644 src/main/webapp/themes/default/css/ueditor.css create mode 100644 src/main/webapp/themes/default/images/anchor.gif create mode 100644 src/main/webapp/themes/default/images/button-bg.gif create mode 100644 src/main/webapp/themes/default/images/cursor_v.png create mode 100644 src/main/webapp/themes/default/images/dialog-title-bg.png create mode 100644 src/main/webapp/themes/default/images/filescan.png create mode 100644 src/main/webapp/themes/default/images/icons.gif create mode 100644 src/main/webapp/themes/default/images/loaderror.png create mode 100644 src/main/webapp/themes/default/images/loading.gif create mode 100644 src/main/webapp/themes/default/images/lock.gif create mode 100644 src/main/webapp/themes/default/images/scale.png create mode 100644 src/main/webapp/themes/default/images/sortable.png create mode 100644 src/main/webapp/themes/default/images/tangram-colorpicker.png create mode 100644 src/main/webapp/themes/default/images/upload.png create mode 100644 src/main/webapp/themes/default/images/wordpaste.png create mode 100644 src/main/webapp/themes/iframe.css create mode 100644 src/test/resources/fdfs_client.conf diff --git a/documents/CLodopPrint_Setup_for_Win32NT_2.042.exe b/documents/CLodopPrint_Setup_for_Win32NT_2.042.exe new file mode 100644 index 0000000000000000000000000000000000000000..661afe26b17f6919120569d2f9463363b940ba27 GIT binary patch literal 2304590 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%0D^_V%S^wz$Z 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
jI4%qK5SE@@N$(Ly4l!;f8x%2} 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 z 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
    *P= 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 z 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
    2+WP>QF+n0q}^Uc)$r%d_NO?~kSV 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�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


    YA59etcSCN@3~~^%QO=J}@c=z-0>CF)*H~** zr;11*dhB1F;HA?npEnIg~mS<3fp@+Fi=Y8HcF-!oQW_vwqP3(2!>@m=MR zH?;oleq$^f@{0y8DxVb{H*JZ?d!rhP<`v-3y6X%+HXfc_`dG}z%ccI|HI3brz$sz< zw&{_R9PFMHr~C)>=0ofnOOa#jmKDh|;Gz#CsDWeil%nRYLGg7YX`7Tlu=`6k8WM6U zyYVY3mwYZFdvz63cu}G>Mk;v3Imu1q8_7{Z$E0~GwIDdXQ-(^R}2klhbKXq2lyvy)(6(}n-6Y+kT>4i(7%77~H zq-FU0CvP`)C!1#>x)7VnH5N)eSjvLTVfIi`W?`|2(-&L^skAaiJcDaM&?V3&;jXiu zBLK62YPXWotWMZ^UyA9VbjXPJX8CvC{IpQxTT0yW-ICK)Xtfw6t&Vt>l76W6R%Ay= z!{sLxet=B69ff|o>WF?iqk^lRC3=-OjqkA6Z^Pm@gG4-pcHuw6=b#k)=JM9C^nLPG zrqzfhjs!Ymx+INAiUl|70<9CScQIw~oJP~B4Msl71zVG3`{E@oI)UcqXkl?dM%el~ zJ@xx+6K(gAhkN0%)`#z%liXwJmxj=+^C2x;946Pe=$MdC(-ffjRN|YF4pF1UA~Z4a z{d*EmXwQOS!ms0iVQ80hqlz+uHd9buSRQOh7HvV47^iqm2j%N5R_<>;Gh^M5gc6_4 zDXY%urYbiljX35sZAhvEu=5>$ywhIma9#|IE_M42eimrW|)%aO)KBg^q|o+|$3xKQW3!J!t{Ff;?C zw&nJKsDhq#;mB9aHNk9so&0vkMNRn5{>TuibQnd}?oD1eMk zjR44sH<8#s2{Q`uvmC(hRD9W^8nz6rJJjZv5H)~7WtORYb`ioSM%7UXFLz0I`Jz8X zpv*Po9%YhfFaMC-UKV>3C# zTY~JNRipugfY>`0CyWBn+ys2>t{3n!x*YmuI*6ZYF-DWF?@ef+0sK97Hq##L)-;KPv#*vL7|+$c zFalwZ#RI3mlf)!jyN-X(7bIdWy22)8?7DpYn(K6U?)dn`Mpji*&PKrnER_iU>OE9p z=&N$SR+U3@wX27v4&JsXO_146RfB2)=PWBAj3lA`^U{<;yL&ZSG^<2wi_WoPtPYl= z!O4nv(s^VzctXH$9>P^GXHZ*W;kH=tHXfSL7ha9x-Xo28GH8~>%haOQ>Un$XE;`8` zxGF=K1sexiPa7R+WzY`rGAL8P4@`nYBah*;R}6?^;MiaqO7-{e=hVH*9a1?tBkqiY zNJ~q}xZWA~mIxw(Gu#YSDx;=Mb9rPgnU7+sHUG3w#HUOg=AE5p)~g)<_dbGX|fQ4-Ce~ZP4=qY{z7se_lbLUeZ8b z_(qC!*Y2hKQQ~x2{Mt}(Qf#DwaZa&huq2KLV0wJ;F;G;HQ_cph6d4g5_W2Oxjok;j#{ULaq!gGq;_#oZiC{K0**5-ZLdZHCBXspQMy@r;?4!9*#PbUlHVfGZQYB=?E1s@SnPBcLb)>1 zrpulW@x+&zkmNKz8oZ5w&J?p>yPVokFZQ}Z{oQVfc|bQpCWHO_1$ z0ST{?apNmm{d_kwbUVGkP%fZ9PjuYKZtIb9D0)POv&bd(KcKIRJhRHbSe6TmZBkMg z7H+opZRjNHO%e4D(4-PDE`?#QWSz?#o{WIJi!X}>5ol4E(~52U8+;`o z8WEbdft|DuSuhnIj>CUwwqBI%=CNTjbn25r(5vZb(O*+^%hqwrMrLKqs)LCjFggpzi^EgS&5- z!t*oz{n;#AW0DLYYy_7Oedz-{Q{#1dHqI+Y6dtd@%;JQ2#!l?T+8)?h;8;5+8PehV zeh7;!6&;;L93HkwlZ^VX{J()^FS}KBVkzc5iSc6Svl^oX!IBFq>Gu?(rHyAa#*ef? z?t66$Z^nK0F=ei*kd%+_$!J9nk)}X13ITK3>Y2f%_R(E9VW29p*w2ims$bjQpIO{_ zR!Q}g^?I$Th{as3UQgApR@;z#NWlBP`e3qwb2FtHhd$ABjRV>;qyr<0Qnr%hjpGt9 zH1!aD`xNw!of2b7#AF}g zDnvJJZNEb}@HahzqF-(atZ=kwFG^vJ2`AVuQBob$srM;+(0DVh;;#s6txO z9cyLNp78qax?N0ap*&;*BC+mUPFobJU^C#T558K1TNlV*{hu@EC6{kA`J4c4Uq=}^*j@jd#hbTHF#4s&Z#_HIwp)wjHSk#Gz!FApA zu^jt-Xg&FKo-85+WRMeeq?5xe%|P!y{FWri zD!N=3d2JjTs?@|0=+#LkL#u1VzINY4)MsRT1Fvbn{ElZ-`;=H&qp`t&DG&9?$fdyYxn8mJ@mDg-sQ! zlP6Ie=xzf;^D%&MkXXXkX3wo)dIkt{W`yYMx!zQoVCnsrJUp>e$_YEMqg2qa!wjlvsgoS#D$>*9IuJnsXGeHgpf@-suzlGjk_(H>{P1>#mVTcB_2dT+z>z8j5Un9Kf@S`Hgu4wOP6dgbY!@e67}&U`gX*em?? z72Jpnt;&dhppVN)h>!ha1~w1h%Q^h+iL=s+EW^O4NNI$imPd}-;@ba>IjrT)BxsW; z2qYR#Xjm{}nB5_f4J_49e!)UYBXzX?N$|I~*wkKlbsxH&J@4&WCd@enw^+KU20elX z5%#gpA<^$aL1Zoyn2G~YCBc%eYInPg`ZDi@9Xeb$)T)hnQF&sOjyN!apGwpswjHtu zT*6q<_eXw0_+-t4_o)201npc*-F3-Q2s2xyRUTB|(w&TnTd%j04d-iRgQ9pnWSg|) zr7a}h?K7K+A(tLUX8*#$0FI$ZG(%t$^4pRXGMkf>@eB6B^)0aJ`To+O8?H-QbT~=_Z(9yF^^x z{%OtW1q8~+_V~o1aGp5$zeBIZkA7~_?Qi{SONY9m5DPQ>3TP`PkSYq(!CL`7Da6aHxD$@x-K zm9;az-2<;n$j$wuXf?Xu+7h#&{lHm&bjNU*bVd?idz|(C3XX*)z{lu^&5uFZ;@W^{V4-)kXJk;yUUEUTNyXz;!QXkgmioBV=GWkam&0r^27p zu_569%7?r;x$STDjGs%|%WEpNyBKL5ver+Ay_}dSOPdv^UVmFnZe!Ex1a!j@9g+z! zC`)^{fFg-OE-FCH-8YTkLHyU~qX%aE@E5S|btd*gpgzUdy~?W6aub$l1(tpguY)f$ zyyKebOS2B<>b;EHGfNeQfs`}?KsD`IS*l^*m04Bpx`&K;9jRw}!T^=PNl8VR-oJ_C zPpfMSKyW2FK|u+ts0bJD5dcg;N(XO!V#4Sg&Xc4|2w z7M2DqlHUDTyni729*w`>zFOVDUNIK;Zn`$=Kh~!7msJBR<DuC> ze|_30O1g`AC>H4|cX)7b*+F>Tc(50Oh-33zjuVSi13ADDFr=-0^;R9VXT5&{FiRRz zGW9~^+K_`VHiEDhgWGYRtUP?$d(bS^!%W%HH%axi@O$u8X! zu3(A+2Lzv9!rwcc8yF$r5~MTOz#+yeTM>jDV+2Sy>W@8HJGPeEPGUUg)ur5W5#*=l@dP@Z43y)8kl z??Z3CNlbpzGBdbX2N0#3fAo+{;`g`v9i0Ni7&dWSrE+YUmN*~@oJYo!)GN>&m!yiH z7D3SNub2@zD?sdyMkQzUkKppixWd<{3i@|M!n;s%Ib#j)<;CiOKY>5F1bbK=ql6iI z;}{;Fb@%>lvM9f>od*(-ozv7{D1RmAjhn9b1)+Jz?>F)d9sh0YkKl#pJP5FxvQvwP z5^_h@;VHggS|sOm5ZrZ3^UDYn*>5CKk&0t1Ja;=1@8u-yV6jQV9e7|ZI>*+rRh$;{ zOTbOiy_KvK#nn4krT?A7tOdH%h5`k$O^m`)CHHsW#0{GgCX>PhO$flm#p++xRX<3#>1n$@x#Ylz9DCPZ~4H~9||`YCP6qKlw#MXukQ25 zZzdADH=&t{U8%E-%GHc>QXP}PgsQS{eji?<6CCy43CCj6$rw>xN0COm4PvgpQ!ToH z@@pw&Z{krIs`CNJqAUpjeIMz)||>II1S%kka80;FhrZc1GKmxhz44q#y;;KF1zQNJE zgd`had^?bExeB(9GX})(`O{h$ElL~WyZp=BIW0kHY$4DTfy|QVCb_H?Vgd#4lWaD9XVur;^jd&1vs~{}^daYSF(H_13Vh z+V5e=-6KOU0}Je|N!rnm1kU{IjiVOOZYO!<56|e=zAu4bI8^hAQ-c1ZEO1 z`|BEr`G?-FinO<1OCwG~=?-tI?z!V-kIyghT!QW$wFx4d~8 zMrYBMElR4!Np*n}P?`540GEQEH-8VGma;U3 zuha%+m;}tBTLn?uo ztn)6q?xmd^08XB7xqRhn+5cg(wZ?vr1I6Fbr6afh>`3f7VC=lSzLOq9Tmsl#87QyE z3{%!*P)&O2H(DE=caGoZN*pa(b$+1Y(KfJ+crkUrCJXkxN89=4%6KCwXL!^D1mlc8 zQLhPao0tAtc~b>?a}{tr_~Cn;Ik^yL_mt>D@`nBq?&KZyUP)L zRpx@Y^WjYG$M-ifKiqH{S^f$+$xHmUH`PMbM*tImahUoma1K-;?&i|6 z^?PwmwYO`G%oWBX{Bw%xKdQx)0MES}bTNo|<;Esjk@OD~$- zpm`(Iks>Pzf<{>t_vs8Z11KxU&cn*Ca2sDB=m6nd7g5p_cYTEECwU1%jG8*m*NGK@ zvIy0y!J+E*1DTqBKfnx!1dG7f73GEg zl_C!C^wMgVaYV>dV9SJt`ZsIY9Et6Ppyh&^braKry-C@rMa^jOD@^=KRE|!KtitfW z7an+`Z1=l-W)TsvMydF-`iZ737WLUJW_i|3m?J!zmz9z3CF7|15W@KeD>kUJI&t5L z^-G7He1C9ry1yT_I>=|thSC^6j5QKCPYAn!9~==*9aCW6);D+r}@M`BC zyd?)P`S{UQd+a`@YeyQr7m=AvXx% z9`OdN2l(m1-VA@s&m`B;9t=CP4pQ%>tpZs$10u)#{3Izu)Qcd?vl5s2Z5w^2*<>n*3^wn`2Ie> zgb-Z11%-vO{Zz8sCD1*FHu9L=Q#$}oaAfT2FiLFu{6h*JW7m1bM>OkJDJ&aATALnh zWKcqTq3*m&dJE(cfS0LsEwQ?sLol1uMFC_mYutah{Oy=HgWT`a-|k>vB@*@8Yz$_R+%{eh^Qth-X^hyh64b0eFTc#lQ~VlMfVr%m4~n>84pd0*fR zB=A3Y!?H#y$N0y+8Ik!0T)IA$;$+RYWdkwP5M3^cf@wJ9ERf^1mLm^%M)q~=SB&_? z>Y)Z;OhJ2N(dOrHI0=AK)!9FpxRGQ+GbTfG{<3`Xc?aly?(-Eq2F<|yp|0GIObROA zkqlkGI{I4^8YCVRBU~3`ds)fFIl)7M%{6n-n*hAIqqVkfRw3t@jC-xi=9WNYWF7US z1&GFCeEu)f33u3#nkJefh0T9JyNXMsbZ72E=MV z@eZTIcZtWgj{MMe25B4PEUD%0w^PS-*So==B*a7BvmBO(4<)ebk zvEzi)JME#9fISFaR$>pd;07-rs#KOEW9KVF-M~>8i&aV4MX|?bv#fwZFqXW-hs3~o zAB3u0{?E^eIl!e1I6TkS9856&*=^hV$?EH^ZRo<e0D?!U+-B+F_~BD_9Q;tJXN)RQMCF#^4TkC@bMf|yiz_;$P)lTKcJyH zH;nWgQJiFyzK)P!$Ye!+{7q97NLt*X^`w%=v-4|?W_BBM5D(oNvHAQ@c-Jo!P>-rJ zIl+mdjVy<08|2FwbeyU15pU-Wya|8?p2zh4%D;%+o_0g^chv&9F)wIFj;cSzc!k6UK``M+;IMSC zOe5?F=G0Y=c0XIa0?+W>9b`Gujre~pEWPqhbJ<6sbNAGJ9}AR zWP8=pGT9;12x&x~j$A&n^lBE~?stzY&>>{BKJA0Gx$!xL-7QaVNcQdEFwtcVhiFvT@r55||}Xue48nYKwtp9`X2miWK! zT+(%!jzSrH=_3WxFcTW1z-fuL>S5UT=w>+>Kjk^CEPw!Io%GY-R*--wRVe%47{Zex zGuAwNr;is7yt5wv*Of7LVWd7c;2b8}RH@fQARanT1ebJ;Si0@j1#wD@G(<7yB%#;a zm*_T%7Z`Z;jnE5M$ZNzQ$wpZ_V}V`|fek(ZE^F&LvKg`{@G78@4L4fQW4~#TTan0o za(ce`@b8DpVkvjDN3DGvBe>4MN$mqxE=~qAaEaH{yx9DLnAdxra$mM~3T^O|BW#Hl z#_O0pY#{KF7jB7?|K}ie zHnQ9jPq8b!kw%47qINGld2hVi`y6g;rvG2lmLuh>Jt>HB)Lvm0jz{k zG1<@m%9$Wf`K*FCNNphuc=T-b$<^Jf#WtQ68(v7yy<>580IuKiAS^h?4GDzML=3~D-t1InWluTqKw7mlzm28-f0%bD z=xYg~Fo_Z%FIc??-yifHICaiBUugLv2^&8V@bxv214v&FV2OlX#=yh__y;q$fxTqf zUglT@;k&4P0>4+CRSx3u^q>ZDO%gK?891BhZUjXVj&G8*W&T9vkc`{C*_?>K~W`g<(K-8x@tu zLVnNIK6$|s3y7f)!2V7v?i-IZ{UEhE3oe17*E`#zL|sqU^jdbK0{&NzeV15k7Tpn{ zdwMa0f@mJM2&!o(Ap&ix3A+JEO%iW3iy6sT8u|ILD(@lW1N)qXWTM^a^< zkO{dE)`qJ9jS;P8k=$>-?tuW-v^VL?oFGxSISTCi0Al1LKl8~piSKM*E1o2yLezEe zdr~*Qe5%clTy#epkZT+~5nRb`hXK?3*!4l>B#~u|seZ_Xwz2KAd*lXbL|>%HVX8uj z>lrVuk;1qJQQxVs>)bksJ*viDlg)F3>k{V!J!PbnFj$%+k8c6fZPPL)%8Z}%atkT% zzf^36zEcC})RNocmzfwq@mFpkn2psI$}L-~AJH3Ja+;XH)UWj4G4!c21;ezxpqIx- z1>C-Ev~_vDyw(`FU*CodS5xhZu#&A$SxL5FAu_vhymib<7(4!4>%>EJ4BPX0ap}Pw zxj~O;K+!kgL)1top;b(CShnu~LG2!%BYfb$g4ePK0&B)w2VCy_P=?qzO2n7odFNoIg~^p{bbowzLHkDLF#_IJT+>SDYZ zvd*6YR+=vDB>jM~>=225__TozD4)$5DfYAp9Ut^Jt<4VdC(JuhVJ(FVV}{8ox-&e`}p6e}=A@>E;eO^|P`df4Y<2P*2gm<~G@5 z*_-zD1uePW?-DTsyzrMUS5L6i1%jx`@D~m}Z6Q~-d&v8^m5~;4fKB}fJ#&F7A4Rql zs95O&P^D8Wu?*(K)R1t2#dgyhzNWWzHCIManXJcM349urO>c`Y!=XGFi68G){jvh? z@?oswI}~}L+RhOrlruw0xL&H@xM$L6hR$k!?n#kMZIX#HoCB04LcIiH%B3^%hZ=dyI(^5Adr@e*AJ>v6n_it-jE#`f* zb4oce-CZPUBZ0f}&34;st$>lQ{A9wUwoTvOJFB;6Au3NPB*Kkb2>N}5%;TN*8T`$I z{5E^&Ob3337YlZsk|uU(zqG`@QR&ZqmC0)CA1dtxX8TZ^TtdCnq?Dq(%Pea}OFWKq zJ{W`H6}56cz$^8gILCdS5XE>RFIpjdBS$rQ#ST>s;-!)sjM*Ao5n39|W@RU6Bt`5b z648Sw3JqyFN(@G$(0zlHKL^M57ox+31&fg5&th&`pQ8B=-?Qc*Uk$nCL8RL ztBl=wv67NOwQQ3TIspjA;|A3dVyd&++TrNWC}#5V#yVAg;K1>XNjR( zUOmk+b-M)W7aim|Lv%UK59~{A)jGr>D2Qa3a>q_E-rI7i%I^gbe@9GQfhR)3g(x=y zDxH2NE*>M|+!VSP+-sA}#}u4}1S=$$3lxFEOC|k&WC+`(#P}I~s|;(23N{;jEs!9T zYsBVdq&V~YnAHrF4MdFpa&vNx0HA%PbqYABbCOg<_MqK?AqTCWg4fah{#g*T;DAir zBGoKl77xd^TzfwTzEnvKmBMxg4G*Jiv3=b74-uYJ@x7vAl`D%oHy6JKI+gw3hxA;7 zg)a4j4^%D=*}=FUgJpsKzv(ik*r?o2g>%1{@LLvcZyyk}>#>41aI zVD;={_>EuSXh(5XVyo9{$M}5|nOBb0Y$aXCJ!0=szSq=_nHNW1p`D}&CF2dMX&U~H zb5%6bQ9GB)E(NIo%KC_EFx2HO8NMC7vEUqS$k5Cn*~-G@0Q6`c@U z!q8>H<1~+KrHa8~ouFrlRD_p2Y6liU)6@98JCC^^Bn)}GYbEjpGWz;^gEZ6)TjTV& znmC$OBpVcOj*h6=4kwLSoIt2ZYG3Gz{ceA*_{-+tgvVF|IXr$G&;<|k&vCLdk{~)7 zB_yEC`a$SwQk6EG8HXTt*#lo<$9pS;mO0^vo8E`KF88zrkaDx?Kg^H8l`Z^yq&q+T z+(CCu#6f?Gl{TfH6Yje>nZlA`>Vrms-71rL?#sY7B+``jCK(!lVLLzl)YfLJhOdIjbYSs4ogJrP-aTxTC#@aZM53SE+13Rr4k2Doq#rfF>YBz> z=fQf|`d0-tgsuQK&-z0uuv>r?VOu2?pWCLYEGY}o>u1XTj8@6DyM3%;BO2Y!>>pmu zRe_RKlg&c%ZPTWy%LidhK=uWrD;AnJ8|z=<90FY2U1NsW*H61>*WODpvIK8qC|v;c zaAjpn-GaV@r_3;glDQ@r`piPf{mPBUCbYB|7~Aa6nr2sUWGsI9_jct1=NW*Q)aKs{ zVcL~BZ;aV{Owm#HtoZtR_sE04&%vNr%(Cro>gWTGD)8l4@ySdco7Pqb&iP+HTL@V{ zT!*AnK_TRxKbLQ6SBZIs6IA}@(k`?s<)Vl(aiE^6yGKo6(;7zcbn7a3Rbd-);R0yr zL_$w?3wqu*DU7wotXnucok)Q^Kg{~RcF&HyKvl@g+6VJ4w}_yRgSk^sa*+Hv6 zcLy<=o=CsRv4tpHqlfHJ{^1o%$+;)%71y=nK4pnK%9+d8uH|bK)-gMXi*M%GI*2u6bQapA5>88*2yu$8r6M{ zP>eUJ*D!OhRjM!L`-P|LUF9>`9RmZT_qkuCHko}B4z_e>wv;Z;^~0=EA&L^oc*KY?fV_+zFzG@n+=9COl z8YpUI4g}!T*8YT#s(+z&vQ(F<^`ou?We4TWsx-m2JS|?Qa>e~kVmbeex&#Ngpk5-R zg8E@1u}LK&L6aGUm$JBG7cSOemoO66E7Di(SCO!6u@+W&C@N%XYcEtUTFz}g9zJ?< zUPTgn3V3q>L@3#0%MYtNRuKI*r1xJT)28n ztC9DPW6~{L)yyYfI&WSKUv18%KPl_*j2fk8bnLNpv z_IU{sHm!GFx*hKj?qG5wor%)wb@StI@87<#e%7Vh7#{h8G0bGynn_k@xrR$FJpexV znzKzn>|sy;4kFSDH1S@?eC+A@(~)a3rn42MtURzLzn8L&M3%@-W#Gy^qfzi zRmN;AIP&QiZ%;hIrdOZAP`*R8;n40}zll=HKdT3Rr-;Q{f{7iNhl6~#@#2@yN8=dh)ym8!OFMx{ahHXhi!x~CoB4*`mOMomR z>Xwng3y?wdTZA=wgsw6=o^#mNnL11 zRK(9;W&H^t8dg@1bOiz8x-vu;rDi%HLs@A*%K^3~udA*&M5`r^JeC$fjiDPn#>=6Z zEHE4I8!8ryiqZ?$7K#5rpWAlv*aUYy%POuiHL{_4j$jJ1M&lY%mR2g7w`n#Ae4)nv zDsp;Ao;-J_jKCEApWQn8oeB0-*qu<7D3gn47{CUgttIZPS;DM^$JcS-H}&?i#~vsG zc8L8gxdW}Q0+MbE0yoAJvff8pae0U1FOQZUT%5a;?lNE#If`AOzKA|CcB&)U}i#cG@lT3&FiiBbk6OsjBugdCW1JXQ} z0EoF3^^zp$^Jnx9m*%TmxG}9J(om2k(O}I$6&PN+{gHqD=fsmBI13ia^prCS#=kqI zdk6r_HmDi}p!+6<0a*5~z5z=3$(pr#kYQiarHdW;ZQ9nlxn9Ja?_r#n*{w`y2yR&Y z@@Z(d@gQaO1OGoHJ6$L4^MfXE8bMSZ z%qv1ADk-`x?0G7bf!T{kX&vU840%Dy5+C}p(w=LwIu$LrFbuRJOyVyVxA_|-AfRLQ z^()%M?o1yWfrw8iVH)H&O#^@pj0>SmH^!!Z3m5$iu$cniWYBr1X#h`l?i7vB@w_?*}J&7;e3+9Kl zaPoe35OZC*n}-u0Ged^sn-wMCK;iIlTtn$&W?Rd2+Et>{-Ma9!o!*45LjY_p4RwY{ z*FvA96hA>K5dlL0nCtWY_epv{18gWp?e@lu!figZknYmOqCq=Wovq_J7(x>KPF1m* z$M0^7f4ApM589OHi(fY*jFvIA9deh|0+L0HW?6LTBP4&3K;H9m0k`~UaZie)iBeost8L(R1uIg&9Id3=4Y2PE$4wt66fVgij?) zevJr8HgpRk@+T?NYa8q3`!)GC)Sdfm4Tq5s+6-VJY+72WPDUMq-zl;fw`{~V!_@P& zCNE2ee7F~SeI+N)yPPVf5c;B?*PtY+6-|P8lARB2D^DzXe>aFLGr7AWqf`3RQskRw z)qjC-_sOE?NH*=@Skx3-AN|w!w*1&HT0uewyK!~J=+Opyq1K!_2U4A?#iLsc-jzT~ z_Oh#{ERnWHpeY>Y{JA=qK2Ws_N}zn5a$Zz{x}9W5dk>>4f(E9{? z(%>^^o^h@}Nao6dzB@`%PHh-fQb6auNfQW|o*V~uy}0q*%c--?O-Y%*|7$(^XG7wh zZ{qw%(g6o%2r)dy;O}FbI8`c^mye+X-RT0y*PoFO)to`PJN{-zqctAp;-})h9|1d8 z?T9tj?Bp?14vz0A`sbHRZW2oOv;AJEJD^(Gxeoa}^}Btz>aUEeIVQ!|*f0h5tE89L zod?j8a;C0g0SbKwO%9Mf9oJ%EbY7Jb(r=$U?aR-XzK3Hg5S@~bF$Ljaeev-zv~GnhK$8A*s+z2`BYXBXTJ4KJCpS${DBLene@$#|pq;%XFK zY4yuF>H5ZOjuDxTzDrlRK;C)L+QNL=+QLNv;}2&2Mm5rmuD@pwgDBZtR3{EAm!ovC_iL)EvVr{rL6+<&>aJzPr17aY1x?yJg^OgDXV#6ms68x^ zjg%Qr^j5ULe}DKG7ei4Cw;9UqvpZa8-FMC9E5^kOtuvU*GcqIpT0I}bA2q8gj>S9$ zdNip#2+)09;$|Kk>X{@PBU&X#W~2|dp0B|(TmN!9MBLxi!413GZM5aHtRh^ZuBZjX zmPsnDGSD?dOpn~tyf;|XAP7MOz@`eFrrbWaUvC%+)L|6ZQlrbbFf6^0WAdw>TWuh!2D>xbTSo zZ}pxh472ZOmgCbLd;=o~^&5$@$;XWI;&zY&7___b27XOA*$Tn77QBl0|4S;&{b-@c+$OA`{antn zW-|#kMB2fuUUH6YQw8s^>=)0ukx-h@oWS>zTD)J4`eaHv8VqOZZk>6@W5d_nBdZh_ z{zjOC_26kzU!$Q}aSpPOFdAT%xeG)JmB!$Um)VK!4C1shl#i(OJz6kP?f(fn}NWz<`uiQ8CrO}_#$)S>n`9E3ImLMzCJ zeSwMjv@eN((i;gh1n|e%pHbg^h&FgBd+)(uIWikf)_rp#>XyrbG&IGmv-|q|=en1f zCLtKRoIHCT*x35)zF!htyaiVCeVXvmD?A#nEfAqnsckt@e>Yz{KO731k<26U;k@N0?L;aX(%5@<^0oE=kvmbGGkU$w4w@_Z%Hk?Fd}&BlLLvFKL|2&j90pM9pyXs{L&(V`S?1$kf7m0XJP1It1Y9{#e0e`0LXd{Z@4@UMzkdB z>NTjlRNcO-7Th8H6@?ZLARGehrQ9x6w&~Bjp@$oKhj|O<3eXZ&5M9DgYSbURYx#6w z+qnNM%q>Wu+CB+?ydejKu6*V2sOoKcK$>_PoJ7ZtTTa)H6c6 z>6~-;u6wPVmr-sFA4a^to@rxNV@f5EuDDoUMaaC{8ic|DE4<;1C|6dm@aG~6^A6Qx z1@wqc+~+%P6a%b>ur^ZU9$PbPke-0kWSs9+%&xplc|ZQXx7DqGE_R8(WxTBWk`*SP z!SA(jAdwYHL)C)A9&6Uk`dj4ek|W+KfI`d3bMiUv4*sJ02+#gJXlbw;8XuYi6BsDS znTlCRAsN>)A`$=u$cl(5w1yYcnokj z`#&ztsMJw%O)-1e+5AAOPnCGPV7Dokf#oO^8Q5&gs=&?Qpdp^?9YML|(IYmFA`A$+ zezNQ|)Wl2gvC~^OJAy?jJkOK!p~_TcOqqj7iO^$_fP(Lg z=Ba&RV;OPF+H0lMf=$ypo1vDFfrh|*E{+EC7%gVLquEfKoX_v4goTT2J zH?Lh0)v6j_Z62gxj@&c%gwvnt=2(t(N4plo_OC{WI(!qPnU4&-_hY^y%jqrSVB<~x z_N-ZT^>*_{J!e9daBL-d^?LP{0}XA@vWhs%z$LkjtQ3;b0elN~c*gss6HU@l^4%TD z>ClwxQEf!L#f>TvOb$GJEl+}?JffD>$`LUw>E*{`CQATAJ+iuZ^v7v2Yxt(AxyvbH()s!9Ip`{os^xl$HBE7 zj;&XZj+K2a!TIc$Y?7@{aesq7jd-JWTGajgk|i5*z5!{U&&yOLQ7?(2*M+za)$;z) zNG}oZH5we*p}K>kaGgFf?Jn0#tJM3ySQlP8&*GRH&yWV6ASu&8o;7eTHt>T(V?oHh zR1vo|i78mp2$pO~H_Iz2vDnM7P4sG9X>fl2GX@U!pbA@9l5;@LnH(?g2x!NBdfL?p?B8<96Qx!gw?61avh)sn#kUY%Pn37V zTsvxwe+@(G(Dw8K-W1!qtW#^o;GK4<(Yg<3JabbzUs_Vg0Gye=BrdI_e=F(4wZ%N~ z=K`h-!@};O2AjX|<``i5cvrXfmt#A@D06+pYXrP0Qopt{%LrNpf>02RC7yi5LU1FN z2jn;ZXCKDYs##rC+Wt~?A?AL2r z1;|TpeUMM2^JQ%a*#=9DX;%x`wUwH}>k-fLqt&mJZGnd)NjIK~kkV>K*@CHYtCV%O zc9=!Fk6PODsC=3>28g*V$En!tQyOrSNGqAUC-9F3sG3h--AiO=kTps9yOate@QRt3 z&=tnS&rbX%)#e^ZWFuHvV^4Dlz%n+&|X+9cP)^g-8G9+rXDfCABhcx^$D&6((VtJhLRWsSS zJFD*RwBaw;DK|c(E`t{1)1&@gn0etR=iVU!)&h1MLgHxrB6SLhVQM5;W-?!NunJgL zgA%Xg$ttPEcW-mMBi~PzM}2DhKfn8mqt?A4XrH9 zhX&ODvM%lHHA}Hem;0Oe=)p7w?SqKG;VzevA3T|Fo<#t^OAyx<(58d@%W!b)eTp}X`+HOSll%IffY;97^}E zAL8ML(>5fCQHwKtcfy&CKx#qe?*K@o35o>U`akl(F|W7oI^~o}K9fj~KawiTDgKE8 zcjuxz%C^$!FpYb1b98d1i{Ky)oGC3Zlm?=&MLA9_sw!S@5R`bw_YkMZ|u(@{YE{e+~!hQ$mZN!utM==&eaoD zUy@%L3hw4>(z6YdVz)Q{TqBiQfB%CXGtkYrD?$sT8bm3|G z>mCHH5+XbM;d&{))ymaNUuX%gNY&BZNt-AXcM5WE%3vT0**A2_fem?Gg1jlX$&A?T ztp{FX1jpu$yLwU0_gNJ$2;><>j4uNZQi5O&drX)M-fJX~a}8FoX^?P0eMb5G`v}pf z$C$2GuJp5IPm4k=t0V1|I?!b;`~vbT&v_V8(o)u0z_m`#=xS)>-7nDlD`jWwo!X5^ zQ`y)~PAq^V+&6qpy0;Py;LoIdH%R8!Ki5E}_5xJNjl%cZgnl=*tP z1wo#X+~bGo`et8p9aCZ00Y4ZlWp~RzTo@gRujY1Ei_m)8uj0z^Rx-1rvhB6U9gfC9 zYvt^56e~B({*w_39vI;~?LIyBw7mJ`lBNrEztJqF1e!r^CAs z>9n2jNeG#B_Yr$0<>un4E2z=J&U!BuI7MB->4xh4Iv|o=Apdk;4LD%H}3lb=+3H7ML4seTg-b8-g71S!b2?MLqo6Nup1~ zl7KfwnXHe6e(S;P@J6p``9c1fM6##sNTa!JuqB&H;?UvzFQ%y13iFXf{`dI`rWGYo zY}1*fYmE%wz&t41P{$b^`RDwnOSR})DCOC{RnINgbgV`|Kus_uJsLGrIq%&izV_1c z$|5chB0f%!h;02Bq(e{0@Z-V?VS%4|ng;fP|M5{T0CLj9OGoJTMEDSy!o5H(qut@@< zcL^Mv#=Y<@)BW+vX60f}mAFrt<4i{3ei4Zx{oL*Z%F2U?cp~Ew&Ose46YR0wobz^?jhtkbdN=`g-Kv&Nl)iY5pIQnZsYB>lvx^yA>%qt~LX&Jv` z>|y7I6JSm;QZzKiB)7NDZ(Q6HfCdPDRkvJ471tpren5u#_zS6B>J#O{8zw-5ck`C5 zpNArON6Vw;Sq0Ao)g>b!>qevEp~;x0VR=4piy~Q9i@bnxnN96Pb206Z(J3`eli?pp ze--OV{4W_DOaUz**}4NF{8N3Q`OdhHG6hf1JsZkaGi)+4=#vI}YOw}Kc5}`n*_}AQ zA2hsPpXN=a&A`JOZ-J3!J|}Yc>swR{Uw!)zPPiaFr|qzHv#j8t=pAAMAyYCkmbW83 zUU|DmUQf}|q4qyD;Sv;GTzrF4+t%8Cy7-_;&m6Do<^W_rB;zo@729;S022QQj|q3| z<}1(bw@UL?4p3YFW}qE!sK8g$jU(&$lAbW@jqAmsv>{K<%=i*zMlky=NpEtpX6Ajmqc-0@sn1iG0R}Kd}zbFtcY^TlmCg^mI zY>>SL3f)o#k1BmuM}kP8^fb1v+Txq@tk1M&(vMqJqu{Q~L+Hgwx3{?ueKm#e!g~~j z{Aoa!tWa(mEXitR$(5M5pp0DYprDWI?da-4y~OfHMH+5VtpsHi{3F23GTgZv?Kl_t zPnxjJY5D@y<_NKX+|ec#()R590wo$v{bvPiVH}910Pq)4V=L|Z{^mx`s%2J%04uc_S1fY&*M~yhVM4 z=2)cUY~5P6AK=vdbfoXfI*|Q(FeE%AB|&H1WvkNd+ln&i?vA zX=4V?Zisvb$C6?ekxorp27S&-a+(qZu5HWyTDPs#@b)R)zvU2o#Pc=@xLtNo3DZ7T zKYBxsL~~8vkXta9%F+=B3UW>(__ljp+ln~qDBh~p-y=tH`X{EmY!9Sy)-65k1cP%; z_W@GQy?QgrUZC=CZ^}voFNj%ArV@_AH_=ZCKl_u97WD z*Pc=eA|`Ge8n($KC42@SNm*rjhq!@y)r3>2xEtRFu45kFmkTzB$Ve=P= zpKa-i@-N|{!D<%0FD5w0xbh^=X2%UHg38kpetmC*vnbT8YwSRoWT55`Xw%d=`h8SL zTins<8u669Y6T5;(X7mgU)^0A4x-gxAaD!Co5Lf9hTotPa$*Yf8(Q8L1(>7^RRgY+ z`L>dKM~RUQ(9J0(Gj=Fp3TlGOxZ{Iy&2z+<`^Ql{y#V|Ng706=p*v2)+@d?sofGV{ z(v4gVshWju5iz@e6{Uf1inkU+IcL)l^R7`0>N64QlVol1d$evxxd(JG;(|^^^7fKk ze57KeAiTUAXo6w?;0?`_Gs&~kyz*X`72`L|9DuMQyOj$|TFh^EpUV}L9%Oq&>Qj;u zXhmD;Nwo}c=tH84xZYY@De^a*?7nXwNHkSylqez4b-s!BV?9eZq6XS&I$Li{gxqqav3 zgT;>I;7+rg+tyG>Levrsgg%w??6HFWr4`Zc|Mv>C`y1l*kjv}H_l}XN33`|8@_Yzs zqziZVzg8T zl)V&AHkwFGgT9SRXA)$ZZ4O|{%yJ%-K=0SncK;Ofmg#i~tJQXo?r|ZkX|eUzIn{^d zDhy8b3LoeA5Hna%uh&c}fM+sh&yIi<;LZwJcz%ODLG4yJs_D%g=wq}BQDfSSdGjT! zWS^MuOZ7308$N$c=uOLFB1!`RFW_QIibdQ&{!3%Kd>9;LQkS_WPB9UWLmVFFt9|2j z79Cn#BM$m(#7j>f!?1VA)DO=jp~un>=%ZM&@OYiQV1U5WpYW%lL*tX9{`jqb_A1+z z|Hg&!K-{S^5sW?{!IEz|4hD9`0v6ZhX!&r-fcTE6crdhO6PdtlIlTu-^a;$Dw!`TX zm25g_H85|bIU-V1x2AV%=QHs_WI3^hMGHGN0W1#-x>#DoYkI9ggahz*X$I2Gr%U5f zgqg2?6`h^5&sBc14~=cNQ|Sz3+~%7O0t8kZ(5fO0h}YjSk-nhIrwqbFUoHa6wt;EN9Nio;n3B zQ$mkf!%s<*ec<_$$sU%aJ=ts1nV-+rCmwFlG%F{|>8(Z?_E~Xf45M-YuwGXc(r|QWc9R3 zFEAy9DTL&Kp%uc&V)m;wL)Em9K&FsDi(1GaTfjHn^4{60o6vELX%?pQD;>VB3Aes2w z`?5>Z=lR3iG<$b5k9xO83Zs(FK*KCh%Xl``{QpnkyZmwp&H52npXDRHO9CyVlr}eD zfY+bD&sezh&JX7~UarhZy{LZ9eZsOU0Gd}P&@l1G$SfrCA$BK`B;^zkRiJu$5AALU zRJPsGT|nxR&J(WA!9&69exwMiTMKtj8IK>e6|T$Tfam<0FfuocAHrzO>lytOgbT_O zNsV*|K2$h@6Sq~@qiibt+EBPj*Sm%*YpX=vHIuA@pgEfUe?VC9equ0L83pG>+6a6B zwNU04|H_9rY9~?ApAN~G8zoPyEiWSh__Z zhciP8#i#bk0}k>|jutDyWQ=sf@YRmevXA_0Fe+Y0At+~k+*H^*dvcl zFec+(_<*fa4IArI z^4l*LK7PsVDT`B|(p|@$T^rj+plH1}nA#dt9sD>0&0a$GdPpOGvSF7}4`cT=k>e(-SZE%a0-#WU6qm=?E~|zg?JA6mO1_;|3hQi(q|k<}FoTpEE`Qt4fhwo0)&LINI_g zb-cRtDA6Go)>c6Tli!_Icwi=_ur>sb?Si+;(;*tROF2(;1ZzOLn{=+2m?7ST`ChCp zN684h*5bz+*;47mQPVL5oet_Rx1UM`+LO3lJPvG^A8}0;QuF)KW_G+UoN;dOqHL&@ zFVEeBAmu~5+Kctpi>Fhe(jL?%bWSm&x$TU#=EMbSKjb5LUDyQ0qj>%PLD^1ywdtxV z4;G@LXc-<|ozG0{m1Rbi9IuJVj)OMK@3&itGAc52=f9H^pZZo?? zivXCvEh-y}BX4P|Eth?G`OcjL^{m24;2~Nn0CHrNXzLWxQe)!N@Not^6dV48u^RmE zWI!=n_7c=EJRk0{A_73L3Alax%agGShoc%-`IjZ_arOhYB-~3O71O%Jh09pG1vLl% zoxC2|d?T_{TAS4xfe5Rw+*A5+i|d9#>J183NNH>LVK`IOM9vZSU;CnC5_F6ihnWe@ z2KV}yIwu=z_ZNMbB7`d+32i?X?ppT9t-ryom`_x6Mqq7!<~FpFZ?n&9yjaf3=EFw9 zE_6b0@taCIB2Yb#3j1_o0^xz_sjq(t#|rR0rKOs4-Q7luXW zAu(i#beTrJ#rUxT)lncY-`JIjdp8L8tVXUcP6kkmN%EGS zOHQA51r?nVT8;mFYAvYV0J|sD91->$oIU4{e7LSA&%sCh+W%*+i|Fi#c&k%DK2uMm~#_?v$mC! zk3A|>b59j`HkYpM%9WEP`-Y)JZ#?kV=Su}Zb%K3X$5}MrUO6pi$G>nJ7DV-kg2@;* zrC5j3O)NLM2R|A*6H@b;%ExWM+T=>d1K@3^X$f<=nTVWbv+s~+*<&Nfsqs@Ar>%V$ zT}~F^$^%w3Q^?#@I!Z)b_H$IXPBkF{4BesXjI zXL`fV7zjUygm8OQ$EqO?pt?-LQ$8d5?3(xiP56d|@G(H(Hy=tgAazyknQ^NCltMu* zs`85|uB4Mv9ZqKa*j$HS6wAJg=v{D8K=f?HS3|T=gly_pmJ{XUIM+n{b+!}3ZpA#c zTm34raBXyI1_FLK0ltJ3XY>WdqJMRtzcSbUyZvUMCUNMwqQt|hT6lR2(?f-*O@ScV zmzP=gh9L)w!W?gQS3lq*7wboBFq;Pnm6k!!iFi3$g;S%1bwE45fc;40Sy7!=LJirY zT0<}kI8V=MUSdCI!OOrp0WaB*>-Q>?z-i|+?(9*u@>z^rYM>>I?;Scf1OY(L7u~_O zpe`N~c_S8z7=pfDi}1#cej=)tqVv4$$aSqpaPulf@B;t_)h6Q9wZ$2b7%mcjl@*iu zKWeicxJlLo#MFx!XP$IXl5P;#dqY5aM24kAOcWfGY*)WyKPo$9w*LxK^qTV{9%2E( z7#qQbZ>uj-w(Xqxw$;XXB|cXNg%73WwdByZx7TMK2ZR5qw$oL(d0|m%BDzndAqfIq zp0{uD>fPoqPn?n6-04XN1APN+#*+%&8QJUo(gG+mH^G1Gd+ zl?l{jqB!^LC`g3VJRYSRS-ql#7Ly3`{Pz}%88nw^vt`B+kpvLj`BNANltw+~h`S-y zm!39ElE{?a;Okaf4VCCIq%ef-6={|?f3@A}hNJ(^iTbf6IIk94WPos34mNYxvkj_g zv`69fV;LdXeMbPB7Bkx1pfFrI-T@}5-au|>FK%QLXsJCeEfZBR{F0uD2b373P zNzg^N`s!A{uvj7&oY*LKP%GNA)!Vb9 zf}-VIB5mh2R3q{KIIPe8rf7#&4Sejt`X4pFJ6zfFkfbm&f4%bN=#!o*|9d zowa9G-`0>ukHKkT+3MBsa2K1+_wj8!hcyPU{xtBLlQKn$9CUDgzV24n^HW>pxalnH z)i_m9rayZKb1Jf$_Us-5-dStdA$f3(Mnz}#Z%>W>%4^=l8Y4RdVT6(U!>JeEJhM`G ztN#l1>(b$wlVnK4-f799!Z;m}VQ_8iWrKq392Y1>gJiyoiLS6VcR-iSQd1ITrW~4z zOa1Xh|2iaEn)F-)kvgw#|7j7rV%7@F#>2pfN61v^|5R&cv38DzQ1Q6HQ4tCKc9;PTc5n;2x<-K? z$Q;Yb>^SCf0&)bAAY*BetP1npj+U{w=|B>mX2EmD?xa#l4ME8l?5ZEFH7~j zHd^mOL9&bSVqw~2NGgk6{*vRdk9Taq{%v?HJpJM7`yDAuzjj1TwOOkmZOu=y%UJcI z=A64xUBm4#=2dC2?Q&#bDwsK1z>c9r9$GK-PRh}nZbDFSDCMESnm@U*n3~vA+%6C4 zV{2Ha5_Jj6vuuw1Gz|~ehOJWDFNy$#D+uEuvHsd!%=Ku)FH_vw9pxyu%?l==*nl-l z#;_9`7gwY`d(TR!=P=acLn@~dV|2ihdjd)T>HpGmUiM6J?z$k6C&8&L&>qtB1$!yU zHQmh8XTL_E`yh6f3arr*f|YkQ&etvSyYh!4Yu}Re^6CX(dwr&Q>cBbSXjYAJT{Nib zqShz4RODVvH<8sM<;dDIGc=<5h5q160rG*I@BF+U5}GDDQO07g9}FJYU^BuljSsh{ zl+>c&&RBCvt`!B;s5;oHpMYmYglvSR8H%_UNcaV8q|W#9OW5<4&Z7Izc5i>!f_=>%Os!7DB_%6 zK8-&WRb8tqV_G9&_QgI3GFp4J?->YolKoT#8-NEgho~WuZKd1^A+Hecr*o+z5r+_l zM7oI}V&(@G%i#$#fgx2=V~^j(AiLfjCd5p!^wFX+jRQ!~KPXAfs3iH?Nvz6lU<2^7 z9Ab|Gf@an7BcYfmcUS(sL+TqNU7xIQvEZBYtc;!60 z9H_z{EvKIy#)1ent9q>NlBjo<2mIYvNcC1r_%9yP=@b<78lBu^49s()20d{v3sgcg z=&_Rb8(lZ-wMr7iPWA_*vAW3QBW<|t;#n#ukiBiSIH;_V-q?9_PNtM5s6FaLRE*Bo zY}RoSK<|zh?tN}bf|L;+^(?Vxw~zrcr)gaoFplx;9i_G$fJ$O#Idods0R)b);Z$HP zIx=94@7IERQa9F{4tAlvQ#y+;=UqEDyhTs-0L;dOE-Z{L-kvMYnr}@rnXNNDSB8gE zcH(59z3Wa6{A%rM{QlGZsg9S-b0kVr#LZj90UFO`-g8JZd$<{l52JSDyez(+4UVo^ z9-R+33Hl;Pw8J@_N%b@=eZ#^xTIarzU;9z3roxYVXu4(Y-fd1K2BGtCcwv05)fI4M-qG@oEdZm z@t~pv{_Hj1_9C9#V;XX-IFt2y>A}{@l0?-##e)bq7xDh?XxHAHk!;7BtA={VY)0{K zdgqG@vAGX`XN?++6}Ch*h!9w6!K8|pMS?|UBwo1e#NVYPB!tIpzOaLu;=w?{!ASzQ zl(O&tC4{p2(w~+l0lTj{J|V&g!7Y5_dAlm zu@?0C_>DKNP25JS_AXZaCpT7Qg_wgd{xDrI9&e|fHa(JVO3=;aLGv~~8LU#iORv^#Nz|*xRU7{{>a!&;sD=7^ zDg9Batl--Qn2mSO^#34hYx)I0B)cZ^7>F-;efyeN7xt)f2Sw6Ddv*sl#&Bovn$N?J zYc>1=DNm}v=QRZxF1kTTmD&qYhC-2t`T64=?q_%jXl7?Q1J5NWw~(vca^7%*I>`UM z2y-dBD0JVT(cW+$7pi3w#Z?CO4++g_il5!8=4Kqn|tRa4)$;2 z4=d|9ER{EN4sBXRR4f3e*jz#r98E`5w-#a{K zO2c`wl%SnnZ5YDX9iBzfSBHdaSQqVy$#|ZO(OX5UJ-%sOB(ec%<2aT88V@)5OsL*V zCTTfnY^QA#&v1Tiiu<9?U>dS;5oaMxpir0vq*fC&K<23&aJDQ_!qbqOHtHoBA0iuK z0-;Ar>koGDh&!w+JMp}%=<7|-Zf7~_$tKyNh@EI)hM&j@Q+%pbcrx>~5;OTo@0G33 z4XlfmSaoBO`wHrCff(V=f6R+O`T_G5CY5`F1CFf7B?ZW`;#z1rbg;jjE2gY*Gb;^> z*tdNhvXhC@7Yj!YW$8FXVCgb@ zT0u6c5zPfC=3}hq>H76Sc-U2B(6h2Knu4qWUG|FWF)w}9gOA)$H!#gbz&o<=Z+RBd zwpabUicNK35g&W>>l`5rDaYWcW}*^uxJ{Uh?KjjRZ=D1&lPUcZ8qw(iExP`{$edp= zkt@)*BW>sXT?{h0IYxi}oYRmlsYFqVUr?iAi1R`&n^6p0LwAOX;wqaKTNn%9LQ9xu zjfo?dUKh0J`S!}|l&Uge``U0P2|H+08jHAv*;m6QQ{Ket&H#zxx#?R0PrB!agGK4z$*;n zgd5y;Mf~fb6os(tij3`yb2&UIh$uG>Kh4@N2bK=CJ^F z3d#PZRByr}tv{hynjq1I;tKnt)cO_KmW(tzmG{Y;hHNR)C@2@7qo zcE4S5nx(_EctY{pPZ=>k|KK@nYLn6$Nz_=Wsnzvt=vU zQ5={(pW;L|L{7n3&x8VdWI>%nsXxC2g)Rd>pR#6tBV?8@$f9DnPh@uSE3(d%N47nh z7;F{`oHeD@Zl7XOY5OO6F?*iBoWK5ftUx#4;fueZItu9t4%+0hx`b5y5r^e@&^7RT|Xp$c630GVEMNK6QjOFfqcEehALOrb34 zXj5J_DZXS*t}}|_oIcd0vk85Z^xutt%k*Xd_;#sj%hCYNw=^|1^buE(h|rRu8n*En%Hj+p_TO zyNRJtj6MzO%{sk0!%g^Tt`dJ^B$y0kJmB2c@ZPy5rDaaWm)6zcAt-m?bBY?w>A2O& zye1USv5yJ_toM3~kz>U0tO%>xp8PcC``)U2yTTQv9Nl8M?LTnn5o`p?DCO&DKbg?qFkpe! zgI3;}DoUI<|95noHIk#N#)tZp^F?z%Zuvab(a<{@vbK3=TTm`H8YUDsZ0AYk3pIrFrnpY#{QP+l+ux z=Q?jfm+UV?AuIvU>ryf_mX-sjYBrie~& z#8llV30iBK!V$nOFe8;0969rRBv5JT9|e>`c% zd|P!AN#lRe|3NE=+Hli$xMNW&!`he-ZwuAK8V@UHFnp=zT*3Er zVNoeOfw#YUnXDIV!Wm@6`XJN);8uhs`0l5c+fr1+1O;MFFDu~XQjZ0H89BtGf=@lY zWWyV7rX|#&(g*9)#D=K3+fAXJ^cR34Y{z^lo#k{eDOGBDyp+*ersIHgJGhI7JOhcn z3goUw>A`-lpJ6Lm;0<&RLQ1~kQO*#z9KNL?*_SBN3w03wXOq2cXC`SmpKW2ADA$I~ zu=pOpoK-sx!Rxdt!DfPUZl%+vsZ4EFHNivG=grX7hT0EL(m97ol0B`rWTp##U~eVC zPTum8K#?+>b(Y-#o5vhF;Y8qO)-8&(ih{M?KebsNwkamAq*4Ts0Zjg+x!PL41k;8- z%q64?Hf#Bee#XC@YtgJAQZs`;Wu2guDV`_bTxv((k|qYcHl5(}ak~o)voDuH5(X2; z-0Ht)BVa>r$`6WeDXO{MaG|N;!@yyQr0+QNx8z{NwG;^azD{*hc_p{WZ7PHY$7J#Q zQcw!;kPtzQ?6$I@va`|=-i;A8;YP{x!A;Y?K^(9vBFQf#m@LJKIPP z`)_f@IgT(fx zuYiYp4siPFq2GsBAgn|qTV|XEv~`NyxV)|_DkKZ=))2&poA));a?HNmewf33BT6-@ z?-_rA*ji+;6jV>6*@T^EOiyUJ&`t3SGL<=d49s*2WrQ{TmWs0$9F+&>9EmEA-po9f z-GwjL1BG&&ceYuaUd4-J(H!D=p~0|>!!`^wRXYh_Qgb4>O>GQvi7GOCIexzYRC#1f zsA62R-@3YA))O?_S+_PO_Q7dzRY~7UXpqCxkkfK&vnXbcvFwk{g%$czyNc!BcDmXMgjaYS~XZrxJ}J9<>o$W zuST>0vdcPb(Lmf=-1s%S_hY>7-fiO&R@%Y^+3BldHke4_qSk?}UtnXnmee_#bW?xt zl_T68uOcg9313dbXdlq&AS#H?#9pd1^CebBB3i2cxB;OYs>+ zbKRqpaaZh%$9Ru=ASii}mfUC&qa0(RQKW#jfn&>OP?WR80YR!F1A(rBm@N-_755fi zFa${~s#{MtM2gM1mPAd?0Dl#`SsTz?r>#Q zBsjXw<5F8#iek>!aT2=Z?1j~*6uU%9$7dQ#eJOr}vBdqJ$}fJWRg)e%+ta+EPJ;|BZa! zqMD^IJI_Ufg0u1gIm&*?5p}o-yqFtOeXDMHfp!stTPF7Z@>rjT#Ybm~CLSjqkH`;y z+T@hA%L!ffI3>0UezhVux%T|NgQ+B{n8n$BtcuFgO12#*M5B1{>!_7OL;E;N9SWrp z6%e)q2?6ZiX9%(e9}P{HA2E9iZm-vJ^St~Fc?Apa6b0sHAzhT*8k3=P7J}jwB5JO| zXsVRONKsU0cA_;!Uy&Xj{n;{Dj);}k0Y2!=ry?vbi|wLNkgUW{t@?b4F|dJ;t`OL{ z2m89M96w&IfeeqYe&3W~!?UuVDQ-{cd(mtLLG~I1k@afK6_qzKR=0*~`Y}3r?)Lx0AQb$9F ze4eI^My;ukHz0f(Hjk{41r5^8MI`M27omm2Y3f`r-q0J@@8&5a2pVSMQ6OylN!US)C1YWN&bzgH;RhaMnI z(S{P$hHI7ZOiBfi`d;s}Z!qlude_AzSxR>mk6(NS9vFW)IW8mxu85Ip_T{IY)f zyF5j5S(p?pt?&oufcglHr1jd(UFbU&Ku~C<2&(aBd{t-|F{WtDjCF1r5pZ)X5!rwU zgd6&1OlmECbs1L&^D4TyeHag-$Fj8rSUATg1Fs&M{cs$eZ)OJ?wGMDGV0nyp;)x}=XGuqC4r3k zg5U=(S#i)Ey~T;ZXbi}PxUBdQHU%~MaS0@g9KUc9RTChUmHhaP!+!ua$eU>6MaU}h zeSD>Gc@k~67ULRSc(v{l0WPsIwaxeR4ehSDIZ)g%G^$|Nnb1}m43gdg!kHog1@+bE#U%^K1Jnu+S%VAdilGd98P&8;Q$ zE(BR3!Xi(wRl)hT$ui8|Vt}q!kEv+H9%xlKq)Ya)7*cY(uIR9~Xd`A~74_l-Irw0b6Ge&&)epvRJ5tMvoxX z-(gVyb`wbGWo^VcgS?ZzR@`(r2-~q@)$X-k{#x$?yc6G;m!Dwx{J;T>iO+?io5UG- z!<$$u8RLt!3|`pCN7&lE_5J^6i6}lW*62|+fqV1Gb$Rn=)7c#&oagg|A;B8|usp5d zrGI;C1lO-_E09Uahu|)xvqE+DcWM9zWh7=h6LHNAUL&}CBwoKvug!S2p?g(elzYwCL4~;PE&R`jFz;QtyDu5 z^a65$ebJO$V^@J$>zOqWr>|T{TT`@=3*+`3qJ&ftMTg2P zt?|Wjm`uZBc8`qj*C=c{w?eAMZn{KPqwfR#+2W$w;q#`8Xr8XXhUEf*FV=jPRR|DFJK*iVzG1u2`&)}Yn6 zqv=IAK`&!>oa5XOW24R~{;ErEB4{0Slrup0moR~`#vfm>oLnLt4^iW(nBl<)sIxZU)o17kT%F!yc^O`P~Ci#$F>X=9H zOP<~J&b3$-v#B&}N&bZw)!{^hy za-k20Fc`3Smne1TAfPXSE+Cp=Fq8=&PbUJRS;O*Le95@7bMu$5>Vm%K7LrJR z*`h<@n1haVQDb11y`Ehn*2{BsxKem#h)at+7P5eid zs9AI6VC{)E8et906c&hriq`gkb57L1tKz@pX^=5oHt*Y`0xu2+vwVm8G9)ZvAnO8R zL&9ocy0Wo$bSTBNU8}G-|}%Gc!m0=BPLv_f{41NCgs=xpmUeBZ)wz zypBPjjT?3FPxdLb3{74RT8W8 zBgmWR8|B;$aoZmqQrKZm1Wv73XFvY}Q^S9Clddh4&doV#(}YaD34hqSUN9#lr59F* zn}wdhVDDo)J}kux3xGwC-sIY~KA}>cbd^`%$YOC%;x$GzDt#677S0^ue$T9Rj2qVt z8iLLKfMRGU9ZZ^xLlOdHj7mXGT{!HE@q3*i^_(qowD568Xrd*8+p`Ozkz8d}(~|mK z?vQ(45*((w_Z-v2o(9p1L5v)IEyqt}NXJOw;{*t=H3j^Dt)@pSv{?xx8`+4k%%Ml+ z4Fob>D^9QZ-zhQnCIR&LV4ZIVhZ;zo3Uq>zhviYQiyD32k!!VG!1rR% z6y`KoYfi+a)6VERjgW2rpglwKqg2;LXKdF?-yI}*Eq0MXYK9aE%Y)z~E0)a{3q}Ld zJDO-gLkgOID7Ci+uD32jZxo~+Muwch>jzdKg{d1m2&Q;hPmBni#CZvFChCsW@PfAx z*FjfrJze{^vQv&){+=NR;u-_Kv?H*ElcRC@wN&n*j0mOb@9~xfr&d{3neBAo_s2wK z8-0^ww+`B{1kSZ~)oFYP)0(f}uGOGIT3uyMAs!=ZIZB`E*vRj%fKauB!wigUtm_jF zk?=9`?3>kseU?)oC^L8}^s>jd) zoJhZpyThJtc|1%%T9^#@LmF)N8o^SevcVM!r*Lhy5fZappJa44{V@2h#eW^U@0N&y zFGQ+VSu|k>kbcsm@mmw4LR!4{~Bd}A!^jl%;PD~PDyPgd zo0yz{`o}5frU>gbgXpMcxy^<8YCi>c^P&AcBJVZIC!Q{u0x3FtCJM0q%QL+)K>ebJ znEjGj=mT%@Dc)D8RvOx6>q@45-&iI_Bzw{s{ZxAl1I7G6JL>{?9iKoXWl*rg4l8^h zGZ;43G}%~YS-#=(Wu_&vf_eW4ugVcvGKjN@`46Dbz!OsPiI~LDI+W5QM?EM%<$-qt z&HsgsU@ml4RGbCAMwT1i;?1?yA)p%xw;a}R`j>1uRGhT@V zk~ZnwGQ842QP^|u|dYv9mh7e$Ff9kkGHWdFVkdZw9tZ5n&u%ti$&!fe>v=9N{bh~13pBMl5ddb zt3&^}n|}%h-9U7922AVZ*wVM?T~Ts*3*XCBQt9@J7?G3EW;>@5I_M@30FC*u=3z9& zeA^QGHBB~Sjr?hi+n#JjVS z%Y78iaUiy1Ds5r1dK6M*41qC3na#I`iS6iWz>gxbGs7nJ?zYy=916cSQ%lyqe$;AlGP$Ea7usF<*TNjrf&j{QO-={7T-8dP%36NNOHk$vK6VN#f( zn?F^a=>WFVH6}l)2YJTG%hRNMm%|%c9I4kz2*+c)vdgey!Kp~3jD~;|%-uMuDP4Gfcc9`aB1vyFMt zzK=N45d6l;mdFv+|DeOqTg=q;Z`pS5e!V$!OOt=>=Pv!TAehxo4;2EdWFm*b?&&RV zn&gyyBhNSGePj7H-#B>g?pL(op#$5oTdM!|>hD-lwIKXU`hiP$;K@V4Eg3wMQUU;d z=ba%uosjm?ICO>m$GvJ@LX7b$T?-{BG2wyqF(tN=DrjBb1kaf!*6j@O?e=$94E)E~ z9h7YypmDS42g8ok!TtUC0RSqf0*pO}pi&oEpe|Q=!OTpcAi%zyCGTcBcV~oQ6FG}! z-sQ@`PEOmS`}_mf){O%@HQ#2*x=pBbX^De2iqyy5Z?;fv!B=94#8&9sy6^Rg4xyNI ziv|`;D5E3BYDPMyE|mpVTk$X(9O6S#XtsJB823@nLlivaibJopP+%F}F4|l~OpC!8 zW`({VWa4Rw=#4w8?yxgTx3IOeOxodqv7S08X;i{6Ulf*`TA{c)d`Wpd7y?uXo2vemP@G@Uh2t z(XuaizrJx8in>A+y9a3lY!_UZH1XNCtAcm) z1;b#2dm8@L6b=rmbTsQkKeTa8N@9+sLfSrvX81^qZTMhKwv|bZ_1}jwey{%y$geL$ z#Z-G+AUe2{GaH8F*h}0Hb^F~ZyEN~0IgM}T;Xk##Jhjf9LJo?%#NLPpQkJum6#Qa+ zgKyBh#QF6Qn|OgG=7(tqTynKco9UZt#0z{>Jd~F=MoW~IEn8DebkNeRN!YTIqe6$l zYD06G9IZC4(@leps-MgZ^q%Gy?t*E?@n1xjDkmXl5)v>;CmOuQlTG|_D>ClR+%`LeJXfTQXsou{dQzxb4mUpwrF+5Sv-tQBObou);XOhd&{GemPay~Up6$#;*BM)fZ^%yZ`C!N3Y zZ*iTFkcAt$qh|JM?x~U z$lE9X|8iO54O>&B5A#V`Cw95IjfAQBmPmc- z1uV7kHl0R_$TRcp0_kyIOe^O7j%HtYm0?%X3jXDvg@1oW#8eLehTy(A%`4xV_}t^3 zsq04mPG^x$hGKtw0?BVt2Oz0Dv#oN?WclDCFios5*b@!iG=R#lr-A zu-5`h!396LG}jK>|F_(xfy`ZwhQtDi$jW=nE%wd*2+78Pmm5CyH^zeS@(@y^*x{&6 zfE$A;uoXjW%QiUtyEt4{fiS`zOpB@y^WJd4Qlk;1kh zF5h$5cEoS)&rk%@YwNf3|``rDj`%x*<$<?nu$p>;FRNj?eU8 zuSchD`2T0jkvny^sukwBHA}!e^dL@hh|v^w(p;nFe` z(CKmW_Tuj(h&*ZRt>q_Tb|EGHq+UZdp;~2nOV5*4kw{#8-5RW&vfAOk)x6#-+`JR ztdf2T=4L{b(}UQ`*rJoRUA5c}@zC_4h9Kc*A$AZzLhOwu|C8}H^#?$$W>4+;<35mhuxj^TFvZg8c~&-uU%&-i*{XSaUee>c?_Q3w+0qRaSPA(*&W@ zfZ~qB&5f4ZSXOXl4kPS82WC+N#D3mgPX*>esX{!}V+=&LJKhf9V-xgZHPxmr-T#-S zwzRq~sh-&~3btmfy4GqPcJStx&l|U9iT@Lx=={~JE3Is#Iao6tSBUpseRf-MKSZp)|A*Zt`(}4sjxl!$QF$osTbh5c(v$BytMrNM>*CxkOh{*a4UlmLxdNJKzT zz=K}QBVMhoW%H-e`{V`2CIVuMJeSQ-=9O4q686wVC+8xdqN3{!4^dFe>)TNF)_o5k zyaf8@JGkH;)cFjeIv5|@%X>95A)Lt0FUsHe$u(CYi1wv0M8uQxe;~f`pr<4vhmD<6 z5H01xnrQ^Z`i@Q1^q8Fcp%NS9bu`|*6)IUM7T`qqsWwJjoqP~|uGo#LaTSPkEH&5~ zYlBb`?Nk?B)7AJDHy4Qk<~>FSHP?1y%&RkZd%65s2Ky}b^J>&mKX#7rUCIKOV_vlS z`g%J&{NZ0T(m5^*39q@C5E~iJ<8{5*nq(IC&W@th1bm2T_(a8_?1SPbX&gqo2LeY@ zQdUe+HgJ;vVXbZavTmb+UC=3`DOQ4p>#_k6R!6VZPn0*-RMk+V!B4D_BADP-lS=RB zrv+a~WrLpvA8ld^M&^Gyh-srgh5#=>(7zPbhJXZn-w1V_K5Ea4VP%myK?2qlv9lp# z`5V9gzs}aB`>M5N)j1undp8)av`-?;is4-Z>1JUbmgeBlx}_g6sgT0_o9XL(cf%Jm z$qPUNm*t=SOIbOrZk&eCSK|4@>j+n1MbyzdhFy1rRD6=lY+>7Vjm?b0-t}$_4m$g2 zH7@F?Z@P7bhHo2;aScET*n0q*V;4Y)B_(#TsdR_?wKgWtZNkGe1)~z4prS+gi(eAZ(uNjHz*-bD`rq?EtmKJ@%isgWXxI#(;Q3#FsCQJmmNy}S`RPAO-TQQechVFRm-NfazTso8yKxcS zWo5@4cpZk@E8_#T_@2QBmdk4F5TvtPm*c_cjeNX?`JcgEI^@QRk1l~WmzdHVyMdSQ zGD-1;TLlPf$9xUdY0X+}yZbGmG$hRJSo--0uUJ-v)PZt>5Utk!TDiF;QmhPbOWtmlHUrU?VHdpq z89jgm$)5R=;rA+6@%*RQ{>iA+JoWkpnu~}kvc&bNVk)thgVdF1l$tSFeGY6K>W3Y8pwY2BA+f|3*lerqWxWn2Ft9icea!H?V$ zF9+JbSKiGe%%zCLY$mi?Q)?Qcc(JTYkB3BY3pFhSog3}Zw9~n6-TMqviL{t?Dk!6} znyQ-pn{$EHAoOWxHM?ww_%5gkW2UkPLA@_lPd(u9q#{vrA%8^u*U86=qP-V+VHrpd z+vafhsdh|iNdlw?N{wL?wuEgJl{0akdpZQ!ogHIVdohov3iHE&^)t0t6Zq~?TKAqfozJc#^fVU+(%sG%)0?S5J{RE(0H{!B9iqH28` zGeb~m3LZowbJ|Y%J!?$A2JxyH)R$grFeY^B2+VO1jY{1#m5#+%2Lb#_RF&g1hE|){ zDQ|&l*+Pd&0SDb>Qlx%4hl)dVk8V_;Si!m%@{kj2?KcUwOy}^TfiAdF^9~ksf8f9W z_07#f|#sT}b=H4xc4v@|CTP(?;6}-ghZ+ZIK?7s|q@Qs+` zQ>|PhM_O-%PHV6+<-1s{CyOjKtOo%uKJ_T{?V);YJB?QpMI0f@bD`h?vbXyIFqnSU zSXjs?wtbR_M`}ShX%SMS@>-(zuhIU)m#@~C&fV^OUBhY(wNp_gJzbP@r30#2>c^#2 zt_dqbV`uxF|6YlD%6obEM!ecp(Hl6_0#Ip?vXlxVVuro=h{LC zU;uJx+tqaeTL{1d#f6U5p#d&?b^B0lYG5;GNu=gV@T-a&OGOTLY9==_>3LD;=xO7f zjqpltt&zT`BIjJMu*u*@ln;~)Ite+0*J>oPjckTwRiWqQk}lUX(>414t+;o7doKFd zqJhT9J0Q^|Y*)(d#KJ~6mt&y?(VUW$!~PI$Uk;gqJ*>{Rr^L}Iwh@PH9FWfpL0ijgFY;Rvh%{U zf4v4eUkGIRqVsgsSEn?pKMRVga}WrFXg=7xJUzMsSX1d~2JH*;#?_siEo;T+VX5Iy z?o*~&1QpeYEHRKri#vZv-%BY+Golx8keYv_QCLrWe)h9@2M0DCFQ3ia@u4wFCZ;2D zioUU(jd)nsrw20;o`2G6*Jx$PZZhN9DX;HbKWn-Y2)RzenAT%n+70J z{`3t%U#%n_yt6$WQlTHKpG*&aHwZPu?J+9|o-S1|(O;iu`b&sM&8H3=awYFR8}kw# z+SJ7ciS~>+5@jk`L|Jg75cGP}IBenAn5<}KyV4EAcJ7&uKkSw`lb_cDe=99fmvs8FP|}u#0w(f zdg(thtc;MRY;<8xIK-`*X~Cd3NlIj5_T6~5Hea*7O04QQ>hfay%ga@03L%`GLxuIa zhg}D|^H*r+H6O@72zwD$nsbJ`4|rIi{R z9^PY&wCFPS4{L#a3^Ca7-F*q!giF8Vk_i)H#!~FU7JhcZaa4lM)1_Nnx}jqoN|(9v zz3b!5JikR_1QiO0>Saf62HU%KqVJw#7DoX!KuHjwtsR-%yY+Jm5Dk!nLB`HsZV&_E3!Fgt;y2CP)}HDTRYIYG~!=_mw`vf}GrOGwI=7Z7*#V3DHMGq0mTZ1jjr* z?2GU#<^n|Eh9JBQvTIJs5`@wc;v&%>v*R>A=<&s&v5)1>&>NOBd#&>)Z(VRQ5lW(U_sS3}Sr(@o#u<*5R7M??)&^3(cFYGz9nOwMrD( z?LyiMTO;_(V=z%?C%Vw>qRs*keJ(7eC)MHP#F7MDLQRE4V{q z;e|`3*KBawufsg|#Lb5y{$nkmD>XjibV^)LUeTh6(~fP!$iXn%ww643QeRn%O3Sja6i|ybS(J+f zu2(lmL55P9O+qbNgtz**qPXjqNL-i=7h19nGL^TZ1WiZio2L5j?kAC-SSERxnEmzh z2&zLBgNDk6bsmW}pg+#j(zp|g{bEFePX2H`?Y2U+8BLl8@h#}@RdOmP5?Et3XiO+g3EXW;)`^wyj!jpG6-zfK<{ zDpB6-M|dB&Ybqe#+v(PrcRKh^==Y!4;6|SGEXlV&lHxnMabV>HGv7~B=)mW7rRf`G zzt(~#e(lDr<_OXUi`|K_h?il2$XN5)sYncNHP^&weRRPD|I_%5(D!?W$EuOTvnGw-<6f6xBf^|7N z%&fam{sjHok_|K7x-TFhG!&F@{ZD>cf4)n<3QWQ3`$#qPTP+bBH&^Sy=R?hP!#*)3 z?rTne46IpZI>q_mFk%dybjU-ZG7ech4s2^DSe4gZiOmgd`NZ%)^SSdUTZ>N@kJ5^3P&xms4y|eku7*MMzj%s%{Ze-ytm1ORK?ga|922yN8ahYRuwMATM#m3I** z8hO!o&rSr4p5E=o*176mOOu$d^2=oXrlX#UEa5$@$|I9f$>VG^L76y)2Z)L#5{kPu z7c~u&{Hi8C@7vtY&KPfp<_O;=Tl9!u;rNZgIQq@*4kS_RJ)8uF0u_r67jQ3}y}}^4 zEpr@9k)RbX} zAdh~6PHbLRYY)0sDnqSBZYuzhunUz`^jB2%W+H(2?KojeM({HGeJ^W;c5balSVd4O zl7fTls6)_;BI%hz`nbm3^n>ox|HRU;eyR?q0*L+qtAKiEE;fdcxt!DZEIq#+BSThj z(-{oLfzEikNaH%$VhBJOBDD`do*ylWz(^FrMl~Cl9~s0IPW7L7=ks^)?BsP$FeVen zMO05w-SAQs8WiM)r>gsncgDw`vSU3?e?Q7;*_E>mXnwC@p5RCcb>zV@Y={%rA+0Sl zo)fP_m)@t#SV{dK&o2X8+U=y}(Md^@(2ijNUhdYV!f>QT5=Rh@B zJRSb>yN(q@(kx?5kQ|_(=oDQOJm}cz#=)n&Lw$Ey_Ubo*QC6B4?Ju`?K&&|5k7&@fVSh`&k;9D zNk?Z|Q6tSV`9v13Iq)VOr0fK!XZj5Zt)rkpUC+24$R8%-6rujQ{Y;qhN1;j})Lh4) zY^lpA7vD$-F`qKN3Ep1vlv4121eC@51z(OgL6InpJ-WSv@E$iQTzfMIT|J{=Ch1mH zlnRj~0zmIl?k}i?OMkbjYI7CNa2P&~E@NqPj@W_(+-6&>ghd=*(*-kwnl9j1_nM#; z3$xJkAIrRHgMZV^>}&k~7eSaFjzb1ghTzB~6RIdA<+>tfZ*{b02&O4EXnb`T6-z+S zvvfd-{_Cs5f^3TlLxEuu-;#CJTcJ#Ni}%iQB34c|>Md#cYqSR#!V;m>o$6)2?Uz~8 z9rNb`JH0Ex_#6&PI44p-%H=FODARv|tSOxVKZ_9y$ILH3En@fagN;6kAQK3PQ0*jj ztt}Lj6Y&W1LY&9(1SijWZ>4_{xvJW3_Jrj6MuQ)*Y)_7zf5Sh&l#WsnBA<+}1D0@w z?Ru=bi1LQ*N!`8Xs(X)-z@cnzZ2Nob5}pSS%C5bmVWE4Q11=U(k^C& zF=2&}8Fn4g25!Geyu|*yBv)4eISS@Hx|t?={YmSvo28K*4pf9NARw|kTBh5aaq06x zc3OE#`b5iRLH_<7gyT=Vjbt#}pMCo4w`7IIV>LOutcJUMgY*#;Dv9kpJyp}GfY*w8 z`_J@oaB{Oglk2jYz-VFTaVkJrjZ{bpgxstHTtBX^pX}P0(Dbm7d{~v|s^o-FWkz#d z5Sy#cFE`Y8?;4W*y<^CHOdr0uOTbPbp!!wowDMYY*;8Dddc`+UXBkk)ZHz0E<{y?S~>eOAvfX9 z-K#>%(w^IhGxkRY9m}8S_pzATuNKkZCbuuQV&`{TmIHH8&% zv&izOnJyC0VZtI>p#5oCu#lueflywGyGz%$3%nl*D+vB?OCY{VpMnJG(`S6c^Pm-@ zwm1SyjaZ2-f~XAjfq6; zI-E;WEv5MB>09D7J#BG(V*;;G@;Q(;SZI;8g2gUyXU?ASq!rwTFNEbp%UEZ-%cevT z*mLHCf2}9l8N`kXeqc?4M0e*hbC94=m$rwzfl#R?q%*AzRt=mjB4+Fez6vtZtrcO# z+8g9pXEbQxdSvuzanhue#0Di6m0p;gFo;0;B{M)R2Tx_GL2eyADQhqr@Xf`OOo-D< zmUwQf!5i8^9#jZE`~Wl=GsM03usTSu!+M{~X}?zeoq&Bx>NNJ>P8JC=UA`%^q*+vR z%!0~Lg&(RD=2c*q-1Uxmx@ne=6;pS+RT{!&Zb7Q>ky}~!q3^Lt zGE?I-MqgPCQ&cKuT^^NgXW}&xHKL$uB1K$t zh4}PX=btxTO@7d{yIpAXeGbOs><@LbA}kI4!2v z4jY&U|McndBBk%`Q4q-upx5~~pDu~`;J}yF3oj?1JLhC;fFFiP;V}Or9RIMItXY=_pDTTGlmNX+d(t=jHvr z+!DV;togEFKE>~uq;&{baD$5KH~M63n#KMBhC-BKsk_^}CCF$w!>-F~thFa$JBvpJ z12qt8Fwu+~GM5cMx=v{Qz2uuAy2XsNE6A)EnUUy=ZXv74zP~bsVHKq0#j( zVg{b;`QQQtA>dN5?#Oil_5L+T0mlpLoeym+7q~+|RL#z25O9m-y+L?yNX-i|UGR0Q zOr9R%YD}7hlJ`%&xFjBw3S)1yxI2)2Ut_&8Q5`DlHwnnrMy+{-QPQf)O%9J1{2FR% z>yz;=kZ>ZhlrMO#LtJnQx&%6bK%_A=n0M9sZ%qY7z6C{fq9^l22<(12xVEH`F9C<< zEOQUNn+XU)00GF$fhM5v(26Z8`}p;YOQzDy`1k8~_JpR?MsaFJ z7*pmT?~mChcB&HHy|`gUFWJl|TE{JCBt+~%IU%PmeT!^WteMj>U5%%CLqLTYc~T}b z5RvipKzSB4I)I7+ox{mCic=IqeoET?f;r6{Be3Va6r8Q?K?g3Y5*OEMo_9$iM4+GI z0ft%P=_(Vn0+2YodZ<7=+KwHvHoM5^ui8csEzgQUUu30nO*Soxn`&d$C$ z^msCv!v*dxxTcZ2)uiM=QJuwTIXl9v<_w`1tafRN;pPT})zVU;A?a#|iHc|XHtkwE zc4{=1+FBVEg`^gVKT_?h#n_uyf9nmmBs8;&P1R0kyX2Kj_FnMi+WGEvWIWWzrX2eC z*U#>g4Qa_qRFH!=LIE~$fp~wgcr`uke(sq`nrbX6r9hIs<(#b9{|(xwBE-kkcg#=F zA;~!DJy*4F)#K{~kR|+Jgn&p$(|{dK>SoM*FQ_7npsQrUR8rneezK1@>fx^>-vveQ zz$>~~!Ti7Fp5>DC7KU$=io|iIX>t&xhDc|hL}_x9LY+HxrO@RJwb6xdx-?1HVGD|? zDrKdy6@*{OG@2p1+0YQMP2HA>Y|Ll{rh8snh=Fm@sU|oc)ajkZ6y?k~_7QSBDEkcj zPquQ=*LNQsXpwKiuuGt`lmBHDHcbg;32Z>Mzc3+szLpOjPNq*|F_DH#r^pb0g%*dK zI={!F)o|ws{1){0AU*y?gG@J~mjBBlpX@3LT()@3@$BeuV@4Ivh5|a!O`_7@*=sq9 z%;M@10$6efwyigprDnBt8RAVj#$%&as6ySXM3ye-u6uwtR*_%gPJe0HfD>p!#6HJqQgpiYvzblzvpQtoCYMLz+ZS%VS1qCcU+%vwzrebC` zBx$4WM?ea1?CZ@{rsVJ99jRHRB?Vx$Pm; z>y)|QwGkqmB-5JWxP*ba#dq5QdQ|$~`Y>$ElV+Ph7!_{2PCVcNTOEK!=uZth<^Uj| z#Lj()6nW^gz1VeWYUza25j2s5SzYMAYPpO` ziu2==i()gQMKh|vi?#=avu_;}A#oIQ*qka!3Ko=rRT$hdP}xv*+R;H^v%X8}qrg^m z;p%$z<4~!x)(vV!a4K^&1r1d0*sP*bW14>hMCmGw6HA|3Rs~K8DNJ`|^`R>2KWHL~ zn-$Id=G>IAMK?)=8ZK58ByI7?d983BKf&qMbdP%b1F$c9=>9h!Oy!e9{40t}+8(~5)JIT_RNEqEHC54g4N*fK3>L z`%Uf`{`~4Y>N0ytr)2XWz@IzIO8Q^@BY+86|9*j$|XWe@0kew z!Y5|#8Un;tf`~<^db~^RN8-sO*3FD8<#iDo#62i7rdK-mTSnqwcY5e7 z=fP2wBPQYrO-B0JxBFl`YbZI1IYaEvg9J0%=`kUs_AMBX8{7lrgLItV?YX;RRoQle zTm7n>`qnGYg}w(dsjoC~pg^}R81ZxX#pBur3T@D#2_Z3Hfm(BtdudZU0x0a_mxz(e zBcBUhT)YD9&w2!X<1aInk@yy{vhg<#KGJ(CaZy*W913YrxEviiyyE1&U=%j(tNowO z3_(p15`@bl9sh2ccy>c6ap~~Ms@$`%{iX$N>;f7MetD?p^+ot6u9oj689o%3Rm6A zz*8=cz?HOkt)89wV=&wk1$}8Ri6C6r6Q7?qLUlyjzvo+l-P`54xZ@LU3L#XT`u%AoV}+cA&#pX&7YZ+k4pp>RdT~#gp*v=_A*%V z?4NmVzj_ehZB_#13kQU1K@aofWJKP*HMs2Pen+}_LvJhs=Uq*wD~bEEZ+$yKS9>Gr zxT=W7n+P&TrGhUZGsz@OwG57v8<(*gcGS~A5M1v|HEvelIn!BAPej7T6(Y?lWO`mY za(1OvJBs!^5y38A-*Bgpi1$b874W+VDwqP^?_1^yS*8x+Bz-C8YGRl5?4LwkHx3;K z>L~t0P&W#vcwQ;eeRm@{)#AXj!bmzP051Nda#JaI;)X(TUlZ>03muE4NTNBQzyS16 zvtTLpUOWVS4kxw-XUt+%1rKO#_2!yHbun+mL}ZPrOB0{Gm0Cm zs5iFO93RnAIWH#XGI;v7nuF)Y7xs`XRN<;Stgx}_x-8k%tubj>hXq_A(`Ugyo}*Pq zJS@h)${iV*ge-d@whaF+>0pMUkySecp}sXz zi4@rKI--2%MsU+!yceyl08lFZ-3C;YUiMpIESB3y%X-b;X1qc64;G?$D8NEZ(ttC*B2-zfepW+KuGfP*laR;r3-KA2 z-}P+ki2=J&ufRREK8kzRiXC9&v@GyMF{83nS$(;6`O$z9>Z129=H;~06K#7!-nfy7 z+nG7(sHJ^Vf%3?a#Rb{h2Sov&vh*U}ThltM!pH;0#d%hF4k2FQ6|OMIt%ihb7}-Ow zaA0^@9B96wnf;3Ul{L$?dY62)+2L(>goB5z(UTAfYwYTC7scuX$Qzk9UpE{F;EJzt zl(!vVqR^xW<1W$(yN(of9`#)eO(KjT8jGAMA&~i&%hlQl-|vn+?F#}b(ZVM-UwKL* zMYU1(wV0*@qrU7U#QsV3+C8t&HX_m7cK->HW^FI_SC`l=pAhaGJR387X^K-~gJ!^0 zIzv@sfz7#2f zu(G2-v8?-do)2>X9T^9-HbFF@bhwm;;0a5`>8J;run^6H9#W4q7e1Ay{UczXya~W{ zbdgy(tD5j1jYmhR*#(TjaxG|$KbuBgv7>S}KY^7O!C^*d|gfz5jG znx6rP+)h(6jn&=)BvOJl?hA@jGdk!*kqNI;9*i`yI8(dElNQdzh3K?EYr z>UPchbgxxF{IC)!1+}VakD4NmBMv>7kt?x8O4O8XY%rfT_b*`LQ6}`!*hh|${cakn zeej?D4^BCDYx*6MvyD+WRPzq>!FrG7-YtsJfb?c_?tgYcx>=}``>B~;5b$^OhKY7H zT88`}t29Ny&zNPJrQO+Ut@H96@SZU!?~dOtW7|CJtLrU@$F$rpF#R>I?n#5`vUn9Y+^7Ef`*`g{8+&?8yH7I1{js&WjZ`(PA zuP;~A}O-s%L4f+6C7PT$8>9|thO6s< zezB_1ri43qo9m$m-*T>c7~Yy2{rUzBzec^>s0!FWWy5T&S)-Y`$TPYmIAxvb{2@@5pYighYH zPFvV4E@`s3>Zt(iCD_XQ#1aQZAY(+u<-&%FW?XD)5by?}TBabtZugU)5Xake#(Snd zuqDhqENdw?ACh(mo!wOBRq#uh1SBgso(J+2N4LT${*4!3rrxG#}Q5a_Nm+6sCR@X(dcvz7=CC5w{7}B*{xf7Z8LM%x5Zf!7MImS$bJ#Da-GBVR1i$Le>8yz zRl;u6H#NrIjqB`$*U|uscNgigdW38?(fI(4l59@-Cr7X&7g54-_7RhMT_>J}SZED% z=0)ZuTASG@ZO|6R#aKGW5-$$8L0lzhc5f!yVDF!RBN_g*D&6i=kUT8>?yn1X4Xn`R zV7=VU&SHNJly%T$zJ+<%)m>a^S`VL>6_~&3xFMnxOIlv&+C$E zfd*xX1uHDiSJur6kQGG9Jg9}Iqqh{iAq@vMG&hv0x7jnhN{ zx+XH9U|!?Im8QXDI1pC{Tr-=JlOH~`C&JP zTwg}WdozXIAaNv@2Swhg=uE!Id@c#0+L6!x@-7=p{$*F{EGCbyy#B7*jcH2f+yrFnJB(sA@&E7wr8d_Zp zG8ldC0ctn2*^qxfuqh;O#9AOs$n;-8KVDqm5D3Q%^l)%~_(r9yPhk^|)}=2b5yorF zbpBbs9R55*7~zbxLTb-)Aqbo_8uuJJsK8-_z-Wu41>~1l+%|c!`T^I~2*;Ijy>dR@ zA+One8~DrB=)~e|e^9%w1A9)iwhmXpksub9T-H6oE4t@S2R#BvFb#ZKxkz*-oiUR# zmoF)uMce4$G>*mJT8kkPmIZMi9FTcGWV1YG9nif0_8*@Rz^+z4`&+K8AF<=dpX%TqFB&gzqiWhjgStiLB zm{!srCPZk?9BdWzFE1d+>t$AW9Zkvm3=gS(85*xwZF{=a2Rz(Wz{qjah{?cGLa8vl zE~WNHN4P*1QzIcHVCla$;NfPcgo~hTm_)Mmyc58-b3-+P?nwjmXZcBT>m~>DSv7)P z&!&m_E!0x8SU@0OFIKjiQoJK!rv6q`U8p=1)+d1Le%2?eEanwg&ME5}n%h2P;<9fI zJ4|y&ZhYScPnMiop9s%GtUBYj;G?|nlLySKvZTgFB}gITEaC7hI) z_&tO=jUxR+v?jNe3ZG&IYB%To#yTzMF!HO1dd^JUqBn7D7CSPtp?HYx0_qy$t>O`J zaRO*<5nJSQF5yW9>M}`ugWwhEagCm@Fz!qBSr{b|JR{8qrHdU{t=ocybBX2(`~pr& z6U$!bMGt-u=EzSy!9LpIZc?ogsQp9*E&Nn?^)$S%W1h#zib`1Gov`J}@|%~3njFo- z4u!%k%-@v%K+dEUXCKXjf6ERSr?O>0Slvh1q?=q5skz+)gFC|>mYw?I$|2xYV= zbF05Oh?6=`hsfiXaD^ObIF?3_kOQxgBp5(QmW>NEVgq8=3x(t#FAx!n_T=C(UU7Cf zQ0JX?cl#_N75L6VRPXZ=ZV21pO+4%>QBrCA%KDD|G$-X6SQb#|r08`egdTvK)~j+y z2l#gdC6 z87YBeArOym3BB zRc?-JDDG^IQ(Fkzw0bndU`wy)#gvSve$!KQf#Rvpp?w+u9q3JzT!fOS_K*%W5#Qke zL$2(rCx#?(0V0g4FXXigj*x4#=YN4YCvqOUO#5j@uWyT#5QG<4h1G|}z(hEthO(uK zP$2&XJu2nGCAM&c}ktaS2!48Lfu?Nd`dEi=ECoe+8Qnw-oc2kJ1x< zYC0%EbwRisX#~1-GP!n*dL3%B2f6Ze)nNxhQ1{T0chqF3I;rJlrbQV02edCQF4v2e(y_g|GY5%aZKMOLP$j0@#s++6N$ z^~zb#qO@+KY0};Up9I|a$cd0=qz_B#rXi8FF}87iYW`q?@}-3;%u*cuD;jGqe|-DL z9W)U%xt|^-ZA94AS*}Xv2f%H{L6WqWA#(Y0iBiWddrl?l9!gOYCRhL;5ds6crJ5!4pJA*|@2`4oKpdnDTBh+HTe7 ztkD{}7QCUM7Gg{`A|sb*sEKKzP!byDkp?>xATyqc?Oj3jGwILr`3Q7#8|(vba@1-6 z2{pz}biO9}WeigvV?L@9MW-P)Xh-4Td?6&EGJ+uKKC9HfAZG-<5y8`k>>1~@=gy5R z-2q7nsO0>JmC&o&#{))+hCaU>dnUSiNo~pkXvV^`>83sLL~&684cibEgf}2$SEZBU zKn^;3h4#1Ux{TNq{gEg_oHuJh$au3$LBhB73oQQ2E4xyPmAa^dzZxb%&PQT7`q`HZ zMJvBgQJEd+G=AB1{ym*>+@=*t8Xhp?nfgPrD;$@HWR90NrJKR&JDy$vCUz%7Iu@9N zkVChTZ10#7tj&=hw@3FhUErz(Oft4P);lfD%8tGF>}u%kz|cCwYHriYtO4s5hLx}y z>B{o@8z`$sJ7rf^d-A7;m2lPj1-gQOwF|Wn7!q9ajn@}9(87IeiEU73m288G`41?& zpEF?ophctSBLh%d1pW>d=Nkhu-;1I^Qr5rgPSTT}G*F)M+{zDu#a%&)@&7VXBLWtl z=XqMoabJktxbUd@-`AN$U6kd5vii4@>=76iG zN|vIx@hG=m+qKLazH|xMNqGq7wf-@z+qk<{Ms zZ~Z+LL)h@l0>m4$rH;f}gCA6#QT#*IH-rtd(1y79a3_qRFF^AT#ekGFPjTL3GrtBR zXv28}BsO1;yHznTMUC#P8a8`rmQ=JCGI%_u`CZfiT;Eo*Qir}D@tnL@$H1x?f;LqgZWNzYw*;=e9vS;44YMxr_#WJN64n7!#xy)5H%oy*9!hoVW2haEdOf zbddv=tLdHq&eG(62BlbzIi&gdt?DC-OA-R%hoDYc>oZo*?`cukr=_&kg^xs{% zUas0}MzjPwr(KJaZPgz2n>ZEL3&G)kwuS^inu*B0fjg7h%()t<9YPDfdc3RXTxdZ{ zu~KW>JOBVYr4xzsxI50}?z3tIJwWtJ^6?;)um6s%+~HHupxnY=kji?m>1?$FhRLKv zp7xO!mMLVa8I2ukf5T6c0PHXI4-^1fvYRj5@?)Zuv-7hy5q$Iddmf+1 z_=CgP{->J>aVCSTmvQ_rz;9qHOS3ctXIIhwpn~tUnfe`^k-7O(qNA2d8QJvYWE3uG zhst;JhFuROGDwaX_UhT@Ah~fua3XLQXkEt+f0M!q#*tN78-qsTCiF0I{I6TsG!aZr zFoAY>eSB~JIc*k3kM{5SC&x#l?R93F4i#hwcbA$WJ7A9CQN{Rj2#s6@M3A_S8H*0a z+x>`RPm?n^j(>jIPtT%;I4IF&i#@i#Ot4ipQ+X_L6E441{EcB2D`MpZ!sWE!Ctxhq zZN~|h?tco`DJHzA$usgF=b6z3eOe6$I!S#IqF0-OU66h3_&WLi!zd;7y=UB$4N8v6 zW_qj>CLk>E$U@HROWJ#FRVa4Qj1b6zIr$9=92ZjY-^_u z(Hdf2VAbhpc=$2dp^FBLjA1uB&hBe38sz0fhM?cNDEz89_FvQ1WHC=0^sC)c_#ZxA z=029`ed4J2fMr?as$Zd%!2cRI{epw7fsN)=Of^Tpw`ZyUzhnDws4J|(U~cIu$J)2e zG8nyA^47FT(!e{E!M+oWAZBcgM1oD!QPM-z20sl=>;)N)RoQr`P4kW>6ccl|w5(5X zxJeDgrsI6_iL}9!J0;!C5$H!^q*NV&HUsgn6vLHWanNN6)@%V`iEnoxjcgb-XGDnd zW?&Hu6GGC9pG2Rr7(@0>cwKZ%ktk*b*yIrGXry=6g4)ARZ7{e8Xa}y`{fe$M<9bTH zg+ZNt2`r}G>B?^O2$CXonggs^`?~U_l_X<$f`JH;l!2Dk-SsO6S`_X^Q&8KTcvutw zbDe6Oq)QW&4VO>i5B+3;cu~US3cD};Y73PhZDxG$y9Jx}8Z<3CFzco6GwQN)EhYEE z(FeiH`mx(uD(2E)5nMeY4rjlSs@r2`>D+8$8J76o*V7WCbwq&7yeXvG4O?4`=+V)9 z9frQYW}U-k7hB?1r+I3sR(-r-CmLaxUZpcf0*JRt^kj{HPu#oU@a4J^mw^ zxUk^$DGA2=j)9RH>p9dIeGvKA%iV|U?-odp6q*MOsf>CrhDFQ~wi=?^tk?cJHa`3y zn_VyiWuTWh4xvvF+ZWRi1MrG>SVwO@e?3;>iDeakTj3F*&|YwL z!hnXgRre7l@ZT}qGOsoV11_q&KkT?=J=-Q_Gw%tx{v&OgrSO)wCpfU@~4acyb_rt8L0GH{adX z){RlI*f9SuhVCz@HD#k|iCgT%x)-vARY#+|tx|4{cyk4cF$F+ahFh;Ifb!?phA zEJ#Tmk4cznOjZ6Q4yA5wj;6Ajo>J-zweWJ*0+P&y%Ev!2CBsO?651B5R!CAroehC) zw?q?)Q@p@lAX^RP^I-w*WCzZ2<%qGi8%p;!7INNXb3DPS;@oadY38Gt<~Y+4e$7q! zc9e@xts6RD-NiL*=j94FOyG3x4Dd z;ymNZ_NiHP(g_G%>tBsNsx=%g~#<5VA+3s7l(9xQ#x4)aC_&uqKf#X zPQ%x2{oDwo$HW-LDzYItZrUEV0*U?iw?iAAoTn*^cNcfsyaNLZ0}ws{%$Tv*%ob2j zr;!xf08{81A|YJ-$Alsn%P0%y4JEL7)tyRvvfu{R^Gdipgu-;_|imG8sbzj-V%^r`jjnuWHZZkOOZGd%%?N`Rj<#;A6a&++1RQ^7rSh_ z<@evkd|D`;4T09*`A8t7*ALPd?6{vfApZN0VTZ#?@17cSOq!#nUfq7*jPf_m<|?V9X|ry zf>CNo*lfybvKFm5%ts14{4JD2bNDfM=37G&-u7>dh5mF3Y)+MUthY+E8}EI(q(%m0 z&D0R7{(<9&5gWy)4cg7ozzEzpdPiM9mmD|nfrQwOqSi`UxTw!FLDbB#1+s-mhitAyu5Ussz3?+^M1O7A*Fi zh(8G+b?gUo%y-(@dUUmTjzjk5Q#x!%$HhRSx`(#J>uDLMv-LI5{F$iFEZwhZjjZ4;R7aMqrVMRYF)PQNZjPF7G%0#w#LuWd5Y@)l^ zS$Ct)XT;QcAj!>&?VPDuXQ6%iW$MXHg+AYjAk%7E*nBehLTj~2P>=)_3b&AHsn2j& zSPT#_`<*AsBB;k5F0yd5O)u!nDoZ0+`W6puC)%QW8JhvCMXygykE{g=$S6T_W>C}% zRh8ipul|_IQgfIujWY{&-hccc4V8ZxAiMi64JS1D=K6=9xU_hp2|9 z6$i0}uwnpFTPZT>5$RUtMu#Lbugzc^u3M6ViM zn50{FIZH@i{Tx1#Vmy$5qHj(NqOT~T9p)fp7pZ&FVZHqbjy_+*2-%v=^hbl*y9MQy zHAr!)i#<}dH`w1XVya))y8VlLD#v(g#r+mZND0(h6f;t5c5bC1T^VmT-f;Iej}<;j zOCEQ5h7eQqqf_$jJ@wq}_9jnR=jAYqpr(7#`RIgN-`CXYa?seL?V3;IR04k{zdkqq z^X8(`o8zS8Z4kN*Cr;!L4kF;!c#zgn=ap1%%WR^5R}lsknRp-{htTCbMtYWjGW~Px z-Wa{YFE`k3V~tj*tYxxGY(cUR7tLc!$Dmd8d6?a5E z%Hta4#CE0q-MSNza@J%Gx*9&BQrIqR>bqgq)}708p)I{uI@EaCI_lMVzGne2uGzA@ z0+KlH&7N3pm<-Hh8@tgTGY6#~sy9r6v?d8i4{9UV^M?r)(Qf)$|K{gm)MM5bw*cH% zFL?ZG1$JdCSo zi{!afm+tD{4KIYLtrubYCl{%b?Z;fhqIL6S;F*?j#YO6nTlRNwAk7npg0L-#@BV#; z4^XcB09dw&!U{>#veFcycbp_6!nTtsCRHY$$cq-?h`Z+W0fix22mpwcw(byCF(VZm zRtMCH0?#HrkwP&et_w^c#IK~e4s>5l7W8L456=hSz*c98zn9`he&0Cu&(Q|r_8OiM=6C~ zmrYO6Du{B+-D2k+&*ZF|>4cJQ0ru8f?7zCp0ifSqEF2QUcnEW{eK%D|N(O;7C}6H{ zRLb<4XD)@UmbW42F3&J^+%l^)x0jFgq-`$;zW{Exw37|0Xvt5Qp)C$=^(0mw$qwwx z_zCfFD2$vyR$LwAII+G-Fg<)#(+B_)Dzhh%^i{o)^XF3n$!z}l!4tqsSrv*Q_MoTc zmpl_*L4038g18^@XlueFLgg88P4`wCtEDDEg_V9crb2ARqPoOZkn{a0DfiE?n*I{s zZC#zEMGm)dzPjA2{Aep!W>jFkah-CN`=&0Qp@8Dq#ZFCbFcC!~ZttKb0d8hT4!*b% zdTdI8U24$W6GOVg9a(LHH zis^BqFx%3%9IAOMXl4e4G7XHubbI?U^jNr8*$A$FNEas;wUf~u&o)AjX2cTXo41Wc z2@mng2>BRZwPRNPDyceoCXLjOX-jd96WZHC3?JTl9g(j;d{;8Ggl8B-+7FAwAh&%c ze)2i9)c#!ij-oO$lUxk<4T1&$lZ(ZJC>XD?XLF_)&Z)%Qej#n8Vv~3ji`oM8I*`H6 z*U+K1N+)ViYf-oM=GBP7w*{MLI~~=P0Fw0Q?yoZ`7{6B>0foMhg^Bi{aPXqPwMN;D z-!?3L&-_>|92rR5`7aaYDv=YK-A1D)$dw6WZa*{D@=K7y5OWKY-xu@NI z<7%^i$~FjztK73@d_Js9SK4F`&P;QrOX7D#hiru;iJe9lUrHdoS#cz^&2;34h{?3P zi{YtTxc6Ln5z)J~jF?O?=I}tD8Af;yJF1hVslWKf(gvIFHymu%ON1%E?XJI728Ti2 z2@C5l0pUNhikjQ+pG7zHNhyk=lwrmmHhivsItW=XDnkZMvR%u>(+oh?Jc&T!H(0}H z4r}E39p8o~TTu8GG+JMDm&321I>%cupXE^d7;3KQ%HX8tq5)jUKMGl(uuM7t%1Fp) z=@>1gYvrnKY56|X4O_c@_X2UJ(+9^$p--jba|sqi(|yhRP6m}@98&(AeVa-xgwBG2 z3Q+yi#7`6&iRlO*e$j_4l^QuRKzY+N`z1KM5fvVSeaV3TC`jMyk2;AcGf}31u+FTf z6-fSjqmrKrVCi)w3UdGXzBDn3nx@MZUi|GTs4Fym@de@i7NW9e=P@~vOCpRcge*=I zoG%o&{*4mD$Wm3xn@D0Us`>KCFN6Tyx%Db%By<0dP?PK@%2=_QsQQw1U?ll|_lI>> z!erB2sZncLuUK#}XpjqJIdXj8zX%TLi>GRhgiu;lY$JRM=BGX0(`Kpf(F8zBUb0@= z5WO>Xs4bqHH+;*o%_wnsSCwWW7-DQ=bs$4%bpcw?g*21NB*nPmv^$8^SI}u zGw*kqWeH}^Ha~4g0A+lT136;Ql zfQ8OpYGIfBd898iZsKEmM@-;NLoqc)9XseTNr{&(a`xnCU!UJgy3yC*u7N)o;4xvr zZtx^gzn5m!`68O1$8ok1C&r73Zs)A8-_?Aub9;b2)v&V8mMa@Dul94`Gz9_QWP!B? zS$?rEr=0`|$$=V zw*3c255TNj(Vt~Ea$rsS)EkGtaij5H*fZ+1Q|!-Vjc74S&;mKlRp>+);NesQ22+$8 zd0*%Mlm0;+euRU_Au1Lorn7zAGF%}Wjz%8UAMIoYdHM4$lQ%hM}>lc*iCb=K4_ z64k$h5}El9eC`waCoUFRQ|R4ugk7h^XccCI&60+1oEVAJ?Q1IjqrW4$J~5L6<^)El znE6VQEURY$*@yhZkTwW6qkx3Ly-)r-!R6^ZNx};I_C8jJl^Qln?6jC!0Rs&uoRL(* zra-L67(4-BOYLiDyZxCOOU4L*1IKXd=3n(l!c#MZMJ?%yTlEMY`0ds7K(nv>1xOGz z2f{VZ!w8wtES72Bdp80ha=So4_$1V;q&5_~Sf4O>c$lDTNU?E++~jehb`AQxHqJU% zK`6j#W1V0d7+=ZVH`R%P-QdSrwC^0n+u*irQwa8)dChh~y_{x?gj ziz3kaN&uoES)1R!!+xqoo4HU^tQ>GJZE!I%yh3gdRTG5h|iKmfNAbE8i80s#=VdsRx3M!K;f+&clxa^S zGbAKGIkH=1344;YavNl1Oz(kx*bD&aN~DbRHWl;x4fm?=!8gG)^~*Ig@Dn^+QHu(H z?xhut;c7N&17e&aSP)}?t~LkHw5Yu|D!2Qz#S9JBcdkB+ivYTD^cVS0v|u;X+N-n? z&432H(WnsGyuj`q>53MIay{sv{C8c|5L6rW@L8*>5GXV?ZBJBtb=JziPt+0sJXJjQ z0j+%FaCn4&lncti8#SER5rPpN*nK)rM4GU$&>0G|-qT2_qr}it$?_{-9>;}7X(F`_{~6}+KY9NRoUj2~xy?et6vIHW z9zI^X4KuL|@J^nMAAPXg)Z%jouRT)MH7e26ymv|&OD;^4fXkRM^CE$Y?`4vgc?810 zjT%EUnLg{_hZ|8moJQRqgM8LN@cHusx9jKDuid7amS#c6OWLQ1o6mW}4l{-8mdDZ2 z)jEAs`C)Fkbgh*v-_dZ)?=XO|zCJ+83?2IIOk)&Y*@T=<@E+wZVhW~}VT zp&HC}J8Bjt6%w5RCh_dkfSvSHEsG5G7Fk;m;_dy#k9k_U;x$+Vj)(X-0W*PAV}Vmq zcZ$EnKZ%C$TwzbOK{#I82*0>OZ_<8)XoSkpr}hb`$%j>R692e+R6P5rp%uJ>%o=aNRH%h zf3m7W4;8D})>4Pw4A^w zOVx|}<$h+XgJS1O-Pxic_!mr7d3~;K7?;l$4|N8DI9c3#bq~0gM$O$-2YTL=%=Ab> zl$$R|+ZwgT88UK~yschupaJb+82zzv-9wpoe&E^w|C6Q2{ojrPJ|TrO`_jIH1{n78a@4VOpnRxHFxXTq zA9>xTj4tT)*HEVa`?_XF(m|r$gW0qFMNZwOP#Rn2J|_(D{@#u5=&m(i4K+Qoi`JgP zr7aVLJ%(^-uj+|=B7~oA|kzO-+}Ir0~-o1^v2H*hM} zA+s1_HMrA-nOeb@7V_Dye_V;NFGaOozqF&Zi37&`r9K3p6M!S~7hhr&n(Wj%N`n8o zM2vZep-MlLGQqdvjrZni+{K9zTq0R|MF?}cAZ!DM)Iyf^D?2u{C_}goAOF| znMQaLy`^Cy^>}G-8u^CX>FFF>#|3i?fmwk@7ruoRh|ksR$CfQjc=uhF@8P7I3gh16t;K@4Bo8cw0ReQAEUda5R_taf;3B$bvHUJQ^Xv^Z z0?u>Jky>Ct>f)JIeD&$0k z0a=3bg>!`$mQ0rBOGP9%l3&|TL`O<*$L4P=oLOQSnxjiRLc1aRf5xtfobIds;o)e~ zErWobDU{`|Ne2C1$DR{CeS=GV2cmFpQC+qCfptL(nvoj)C@JcbeZ`M5ep-?f-0TQd zh}mevVn^2gs*+X~NB+Sx41dMch9U3)c56s%>i9p=SZ4eln5{_88M^hzktvk*m6i`X z>n;rM8Nalceu3mG$m55feav&wU6^hUc;G)3Lk1f$BNk)G&*PE`5qTls#`+f|uT$|i z(%J*pTJwuJ;F*WFOwITy1#|aF<(9Sb81%h?+z6-GZ-Wp(LAR4Qg;kn2iiFqmajFD7dn6ZP z9jW~y;{id>so6bgRNsV&?=XWcyy#>MK(#2U_#HvjF_d!-&|{8IK`t`EuDisoX}CfQ zTww3k3GMep=q8GRiUo7Jc^LZGQ>*^vYQ3b;OX36OTxVFKTL4<%PsrSbV{7z#>c}^C zuI9lHdF_Ks=~@o!Vp3{#$m2I7rz`g&$;iGtV70NGA%sBaXJHu(WVLHm-J-!gT}PSf z9p2ye0-yR!!f>)3e{YkR4CV`_cCLx`jCVY6+iD!EpSj+$^g$IJG7pNBTr3!f`)rph zh6@@L>mUcZoWcp$zzlb-i10zSz`(?i7Fw?0f{Jgn*utXM+B(5d8nT`{C|!c| zNHb=F;x`$W%)fzZD)v6qUSfY$7lmqG$Hac`4NhAKHoI$3$qZx7Di)O^Ub-a-;}dmp z1^?@fLEc?9Rmn{L%Ou(McESh#)WWu1|62fv#`|`kFJi^uZVmnTtP|A^o*apGZETTh zcUCF?caWu29StD)e?Sr7K;D9lxS4PPDMuh$KHgQXcqlM5$x%|jlLM+3vv*!|frFn{ zBKt6jAwevHi(BMZA7&L=lZt9=pKA<4KuMe`02$VGs0*F^?t z^h;AV=o_ewF1S;~Z{VJ9Ocopk5}nAlI?DJ;#Nt8%q#8-^21%~U+e3n99H_A&+Ote(GOUrbe{ zT+Uvh7q_=t_tX#Bg;VWBm4+=0hF3ruB9s3!9nsBnhkzN+(p|Wg3?_Ur4?{VF4cf4- zw-_KDR#)k3l@CN*`fv%XZJxuwHkzowl`b+oC(j+0b$SkBQ6=HdHw z5sdbCdR_Q^({>8vNw8!si9;_M9JOF+j{)n$a87t!alS+)?RO8DCicNhCSDiS4$II8 zuZbc&#||G?S17?G2IVYlB!E1j0VbCu2Y$a1s!F1^1lyxdkHz6&Rcs77vzvwht4tIkDu1? zi+Q_Wf0Aiacx5oT#0*&_+gmwV%6@MUI)UIJr&Yr-7N!V8!4u@{**r?*SyMjp&=haffH;*j>$2PfW z{_rrKq4w6b%_0XkxOt^tS^pVS?4O%tXD9F@+L0N+f4n(DzxRs4*{~qp-DWv6LeXZ4F=MO{-K$T1r<0&-vC*!Sg^fOrtM$ zAo}~9=ZG8kDL=$nzz#mmmRZI_3HNp@nqy(~r}$ZMpARC&iqu0hY1zW;z{6%cXBNH& zvwZSs-rd~@u>F8pH@P$H=0puDPU*IWB!&pMBeQc zd}sdY3cIlc_y?PCp!pM? zv=d)-q2!S;eNH)XQOVfc7f-LHa$2*wX8M3* z(HX@3Aery~daG|+h1aK<+;Tq($+fv(`wx&ayt&~oViB^zzqY6a9>xY4gXD<&X9-6Zm!D`fNTAJ@mb zk20nrFX&k-kl^P*$fdX0>Syl!# zqEeLL6=2V#{@p>6wx+ZZP>xzNK(ok~^!61GuqvPUS-z2vul}?67_YbqrU^=3o?B~E zEmlqDc%xoJ3cojl?C#Bhs=6{FI|oZCqYv3}0*AU~-ZNBYGU;L(i9V~xOWmc@_ zv++e}E-FTy^D44BCv>DXE3u|4j({Sf*419HQ@n*6AfX3pysQS1;(JrO{ z2EV~m0oWw@eE|oLB8bmLLov1REGz+-!0<#lWw89ryI&rdyVd z+8%9|ow0qApUSbxe>E7`QU^K?+VEVFShVh~KGCpSL7#I#gj0%ngM4^w{W;11nQCl7 zi2&68K(F@#>LKImgfXgna@c^kP&aO(1OHvD0R7uhbQd+CP-25aWLM*y_(ScR2RLwe zLf0u*oMLH$lW4A*J5?igg!t**CBafA^{~>hhT-&?R&_(<0yHWbFM-(!*`zMfU!QWLJr2R3u7puQaK{ACf_iH)8 z;qEL|oI3{}zzw=Bix%CO5Jq;{DrUXzRpQaZVnCB$>APP3lEQ4f*BvbqW2+8DT$;O8 z`S?iszC*$K!9^YQCMctrNx1pgc}e2OE3V3yHWZf^JxUjoKA1d6I-)gusRrJEVj(-2GM8dV z(9yEH#Xy5jJRM869Sn31m4swmG1&KSw!Bm~@j_4z&gJVBZag@Y$Rj1?m~U9RXQPPQ zX!RXPuG?nk{_UPKp4hn0ji@Furyuaes>~~UXmrc?Sxx(;j$*L0+zxs{7U(MG*HIjv zw&bI3NIPaTw@a~|>A%ag90zdB{x0Z=>0>R`w<5ag)Me0?_O;5=GuPkdZ7oEID ztr$1e*w@LJppKJ7o&HU2^W~V8f#ET+w8O4+-*c2$(nHWzKD9#w%6&G|dS(T=6D21I z*H1Tvrg=)?U^Qp)DFFW2U#20QhS}Ltg`&S%wD|1Y&FoB@IXP{w%WV3J%Ids%6)8fD zCwB#)m{a6+pX5`HgnnM-0Q=(t@CZ&-R2Y|8P?;X=l{#GjfD3_PG5WMaw+tdGKW5=G`x zEO!%cF9?b5aK4JHl&SMn!f%&HudAS`t-y7 zP*X|cI29{7*%oH+7@Z$b>EG$1(I|AuCV7)z0JX5!OMlc?v*?K&Ad`F(>UhAFI+k7- zUjc3A?K}kui01_Uc_{k|#UI9_gl(q18IGmW9LHpMGC`0v-4edfW5fYM%4Xp2qGRWG zo>Vbb+QGCiYAE|K$RFr+^Aiuge6JN}x19iQ8$Yn#V3Q{x)Oo;ub_a+AXWzp{sIS(H zH95r8b>g%}ta<;d1>_ayaK|IHhT_BS9}}(u1(%bU@1GOH;R>M)x~+(-=`jajymA`)c13zl>_!INN)bGeh)2 z!a36$C;8R^m+TOZ<}aHWs_n)!WAC#)$t1m8O0DR1wt>azBVrT0EA(J2oE52W$zdib zEBVZ*6XCTqDcbMPT5LQ8&$?vxPUhmLH=^e5Illr=?ZFTBQRsSn z3J&(hA(w}$v5T$h4dwHw1oo#6eS#Hx6vHoQCD%Cf*%#(~T31^HapmcvgLgG4Syv0* z7qF8@@o`(%7@kSe8A$fttlqwi>_QKA)chG>u_va?KQv=4o*TnT@a!E0l&_(LW;sf# z7S}KptU;DS#L6JBCRLM;x^kHhbZl!luQ7h7>O+g=7=+QesMD%05$ayMtRs4Ia`my3 zZW!eE%0(P~W}$BX)*opOTM7t3?)z<U6H#+noEMec=`c|cvrM8*r6?q~@2>WCquBu%b8GX| z$>W#d%f)CiI!mQJjLgOv*Tmc&*xI-8^M~ccdizw!WAWF9aZn?6tdL_NyC0xhX|SEc z%=$&o4j9I1v#!wh+LJM`MswnbbSXALf2x(|H1!FYb4Fgoxr*{`GEE;m7?Wx%dzQ}0 zdLSsY#+5e}WoTDK@dSc2?T%A9Y;Z`@Ss7yhdVf~zK98uRgKaMdT{%M!Z&T}zvRhSs z=nFqN)V9c56x&8kt4(3_oU!-)C)ZH0_q;Hz1S{Z&98dlu2XtW(F&f*}#cBbs=WlpP zTMJKqPUS34NxnC*rStirV8VQ=Vk>w5&|r8Ikw=vzcYGtLpV3$iz_^+ZFFan%>`@HJ_!OHg7v&QCgK&5Ibj~j@c~;p!su*c9r#s) z?Ef)!^aP`LDHplBJh%&;wMq5>_mPn+;O%VVqO&sr3R&@gW%@&lJ}R&_4GkJGhXV{E zKUF)yJ5M(}qvtZ@i7h>BHBGnVoVT@Yu}{^;?#<-);LkM00d`ek8e(7d^gOkI;#K;c zK3;Ft6mHSD$To*;-F(*8H(!n5TH9ua1`IewGnAk$4~n zvay4Ld*B9jfE$yLRZ*U}(4*BHjC5ZXiO|z$^Q7QG4>;N&%4%2HTgKX%tUEE$ZLmM} z#i-3+E`r$ZrJ8XKQv(d zq%UT%cm;0Hs}{~rN;nzad*pvo)U|fg$8)xFb~q?SXz^<=2BH&&-2%ROT{7B^n8HYlCw!ase2_3wtg25akle({#+jk%8rH+#1bj9U8Ti zq3>Yh9PQZI=j5tJ=P7nS!&8(7iE@GonBUO}6f>B0S%IWWggKg<5!{e5c0iHe^30KK z32(ygXM*3beLJ1Hk1-EEA1m7C(j__gj#IqYabkubyL;8WcTB^(|J@5}w2SKOoC8{t zm1SrEbRDn2duLC7NaNa_= z{o%%E35l?~$N7y+XdVOvMoBSFGYx0sKk9gX+mKN1jZFTp@p(~WrkohpBmz59rp)F~ zAFz|nFn`*jR{=Wg8w4N8-i|N7j8g{&#KlHf9RWTa;N+@f$RF`8se;M=`;$gKq%a+s z!Kx(Lq{Y?mS0L&n@^d?!$QJQF(dja|cAs6?Ql7&2fw(4D+vh9eHyS&ZOAnWxK!K6pLt(tc8t*eAwoF|B4( zp>fG>)V>w?Dxqis^0W{I1iLww==E zPNGkj)n52Z6NOQ9(&7MZc|5Qc2nGbMryvdQ2e>F57Bw1r3$oX{L6Di3e_w+_&|~;$ zg`xnrSdYY|MzR-~s{3w!jL9x{SpMN`NET(s%IkX;>ChNQ!5aB}^W;w(U_Z#@C<#3Q zUE3V*B4Cn^qn27$6z=1K^V(#b;-g0Ug)sd160795{-8CgaW5rwSwQFwT~Or9eAUoy zO_scWWgI%j70)6a5^C1&OglES`Ze`#eJQ&s6TE0&Xas=nJW-8Mb9f@Z|{!`fb` zPx>V)z>{6EG%fo`0~D)?4176fNd3oD5ImzwpDS*0lwvsqqnYD3et zWb?($I85Ugj$>`GD68Vu#Y}Q3!f+;F|*OdQ91#Ltu5K4am~|lEsQLZoMQ%N+23kuv@D&t`-){ zcq9iL3PCE(5^Lz6qYpruaMRz{bux6~o7k8u9V4^D^nG~{StyfTCLGu&cgG^=u(lw@ z=4*_ForhXil}p^zN@ic5ZX0HVh((c!Ej2u7d2(M&L!1r@=jk9ZcFqA3@1j(eJsJ30!vLa*(RG@(%#& zXXb3jJ3YLJZXaH6Q6%};un%fQb4TTu9mTi=EySgz=I>@6Ul;H<8JH*J$%Ah2F+l)X z8h`JQa!6NbVKahUSRJRc)KeoIqlN7u+6Ji{ zpZ$cYQpMN^mD^n@THwp8`P~;wUL@l8GDHmk@|*76*JFnTxk;y6FGSG$j;jdB-|j_% zmkw98Xa3|7;)ba3ph*SEbmcysN#K-Fm2ES79x4W~+oQ zVNqs|B{<6mqp{6`1xCeiej9jpTR|@m0P6jhT#1WAbQvi%GhN10& z1iOnM^F8ey*eRI4#qnEJ`*{tC@XO$~9qVcVa}*JO9){rvC5E`kfEGG}6hH*UY$eN! zwP#zuVH;ta18b#f4*np`&s|@!^?GmHkGqe3>vl@XkGp6{JT55_0%-Zq=HkP$0W9A` z$>=BHQZL363zN)+=2%Rer^FA%jhMkGT177G97M#)L49sKU9>%3Ix{bZNSt%lH^k8b z|EiWt8>maq^}TqV=y3g7wQTlv?B1=xVcAi>WTV}66ZKlTkoY{=p79uSqs3IHpO$iZx^lM` z*0x~z;xz|R7}DEWUr#`_JN59d@3ZH{W(iBSO~;2_4Qop09XcE~w?q`1pd<;kSkZxC z7rrhu2EC9_r<|>$7No2vLpVfg9~qpYUF*3B7HO7#z@}%lQA5`giWa57(w9df44uZAdb2;<{%l7U3<5dtUr1cCA?-+WHC;j29>1RAZp$AvMi5{!CH!`f zxpA^lvQeZNmz&C^q+s#j8Q^4=Z^@<}%>+PJjLFazmT#O{-MMr~=wGemR7_O>qhY|1*_U2X_>UPI1NXuu%m7!k>`ICjRJ+4Uz_#oT!l9OgyN7U0(TVZSV zt}LyuWz6G`plV2%hKwSCh`pxT`k7gz-G%%5HoQIhK5voZ2>RSWh%W}*=$sr?8yJf* zb8SNm+yk;YCp~^Wz{3^=qArf>koK>?H>mtf-H2xWMM~ zE!&+}P-}clH&fpt%3nSm`d6VXIVAGvli6=HK0E080j-pDd9c7Dt0{LtWPShYpP3aeJrlTG_4$5VYrdA zg5F?Y11^p=ssjPynmT!nT{4P3!_mGF@V9yrA|J1!66|>aJL;B5I~4J(w zypSaY?}ry7(&8uk%ztyyWO^Bi0`cB&EHQUM#_P{p)XLs57iOQIh)KL@IP~AvZi&rRVHq0V zFi^OH9SAn*-E!J6{&q*Wei<-`yneZdwkwi-^ZnkEW8j3xKJC!JXzCd9?0&%mzmXa= z?!0b#T;T4kZ&7oaSc9+evrP#5l^}n$A=BmpEKt(uD6-Jk9$+rPRzZL{Z9h+& z%+~L42cy|RKmYss7X)EMKU@zqkU1mB!;?JoRnU;4jtHKKAN<@m_wJt8Yt0`?7?ei8rSC3g!)Mm!wnS?x-A5_7f=h_Kv5Z{9AQjN zFi8-pSc4lE2fCw&MZ@7AW+#pvaC!E!$`b~)Z$@Cm?7>w_JbAZ&@_2y!3w4X2Ll({e zjvb&ZO0PmAo_$M~Ha!^j12dn>8Lc*ubzZe=H|^I<-Ch+?7$2oY_$cJu zU%Lb?5^$jv0X*UVYWY|$J^+eD@v?%}9&>1SJo-1QvkdP_>hp?5^;n#39rtzF@08gt z<8vw=WqRuIDi4_hEoTGO-Xd@vpxA`rL!de9sYg@xz)+4NzcII#Ft&~g?n56zuw#=t zuJI#nL&gEd9w(k+Xy};LwSS(3%ft%2Vr?4Nh5JtgqbNC)NdN6`*i_5sn1+*Ef0Tkc zrsYL_NPcMHvRG4OTS|K-1_jYC{p6Tpk9gs40}>MUG)5%Twzi)1L$DS9#JAB`TS)xe zD$a%=o+2sB83-6z+UkwFV-`nPpIQF9jvV&+EQou7o|8agk^h?K6 zK`l|^ys5!PJOJeL-p$<%8&-zSJX}td%i2Jznh;HPGVV#EfzN*X>^C;daey5OC2}qs zQ&orS8h&t_i&aK-mW!aiQDTb@C9c)&@w<w%L zsLiB3M}@8O#%vCX!5^R9H+;xs6?|IanfA0pGjKV3xANpP<&AliB-_8jjU&y4?S_y- zXzRm7G;-{os`V?@Chy$@TQu;8ywDDrSwom;9DeBp^eYDX5?2JBw9v&Ac|v1axvmLv zqj+x|9@!HCF!C8j zX&9f4s)?RpK03r=MpB&+|!fd2nCjE|2~hQmqYKh}0%Kpi;ljs@Kh!8O>dVNyZiyK&g~zwi6$` za9o|><4pqEj)Rbf$w~?w)PI=O6imG!8Hb_B?4}Ak*v>dB<#l-5i~WIb{t;U64M@w9 z(OSk4hH{BEC2WVEfQiSj3NHipieYqdb2tz&Lk@l1rgt!tvy!noQMuYV!^0L4T< zt{@bJ9|5WB#oSw!JE5&W3SB2+BDaBYg)JB@A*&sdJ`V7%aW^#uEi|QeB})G_JpR>D z&$qu)EFM?B%7%`$Qsu_w0PlzXA@w&K3QAYXcJ->zd{Xmd%&Qh%=v~7ECOraEzgdrp z?mn19r$ltK&vV(p9VQN(KfZHmQNcRFobYWq#~NaoU?o4wWIgXeQI3@(l`(gWPd-px z^tQD3^{}q|MkzzVf3&e0-aOh}kw9fx@#+NkFJ|rnKMS4B@0k`xa8UASrEana^jo!b z%j%z{{jw^3E8t6w>a1zD62Th-1xZWb6{1aM>%37jfNzkYqAbvkK0>k&lEwE!9+y%^ zw6xGBHXh$0HrDXMDY}uMu~Hl6qZVcvw232i-}vQ1h*OIFxc>~c7rW$d z915j*o-}jN&psg?sK;?z2qQW<$OTp;=o&a3Gf&z}J$=4waIUrz-OZs>pAS#$LV>Nx zz29c6_KSCu%MxDc9u&xSL-QB)`*#NM+E6zU6`Zs?iHJrxY9SrsCdW#lEq7OW-WYmZ zk8FQ^0P!zKuXJWVw(vzS{N;6>JYtAj4@^lWC>=69?2PYuej`2)I#_Y}>X@VI-r(pm zJ%0F2Zb&yDL3~zSSybJM?tu;wvhdF&9FeM(;2=11nwxZO(8r+m&2pq5DG zbB9CVj{P{Q>=!Y4-=lNHPlO4*akCxWd(gDb z(F*h{)(YLz!>-J0!W>kh7e^p>#bE=el0eaLnEPL!2#vz$H1pR00OOZf5Ff4&QN%@T zBC5m;6z^WmWO0SW@=PFv%LK*mL<}lxMczd6hwrz^Kbc)8G3jHDetB0zV@P9}dO=B- zIfvc&(p@*Wwc8mn98ip5GJz-BQew@MY7jYOxq`yexsU>aMZi<&7yb{axqI?Z!PeaG zJnb^b^1_e#PXsXD4q=eui^;zSad=U5db?t#J?|wDp~31MhVSQ z8aSSbSYNNI*1HCz{H^dL3zfForEy49l6f>xMgIiv1pqr?9{Us*@(GX>7_sCxR}^gkBaQ^ zc56Hbg%I8T-Iixm)X%92e?M>EZE=D=Iov%P`LK9g-E7U@T{nxN8_ijRjVT_;8`o2# zdtVNkSg61~7xI8sm-N9$V6`wubX*1YtdT^f%v9*iGccf<+ZlUZE2{n)kKN=?8vCz< z;od=&#AzQzaxLWJ(h(o38{*a2DUN@v#59Svea^pW`g+czGVea-DRlqW&)6ruk&{23 zpvB0o>_SdeqWy#(b7nmbJI%SIq$4iv_^3I8Py8y^bXk98Q3Gy}^tWxxO(3p@>uDh4 zye{d%iD(TAXoD_6?7{%|OBlei25ar`b`x;7(e1XmQHluqS}`sIl>bH^FBc24B*|R% zDA^Nvry#mL)oDP+UH^%2dMhiX32{W#Gi3z5EbBObAiqd zJ1Rz`nc~P@#jN(fk6-zG)eT1szFqThybuxphI2a3@2Le)p;Gwa5>-fpDV>-tf=gqd z-%n-TR?|!^dpXb?b$)(~pJfh+jv|JZh{soEbG9dm#b#MVi|)nfNn_%c{_}HVVPizs z&f$(ky5?b}z`f#7dVZSdtRsqxq4%V5G6ZjC9(Gz%+U&Wq%5x>R|K{7PAVN&E#ot;k z3uEzG*?+;Ql#iw?0)~TvZAiPwXgDK7@b|w=R3rV0EPG+O)ubKs$&4P3{{DG!uMeXK zh!QKKYvZx(s92~v3Z(@C=Q{+=o*3kW)MI3D&}wsP20@a$gmB7OEAXbAVq`j}vOs-C zEh>|&+fVT;Nk1Erq$`@zLGjr_W6v7!<1I@g2*%qE1v!rr! zNCbiQlTah-s}fI#JQN9PGzAc;__sZ@h_-vr)=BQH-y%;6O62teLBJZ-n+(wy!vVpK zLoIBhshjB1%srd3=MIJO2pPhO2rnN$AzO@inMC;Zk=&7YIm<=t^8cduZ)yo$v6ByS z(6}q)IJ(HmWQsw%fH-N|G+MWe;3!fkt63u|D9#Ol*@r({OCMKHg7>cn8D&~XSzDWy zYtQq5FDkY~vc=gDYJK4LE0!yMzl$C=#dw|r+~;9(tDxJx@jZQE+iU2c!Qvt^mV=y_ zk*(>V@1AJxFY!TMQeN46+EWc_MPQ2dL7L#08~AN5dw4lA z4u)x2(*&K_+7wd#DTr`jjVKp`kB!&n0Ky4DzhA&a#H4ObJmn(}9mDSNK(2?QCoo}W zxD&6#oX`NtPyO?u$spUO!!0!My+7WWN(RJ>oSZ}qVJhZNd9^GP&L(|Iw2S?`+b|3E z9%!(?JBpu}04L{{MooVETiv7y0ZS#`ud(ZSa;wWLKHbT}1C&L3eq_#0r8(`vw7OP^ z#+&|dgOo%>WyQ{H8VG+Hl0$P%r?+;=g@>;J8B*g0BUaO{U_bU@6!|T@9je>sheqIH6oYt~|Hg6)i;SS&Ol-oZ{Qhubonw?( zOF|wn@BxtX3;yA+nM5w{ca~gm+bUiS2#&zw!E+Tu6YHC{R3uPv zx#b#jz!uS-Zk@N({Y+MWF)B-$l2{n z(0BJ%VCkXoauGmOfOVw|{b8^gNHdd)7vXREWc%bjktM#tjOypL5u4*y9 z&L;rt+ONX@82n*^uOD^VD^f}Z33_6jaTG{3GsEFKVjW8YpUow|SK7{j>D2T6=8}{oK7@0#449>&3VF@2g2P7voee2*OgbO=C)9O!HmAhsmJPr1Cf>& zdml?7F@cdMK@)a$8>nu|v&><=5jzlzE`$u3_dB$4b$kB$^5#kXQ zH>+wZTq&EP8f~l6$?~^JR*`Cph>f8%d|D8gP{ma{SvMatZ_G=MPE~%qcUo@Xm5t&mx>Cwd zxJSt`%k1}G*M_N?J8aU~%ZjRiqXb<}a%gtknI+nd0h;E-iJgOtS&LL3lXHorUu{)Q z&q0xVpCCa$gp&6t;chddk5IOLC)a{-0o>jIY9^2(`!y$l#^R@eg+v27hD=$8Bh!R? z+}32%7;KJ3i4jPAr2z21@F>G@G;y1nMA!>E6xWjYARiZylPB~p;961jf3+2S^B^sm zFK8LJ(!^*vR_xnY5xjd6-!ez=QuFlU`&wi{BC^l;M*FYQw(Hy?l)2TeJK84mc@!!B z+IV;)J0fc~=KB~=Nu9jA&VjebDWPF&pp(nB|5a}K*tdPGY?4ftoPWjabqV_S!|PqT zsa2KMQ7p=Q2{sp+oe4&)_crzl`^wa~#R26G@@FAM;BFlVkQ2Yy)1Af%&rLDq+*efv zu&(WhJ5efARpqk_+Pqs+((e8yS5e=z+<@YhxF_S$qD9*QhW4nWVc+j6UcjS5AUS+U z?D0^&FNJs5VNG>tQq~btL`{b-XVt;)9-;AIYWjXQb+D4{9bIPbUW7gMLzsAaVJqKD zmmb1-7d@$ruq5p;%JUr3m{6$rXu@Sq$7d5X^2gcHLb#E~&z2wFO5@#AL8s-4++3lh zIC3>~?g$kg(Biji$;6^GLf<1PUKqa?|5peDCidg?Z6wI+>E|%V%nvgkO2wJ31>JLT zoh#+&Iw7e!SNx7k5So6!bNC(;VZH9u3>FWbB3Zno!7A3p=!~}{9u@LrhPN<*lJH%) z3UHZU4UnZ*3U->%(&eFS)4BY7n>zN$b^$*DtZ(PUitm0*Y zk#6yMhZhvdot!9|Yzzd})~``^w_YTUNotHGL@I=+_B!VxoEHZ*Z*KFB+fEBz~pyM!FrE3lHy}W2X%`{r@0+K8@2e>0LyJ%9(=+ycqE<(VHbj zWk5i?je7X}V?8IZ$o|%%Ji&G0h;+??j2ao09`AUcKq%ll4Q$K|Hd3TIFFAC@#a?7_ zmq4H#&f>)MtQP-?LQHpkni>lsoZ1f80s8))nQet- z-KjnJj>rx~5G+i8s&$KvI!D4vDc{nJuJ2)mKF(Xrkeu?)>|&*CI+|_jFvVF?=ubodtM2^U!I_&hWh^dOtLsT^vR-{5z^!Li9I+H{3513Uv031L4vCLabj|Pf22-sq*->Uk zu;&fP^rx5Veo^${g5C9kB}^4;@W;yGS(}-`e1>F7Y4BY~xT<5U6JmBzOv6`$(;Z!| z34CG*B1x)U4{t)FD}dFX;)vnktPi{^+XW`~>Wn(}Nps ze1#56I7s|i&zg?&(+%|k49%&s?aT^}*N$@6OX!Sf%+|^eiA*GlcI}FJ8cf>m+2FOO zuPc>}EME^=k`JJ7G@#6Y&oyM919fn5u0vJj3-M1Dvy-gB=;x0O>^-&XV;PVD52xF4 zJI}1)S;uoCZ*v~iNvanUJ8smsAEuX4Kj@Gw+pu_J|C)G-U%O<&bCXsPj>q^gqutq1 z8}j?&>v%<`VyFfUdqE4S?sQ^|_Aubp%RMq>sRw5U68(CH5GCgYx1!Q}Jja%xsfFElqh!U}i;5zz0r`Sl+nJQz(e^T!5qwc;DtD^iUd>H7 z%HlRV#w09x&>s2D= z?tKmup)se(RUh$)Ghb`S6gbnx_O{pG>9Rhxuql%!&*HV!CnK35gx-7r2M8s2z?}d6uT=_Sd3@xu z{)kJTwAnWA{q0!{;Ypln$*k|B+h`9U5}{1;+Z)({VKk{kvV(1Pdt9AP4dM6nIwD$J z6Oikc6~Y$4{71paX~!5dR2XD#c=) z7Fwi=oT7XM%08e0BIYv1RPx+!YfcCarpGBrRPul-@e4{Q-|+v~Kz4hq^1@`@BOLE3 z%wT1PzTvN-_EWv(y4iQT7P?&~RMpe3r9cjB)bdMk^onEJ*MHBJ3r%$~=zQ55|MN|v zhPN15>@4WAPFA5oxrlZw9`W^2&@YJ4#s^GGF%ASbE6F-x6dk5n%Xk>ON(v_^zf~@v zh7SkNBTAxW4GY(EpRy%Lwy3P^Twbx=y$ke0MzjNJo=k*1keUT3XH zcN1d^*PX9*^fxGrC-u&QnZ5d|1z4_$^axB7XBW557Tzar_9tYQ3t@tTcm}z7vK)jj zf*Qqh3kWFH%fos1g^E_VMZKDf79IvYr-|;os%Z4)L2DZl9uk zV8+6YNi)K|IyH}wN7Y90tRr{tMBgi43kdIotm`RHl@MwSE|9}Io8nJ_qp}iu6S8xH zs5xjYl>D#l!39u9H8qHh1kddY5`(t-r?x?qmwbt+8Y)gQD1_}%jBf%@nE>5SGr{pJ zS*}VXX!=;5^hl}ksZNxljd8=W^p-&=F)GP^4POEFLFzC=|4+V;c`>$*DyfnQjNi%u`?P zeUX=(LTWoylw~%&s4|b%{!KipVGp`shsi!c4utvPWn^1+k^-2^!oEAXvvT|Fzdy#{ThgEa<>N%yM6#uQr!EQx87|=FnCAPBVO6HU@LOljP*$A? zX!Ss&efHA7la8aadLC;uS$PGk@TD!j2Ku+xO%9%Q=dA7LbG@|vrOyGQY}>+t98+SX z4T``ZYoYlioQsB&b_gnD3<|5>-=@~qB9C8QF-M#P{P3_$76+fuGI?t^;b)VV#SBIx zF0L@+15itb+_v|)ve^~;CZ zE{RB>yj#7}=+LfNn zGANhz*^jIyAy_5&soaGBXs7p;@oVFIo1plZMVLPYp;z_NnSUAYnGzAV zT0WOR-{bo2n6s>fFf_v2Kw8Dit)nccq7{ObN6ON1{>rNt`ZISVub2HiT;vc#7N$VG zr(L;L8)@~ZS}X?+`3ygoMI6CQ8bsLCMbPMLIeEnboRLGM%n6IUN*!o1-6Bq~N%i{_ zYLV*2>x>&j?^=V#-^XesBn$V$k7}SPl{9Hni_)$_^V@=tHz@x;xhgm^6u1Ko{krLm zB`Mib^OCatPLa#BW7_+OTsoFx|KyNe!W2cD%;pSf;g`U?xTlQ)=^0MZnM+$>UOx?_ zTNqfy@3ftjMmV+ZJ0H3W1qQ6EDkSATme__%*r6V}&2%b>QdY=f_eEO2b~d$an1kSG==ho83$wgCSg96ssJm_ay`(B{ zaA+OWo=o76S4<}ZHqKU@0F^JwH&vkcjq!tqzF1}xR3_?kR#&M!4Q;xq(#}C)ZPU>x z+x6X}o-meAAON2%azstWDi)eKM3dvT^2X<5#ILFYsEoHmXEnm9r?Od^;VR*C^*a82uI3lXOl>Q-BEN^2(mKoP%-RCv{J z3a{M}jW`1e-o)NXPTxXoTE_+;FSU-)v7+`+1`9nenQHB`M>F}?nW3@-8Cpida zXb*@2kCGqxKn=$>0Ge$dBk`V`Gcohq_ z21k#_3k<4ireXAcN@I3#@4ND*9~X42EeH?|YqUH~_2iWq=#ZGM;|6c_zX|Rc%?^VZ zY&3F9TIxj-PK_Q_z{yoJwq`)GG#bCd3m&WnWB$Kcnr~+6&N(PIw{4Td6nRQY+a^dZ zaV*p>p@7$X*Wkb)E!+S<-yl0EsRZYXP95E-grg+Ow+qNj4rh<(;J|wj6}*!Ix%3G* zx6)$xXT#rZ;(4f%&wDgcHvxk4h+}n(gAAETv^e4CTz9?W(Fk2N1s9_;-#g9HK0@!+)_tCe9&OUWJkR_?Xsbpv z8EfV}Rpk8M^v-&UN!6g33}ps`$Miz|!`>vEpt1pkNL|Py>Ji~bn1Ntnf=PXx&4c$T zPHsk91A-Fzm9N$k$=5VowT{j$2 z#o%gXm+sMP$SZ`h0nzOn(bK1KO_A)+7EBV~#F8z38$9%*T`N?*MrGv_j8cq_6lrbS z^D{9&v2kSeq62Oa zVlf$5Rc$>K?i_~&MVX7}esbCbhoUT+P?r3H?h)e?*zw>kO~mHnG9#z6_&Go}UHihL#K#Lxnj(#b1{$ouJ9Bv=pJY ziRLLJT2JI?&Vk?dO*yahl76aL2X#|5psA+K_bLqs72^Bia!IXhRs!c%_7)oBkegK2 z6x5ir)eN$eRCKsAzi8EZTnnY#kfRN)##!6enZc16YR8}6?Qh^}Ens8Oe1UUHvmX*h zjGE!6Ntbc#kxRwQ^zwHNsU|6xwFz!w=-Zb|51VPxhzQvtXcFF$Qw+G3JCYF(slk7oC z8ysJhSt&U~hWCKkP@?xG=M1|@A;6k>kCOH8AoddNp)$~BPr&1xrx6Jz_%q9|9rtC{ zXyXLYMZK4^!=q12P98^mtb!lAM||E$_wYb*=i&k`oW(6@0)(3=w|~%o^ZC0wpw9n7 znFx7GLUKeBQ|xAs^J_Ku++?Zahf)l4cL4naKF8LVAJa;{)I#2w>O%9_|By4&pHC%{ zbCN-oYdEFnHEx4FTEC*h__Y*Nqe%l0lnL?r*1J!zj#oX*k{$&fxT4QZtJhVnoUHp5Bw<-=>7{6n>(IQS1c&M3lC|&yTtxff!Uq3LYGKE^RaKL5?gth z$$3eC?j5KA7_EH}>wBvkfQoc$OIHf9@d`~pauZz{TD}f%PMrOG%0`0+7S#I$gtUSb z2u2k?EC%L^QdOBsp}(t`lbFde^+a+@xX{chD?-|(FKDIORZI?j28ZXJTu!ry!4IHO z+Hp<{-8hV9-hDi2XU9s>#wq%BTsu-Z=!~gqIG~crN!Ca6twtpM8U@z+mElJ*R%HQ} zeVP}e`m8C$o^b#Q6ZhyDuf7~KEKj36A+q@aBsh-Z{KCbt!_6A|ek`F5UREH#vk1fm zQ?V@1u?X zF7$mrmWX*azT#HxzDPk1Szb%Z<<>^46b5CiTOXo zc=V8q7!AOm?4k)qtZn212sZOfKfYa1;4UE?#PVx-hf9tqlc!+VClMPN+bf-uq}O9H z!=vVij|1I3kia#6HF<*T*7ROA(LdJ)rSImDQ41sdie38ipl@Zx)X3Uv_Qhpi*pJa1 zxM5~sQ4T#@o$J(PBha&lTH`1rar8L&eNYOjV_H>2>TZ30;ex z^Pl&3?vDb$H9OK{enAkpcxTPBn~P8G_>WuOHq!L`O2{|?xpDVn0S(=z4&Y=g zW6AhGSPfe+v__%SUGr;1=|HolEcE}eZlsg5d>3k!15%%g6FZOG=5jIA7esfRfhJJ{2_V=XQ9A7VQfJ*LvUepy(08+13)~QDH=)CPwSd?- z5h}0g5q3Apy~~4(hg}ynb!usknIN1=E2Ak5ape?cf`Sv%vbI~EYOr)Il`=0N(-GuhfL&ErV?~Gx>k_E^W)_fMmmRGR$Vt6 z@rwJK=M_cMP9hWD@3DX;?I@{R-^-W+zDLV?$KxEjuQ#6Crutm2Mr z>A><8{Luktd#QWj0SU|#O(uPixSAGGkmpxz=7EM`+tQB-T@o`2V~XKJsMA3>PAdtk z%dzIYF@*|JsetTZtDek`r}`#%GWeq&@$Xz3u+AC-kAIy1Brl>rV>YHF*)$DOtL0Yx z6J3-XRTy8bmB%7I)z8>L!4seu|J5wh1svFLMWKgkin#QW zz$ebyIR7zWu|tW}CVIM)M~b5X%bmB8^reIq9$c8o|2I-2GLEF`$u*?TvU^lpr9#)~ zj@AVwXw}a-!ny+DLC2@j{^RZ^flx)RMND*rtXcR~m{Yw_El3iQ)`;_~j2j5$6IuaWQP~CEOVi>uCWHtGn7pD>{ z9rZ4oPEtthAI0XaIMod5_VE-qgEb){xVrXcZwBpgr%tK)_1^q5R?~=NCwT7&n-7rh z{ArZSjWltFw8avf6Ew>!))swkEsx~TyX(-7e9@`ijtKmL{~0*RbJT&XE}E?)yw_Sd zw+Y{Z%pg5>pmO0BIjLXqLr5r6pjse@$>*jEl@h1FBw$HG|KkWS4Z9HePDAypSbm|K zw}`4l;ialSwsqAdW9#u@F){S7#ZpD6Cn#MpQsRU|^1LTd7^Nsvv}6R#YJ%JS(5z+iDQgZ^3;}&Yh<~~HiWT}E7xI%{uZGY#p zm)E^&YY_10gwbjT<2yi91o5axsgGH(Zw4@?KVy46lZ&S{7#qT&t_=u`LFe9VV>POh z5ZSqF>8RvH7?sl12Q@2!i_8C-2<%EA}&P#lJZf z8QK<5va;54$MIOc7HYcIloK&}r2iV|bo-(VrJ@TR>CO>{{A15hov^OZnQCc#=Q*pExqWEj9zdB3nhHQI}Cx z+x1Oadc7n%k>)JjXyA_3Y2u!tPF1KPSDZ_}p-cDsK%muIryu|H>!h=r>NywBb-UG77!KKM@xO`?QKMQtR&r!7kU&`l`c6C|wt9dJfm?8W}25 z=_{Cz**fX1?Xl_>d#werH3^~S+0R0Y#1$FVoYZj!GtJ+qOAh`~Zk|&)i5uL3uI%q7 zS!~clLLUkG1P(8=;yUDt8JDaPc^kh77{PLhJr=%l81yr_I^c?pkJ4h=_;&~kQ7qNo zb4N3aiYJfp2xjF)`F{DW(-8c&BjgA6T#VPJN(WxJWj~$Xzx!j1=}H?ctDG zyPhfIt-Qzjx3v@AGwYQsr|4j7bY<#m!y#zX`>EziCrPWhuvfrCj)jb--o7y5>^8~ zR^{U6mbTzDCoSq1X4TD%D^KHa!i~vP zV+7{;K04={+YWceb*_M;5TCv+K`NL;Qxnr*Fz9OdY@Z>RisC~urL&C9%iNc}-a&)W zMoPUAHmt6!rX0tBEy!pb{YEwyOV-?uHSomF8CsKcz73r}1K9v0Vz3>;nW8_qQnjy@ zJDLgr;hsrKAFK}aK1L?IsE?!J(ATuPPHLNcGO&1%WuB($o$d&7(oxOJ7VNJg`g zw(K$Ncuq!c)V-0)ogwu@_nSjKi&01;zrFViSR2Q6pbJT_xpx8j&%HM;JVF>m?s=(P z8gY3sCZ@=r-Y~9t>sK7YY=cJ68>gY#S#cDxR-7>AV4=laNBj_=ox{#l^?c+d78hbr z8CUZIMS;Ej{r`SPBJV(BAOrnMaT&Cd^~MGKCeub{ICP7{>h=c_I;IRYv3p1I*#rrQ zf9bH_`z&BM_bM_&?1n&WWZ^)4zNb{mx#H-=i ze9?P$iHenE0@BgVS@ zViX(j0qW_+*(P?ZY51*nX*uh^&9XUGL|`_N9+_=tpVaUytfd1l=`zaGs>J_C+0Iau^5JnbiLM4U zAZ1w4j(|q=#uVE#JFz%}K70xgtOpn98ZsbV9Xt{G3+w~GHW=FnD>mPtFss^OSRT`7 zzn1~qoA3-=<8SSPxKO=fgMfVvVtho?gT6hY(U-IZY9rj`+<2j(&&?UOdnR}_@88vf z1bR;mV(cPV3IVV`pdRRWwq*)-t}9&Qev*3I3y{l`G|TdH>yvrzWl#Qw)rlZ*5vJU;VNE z#0IhtU~ThVo_p!q)?D3r0H$I|=%N(H#sP>dVr0S`{S2%D@P4K5CYeGr58d|ds)pv~RE`*wY$FkqZbx%q>yt}|6E(Sl? zdPFSe3&cfJmKNSvh}GvCnm}GTllLc;VO{~H*}!X(oUAwhR(#qfE@Ooygv2N(9l5Oo z*-z^;Qp$mm6gN}tB#O|xqWb_a6nT_=T*VCh^57npnHyANYW{)GwQuyZ*WwqUP0WO? zyhs|8`RkGHj_0Iis0r~cgVSXMU)g-|aE_3>N8o`!{TH7+_oJNI<@M$O@_K=vxxb=QBeJAl`x0ibo2dns2(=5 z(=bsn2{PQ})s5xECI^r#XL3KZjUCU*z<3`pLvBOBlJn{A z7)+_!JHN?MzhW1#W4&dlxYP*%j(NbEF3cVPN9T2CS@Hfve|%dvnV>iD-bDS>TPBMwZyA3Ka^Wd(aY`|}T-cKuN{_6FxEX9E3MmEsIHk=JsSDe~O- z78Rp&EsqA1E}i_W*l<_kk$JZzAFiAfgPb*SiM5Y?L$+q-=_(cBzahC_$@cpO)zM?c zCOrz})e|@~~XTb?tV>D&iHgz(ca(o7J?0*Tr@3~0Mf60Kif!STI zU4hUv^AVs>4YPY= zdgP4#Z5Uyc3(V>|QQGcnpfp}Be{6MZn%UQGn9}_2)JjjcwZw33vlS3KRamdkF@i0S zBODL~$P@)w16y3X-8>v;=vxpi1yZjAkOoXjdWWqY2u*@M6T|5IsU2< zq%-e!`sLqFCWbc~?3g|OME$K4J#QD`>_{$c3RI3i7I8C7VA&3d-a*H-v>ob9KQ~1z zx3aS+`nnTET|D>omi?O~n)Gs3s9lc>{rSXVEX6Asab{O?`^Fe@bml}s*MiZ^4>4!M zo&%4(yM5jh9-Iho{2{7^zo?r4L%fD0iy`rU=Mr#Q_l@)IX+5ffpG`l~I>X=C1eUsxx@b92jEm!0!I?W$4?K&}y^fZS)q? ztSlY2u>aYgJ}gDGPa7Hwh=9|m^SSa)qx<3rr|>ZKrgni4Djel$lJbvpAjzK|)7**q z$v>vrv=A5!yGUxIZonFd7OC;}%%J*eP{Q+hX&*OU0Bj2#KlIjVajlbcJ`2lnCU;qT z_=@`pEQ*h5J`3B%D8xyLF&Ld{Fq*F&571+R$lk?` z(ZITvl~i$uVa3q^PljdUivrNlTU(hGrgaIO(z~h8Mwom#lz7D4-JI^8>-zrW-t19i zkmL|ijodp1yjxn`_z@{S&R+`P_|h~!!W-;T2sQ{qz*0gPO9>+ar2w5=nk)#@vRx*Q zRaO9V)7%l_rvHmYZi+8?rdm`X&6qv%Llxv;oFXDdTLR&4Q*on}kvm7xwmRW5=QXn| zW6WNjJq2XbgHXKg$HtIq?}`mT#^lB6Vr3?pA$Z`>{9i-Q+OKgZlPTsm!Mi%Vv6+co zq-B}V{BFpga#KjdvwIjuR3cI3|6UIf<;rA&YDG80_%QiXA( z8r;lw5$5nTPOQ3ug(xE>!J_FR8vjS`jM$F|D$A&17>P~W8KTHVuV`v6Lzp-4fb;(C z5Rh7)5^LcPRy!#VOJZb3;0@OirIC-%yUrVi1iJQ?3@{?HP~tJa;f#%tOP!htUh}dO z97AS0!$)E$Bg4RGSuoP6n7FpiiGsUpQ$9EsrPHpy#W)*Vk6=cA@*GltVNPy;t#zG> z^&-$StCcS55K@ate+SpS%t+V54ye43Xmei`?H;KiM?V^W9BA0g^F1+L)YWB0!5`*s=j_f(x|EvxAzZI&jKl^dy7pQ?0{rGBa6_O=pM3+f^2Wx z;Aj-mT$WU2@g80Zy_@lKwKpWepF=9*2vGByP7(< zen>JC>J03|hCd)hU2FND+47wa*h%@r_>{`iy*K^gXl9hxr}gcbg~Y$Vo}X_^P3}D8 z*L2~d)3tEly4QS}9A>*X2Lg%8XO!4L70#ZNmYGgkEPJ~RCIa!GosZOkK(C4P@+3-9R%g6U&=KrxgE8^VPAKR4{ zS*uW55mo5ncmVD$!Dq|f=*ZAXXPlN#uNQk|A}!g@)2i7I^$7n6=z)o;%(Z&`Mvx@h zi;cf=gWiIl_qs=%AI4r05S@fKNNA+!m%Jpmp{zT?@l zqMWIfOO=pX%DmhM+e^>VDhj~z+{=>v5caGAlt|`6yQ{tW-%%eQwtZFm!4U_{?3BV; zb3?=ZWMZb*2zP=c47^YVU2MZdPA z-so+qDf6!S(0Z%=_+m2x(3f9RPhA5!gGnhcG)zx0AxehF<;iuqVU>UKsE;Loav@C{^r$IX$raa0R zyum5^ICd%suVgyga^iy^;s6F&g!N(t-dw2`Xk46^VcvB;;$sZo>yzv%XAXfvBIFXX z1UgW42_6=d_SwDCA5EP@#B@C~BKXSxh+)JdQzg}(GdMsF-5^xV0ZZy0mJ9vuL#35^ z%o5Ouhggm;IW|~E=})k%&(~m(#*v7u=;+S>j@;o?HPjf&eOI7%AK|GJU{YRktkq2E z<3viqR6$q)+X$X7O$d*+2OgP26|V0S`}?AaY}t}tAQIo%qqfqqx8H42qxlw_vwI9O z1$?O`W0d7DrJd&UVvk|(nqc$AeV>YvqU#ynfnKFaGzL|H8u`oWxTuF zp&k+A{7R?w)E+uD;xQW@BE9lCCz1s620x9#5x71B)2tRVIJ{SI^8-3_2&i9)&-Kt& zMY)P^U0;{}KscxYg&son@cz?|tSH@SuCP5E2>1IdP|!f~=D;RMJ1hm1_HzIcKiEQ| z_U^qeK^yH2X6L_Z-cbh*k!o7rtViJfyq+H29v%M^L|8-QR&bL)j+bfbWK);wLc|J=}_9I$tvu? zljkWbN^H2a8HZiTSPbs(Ng&VRw^syT>7?<4FSpja5{LX6A$FB2^<()t#*!nC?u~Sf z69mz2w=@?;dfED7yP=M8wt8OT-W|mwr2YsoNJIzSqDl7b32WtQLz^mY{Um%^7w69a zstxSA1o6`dWzxa~uRh6`1rmTv+hN@L($*<7B`AGzkoXQW_;9o-OmCPzBkRK7sXi{8#xk!Ij(qeGaXZ4>#2@-ugBr?T zhrJ$w53 zFQqN~y9Nx41(TnbY`&2zm&j7@6}YmD|Q6{-DwXh9rxr_m`+!E>l!BM$fW@qvLuleiRP4rOYjI z(jcF6(ibdCej^joi*D@BbX6UYt8DsXIBM!rr_15va za1C?oIEgeOKRu8QPByTMn7EG?+e)%1A=HFOhHhDixBUM&Yy{>_SJWT*d4Y_~u=_xv z)W-&6chT4&>{4^8VcVI#HvpML_k4r8jr4e5EsrmWi0}n%(Ymji0V17q1MtBq+O1QZ zfE4XiAQqv!&WDFX0|crl<_BghcaYlyFxd#7rLh`b$0D|oX&|9OzjPZxvLAt(a<;5E z*nS}aB^Lk9@rbbRf|0iW|3i=rd1I7Dxg2WB)v(n{_h?edDMwdX0cmx+$SMNv_JbW4 zq!2AIuTl)o;6`T4HZy*471rEQ8U`*DHW^WsXvLHmJjQg>V5f#RAbSsI_B=hphgf5B zzA6@x5o{)1kRGsqQ8m=6Z7;=pb?h&U$-O|ZSHEodXU4V<8J)%DMV{Dx}dfy8n zH7IyAO4-&?qcR~;-f;?qaL6U`b6nX_Mw@%>=k~Nl#f`@_mupV;0l%cO5n|}c&c@uN zAP(p9>QG#Y4{X{6gN^J1;7wSx^nqlWKl94Re;)WC#BRXZ0Wk!nN?NS&@Uej9V4Asq z`4kh%;gqb&Ks=cIeJJ|h=q1q0puQ5!Q&a)4nUqeBvJP3q`MavJ)HsTtzmdmh)b3nh z7<%9tPPyV@%TNvsJad5(${rfn;QBCy8$4S#4ye@gN+bNjnI!6h*zp}_k6O$#ps{p8 zk9yxD=uPI%Tsy!Sk^GiWX889eNB5$&UB9@PDDuygG2NcnRb_7DdF{3=JylJTesy~7f1Px zhk3Y6>Gjo@JcZn3RJL`EB!|giK13r6nZChc4CB0BX%#SN4D3&?n2Cu(dEuq3kR9?2 zC*zyMPszZlmljR#R56e8N%sB~dzpI*vbU%9uN+6pK-XGUX$5IQVVXM8O{=LdG{r}; z@@Lx9UX7mlRc3}Yh=@~SH}U%5?kBMb{Cybm=G-YIZmHwf+&sw!WMT!$TSSP!{>mlElR#&Lvh50V(eVt@^@J` z|KvT&G{3(qf1?BmTj&_cm4su#Sw_JrIrXLEhCqpMntObg+6VHxP!Ct{Kj~9C5cK*b zC1eoRsutNnRJ;u=;>Hxw3~SejTQzd(t(8N56#;III=oMq?ib zMqrv-ip+d?@^5T)?ZA_+%v~a3zWKWbT`d}fW~^H6dn-Hkn5LHWUZ51LuxX$xzfY?< z@@8+>nE^S*$jprP6TG-cMzI=Z)LtSi6!>b72>szie=}-KKUH{3eb1@I$vc0piypkw zLEWO)0j~*&cFxBVH?(v;4BdJt)nNY5+We>JiHr=7_X!Wl1GIpQuZG4rW%9ysrPz1d zV&{?jhfZjvOwlu4KoNASZ#?nXvz+pytvtYtspcBmcMShzG)FFcL81nlVf9?&8r&-g z)bluX%hZ-vTLU4!%aoyKrlYY*p<5;}!d8xr=3JtSxT$3GLO7dLI6*3RJ!g0!D;wwy zt3gUt0QVtw9?N~*16e#O@|a=74mq8a6j&ao}Cp5N=rANCX{3eQ7g{LmU7#8 zaYD1g6a%|a)hJBsa*~ol{g#K{OF$vQKZD#PPrQq5^ZgnkK*~5m1M|8n!}&*Q;cHtz zm~!mda1fIWSgv*m{RA6-JJ>&z!6E!u&0b97ZS+Ees7sMjsY|pTYif>rGcSZPf}nsv zC+d95$gnSzhwv5uFjjd5MJ(o*?kIHnuMfn)l#?8zkADy3ROYn%djwQyKi1Yz;>!>$ z4xB*7TtTT6NYgyy$#m~3IUltL2UiQL7^QHn6R3TM8wrCSV^M1gt(aF)#XYhkWM#_u zf7x1k5(yUc=mDc^1|)k{FZ2a1BUC0C${l!0RfJ;3Pr-{$b6TnEqw6$j`knCLxi}8B ze-_l9z=YQsUQZ3yM(mm6%tUFH0seS;$^34tC|+!v7)8SE5c@_3g@_ZuI{Ol26G_}t z1ZIEm$U`Ik{>eYAwA>?<68g$qE1(h8Z0e&!Jb_!;ki=u0zMlJSlQYI{pJr6a<1|N^+{uZ8}h=yl)yTeN0nPAy6PEVjfy^o~EmpK5U zEd`wSg?U__Jf@DlzO9Bg5ID^&s=3Eb-VW;czKO3qU@SG(23fsaxoWi%dv|iw%x}fro6kxUQ3t*3q6_BFK+f556FT6!ESve^;c2z&Q6nJn1zwX0m z|9JMEz1VVsmXGLI{FyJ;_eJ@xpbB3GvI9)6`nD)j_BO#EJ#=$mS;r{ z<1Qrd$4WkQI@`Jh73qb=(Q!RoX=Qd$2{_nDr@$L)6)cViF>7gIld4Yw$~FBs4ee~j zgOOrmJ(KbHfd0I?U1t@OM(lLu_!$HCs})-7@2`UePx?cbR25+{jed$dEXl!0eAIUW z#6~cW{3meLBZ=k?=vRe(M{N#n;-P4AOy2jwMN9F;oK&QrMbZ zG#;qnEZBn_(0WnUn}DTM^=pEIR{+=M?Is#;hbiDRz5#1+AN7&PhG+)ARG2Qzdd^^T z>p&fpEdXJ^YjgE*ugE2ubLU%g47@~)?YTNhW({_x#RVXMKr!o<>rZZ*=)n2Za9Z!* z*sW53KS=&m2g2NHKGhDpy2l&yn%|=}ZDMkZjjp)RWxp1A%O=|61^J=X6lrs&Ogax8Dio?*poK z9f^|f`AnyYT(y{mvgntcet0l*uFL!wrj(|MXyqAxfbp0bT!@6+q|!e3)x7-qITxy*Yk1Z0W(?O z6qT@)3=bDc3Bby0P?yb<^BhsOD1tPQ1S!l|aY!!*1(}#ZhQu@lo2ZgWnQlHHj}O|4 z`W>5P`!YUU9&j*;iykb)HRmPwI>kuc<9v6dVB$9{hvfQ_7uKaXj!TGg)#i6TS9ln{H&;gxEMR%30hD zLJ}_>8(7&uAUqB^#9xUQ(!P1-;JYa`fBE8aDvu(&1+uEy!3P{?$ZI&~E1fz6;=)Nh zUU;H;$pa=QtYD#_-bHdccw(+lzo=E=c6=l+NQC^~p0xxM_lo9RrGw$gnNXQbeu!_s z@H4648Mb)nO=xypI)(+jc^j>dX$}QiRD-#-iFM_2gUd?OihbSP%jyU@G($xPE{jR9 z0!!0P9GJaavb&xv;CjM9fTgHpg%)Vs4+VA$%=K>J9;v$;Uknr_b&#>AvC2>J82xMV z*Q{ht@f-dd9+L<4wv)ni=~7Kc9`Xzhh5o{sH$&NVQDBX9hywG}85E#S7AP|W+$H1{ z3u{xihCE@r?VkH(a#_~x#K7ch;V~kaEr8Lh`THo1XtEre;Ch2%rZpexcJ1yVeLxk8 z9nM6I1+9yj!PR`2S9fzJ!*HAqDnw)Zg6LF`=RCq-Dc<96JTd&jZ<7=r-63M;rHj)AZ|~ZTmR04 zmLzZhjP!=XoP%*eVPrk=MYz_G0)rBJ{m$K(hQXE+)idObWTSVfBFPEL44r&Lb+f24 z)#vQXbT$P_$$Us*df(1A9L;K(5dqC)>exA?P7>%gUE_E5mN?X*Oqy!+EgQzlwvLOU ztsz+X_mo0?{WM?0j<~J}GIk*50jd`1uj0lSs@HWoait0Z;Nr7LV{%!jPC~MSBf(mB z?QIMFpZF69$VmG#g@{V)5fV}vbY)Gk#GC|;pK}k0Z7$C&gr=%-C1esfE=AFX?{bCO z#zm-_Rpx0aZp$GixQtF~Z%Wiq&qx9QR#`Z5RNzla5u1q@_+mg>VT%xR9IHH>2nu04 z^@TRCRdwS?$* z@Mzb)$M=hh)u|I#X-j9oAgbVPl09{a{K{46eHpN#)Uwt|jE^msMM|#+5VovFZZEw>T6S%5zER~I z#VR!9D)w?2VdKIMA7nk^Evb)KDDpoXv3;Fy*Dd>vaui8-)3nKYM+1Yode z$3fEf7$j6sX)fL!?iS%^4f=bUK>@dwLdZp>Z5u&vL|BfCM`49Tf}_o*uN$2ZK7vPj)9kC;kbx1g?a83eg3h{6&AcdTBii z7A!}(`eY_MlnBfshRf>pzb|FFf;ekse=`pEa-hX>Bh;P!n}I7O`Vi1>rMCQl-5(3+ z_GGYsXfy{(vnw0*^|fFRN$|?WLR)*c)gwRP&W^wh6e`LT;rgC;EcHlnhYL0Yy%TD- zvEoUK2sQUaAq=>a=#CylBZ_CWRE!*3lX1aLx72zH>!v$os?U7jk9GhOBW>(&sHOFM zbr8z5NtLJX&RW8|1lrTd==NE>ekrw4Vau!FkO#EAX?J<@x6nO1#xphJ&LqBWp%T_P z5Sr7Obub%0JxbK+7G7W(I6^tcNS|KQvyLVCrY{PKR*n_s-jh z8r9<1smdSHp^4Vs8m0?gxi$+1+C1eBrKsMZj#SLAhefURG9-Ggreb=26Uj|96HCH) z_Quz;$lC2gAfS-D;-Bz8uAjy-`dVM4U(DFu(rxTXL4Xd3oo zv(OA?e1q?wpNx2WO9eV+dY0Q<^+FZ<{v&_pB4!-o@K0p*od(XB)G!F*~x77-;CyXEMI?&O=TEo8a zvu_YnycQmN36&o531WLbDyQTsPCNO^uW{_Y5=DlVC^D|k{di1np`I$K%>v1Yat#D) z_x3VSiQAAn(DWkD4?8jQV6X#7u8<39=QU+f6{)a@)H@ku?cX*peU^Qsm{qpW^=nfC z*Ltk`Pr5dpDa3iM&J}c^3THFDUw2C+*HSjF2bVTFXq|`@nQ;RJ#0EDvUj3sdSx@?U z$MY}VFDfzEJL2Jzv(IZ6J1bRNOEH-$bLy93))TwS83XMMtM}s`l_Sgbm~%{&gsdr& zi%EOthS7D&#BWp}P3}Uv^aWmO;hE6>oWT!38O+ST8>a7F)yp1}8FDZh^6=lUuB|_( zGlI@^I+$rC?Awhqb&MSl`b5BI7M($DJ74SCH8_IW^pK5|Ee(_a5Sk|OE|ZNrt|KEaSx)sd^j-7?GlD*E z5QbgT6SV-65itNC{BWM64q;LRERMRysZi8@8tN^nxWwIjM@J0pNM-fU?{_R72>zb% z`N!4&i!qjLasducI8`Co!a^wly6o<;E@|oggsR|-jwAhkFoM{ia>*6Za;41^uEsM? zsg@b_Q%__<31QLkJ|q`+`X_WW1U71FtqO&40_$u%hlKi6g(SMQSrqZ53izKD4NRdX zwJ!C%X)g9>n1(Fh46b(g$m*?kl)x$JkSQf-d#<&P+F@G@06-klbX3?owI>JJ>q3LR zC5m6;&&-gzb&_(#JOzN+G0xxMEy1l2kIwPU-D{HmdQ&2t4f%-;Z3Mp!?ttDH>f2r8 zE|TIW^+Du(TTzBLKqI1rY%!Bn28QxZJM8ZF-Fm7BR*5*?7mYqYI{kP|3Qz!dk0akS z`jCc3L*08Pd6ex?#bi)!Da@PgxQ>99AytN&tr$j_!puMZcK`d+6apeNJdQr+?5288 zXlJcFIK_|i#?V&3Wh)mj0e0-A(xoz^HXx1}A1&jHiFX5&`OaPc_m(TZ%tID`E=>U{ zbl~dNQz-<211jM*vpxr?iUaZt)c(e_tq?X?(lW9Ge?^=r_#2-|`6UspS}c=FFDS;> zUNj?)xAC@h(6#J$dJ&#fi!s4j?g5Rn=KBx~#NW!KJ?3ndT|Os45NLyf2Pwtp?1B@> zt}^S)0GndGdyE4|!7`vQn)7&J)|sOOi%W>T;&%GfEy1lJe+CxCd2jRJT1oeJ7q94v z8XZ6%efzZ%SKo=?i7{#SuteiI1I>6?r;%ivIC z3VOAc-}`4zAytZ+*+}9geV+56tlP&|&yBlriT$BfRk~||I#ImA0W#UqXejN2T%4TF zxW_yo=;ja(K4mWB)3exS7F8n;*HrGMa{hQ2w0caYWn0wEQ8KA6P>TtB>xY?XC(*mpvxMrT zfKZ>_7nni?b;4T_c`8$}hMJhE;pF3F!H`Wx8Z})6X&;?)lxD5d>0yKg<612^__jP= z&y_Lv;9-7{9mcqCsLZ8WPz7f5Vqm2*3Uj1R-lKxws+L9D;lCVn4Cf6weybXrV`$a7 z(0k%C3sMpFnoLQKE0S*p5q7B)C5aFdQsoK4tpA?_+a7D&-HTdcco?+v+*PK4jY26z zfe$s;3$uNyPQ}hqqMJFhhV^S`RT9mvb2H~G!oFT6JaTKXv&!z+|emfPW%iYmk27SbFazD)Nc!>6uf zcLk{c{O*Y%?1>E(0o<_U_3&yT*L9Zrn7Lk>)(8kyB`13#yke{sJ<@>=ZuJGp1Cr$8 z2|*{wsfr^qmLkujee^5gT0Xg#Ty`_>N(|j$Z(6Pbyelvmuaa#!c*h%; zYmxl``(LK)lvbPC9YkLSkUS2=p608`TLBol5M=4=Oxm#Qn2L_(_c7iCPz(~PJ7yf4 z(Cbi->sQ6s`ctD=-Un9m`8QVm9dp*k}StqS&60{;! zu|;CGHu2V+^|h_l-omA4-Sdz2^o&h-X`}3zybhtKh@B`u0iLN4gx@gmi(Ay@&K<%x zSN|iV8o5|zYl`k;%?XM2$N1V&8`=&=2nRX_lRU5U(T0I(jko)dlei$!>pdl8&j8=5_& zFcGz9r4Au!SmqA{C^^ArD5Fd0Z_#b#*cfncXXD;nyHtpeOI$bS17>H z#ECz;S@8gymchBAMBxw4!udap1sewfix7bDl44j3IoWe!w%0dC>y)aUERVtFf&_-&bjv&L-9w94m%|9`^lk!-(SF(sbO@#pu5#Da^X5Y@8mxag9GuO z+nHaW_!Ptgo6ey~;`faNQnB-+S(+EN8ND-Edzy-T-q~S|d4W%2ghHaEd zz#MkhYula;1UmF9Rt?e#&MIy+i$FDeyLNol@hc80w`y#Vp&7{KT3kKe?_cW|^;|A= zh!z-61QEfli$x3T^Zgj(X*z8gZU-PzBTgNn$GWA@E@k+FwBjH*YnYA1FL?jSI%kGb0l4o0&38yFivrW(hL5s-tkwqZ)v&_ z-(7pWJB}mnuP!otc9vf!)V<+)EsY=-&!<`Di&VbD3SK1gbB%$@ z!Y-A^agAT;kHpC2i8AF*t6=usjxBVYH}mI?=<s!o~VW zCpozpp}{=58lEXi?_HBv$v*!+*|Mbz9Zk(_ccNEs0DwMD8{Iu#haVa2)YoU(~3R=CYz0- zGcK}Yz{zjAz%5HT6p;zfFRHt8F6I_Zvx)YM9^JM2o28xQ1acza@Eb5pW7Gs?SyH$a zl?8jE5N4w6n(+4usy*5I=cv2sOn@HFIW#-K(iusRkzbPVay+Xr)gc%zB>144^{xuO z?K6Ejd7r-^*Q|kA5$uz#WSM6qSAw3oZFSc`l2^Ob14$jD|3n{NBRyuh=5JcYX(h;G z5<8@O*YO-y$o7ymxnN@&Pr6SVY?*)3l<;m6>Sp%voi4~ znD#B+zrYqRbZ)@MU41s^UpFAt#P`LfM}%{7fGR#q?0>^ueaF8w0gb~c0Nyg+nPga? zcdJ#lX&Snt%m4g9?HjqinFYksx@{0Dj+76N?0ZUu0;3dyZLt*E(R>o#Q^5e7Ps#yJ zNWw<^VS}0*FI5B5(P)}7xJ{vp7cpe10E9y&tHAJQrWRWVRP`mhgk8GcC=tPJK*H`b z38pU@jp1IH>(7ZC9R2)2ynjs^PhOiodLf}z|9PNs*||ayqzfjmDTH?nkqwNS4$xcK z!`g{vQT1C{DXLWfifvRgCpX1+Z>72N1V1a9#V@U+N=K2!bTR4fqFRkxb!V_^@!$Tf z*h-dtx4yi~Y{NRT1X-L75@ars^WN+79{1aB)Js6}ghk3k^Q1C) z5&#Bwf#pHf38{IV5iEzdVG3}x;hG_Q;0h#o(CurpW8sTPGDonbV=Gbr6}j-EFQJfq z+x)rGnyO$)rQfl;d8tCs|oY47d@eP`aoQIosHf=jTJW#I;%90gVg;!^0hWa0y8!4&IsLO=9ZYDMB-N$Oqa=euThocE8FYe_mR8%h zGNEu8WumGP=9r6;+e;ARSP(&^wT`7z=@vc|wQY#(xQs+5|J95X#gJQ7YR3}j#PjJ! zvs?DbCk4U_Vi&osSsa%k`tUV1G>U(}&W}}lqoNyI7pg?LoW17igtbg1qxXOXKD~&W zX-G{#4Ltij;{gSbqaG=n!ab{MRi|LG^5{3 zUM7Ps9bryfvht5>rTJ1D7@}Q37ZEo_&@$HZbIn!|o9!iaf=t=qsqIIE1tYW3tRG{l z#^~gA2Z$#!3|mH6BP#&Zg!BsU`^o}ssU2#lnXZH{MgYkxsHH`Y9qI%}b_VrsVEKQ9 zpJ$!Vjg2fM)9u0jMu~_9(O)48X2w!8kFHx!Tzd1MdaRfzo}o|Sc3_bh7Hqm;jka@XRH;d5z2L;IQ``7)IKeqrn4+eyUc__e2AG`k$ z=dtYSL$t1Ri1h|JMzKwfC2hdhbi%X^;qen}bNTAb@??(yAVcvQ^LZcP8wmeGC^is^ce|L!-SO8kIJZO)5DZ~W2rd# z%^YmsiN`5l#?))sy&xu;R&E}RVAZ08U_fcV?L}3znZF}VD&i$NP%`-K4 znaX>$j$MMTeOux=quVyyaZ$%S#HpMsw zL9Db~sMfGeeY$O{kkO(M^eDMdg_#G`^~rviu1!w>5)Lwdf|=8FL%E!>DwLb8&_Dr88RK0+wS^DQ`?Yxq zA$l~gG|ZFT1w73O`C|WM2jf$;od< zzCHHBkQ@N^Cykd5DTp*Jy4jnT>?J!N#A)($eCw$=UcOl$OM!Y&W+scNGnmiInJ)PI zz!}FFb&R%+=8{sB1%j=*b2~}$9LFG2Ffw!t?a|5OE|J*6i+)(nx>B(;%-R~p#aC5k zApK@E@4Cc4(_U0*OLx^)Z%;#pVV*EkP z-aW`|Jf9VQexZ6b&_g1ULwSvGM2QJp z=yAqWQ%u({=#!W!1kiK0ki)~HzF*U58<+_c&u$%vlFp;C+Wcr?>69=zW-}bl1TZ0Rp!r{6og`3 zk@VD^7Kxz`X_$>6#qnr(te{Tmyjh2y5%6)!9($(U3bvOz#u!33mUw{ zd=KGrN7vlu7i*J5C*Wh9xuej_H()1a1D7B_(hXEbuCP)Pq|KzlZh=aTz>=$9kWk2E zEJAr`GU|j9xyjBRJA#R-TCJvM2!NxI1+!!OJ5VzXB~^|49N^asAnn1_2rv#S!3rpd zr??pd7dTdHD<9{MQGht}f)mehI5sYfRi9U@Ge)`52hJ-06MM@PR@oia4 zA4~N43{fF;LBwF$UDD-`k|A{?85*VgJ0)=t4(>&73qBgz&kE&> zqCb()8jRCvtCMs{lAhQud1aYem#ck|_&Z0my4w$5btYO}Sj33y276h)EwD;-dvn|( z>B!b@s0pgDYKX5lD5r=SFAIJ39xnFA&88u8ZGF{01o9iTRc|O|`xjs`?ambU_~?v4 zYcivM3xo&&k_Rpd5eTUP7J$sNG|60#e#u!h8w|lY%GRFP=ujTYDA*EP#a<1T_+V89 zj3Tp=UsdBy5m?Bx$LN{fb^H&=6=x<*g3xCRmYnkW9U)9a9_~b_wT4fVbR9BDc>N2% z-;8aB3)2uSFB2x${|VR#&2w5tB_EzRz1TAbS^Bbh)r4mJkSYOexxHy?YMVWa&;t~o z?)ez*3MMXZYq@*)cR6;`eulOJIJCvCb@NuYT*uQ7@C3d3cdTfYJhD7wS06aV5cx_z zxFTg5K*qe7n?0>I;F2@co595}$0TrH+E)MgLUEGgF-!xY4xR%mic|bnZm0|lQU&(T zuYE?YLm>s%WbV28gWagouqr26|L7sd26kZ#)H9G&vhBxcMoFtpa&Sc3A z7`j&u)i)d`a$Xrp?`UabQ3@ownL~%YRb(?DUmWKBpD@C-m}Vjj&Pm&UKzHdJp~%+R z!#apN2Ca?W$i32(2b!*O`s0yx7hkyfmsjEBksCDF143L1=|L+5A38dfi@Q4ZvF;;- zKs)-HKHFU;$sl`8wB>@OY>Z+8zlK(;MTMsD_?#et5fYzBet;U7B{`JSv`j2S)ZuUm zQfC`Ycuai36mAi|#*C4-4vNlXW)OMlcAwTb+6dk9oOx4e@0XhFT8*0T2lF8NwQ;L@ zd{4noVsaU@BAJR-ssQG6bIxfViT)gug;sz`W4ga50K0~4C7!DS#6m2dTxREEQ#tk* z*dOcxu7yCO!mV(V8UU-fVewL^CG%s zNRJ)&8?Z;Sg$%D0yj&Q_Tv)8J`flD6auR_K+Ik-1y>jX{C!G4c;I74v!n#PlP2y=5 zW*C{s9*3_AQl*Emeso$TX?Y=|@{T8F9mN-QzNxiYhwRqVQ&Zo+%4q_(cDGx+s3j$L zy3lh;GB&vCg|2buw8xhRZ9Odh;(w(m3d7EEp`HmwJg%hTO@$k^`7P2WsABBrP0+Z* z8;$#*Zql(RTU>;g5=t41^;5AeMg6*I8 zKw?J`ulT`4c8hmG7HfIa`B_O*&1 zVJLXTULuZ9qo5Xk)G3%!wUfvYS8z%_EC3(&81d49Lhq;v)kJ;@PMl#5T#`cmKKeu_;9a zjYUAnjbzST#!}t1ptbYcI$nmLt z>QVTML)xj=Xt`&NUwU=yOX1)5%n`A_Rjb&UmSvi&0>X*t{L7l|34P0Q%L%Nbv0xZC zNg6HuO<)bv=^+B)Vq;X`f!oJ*f`3t&0rwtD5?Y0a;c{WWGbMDKElMgCm<2C0AfZtj zhb4v3!3ld(M6Wj<*ngULbD@%WpHMtG6#ew-kdo9y z`UF$rF7*f~WtRz%GhJON=k#AbDF+#b{G2e3V>fBJj2(mrlhWhXud-Y9#ncaUDL;_P zLv0?0O99k5pqriApj?2aa~PU<9(^(?Ym`;9?hiX%f{rhMO6C^wb~i3!=>Hsm;l(TW z9_?-OER~^2&QGa-NN}wnPy@;=^S>TTk>~I5r+|wWF&wG~S5`8fGnxpz8H4PV*A zddA97-^x&$Z6fpH(xK6cb8z71mm+0z1+f-yK7fT7Wg>e#*~CEs^m>{J?_MaT2(3$T zFaAJk<$*^?GOJrz!wCNya=#Rw0!1>;t1)(?qnc~KAS|O$N(!g@l4bzTU+Rwr#z?)AAiVgkC- zWFu7<>*T926_+eBd5LGC(W`nnei7%{;^8lP*ZAU@zC z>1_qehoFH6kMP6RO~q4*o3P}f^Pg(b<0QNd#z#Y-CrKF%V_!+jldKc)E>)4$9+!F= zyr$r(hDa@~;NWqS<3KLOYx@8yK}3N(gZ7Q=41QtKIHt?!{YJk&h|2mDl4B$j2}}62 z!1Y&vTFvFqnD=`UR+OO)>HHMVcap^4>_*ww ztI@x;)cJWGOgShdtHI_3<&A)pgUXC9$L#RZV+ARF98e$62h7}Pq;~Z(3$(7JXe*=G zKr8^qZ2hiGImtAr;NpM7zTP$%!--57r=^!GxZc7B9Yc2x2KF9q z1<>P=1{|YdtC#Gh4ak4lvA4uGBaNmPXn2FVxWf1VAR1Y_sWxkEkJiP~ph9Jk>a1pc z^xVz+b4qkCX>?Vm&c7r^p)Q6KrP;_yO3dDGT$5lp^u#L`aw+VMW=F!&d=(T~%K^b% z5r0xfSZq2t1p&$fR-8Toeb|0^>yj^k8Byj;9?6WHLgr5y66NTlRExb-OU-iO&!4lo zqn9&H>Ch_F)IJq-PDb(r;ehOp%T1t8#ts!AT)IR|FW&%lOMq_m--v>n?&A8%tT&K? z1@^2h@eG`m8AoF*cbAVBw0fJ`E9L zHeZUJ^+mevH9${e&}E;r=}KSpEjY&9!$J9JJvO%fmw?kj2x*!^svOP->Bxx%dRG!= z&cMjRB27)@$)3~cCRM$2<8lJBTHCz=2YB8ObC@J z8Q8!VGJjqL{SBuiiWe`wPoJQ zoHRpJiQcm-Y~;T;WhOWlxa^w=9Br3~ak{5!WQUTE%sSyJ{drH5x1se?3R;EU23vgR z^$T*J6*S4+A2ji*BygH)DFv^>1mYe^tCK;}+`pHtriDGj`YTm|#Head2{N3-F5O9G zBPHhT+}11nX21+ej8K=*_|ka~!QS}(Fr@}(qn~s2;lGF=-?(E5{Gu*X^Ao+`df2dX zQKeEdg}K&J!riYtD`qN1GcyS&U=s>HTt$rbT15uBpCDj(RTz=AC0$+tJldckYfXTZPQVda;H(qD;`00rjsnoB%@cF=YLkRrG+saIV31Wt5XU} zr#?ge0A3NwMD&HKdx!_bB>Ma&V6&p#3Nnps@M$VmSh%l*clI~0 zN)_QWuHHLJy+q3;6A|{rq`u6)5j(6_sBvXcx`TxFId!W z4zSW^nHZ}7TC8P}kY`;0=4`~PfU98yl7|~y+gJyE7O=MYSq^;r3Zn{J$YgJ{+GYXr znB<^0;&(+G_uFnUAy*)c~(BLYM;%z#%+8b5n$rkuuv^XouG= zDiOV3XYdasWb<(e8LNV-|F^=D0{0xDEZ^9*a&9^*J;h{J5_jv|4*aATgO3neN<)T!25ZneP*YA2BGJ{YMg1OHkZ1^O%g_* z9jFe49P{4f?`Zvi0&%+gR(?+D3%^A6VFvd3Oe5e~`b@GBuRPDuT`}D6EY2TJCFy8c zazzGwF6I^=+T2McUUTo~!zeG6kXJiLApNqfY8*N~jLW}^WR&S;Ip&J;EKSI0+%NFC zK*SITI%WsXj=0#h^L36g{*ONCns;#K+eLoyXN=A#%N0fUdNc?J8DC7+-^nZj892u{ zN(`8vVZzb0&{l6$0nb5;b04G82Ofv-dj~-K7~9NJ(GY)-mG(N>eks-oa9$S2uliEh zN@UjDgA)M`gOG6OFdWQtJ{Y6O6x-v$k2TJZuIRb{Qdr#-c`nVHeut@kH+Ufb`G-FD zKO+RlL@WDuV6SB}$$?(hnKk8I+8-3KGsy3mqr7zV(h1YPNYI#dmYAL^y#R?&OKV?j z(YpTzWRQv7yZ3BSj|STj!xzs9IhssR43lU)?}~js%?VyA;ys8c9@4*vkFz_@KOhZ3*Tna>P0NJq?4N^JlRC2kngJPA!)n1o8B#n6GC#bhY8 z-2(gLSH&;o0K@6Zb$20$z293hJIPqTKiZJetdR&COvA1T70`WY%KN1qr`|anm#ldU&Ta3talM zTEBY&30vLkQEO;f88T{{;ehE{Ub&m1BT?m=pL4v|YHKViru0EZ7wGwj@kbEM zUZ97cPM?rnY|?D80w`fGHgVZ`2ZaR5LAJ>_B$8E?ofsG?H^MBpK`q86$biU%dkG*= z^+#-aJhf>RL$z9;U^)^&f=-GOM6qm!@y74K)z@=t4zY9n-s*5RYjX-n&@07<<4dBA zu_$<;S-JVUEz#<>&m8?dvZ_&cZC|!LKmuR$^ykO-BbFe1SP9D-ecJ>YQmMrhMCjR; zEl|?UR?oB@dE)_k%*7=tJS7t5vENGtl;K`2g+)xycp!=f(#%GP@{}#6Gcg_}tc$r% zzmI`q=e4x()faWRM<;C;_Y4k3RQ4+2$1dVrpLy-sGP2KK%%JSpzc)@ z&vPLUhU>0pLwa|WumO8M{~hTd{6{OLLGMXjOYle*?d;!k2^1yQlY0*mNI^Gk8(5Cj~=U?&dK+Lczq9~jb5+V_26@HZCsLYO3I@D{L*twL%h`ig|6 zpgIVTpyQD`ryx>NhV9MH8-a#_(ud)IkcgiP%X#`+WH_(%2np^6(V@? zV!5R=32gTJ4KY7)5T7Du3s(d$X2&)2sM+8tx^qEWKVdfdOp;I32^)$sg}|B_6BzjZ zgD>|p+eJlE&hTWtfA^9_eu0&Er$k}=$Xb~BmT>j)j-tW(F8S<)lm6y}rbgG3QY_uQ znW$=_eh=zM0l_MSSM1(=)1jsUi;9xi>`_)P$>USIb?j?yi8WMh;J+qn2_U)MBWrO(boq_e8YxdLMrtiB^{lKA_Qe*7Sv1)o6_=^|+jCl@^J;y2@Uv05+GOT>`D&L- z*g@w{0WGq>BBr(LmYuj9`i?I&SDK%=ekgfN^ZO{_v@d6O)r zdakgjmknIrd!yrJ0LNF2SwF!@Z3PO7G}$N&L%hL)eLf?IPy@L_oX0zh_ftw&;5g`36#$2Ap(4hupQ=r$*T5Uy3*@53w431@lOf`2?-0 z#FrJpKGK1oDzb+PbYbYYZ;NX364_)lB~(kX2Y7s52zg_;q~>i%q1OhK1&j1 z?@v>0^D>znpHCi+BptE+txc8Uw2-Cta-zc*F+C7|=n3uP+50;-!HA>a1J}Zy@>-_+ zNXa0wyay*ix8FK8VjiS5__A#yf1*Uu*aOociB1Y|tdTr#vF&aPbDk#4Q``+Z+yizN zL1J6{r!MEZkrzQya&|oxl+1K{Vt<_1Sn%T~Sn{J@$vL!Iyp$HLx&8If-4FUnP<-^G zM5hI=<|FRWO`9cx>U%~-P%W__tpXq8UGxy3) zVc_~kom(dw%c?by$l(`LEK${=C)oPO|017b+I<1Vg_gcL(p^C|R2vx?&~X9I1FR~> z+>@Xf|9BAV3AMB-*MUd)nabQZL)EC&W+RR_L2C_;E%df5kY;#Vm9aczV@IYE%lD`EVLW7P@hP z<=$vrHBn03e^W+KvWzvgfz{j4-t|w}oObA*N-+)u@$t`)!T}uUckIY#Oj(PV#dt}B z=G)1Mq-q3KznFAMx7yIH+;0^HWA(Xnf;U8K3HaUo{MFlme}BEXcfC6MOKRH`fz+aL zM4%h#}tw`^13Wtla*_w^q^;Q#DZr?T%u5ygDNZ=yf1Vi9N4)s^73oHr=I| z;hSW5(lgwQKCIn?jlLZNQmt+`D76^<#V`32kLVp_wCZ)es7f?rvUsBALj%vT)QVwc zD}+AsMnUo#a{BLwTcQNT*s{>a<`)~(ni6Igmk^h?WxV4Gb+~kBl=s#VL`w0bwQBzf zw~8Vw^*p{sH@B))Y&)N@ec^o;l9#f0IN1rfNdHw3!;5aGv@=!k(|1mB&$6XhDENON z!&PT?2(3CM88BT|cuFv>t35GVaLQ|}UTWd&)6w(Zsv))0J}x6rR&woc z5oWQdP#TR$oFw35T*lIY{8=O`k$|#PVT-afsfcQf*t3SA4F>7(;t}a-BAzFN{S+ff z8C;P$-bGGi04^5%!r1OFKdL7VU}kBsxFfnka{cnCc_r3@}y-x<~i}*s% zn{mm5+9I_v!;}j4jn@3H=DYK}?J}*Ea`$Kh9dp3EsG@UZ12&XE$sYB9O7|Rs!TRFw zz}8{a3}-Cq!ZryfFD}5onZpTFVAH1;`D3h$s)UCnHSb|VMvHW8PJ*Z@7oJLe1~8{- zXJk<`2rorfQD%BcJJLZ*&}`p zCCOEQXd3!AQf!Ox%?}m-1=QeYKUaJbwVxI{MVTMh2I%b@nnkVk`<$Y~dhRnC9_7LA zWrI7-05X~$(Qlx^!`sXfZ98TCEfdX%FS-it2w4E6$!}u!)=U3E^Bj{eb5pDxuQV|L zcBs=*UAlzFRA;0vmgs=uKL+1! z^qGoNye-eO>Fqw42`|4u`+Fd-qSMk(@fjPQrTE9~GNMO&h0kvc2OzWww@7e}6w_4EXkFq`c7l0w+OFa`mla$^3CHyAqNcv`b zVtL_(Gz8VB_s)^3MlX}3+T1xdLnW5))Ng(L+Tmk)oCcMQn2-S$BsO(SMHDp_2U&dD z#d-O$$Y`=l&IEPE%|x06RFClg-Foj@kL-o;bR*i^es%?i9*D$_oGeDBP`nosq(hxt zv!(r{2V;efo*c{QDifMrQ?gXhdl?K=a7I3L)yE!M*sgq8y_mnXqHg~+AIy(vh|(|k zbmdz$rH-j`N(Fm*>&B&e9qCP%B{f$ahyrP+!qjs~ak|;EfshC5PM&OcogZ?91|Uc_ zHUz)i$O?jC-k8FxbAG*woG&C-Po~+SQoa>okD8Hs zuDX@dIQT%nfzC%VXVLyoS!%$6V-nESNk|;Skv=yzAGkannp@!ICSAx4P##9&(;VF9 zA;WSKI-5r1ivEJ>3?ZTXxVnZN*CY7m6ig+!6&hRH0g~QvS;c;;{-_my{!Hab2nf|W zhR{zU1--6`SXAoM-7(;1~++0YDoB$Ad0?_JqI^^B>C&($8=H=k)X{p-7_jHvhNS)&ih!fEur+Kt+{& zc~`&J>!}AI0IBcZASpBtk#dNU1Oo~Y6Nn~sqKVMfPyx0PE?dIbX(pp#80bp4m>@)g zPL@=TeWablJp0xH-e|B7<6*Vax?h(y>orqs3phPtV1^&Z`D6H;F0g-EF^}GFO7@AD zpB8-oF^`WCw;|c^(d^}(ahc3jCMw@PwSFhjlIr&l>Wg(STc>}yeiLe+v+g%HWT6Ff z>X%3#1uXCb#wI6}b1c&zJo_`#jQ=pngyF`objb`PDYBs?pt(1OiB8_@!d!&hTq`*|uMsBmqed-}0 z>8OJ>{jEvbw(+^f<7tO6BtokAKn~PryX*l^&~I@)j*PV}Rh{FuWHcB|fq57V_`GyC zl7XXGI0BECJ3$JONrubjcHtTuN}xVUm?~KLC}n|FRd_S-V3|CwL`$WS5wWSQq@0F@ zHWin2*tO4+H6FWE;O!BKs#8aj%KQfmR_<+Q>mV+VB?gn)T_VQorKWK+l|3#m-FlJ$ zy=zRSTu3_)eL@{b{G7Vup81WxI$-*;bAkiGG`l_u?bCdQ^T)ra_I79PpdjB1A*FOc zmIYx2B8}AljLEJ`8|7Mo{jOTd`X+Zv>uK`pt^lUmJRA21AK2O=pX8sy&0JKt<#S3j zAx%+g<)P_t2hYEk*@kx>SHISvR}5{W)9A_{K8xNd9B`tQLncuDdJKvF21R7=+fH@A zRoFNAzH4i2*qnIqm$V!yzgV`Yd-M>{Ddr3TY{xo~u|I4E1273x!u0SLyDRK8IA$?A zn-cwh5m&XK>wTi@A%OdYQRPHmb zO=IsY3EiyKW-$?I7BXs_D7RJdsx_1{IysaLlh*#JPCl2|ms!Mt%LU+W1zIlrUHUNh z@?<&A!97t7{a#s?q;Hs0Kxp^^7zIpn^Rx(cLp^#eibJ)hx4^Cu%DXrG)H}A4N52z@ zLPMm4Ub@hhL;Pwuits+aNLq)Ix^XEYOth)7oA#o=iDiF)PI<8GSek~bIf#&p*j{mz zl!BR`ZSPtk7VvRmyrbq${2zX!c*!EHb=9q?oJM(Hy(iqq*ep?spy1;Im$e>nWyYR8 zIgm*mWOF{%Jb#^zfIg%N0|!aAPWZiT?i&PZ%<-&LmL?zKAl9iVwBd{aznZXor~q7= z!7Q+;uuV1MgmX(yURH;>EpaG(b(CUx|A5KCST*ouz1Posn?loVM%h@9EXF+}&LVNk z+-LsxJ;L~Dn%+wWDX7?59IlLhE~Bs@xISq%qKYgR^W(m`beBnMN=6L|Hxbq#`he~A zPMLhmx=4Rq&RCOzTyff7koNF}nEj?f(d4t548neD>D#LHB#9WvCoh#L>na-!*VIp8?LQPo_A1sPm3XVD04IxUG&)l2MzF-$2j8W5YDm0D z0H~lOivZY+Qd^kUJ3b0-jlxm1D+9_~r?vn~qW#a11$Q<;MV>EB+ypcdLA}yhfjOi{ z7Jd!9JMvGQ#2y_H7fHdQ?9WOhiCCDO zJA=!qq?Sm(ELppAq+ zqK-KI-{2PU;(=obc8pzXV~%-cPaN3GpRg0y3axNAeb;q#$MC)TW>?;UF7bKl1KBgb zEA5DTuc7S-ZSTQnY^AG-oxrd0SA-`Oh`@=63KGioc*Cnbh z@}xcT@Y{)z_?>L10aIBlxU>phC8)z9Bxl)^!L#e+SYzK;I9RmwXz9&~;CPvy0uu1% zNoVoWR>Nh|8?RJxW}G~TE4Xe9iYTSS6I6eI)xCW+B1+-hnDoe2y-Ybv0(sNp*a&Ef zy8bIE*Kch9-?Jw~`g&NL3T@D+fP^m^+d$Tre5PFAPdR{@xHqBrwZN3Lh=5Et{R_;M zqhvdG;HxKASp4!%nT7pic)%X!+BY1#kXChi@#$5YF-*Bu-HpVy*`YdjnKaMuy1C}z z_-8lA%Q-drGdg=*CN~JP*Sb)j%X>0We06+|OR=nsBHZ`!+#fX62d&|;V-{4;n4WxY znF1JomUD5#jf#3W!`c?5MbW}`1f_H3@^k1IrCay~`C`5%Hm+8uo3 zq&7QK>I&d{H^d~-Y07r^4x=?W zDc75aH#Dx(G&&^>XIaHZ%27sS2}x)SR)Duj;zl6jaY6ajJcuOf`}t*1dhBk&qvzxv z7k~lC8^Z>>)&dxR8%_;wgTrBFP!2-xlPf5Ux`xZ6!LzQd{Z)NwDUie4!KP->?PAMG zV+`1c+a}X&>)q; zpPiuSo13d319wB_r^uDyG7O|{?SByY;5H-jwg35!L|F1#(@y6O{9oAwn5w1~zfqu{ z^c3I_@h?ws`a99^n7eNp{955CVKp7+aiGFe@t9FZ^lf$#fs}->U<TXrt8zFkZC7dZN>^U`=WeyTTkzpd4miu+Xj?pN!19Xp;>adbO-=J%z zrX4SNlWzpm$N@o5X5FFu&ZRt&nV-oPffos>r&O>~SvqN!`hBS}e(j6|NI+N#S#hz{ z(3>l6AjpEN&JlY?wE`Z5TVD!B?30nB@*Dve={ZQFEVOuCTXELmnY@31eBesB>srUH#D1RGrVCC=KPm7oLc$AA8k5?j#^BgLY^x6?WS$br95PfxH+P;kjX{L(T4&owJl4fbIzaHG(iBP{~zB z^il>~#-f^gqM=GHzXBEPs=<&ir%vP<4#QcibN{m%?XHI3@cDudxvnm+{SAP$aaA2( zcndQ=S$?CwOCi2upcK9kiSym53_!3|JNpQu`MnRmJ2V^1M8SCULAigkSrS{vs4}?& zZJoGdAgCnPSmDOvbe_DGRt$?o;51km>PCYrJzg%<4g}xZz&Nss61O9nmTxs5%mQtc;na@uK1OY3!r%uxF=e@iqG*;)wMF+e+Sk9j5c zQeSj|_JI4x0STgmk$uK&Dsg!D{JJDo8K~COxjmvGE0#`}EY{|Su#X+*=l9K@W1p=2 ze7B*#4kL-oH?=WzR^sNdOb_%;?alhAIO4kEcS>^{l)`8?(_D!ca&vxE2$++_PlXPr zpPbvB&S|1JhKp4Lk;Ra4X+Hbi94QAq9s7A@Hx9G2Q6hb1pRk*RO$v>5w+kC@w7S`9 z3d%*rsdX~D83B7ii+`kAT*gw8-7Q8;bEE0lAg6?Y!k+7zc!aE3I;UW|kTlOO<{GxY`! zu;b4L7W5yeXT&N0ZHULrtW&>$}HJc&)gK;1av_v7U4XR!-3Bz zQRcuEK`imxv+;lrQu+fBvUhh%M#ngGQ8nQ)+M?QQCTWA&0Ib7c|pKMn9 z@Z-yDyrlduuSZ%m?VRY07-5p(R~r_to2a}u_adHJ)3zrkSG3k_&;V%u#h;6T*~86$ zyHnd_Z2*zS2FS-Kz(7V^z2P6Q8vtsaNHC52aIr3+?d7EtPbn99!xyNTH6*Y#BspDP z{PoL-&7HaXG#+_Jz-x>|(daxypjx%9YSHX;Xf0gKPbEn=4DLY@G?-uRJM0pd@DHRt zfAZ!Ct~Lp9XHz32lgGslC~vPjwvG>+EVX3a+HDOwe0K{?I2`bcmBNh{+~r=+n)=1RIn`67CS Xj- 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

    hhPxEh3uTutKOKEc(oe2)JL895$GFlmNw2 zK;!7u=!&}4gX4{FXX6hsLPTi{I0_gQv4~9hm((xo>Fh(08tF&b zYDDUG1CW7QSg-n7a+;c6ONf~e)Au-(r+KOx1X{b;D;ZR(q+vwTodC;cK-Jg!&ujPm zH7bE-jIAXSIt_9ezl1NOxfgvFJ|AdukgG!{S&<*1mve=1kUXizUV`X>+kO1RD+JyL zX4-yU{{zmxN9Q;%%~D_&tD>*wH^@hU;G$UMzi-CrQ@wNtR+jBku}@illaRFB#9k55 z>M@EW%0gqC&G-OYb+FD{>hZb-+5>zQdw@TLdc13`o V-!b7i;m|l>B%ydW(lMbE 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 oc?SL3 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

    aVx`j52@tx}BmBak~UJy#TMwyUUW< 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

    m@YHhN<|kQpJ`up|maji3(_XtiO(ZpvACIGI=T; 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

    ;@%zi%79>XE=hMyYyW#{!jz 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 Ez@P-oOPTjGFN4hvCKLy?DGEIL^>l-iM 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

    @RZ_QH^g;^%G30Col#lZsX}MKh+2E`s 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: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⪼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≺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

    +DdZh4_w?)k-nCP`#oefL*>k7o*eu9;8sfK;P} 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

    V1k!(yq}rU_?fvdC9pS!? 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

    d{|`WaWn_CAKfY} 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 literal 0 HcmV?d00001 diff --git a/documents/haixian.pdm b/documents/haixian.pdm new file mode 100644 index 0000000..5476ba8 --- /dev/null +++ b/documents/haixian.pdm @@ -0,0 +1,8549 @@ + + + + + + + + + +7A5F12AC-80F5-4D0A-8715-B17926B78762 +order +order +1458094228 +Administrator +1459093351 +Administrator +[FolderOptions] + +[FolderOptions\Physical Objects] +GenerationCheckModel=Yes +GenerationPath= +GenerationOptions= +GenerationTasks= +GenerationTargets= +GenerationSelections= +RevPkey=Yes +RevFkey=Yes +RevAkey=Yes +RevCheck=Yes +RevIndx=Yes +RevOpts=Yes +RevViewAsTabl=No +RevViewOpts=Yes +RevSystAsTabl=Yes +RevTablPerm=No +RevViewPerm=No +RevProcPerm=No +RevDbpkPerm=No +RevSqncPerm=No +RevAdtPerm=No +RevUserPriv=No +RevUserOpts=No +RevGrpePriv=No +RevRolePriv=No +RevDtbsOpts=Yes +RevDtbsPerm=No +RevViewIndx=Yes +RevJidxOpts=Yes +RevStats=No +RevTspcPerm=No +RevCaseSensitive=No +GenTrgrStdMsg=Yes +GenTrgrMsgTab= +GenTrgrMsgNo= +GenTrgrMsgTxt= +TrgrPreserve=No +TrgrIns=Yes +TrgrUpd=Yes +TrgrDel=Yes +TrgrC2Ins=Yes +TrgrC2Upd=Yes +TrgrC3=Yes +TrgrC4=Yes +TrgrC5=Yes +TrgrC6=Yes +TrgrC7=Yes +TrgrC8=Yes +TrgrC9=Yes +TrgrC10=Yes +TrgrC11=Yes +TrgrC1=Yes +TrgrC12Ins=Yes +TrgrC12Upd=Yes +TrgrC13=Yes +UpdateTableStatistics=Yes +UpdateColumnStatistics=Yes + +[FolderOptions\Physical Objects\Database Generation] +GenScriptName=order.sql +GenScriptName0= +GenScriptName1= +GenScriptName2= +GenScriptName3= +GenScriptName4= +GenScriptName5= +GenScriptName6= +GenScriptName7= +GenScriptName8= +GenScriptName9= +GenPathName=E:\项目\海鲜配送系统\ +GenSingleFile=Yes +GenODBC=No +GenCheckModel=Yes +GenScriptPrev=Yes +GenArchiveModel=No +GenUseSync=No +GenSyncChoice=0 +GenSyncArch= +GenSyncRmg=0 + +[FolderOptions\Physical Objects\Database Generation\Format] +GenScriptTitle=Yes +GenScriptNamLabl=No +GenScriptQDtbs=No +GenScriptQOwnr=Yes +GenScriptCase=0 +GenScriptEncoding=ANSI +GenScriptNAcct=No +IdentifierDelimiter=" + +[FolderOptions\Physical Objects\Database Generation\Database] +Create=Yes +Open=Yes +Close=Yes +Drop=Yes +Permission=No + +[FolderOptions\Physical Objects\Database Generation\Database\Create] +Physical Options=Yes +Header=Yes +Footer=Yes + +[FolderOptions\Physical Objects\Database Generation\Tablespace] +Create=Yes +Drop=Yes +Comment=Yes +Permission=No + +[FolderOptions\Physical Objects\Database Generation\Tablespace\Create] +Header=Yes +Footer=Yes + +[FolderOptions\Physical Objects\Database Generation\Storage] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\User] +Create=Yes +Drop=Yes +Comment=Yes +Privilege=No + +[FolderOptions\Physical Objects\Database Generation\User\Create] +Physical Options=No + +[FolderOptions\Physical Objects\Database Generation\Group] +Create=Yes +Drop=Yes +Comment=Yes +Privilege=No + +[FolderOptions\Physical Objects\Database Generation\Role] +Create=Yes +Drop=Yes +Privilege=No + +[FolderOptions\Physical Objects\Database Generation\UserDefinedDataType] +Create=Yes +Comment=Yes +Drop=Yes + +[FolderOptions\Physical Objects\Database Generation\UserDefinedDataType\Create] +Default value=Yes +Check=Yes + +[FolderOptions\Physical Objects\Database Generation\AbstractDataType] +Create=Yes +Header=Yes +Footer=Yes +Drop=Yes +Comment=Yes +Install JAVA class=Yes +Remove JAVA class=Yes +Permission=No + +[FolderOptions\Physical Objects\Database Generation\Rule] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\Default] +Create=Yes +Comment=Yes +Drop=Yes + +[FolderOptions\Physical Objects\Database Generation\Sequence] +Create=Yes +Drop=Yes +Comment=Yes +Permission=No + +[FolderOptions\Physical Objects\Database Generation\Table&&Column] + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Table] +Create=Yes +Drop=Yes +Comment=Yes +Permission=No + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Table\Create] +Check=Yes +Physical Options=Yes +Header=Yes +Footer=Yes + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Table\Create\Check] +Constraint declaration=No + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Column] +User datatype=No +Default value=Yes +Check=Yes +Physical Options=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Column\Check] +Constraint declaration=No + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Key] + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Key\Primary key] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Key\Primary key\Create] +Constraint declaration=No +Physical Options=Yes + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Key\Alternate key] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Key\Alternate key\Create] +Constraint declaration=No +Physical Options=Yes + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Foreign key] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Foreign key\Create] +Constraint declaration=Yes + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Index] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Index\Create] +Constraint declaration=Yes +Physical Options=Yes + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Index\Filter] +Primary key=No +Foreign key=No +Alternate key=No +Cluster=Yes +Other=Yes + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Trigger] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Trigger\Filter] +For insert=Yes +For update=Yes +For delete=Yes +For other=Yes + +[FolderOptions\Physical Objects\Database Generation\View] +Create=Yes +Drop=Yes +Comment=Yes +Permission=No + +[FolderOptions\Physical Objects\Database Generation\View\Create] +Force Column list=No +Physical Options=Yes +Header=Yes +Footer=Yes + +[FolderOptions\Physical Objects\Database Generation\View\ViewColumn] +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\View\ViewIndex] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\View\ViewIndex\Create] +Physical Options=Yes + +[FolderOptions\Physical Objects\Database Generation\View\ViewIndex\Filter] +Cluster=Yes +Other=Yes + +[FolderOptions\Physical Objects\Database Generation\View\Trigger] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\View\Trigger\Filter] +For insert=Yes +For update=Yes +For delete=Yes +For other=Yes + +[FolderOptions\Physical Objects\Database Generation\DBMSTrigger] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\Synonym] +Create=Yes +Drop=Yes + +[FolderOptions\Physical Objects\Database Generation\Synonym\Filter] +Table=Yes +View=Yes +Proc=Yes +Synonym=Yes +Database Package=Yes +Sequence=Yes + +[FolderOptions\Physical Objects\Database Generation\JoinIndex] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\JoinIndex\Create] +Physical Options=Yes +Header=Yes +Footer=Yes + +[FolderOptions\Physical Objects\Database Generation\Procedure] +Create=Yes +Drop=Yes +Comment=Yes +Permission=No + +[FolderOptions\Physical Objects\Database Generation\Procedure\Create] +Header=Yes +Footer=Yes + +[FolderOptions\Physical Objects\Database Generation\DatabasePackage] +Create=Yes +Drop=Yes +Permission=No + +[FolderOptions\Physical Objects\Database Generation\WebService] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\Dimension] +Create=Yes +Drop=Yes + +[FolderOptions\Physical Objects\Database Generation\Synchronization] +GenBackupTabl=1 +GenKeepBackTabl=1 +GenTmpTablDrop=No +GenKeepTablOpts=No + +[FolderOptions\Physical Objects\Test Data] +GenDataPathName= +GenDataSinglefile=Yes +GenDataScriptName=testdata +GenDataScriptName0= +GenDataScriptName1= +GenDataScriptName2= +GenDataScriptName3= +GenDataScriptName4= +GenDataScriptName5= +GenDataScriptName6= +GenDataScriptName7= +GenDataScriptName8= +GenDataScriptName9= +GenDataOdbc=0 +GenDataDelOld=No +GenDataTitle=No +GenDataDefNumRows=20 +GenDataCommit=0 +GenDataPacket=0 +GenDataOwner=No +GenDataProfNumb= +GenDataProfChar= +GenDataProfDate= +GenDataCSVSeparator=, +GenDataFileFormat=CSV +GenDataUseWizard=No + +[FolderOptions\Pdm] +IndxIQName=%COLUMN%_%INDEXTYPE% +IndxPK=Yes +IndxFK=Yes +IndxAK=Yes +IndxPKName=%TABLE%_PK +IndxFKName=%REFR%_FK +IndxAKName=%AKEY%_AK +IndxPreserve=No +IndxThreshold=0 +IndxStats=No +RefrPreserve=No +JidxPreserve=No +RbldMultiFact=Yes +RbldMultiDim=Yes +RbldMultiJidx=Yes +CubePreserve=No +TablStProcPreserve=No +ProcDepPreserve=Yes +TrgrDepPreserve=Yes +CubeScriptPath= +CubeScriptCase=0 +CubeScriptEncoding=ANSI +CubeScriptNacct=No +CubeScriptHeader=No +CubeScriptExt=csv +CubeScriptExt0=txt +CubeScriptExt1= +CubeScriptExt2= +CubeScriptSep=, +CubeScriptDeli=" +EstimationYears=0 +DfltDomnName=D_%.U:VALUE% +DfltColnName=D_%.U:VALUE% +DfltReuse=Yes +DfltDrop=Yes + +[FolderOptions\CheckModel] + +[FolderOptions\CheckModel\Package] + +[FolderOptions\CheckModel\Package\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Package\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Package\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Package\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Package\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Package\CheckPackageMissTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Package\DefaultCheckPackageMissTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Package\CircularReference] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Package\ConstraintName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Package\CnstMaxLen] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Package\CircularDependency] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Package\ShortcutUniqCode] +CheckSeverity=Yes +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\Table] + +[FolderOptions\CheckModel\Table\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\UniqIndex] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\MaxLen - NAME] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\EmptyColl - COLNCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\EmptyColl - INDXCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\EmptyColl - KEYCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\SerialColumnNumber] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\EmptyCollYesYes] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\TableIndexes] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\Mapping] +CheckSeverity=No +FixRequested=Yes +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\MappingSFMap] +CheckSeverity=No +FixRequested=Yes +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\EmptyColl - PERMCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\Table\CheckTablePartitionKey] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\CheckTableStartDate] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\CheckTableRefNoLifecycle] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\CheckTableSourceMapping] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\CheckTablePartialColumnMapping] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\CheckTableKeyColumnMapping] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\CheckTableNotOnLifecycleTablespace] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\MYSQL50_Table_Table_storage_type] +CheckSeverity=No +FixRequested=Yes +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column] + +[FolderOptions\CheckModel\Table.Column\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\DomainDivergence] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\ColumnMandatory] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\CheckNumParam] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\CheckPrecSupLng] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\CheckUndefDttp] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\FkeyDttpDivergence] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\FkeyCheckDivergence] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\ColnSqncNoKey] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\ColnSqncDttp] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\SerialColumnFK] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\ColumnCompExpr] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\CheckColumnOneToOneMapping] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\CheckColumnDataTypeMapping] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\CheckColumnNoMapping] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\CheckDttpIncompatibleFormat] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\MYSQL50_Column_Auto_increment_key] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\MYSQL50_Column_Datatype_attributes] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index] + +[FolderOptions\CheckModel\Table.Index\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\EmptyColl - CIDXCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\UndefIndexType] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\IndexColumnCount] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\IQIndxHNGUniq] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\CheckIncludeColl - Tabl] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\MYSQL50_Index_Fulltext_indexes_validity] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Key] + +[FolderOptions\CheckModel\Table.Key\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Key\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Key\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Key\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Key\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Key\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Key\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Key\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Key\EmptyColl - COLNCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Key\CheckIncludeColl - Tabl] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Key\MultiKeySqnc] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Trigger] + +[FolderOptions\CheckModel\Table.Trigger\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Trigger\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Trigger\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Trigger\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Trigger\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Trigger\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Trigger\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Trigger\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Join Index] + +[FolderOptions\CheckModel\Join Index\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Join Index\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Join Index\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Join Index\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Join Index\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Join Index\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Join Index\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View] + +[FolderOptions\CheckModel\View\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View\EmptyColl - PERMCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\View.View Index] + +[FolderOptions\CheckModel\View.View Index\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View.View Index\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View.View Index\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View.View Index\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View.View Index\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View.View Index\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View.View Index\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View.View Index\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View.View Index\EmptyColl - CIDXCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View.View Index\IndexColumnCount] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View.View Index\CheckIncludeColl - Tabl] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference] + +[FolderOptions\CheckModel\Reference\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference\Reflexive] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference\EmptyColl - RFJNCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference\IncompleteJoin] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference\JoinOrder] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View Reference] + +[FolderOptions\CheckModel\View Reference\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View Reference\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View Reference\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View Reference\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View Reference\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View Reference\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View Reference\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View Reference\EmptyColl - VRFJNCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Domain] + +[FolderOptions\CheckModel\Domain\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Domain\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Domain\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Domain\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Domain\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Domain\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Domain\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Domain\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Domain\CheckNumParam] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Domain\CheckPrecSupLng] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Domain\CheckUndefDttp] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Domain\CheckDttpIncompatibleFormat] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Default] + +[FolderOptions\CheckModel\Default\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Default\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Default\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Default\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Default\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Default\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Default\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Default\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Default\DfltValeEmpty] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Default\DfltSameVale] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\User] + +[FolderOptions\CheckModel\User\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\User\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\User\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\User\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\User\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\User\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\User\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\User\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\User\UniquePassword] +CheckSeverity=No +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\Group] + +[FolderOptions\CheckModel\Group\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Group\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Group\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Group\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Group\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Group\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Group\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Group\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Group\EmptyColl - USERCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Group\UniquePassword] +CheckSeverity=No +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\Role] + +[FolderOptions\CheckModel\Role\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Role\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Role\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Role\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Role\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Role\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Role\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Role\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Role\EmptyColl - USERCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Procedure] + +[FolderOptions\CheckModel\Procedure\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Procedure\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Procedure\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Procedure\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Procedure\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Procedure\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Procedure\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Procedure\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Procedure\ProcBodyEmpty] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Procedure\EmptyColl - PERMCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\DBMS Trigger] + +[FolderOptions\CheckModel\DBMS Trigger\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\DBMS Trigger\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\DBMS Trigger\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\DBMS Trigger\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\DBMS Trigger\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\DBMS Trigger\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\DBMS Trigger\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\DBMS Trigger\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\DBMS Trigger\DbmsTriggerEvent] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Source] + +[FolderOptions\CheckModel\Data Source\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Source\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Source\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Source\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Source\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Source\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Source\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Source\EmptyColl - MODLSRC] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Source\DtscTargets] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Source\CheckDataSourceModels] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Horizontal Partitioning] + +[FolderOptions\CheckModel\Horizontal Partitioning\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Horizontal Partitioning\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Horizontal Partitioning\EmptyColl - PARTCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Horizontal Partitioning\TargetTables] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Vertical Partitioning] + +[FolderOptions\CheckModel\Vertical Partitioning\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Vertical Partitioning\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Vertical Partitioning\EmptyColl - PARTCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Vertical Partitioning\TargetTables] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table Collapsing] + +[FolderOptions\CheckModel\Table Collapsing\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table Collapsing\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table Collapsing\EmptyColl - TargetTable] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table Collapsing\TargetTables] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact] + +[FolderOptions\CheckModel\Fact\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact\EmptyColl - MEASCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact\Mapping] +CheckSeverity=No +FixRequested=Yes +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact\MappingSFMap] +CheckSeverity=No +FixRequested=Yes +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact\EmptyColl - ALLOLINKCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact\CubeDupAssociation] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension] + +[FolderOptions\CheckModel\Dimension\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\EmptyColl - DATTRCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\EmptyColl - HIERCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\DimnDupHierarchy] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\DimnDefHierarchy] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\Mapping] +CheckSeverity=No +FixRequested=Yes +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\MappingSFMap] +CheckSeverity=No +FixRequested=Yes +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\SerialColumnNumber] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Association] + +[FolderOptions\CheckModel\Association\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Association\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Association\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Association\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Association\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Association\EmptyColl - Hierarchy] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Attribute] + +[FolderOptions\CheckModel\Dimension.Attribute\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Attribute\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Attribute\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Attribute\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Attribute\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Attribute\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Attribute\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact.Measure] + +[FolderOptions\CheckModel\Fact.Measure\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact.Measure\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact.Measure\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact.Measure\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact.Measure\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact.Measure\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact.Measure\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Hierarchy] + +[FolderOptions\CheckModel\Dimension.Hierarchy\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Hierarchy\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Hierarchy\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Hierarchy\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Hierarchy\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Hierarchy\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Hierarchy\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Hierarchy\EmptyColl - DATTRCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Synonym] + +[FolderOptions\CheckModel\Synonym\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Synonym\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Synonym\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Synonym\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Synonym\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Synonym\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Synonym\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Synonym\MaxLen - NAME] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Synonym\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Synonym\EmptyColl - BASEOBJ] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type] + +[FolderOptions\CheckModel\Abstract Data Type\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type\AdtInstantiable] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type\AdtAbstractUsed] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type.Abstract Data Type Procedure] + +[FolderOptions\CheckModel\Abstract Data Type.Abstract Data Type Procedure\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type.Abstract Data Type Procedure\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type.Abstract Data Type Procedure\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type.Abstract Data Type Procedure\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type.Abstract Data Type Procedure\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type.Abstract Data Type Procedure\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type.Abstract Data Type Procedure\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type.Abstract Data Type Procedure\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type.Abstract Data Type Procedure\AdtProcUniqName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type.Abstract Data Type Procedure\UniqueDefinition] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type.Abstract Data Type Procedure\ReturnDataType] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package] + +[FolderOptions\CheckModel\Database Package\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package\MaxLen - NAME] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package\EmptyColl - PROCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package\EmptyColl - CURCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\Database Package\EmptyColl - VARCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\Database Package\EmptyColl - TYPCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\Database Package\EmptyColl - EXCCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\Database Package.Database Package Procedure] + +[FolderOptions\CheckModel\Database Package.Database Package Procedure\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Procedure\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Procedure\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Procedure\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Procedure\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Procedure\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Procedure\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Procedure\UniqueDefinition] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Procedure\EmptyColl - PARM] +CheckSeverity=Yes +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\Database Package.Database Package Procedure\ReturnDataType] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Sequence] + +[FolderOptions\CheckModel\Sequence\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Sequence\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Sequence\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Sequence\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Sequence\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Sequence\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Sequence\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Sequence\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Cursor] + +[FolderOptions\CheckModel\Database Package.Database Package Cursor\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Cursor\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Cursor\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Cursor\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Cursor\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Cursor\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Cursor\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Cursor\UniqueDefinition] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Cursor\ReturnDataType] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Cursor\EmptyColl - PARM] +CheckSeverity=Yes +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\Database Package.Database Package Variable] + +[FolderOptions\CheckModel\Database Package.Database Package Variable\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Variable\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Variable\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Variable\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Variable\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Variable\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Variable\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Variable\CheckUndefDttp] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Type] + +[FolderOptions\CheckModel\Database Package.Database Package Type\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Type\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Type\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Type\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Type\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Type\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Type\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Type\UniqueDefinition] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Exception] + +[FolderOptions\CheckModel\Database Package.Database Package Exception\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Exception\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Exception\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Exception\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Exception\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Exception\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Exception\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Tablespace] + +[FolderOptions\CheckModel\Tablespace\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Tablespace\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Tablespace\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Tablespace\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Tablespace\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Tablespace\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Tablespace\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Tablespace\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Tablespace\IsObjectUsed] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Storage] + +[FolderOptions\CheckModel\Storage\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Storage\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Storage\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Storage\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Storage\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Storage\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Storage\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Storage\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Storage\IsObjectUsed] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database] + +[FolderOptions\CheckModel\Database\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database\IsObjectUsed] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service] + +[FolderOptions\CheckModel\Web Service\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service.Web Operation] + +[FolderOptions\CheckModel\Web Service.Web Operation\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service.Web Operation\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service.Web Operation\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service.Web Operation\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service.Web Operation\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service.Web Operation\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service.Web Operation\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service.Web Operation\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle] + +[FolderOptions\CheckModel\Lifecycle\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle\CheckLifecyclePhase] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle\CheckLifecycleRetention] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle\CheckPartitionRange] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase] + +[FolderOptions\CheckModel\Lifecycle.Phase\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\CheckPhaseTbspace] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\CheckPhaseIQTbspace] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\CheckPhaseDuplicateTbspace] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\CheckPhaseTbspaceCurrency] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\CheckPhaseRetention] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\CheckPhaseIdlePeriod] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\CheckPhaseDataSource] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\CheckPhaseExternalOnFirst] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Replication] + +[FolderOptions\CheckModel\Replication\PartialReplication] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Business Rule] + +[FolderOptions\CheckModel\Business Rule\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Business Rule\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Business Rule\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Business Rule\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Business Rule\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Business Rule\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Business Rule\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Business Rule\EmptyColl - OBJCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Object] + +[FolderOptions\CheckModel\Extended Object\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Object\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Object\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Object\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Object\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Object\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Object\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Link] + +[FolderOptions\CheckModel\Extended Link\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Link\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Link\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Link\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Link\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Link\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Link\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\File] + +[FolderOptions\CheckModel\File\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\File\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\File\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\File\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\File\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\File\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\File\CheckPathExists] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Format] + +[FolderOptions\CheckModel\Data Format\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Format\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Format\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Format\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Format\NotApprovedTerms] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Format\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Format\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Format\CheckDataFormatNullExpression] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes +[ModelOptions] + +[ModelOptions\Physical Objects] +CaseSensitive=No +DisplayName=Yes +EnableTrans=No +UseTerm=No +EnableRequirements=No +EnableFullShortcut=Yes +DefaultDttp= +IgnoreOwner=No +RebuildTrigger=Yes +RefrUnique=No +RefrAutoMigrate=Yes +RefrMigrateReuse=Yes +RefrMigrateDomain=Yes +RefrMigrateCheck=Yes +RefrMigrateRule=Yes +RefrMigrateExtd=No +RefrMigrDefaultLink=No +RefrDfltImpl=D +RefrPrgtColn=No +RefrMigrateToEnd=No +RebuildTriggerDep=No +ColnFKName=%.3:PARENT%_%COLUMN% +ColnFKNameUse=No +DomnCopyDttp=Yes +DomnCopyChck=No +DomnCopyRule=No +DomnCopyMand=No +DomnCopyExtd=No +DomnCopyProf=No +Notation=0 +DomnDefaultMandatory=No +ColnDefaultMandatory=No +TablDefaultOwner= +ViewDefaultOwner= +TrgrDefaultOwnerTabl= +TrgrDefaultOwnerView= +IdxDefaultOwnerTabl= +IdxDefaultOwnerView= +JdxDefaultOwner= +DBPackDefaultOwner= +SeqDefaultOwner= +ProcDefaultOwner= +DBMSTrgrDefaultOwner= +Currency=USD +RefrDeleteConstraint=1 +RefrUpdateConstraint=1 +RefrParentMandatory=No +RefrParentChangeAllow=Yes +RefrCheckOnCommit=No + +[ModelOptions\Physical Objects\NamingOptionsTemplates] + +[ModelOptions\Physical Objects\ClssNamingOptions] + +[ModelOptions\Physical Objects\ClssNamingOptions\PDMPCKG] + +[ModelOptions\Physical Objects\ClssNamingOptions\PDMPCKG\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\PDMPCKG\Code] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\PDMDOMN] + +[ModelOptions\Physical Objects\ClssNamingOptions\PDMDOMN\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\PDMDOMN\Code] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\TABL] + +[ModelOptions\Physical Objects\ClssNamingOptions\TABL\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\TABL\Code] +Template= +MaxLen=64 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\COLN] + +[ModelOptions\Physical Objects\ClssNamingOptions\COLN\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\COLN\Code] +Template= +MaxLen=64 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\INDX] + +[ModelOptions\Physical Objects\ClssNamingOptions\INDX\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\INDX\Code] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\REFR] + +[ModelOptions\Physical Objects\ClssNamingOptions\REFR\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\REFR\Code] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\VREF] + +[ModelOptions\Physical Objects\ClssNamingOptions\VREF\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\VREF\Code] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\VIEW] + +[ModelOptions\Physical Objects\ClssNamingOptions\VIEW\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\VIEW\Code] +Template= +MaxLen=64 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\VIEWC] + +[ModelOptions\Physical Objects\ClssNamingOptions\VIEWC\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\VIEWC\Code] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\WEBSERV] + +[ModelOptions\Physical Objects\ClssNamingOptions\WEBSERV\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\WEBSERV\Code] +Template= +MaxLen=254 +Case=M +ValidChar='a'-'z','A'-'Z','0'-'9',"/-_.!~*'()" +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\WEBOP] + +[ModelOptions\Physical Objects\ClssNamingOptions\WEBOP\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\WEBOP\Code] +Template= +MaxLen=254 +Case=M +ValidChar='a'-'z','A'-'Z','0'-'9',"/-_.!~*'()" +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\WPARAM] + +[ModelOptions\Physical Objects\ClssNamingOptions\WPARAM\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\WPARAM\Code] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\FACT] + +[ModelOptions\Physical Objects\ClssNamingOptions\FACT\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\FACT\Code] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\DIMN] + +[ModelOptions\Physical Objects\ClssNamingOptions\DIMN\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\DIMN\Code] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\MEAS] + +[ModelOptions\Physical Objects\ClssNamingOptions\MEAS\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\MEAS\Code] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\DATTR] + +[ModelOptions\Physical Objects\ClssNamingOptions\DATTR\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\DATTR\Code] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\FILO] + +[ModelOptions\Physical Objects\ClssNamingOptions\FILO\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\FILO\Code] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\FRMEOBJ] + +[ModelOptions\Physical Objects\ClssNamingOptions\FRMEOBJ\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\FRMEOBJ\Code] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\FRMELNK] + +[ModelOptions\Physical Objects\ClssNamingOptions\FRMELNK\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\FRMELNK\Code] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\DefaultClass] + +[ModelOptions\Physical Objects\ClssNamingOptions\DefaultClass\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\DefaultClass\Code] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar= +Script= +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Connection] + +[ModelOptions\Pdm] + +[ModelOptions\Generate] + +[ModelOptions\Generate\Xsm] +GenRootElement=Yes +GenComplexType=No +GenAttribute=Yes +CheckModel=Yes +SaveLinks=Yes +ORMapping=No +NameToCode=No + +[ModelOptions\Generate\Pdm] +RRMapping=No + +[ModelOptions\Generate\Cdm] +CheckModel=Yes +SaveLinks=Yes +NameToCode=No +Notation=2 + +[ModelOptions\Generate\Oom] +CheckModel=Yes +SaveLinks=Yes +ORMapping=No +NameToCode=Yes +ClassPrefix= + +[ModelOptions\Generate\Ldm] +CheckModel=Yes +SaveLinks=Yes +NameToCode=No + +[ModelOptions\Default Opts] + +[ModelOptions\Default Opts\TABL] +PhysOpts= + +[ModelOptions\Default Opts\COLN] +PhysOpts= + +[ModelOptions\Default Opts\INDX] +PhysOpts= + +[ModelOptions\Default Opts\AKEY] +PhysOpts= + +[ModelOptions\Default Opts\PKEY] +PhysOpts= + +[ModelOptions\Default Opts\STOR] +PhysOpts= + +[ModelOptions\Default Opts\TSPC] +PhysOpts= + +[ModelOptions\Default Opts\SQNC] +PhysOpts= + +[ModelOptions\Default Opts\DTBS] +PhysOpts= + +[ModelOptions\Default Opts\USER] +PhysOpts= + +[ModelOptions\Default Opts\JIDX] +PhysOpts= +{F4F16ECD-F2F1-4006-AF6F-638D5C65F35E},MYSQL50,62={6EBD0427-31BE-44D4-BA6D-77622CBC4F1E},DatabaseType,6=InnoDB + + + + +25EA4AB1-5940-4980-A5A7-6396620CD841 +MySQL 5.0 +MYSQL50 +1458094227 +Administrator +1458094227 +Administrator + +F4F16ECD-F2F1-4006-AF6F-638D5C65F35E +4BA9F647-DAB1-11D1-9944-006097355D9B + + + + +485D3CB5-05EB-41BC-8B86-9BAF0C7C61DE +PhysicalDiagram_1 +PhysicalDiagram_1 +1458094228 +Administrator +1459093351 +Administrator +[DisplayPreferences] + +[DisplayPreferences\PDM] + +[DisplayPreferences\General] +Adjust to text=Yes +Snap Grid=No +Constrain Labels=Yes +Display Grid=No +Show Page Delimiter=Yes +Show Links intersections=Yes +Activate automatic link routing=Yes +Grid size=0 +Graphic unit=2 +Window color=255, 255, 255 +Background image= +Background mode=8 +Watermark image= +Watermark mode=8 +Show watermark on screen=No +Gradient mode=0 +Gradient end color=255, 255, 255 +Show Swimlane=No +SwimlaneVert=Yes +TreeVert=No +CompDark=0 + +[DisplayPreferences\Object] +Show Icon=No +Mode=2 +Trunc Length=40 +Word Length=40 +Word Text=!"#$%&')*+,-./:;=>?@\]^_`|}~ +Shortcut IntIcon=Yes +Shortcut IntLoct=Yes +Shortcut IntFullPath=No +Shortcut IntLastPackage=Yes +Shortcut ExtIcon=Yes +Shortcut ExtLoct=No +Shortcut ExtFullPath=No +Shortcut ExtLastPackage=Yes +Shortcut ExtIncludeModl=Yes +EObjShowStrn=Yes +ExtendedObject.Comment=No +ExtendedObject.IconPicture=No +ExtendedObject.TextStyle=No +ExtendedObject_SymbolLayout=<Form>[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Object Name" Attribute="DisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF] <Separator Name="Separator" />[CRLF] <StandardAttribute Name="Comment" Attribute="Comment" Prefix="" Suffix="" Alignment="LEFT" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Icon" Attribute="IconPicture" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF] <StandardAttribute Name="Force top align" Attribute="TextStyle" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF]</Form> +ELnkShowStrn=Yes +ELnkShowName=Yes +ExtendedLink_SymbolLayout=<Form>[CRLF] <Form Name="Center" >[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] </Form>[CRLF] <Form Name="Source" >[CRLF] </Form>[CRLF] <Form Name="Destination" >[CRLF] </Form>[CRLF]</Form> +FileObject.Stereotype=No +FileObject.DisplayName=Yes +FileObject.LocationOrName=No +FileObject.IconPicture=No +FileObject.TextStyle=No +FileObject.IconMode=Yes +FileObject_SymbolLayout=<Form>[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <ExclusiveChoice Name="Exclusive Choice" Mandatory="Yes" Display="HorizontalRadios" >[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Location" Attribute="LocationOrName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] </ExclusiveChoice>[CRLF] <StandardAttribute Name="Icon" Attribute="IconPicture" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF] <StandardAttribute Name="Force top align" Attribute="TextStyle" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF]</Form> +Package.Stereotype=Yes +Package.Comment=No +Package.IconPicture=No +Package.TextStyle=No +Package_SymbolLayout=<Form>[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF] <Separator Name="Separator" />[CRLF] <StandardAttribute Name="Comment" Attribute="Comment" Prefix="" Suffix="" Alignment="LEFT" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Icon" Attribute="IconPicture" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF] <StandardAttribute Name="Force top align" Attribute="TextStyle" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF]</Form> +Display Model Version=Yes +Table.Stereotype=Yes +Table.DisplayName=Yes +Table.OwnerDisplayName=No +Table.Columns=Yes +Table.Columns._Filter="All Columns" PDMCOLNALL +Table.Columns._Columns=Stereotype DataType KeyIndicator +Table.Columns._Limit=-5 +Table.Keys=No +Table.Keys._Columns=Stereotype Indicator +Table.Indexes=No +Table.Indexes._Columns=Stereotype +Table.Triggers=No +Table.Triggers._Columns=Stereotype +Table.Comment=No +Table.IconPicture=No +Table.TextStyle=No +Table_SymbolLayout=<Form>[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <ExclusiveChoice Name="Exclusive Choice" Mandatory="Yes" Display="HorizontalRadios" >[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Owner and Name" Attribute="OwnerDisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] </ExclusiveChoice>[CRLF] <Separator Name="Separator" />[CRLF] <StandardCollection Name="Columns" Collection="Columns" Columns="Stereotype No\r\nDisplayName Yes\r\nDataType No\r\nSymbolDataType No &quot;Domain or Data type&quot;\r\nDomain No\r\nKeyIndicator No\r\nIndexIndicator No\r\nNullStatus No" Filters="&quot;All Columns&quot; PDMCOLNALL &quot;&quot;\r\n&quot;PK Columns&quot; PDMCOLNPK &quot;\&quot;PRIM \&quot;TRUE\&quot; TRUE\&quot;&quot;\r\n&quot;Key Columns&quot; PDMCOLNKEY &quot;\&quot;KEYS \&quot;TRUE\&quot; TRUE\&quot;&quot;" HasLimit="Yes" HideEmpty="No" Caption="" Mandatory="No" />[CRLF] <StandardCollection Name="Keys" Collection="Keys" Columns="Stereotype No\r\nDisplayName Yes\r\nIndicator No" HasLimit="No" HideEmpty="No" Caption="" Mandatory="No" />[CRLF] <StandardCollection Name="Indexes" Collection="Indexes" Columns="Stereotype No\r\nDisplayName Yes\r\nIndicator No" HasLimit="No" HideEmpty="No" Caption="" Mandatory="No" />[CRLF] <StandardCollection Name="Triggers" Collection="Triggers" Columns="Stereotype No\r\nDisplayName Yes" HasLimit="No" HideEmpty="No" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Comment" Attribute="Comment" Prefix="" Suffix="" Alignment="LEFT" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Icon" Attribute="IconPicture" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF] <StandardAttribute Name="Force top align" Attribute="TextStyle" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF]</Form> +View.Stereotype=Yes +View.DisplayName=Yes +View.OwnerDisplayName=No +View.Columns=Yes +View.Columns._Columns=DisplayName +View.Columns._Limit=-5 +View.TemporaryVTables=Yes +View.Indexes=No +View.Comment=No +View.IconPicture=No +View.TextStyle=No +View_SymbolLayout=<Form>[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <ExclusiveChoice Name="Exclusive Choice" Mandatory="Yes" Display="HorizontalRadios" >[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Owner and Name" Attribute="OwnerDisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] </ExclusiveChoice>[CRLF] <Separator Name="Separator" />[CRLF] <StandardCollection Name="Columns" Collection="Columns" Columns="DisplayName No\r\nExpression No\r\nDataType No\r\nSymbolDataType No &quot;Domain or Data type&quot;\r\nIndexIndicator No" HasLimit="Yes" HideEmpty="No" Caption="" Mandatory="No" />[CRLF] <StandardCollection Name="Tables" Collection="TemporaryVTables" Columns="Name Yes" HasLimit="No" HideEmpty="No" Caption="" Mandatory="No" />[CRLF] <StandardCollection Name="Indexes" Collection="Indexes" Columns="DisplayName Yes" HasLimit="No" HideEmpty="No" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Comment" Attribute="Comment" Prefix="" Suffix="" Alignment="LEFT" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Icon" Attribute="IconPicture" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF] <StandardAttribute Name="Force top align" Attribute="TextStyle" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF]</Form> +Procedure.Stereotype=No +Procedure.DisplayName=Yes +Procedure.OwnerDisplayName=No +Procedure.Comment=No +Procedure.IconPicture=No +Procedure.TextStyle=No +Procedure_SymbolLayout=<Form>[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <ExclusiveChoice Name="Exclusive Choice" Mandatory="Yes" Display="HorizontalRadios" >[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Owner and Name" Attribute="OwnerDisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] </ExclusiveChoice>[CRLF] <Separator Name="Separator" />[CRLF] <StandardAttribute Name="Comment" Attribute="Comment" Prefix="" Suffix="" Alignment="LEFT" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Icon" Attribute="IconPicture" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF] <StandardAttribute Name="Force top align" Attribute="TextStyle" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF]</Form> +Reference.Cardinality=No +Reference.ImplementationType=No +Reference.ChildRole=Yes +Reference.Stereotype=Yes +Reference.DisplayName=No +Reference.ForeignKeyConstraintName=No +Reference.JoinExpression=No +Reference.Integrity=No +Reference.ParentRole=Yes +Reference_SymbolLayout=<Form>[CRLF] <Form Name="Source" >[CRLF] <StandardAttribute Name="Cardinality" Attribute="Cardinality" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Implementation" Attribute="ImplementationType" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Child Role" Attribute="ChildRole" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] </Form>[CRLF] <Form Name="Center" >[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Caption="" Mandatory="No" />[CRLF] <ExclusiveChoice Name="Exclusive Choice" Mandatory="No" Display="HorizontalRadios" >[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Cons&amp;traint Name" Attribute="ForeignKeyConstraintName" Prefix="" Suffix="" Caption="Cons&amp;traint Name" Mandatory="No" />[CRLF] <StandardAttribute Name="Join" Attribute="JoinExpression" Prefix="" Suffix="" Caption="Join" Mandatory="No" />[CRLF] </ExclusiveChoice>[CRLF] <StandardAttribute Name="Referential integrity" Attribute="Integrity" Prefix="" Suffix="" Caption="Referential integrity" Mandatory="No" />[CRLF] </Form>[CRLF] <Form Name="Destination" >[CRLF] <StandardAttribute Name="Parent Role" Attribute="ParentRole" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] </Form>[CRLF]</Form> +ViewReference.ChildRole=Yes +ViewReference.Stereotype=Yes +ViewReference.DisplayName=No +ViewReference.JoinExpression=No +ViewReference.ParentRole=Yes +ViewReference_SymbolLayout=<Form>[CRLF] <Form Name="Source" >[CRLF] <StandardAttribute Name="Child Role" Attribute="ChildRole" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] </Form>[CRLF] <Form Name="Center" >[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Caption="" Mandatory="No" />[CRLF] <ExclusiveChoice Name="Exclusive Choice" Mandatory="No" Display="HorizontalRadios" >[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Join Expression" Attribute="JoinExpression" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] </ExclusiveChoice>[CRLF] </Form>[CRLF] <Form Name="Destination" >[CRLF] <StandardAttribute Name="Parent Role" Attribute="ParentRole" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] </Form>[CRLF]</Form> + +[DisplayPreferences\Symbol] + +[DisplayPreferences\Symbol\FRMEOBJ] +STRNFont=新宋体,8,N +STRNFont color=0, 0, 0 +DISPNAMEFont=新宋体,8,N +DISPNAMEFont color=0, 0, 0 +LABLFont=新宋体,8,N +LABLFont color=0, 0, 0 +AutoAdjustToText=Yes +Keep aspect=No +Keep center=No +Keep size=No +Width=6000 +Height=2000 +Brush color=255 255 255 +Fill Color=Yes +Brush style=6 +Brush bitmap mode=12 +Brush gradient mode=64 +Brush gradient color=192 192 192 +Brush background image= +Custom shape= +Custom text mode=0 +Pen=1 0 255 128 128 +Shadow color=192 192 192 +Shadow=0 + +[DisplayPreferences\Symbol\FRMELNK] +CENTERFont=新宋体,8,N +CENTERFont color=0, 0, 0 +Line style=1 +AutoAdjustToText=Yes +Keep aspect=No +Keep center=No +Keep size=No +Brush color=255 255 255 +Fill Color=Yes +Brush style=1 +Brush bitmap mode=12 +Brush gradient mode=0 +Brush gradient color=118 118 118 +Brush background image= +Custom shape= +Custom text mode=0 +Pen=1 0 128 128 255 +Shadow color=192 192 192 +Shadow=0 + +[DisplayPreferences\Symbol\FILO] +OBJSTRNFont=新宋体,8,N +OBJSTRNFont color=0, 0, 0 +DISPNAMEFont=新宋体,8,N +DISPNAMEFont color=0, 0, 0 +LCNMFont=新宋体,8,N +LCNMFont color=0, 0, 0 +AutoAdjustToText=Yes +Keep aspect=No +Keep center=No +Keep size=No +Width=4800 +Height=3600 +Brush color=255 255 255 +Fill Color=Yes +Brush style=1 +Brush bitmap mode=12 +Brush gradient mode=0 +Brush gradient color=118 118 118 +Brush background image= +Custom shape= +Custom text mode=0 +Pen=1 0 0 0 255 +Shadow color=192 192 192 +Shadow=0 + +[DisplayPreferences\Symbol\PDMPCKG] +STRNFont=新宋体,8,N +STRNFont color=0, 0, 0 +DISPNAMEFont=新宋体,8,N +DISPNAMEFont color=0, 0, 0 +LABLFont=新宋体,8,N +LABLFont color=0, 0, 0 +AutoAdjustToText=Yes +Keep aspect=No +Keep center=No +Keep size=No +Width=4800 +Height=4000 +Brush color=255 255 192 +Fill Color=Yes +Brush style=6 +Brush bitmap mode=12 +Brush gradient mode=65 +Brush gradient color=255 255 255 +Brush background image= +Custom shape= +Custom text mode=0 +Pen=1 0 178 178 178 +Shadow color=192 192 192 +Shadow=0 + +[DisplayPreferences\Symbol\TABL] +STRNFont=新宋体,8,N +STRNFont color=0, 0, 0 +DISPNAMEFont=新宋体,8,N +DISPNAMEFont color=0, 0, 0 +OWNRDISPNAMEFont=新宋体,8,N +OWNRDISPNAMEFont color=0, 0, 0 +ColumnsFont=新宋体,8,N +ColumnsFont color=0, 0, 0 +TablePkColumnsFont=新宋体,8,U +TablePkColumnsFont color=0, 0, 0 +TableFkColumnsFont=新宋体,8,N +TableFkColumnsFont color=0, 0, 0 +KeysFont=新宋体,8,N +KeysFont color=0, 0, 0 +IndexesFont=新宋体,8,N +IndexesFont color=0, 0, 0 +TriggersFont=新宋体,8,N +TriggersFont color=0, 0, 0 +LABLFont=新宋体,8,N +LABLFont color=0, 0, 0 +AutoAdjustToText=Yes +Keep aspect=No +Keep center=No +Keep size=No +Width=4800 +Height=4000 +Brush color=178 214 252 +Fill Color=Yes +Brush style=6 +Brush bitmap mode=12 +Brush gradient mode=65 +Brush gradient color=255 255 255 +Brush background image= +Custom shape= +Custom text mode=0 +Pen=1 0 0 128 192 +Shadow color=192 192 192 +Shadow=0 + +[DisplayPreferences\Symbol\VIEW] +STRNFont=新宋体,8,N +STRNFont color=0, 0, 0 +DISPNAMEFont=新宋体,8,N +DISPNAMEFont color=0, 0, 0 +OWNRDISPNAMEFont=新宋体,8,N +OWNRDISPNAMEFont color=0, 0, 0 +ColumnsFont=新宋体,8,N +ColumnsFont color=0, 0, 0 +TablePkColumnsFont=新宋体,8,U +TablePkColumnsFont color=0, 0, 0 +TableFkColumnsFont=新宋体,8,N +TableFkColumnsFont color=0, 0, 0 +TemporaryVTablesFont=新宋体,8,N +TemporaryVTablesFont color=0, 0, 0 +IndexesFont=新宋体,8,N +IndexesFont color=0, 0, 0 +LABLFont=新宋体,8,N +LABLFont color=0, 0, 0 +AutoAdjustToText=Yes +Keep aspect=No +Keep center=No +Keep size=No +Width=4800 +Height=4000 +Brush color=208 208 255 +Fill Color=Yes +Brush style=6 +Brush bitmap mode=12 +Brush gradient mode=65 +Brush gradient color=255 255 255 +Brush background image= +Custom shape= +Custom text mode=0 +Pen=1 0 128 128 192 +Shadow color=192 192 192 +Shadow=0 + +[DisplayPreferences\Symbol\PROC] +STRNFont=新宋体,8,N +STRNFont color=0, 0, 0 +DISPNAMEFont=新宋体,8,N +DISPNAMEFont color=0, 0, 0 +OWNRDISPNAMEFont=新宋体,8,N +OWNRDISPNAMEFont color=0, 0, 0 +LABLFont=新宋体,8,N +LABLFont color=0, 0, 0 +AutoAdjustToText=Yes +Keep aspect=No +Keep center=No +Keep size=No +Width=4000 +Height=1000 +Brush color=255 255 192 +Fill Color=Yes +Brush style=6 +Brush bitmap mode=12 +Brush gradient mode=65 +Brush gradient color=255 255 255 +Brush background image= +Custom shape= +Custom text mode=0 +Pen=1 0 128 108 0 +Shadow color=192 192 192 +Shadow=0 + +[DisplayPreferences\Symbol\REFR] +SOURCEFont=新宋体,8,N +SOURCEFont color=0, 0, 0 +CENTERFont=新宋体,8,N +CENTERFont color=0, 0, 0 +DESTINATIONFont=新宋体,8,N +DESTINATIONFont color=0, 0, 0 +Line style=1 +AutoAdjustToText=Yes +Keep aspect=No +Keep center=No +Keep size=No +Brush color=255 255 255 +Fill Color=Yes +Brush style=1 +Brush bitmap mode=12 +Brush gradient mode=0 +Brush gradient color=118 118 118 +Brush background image= +Custom shape= +Custom text mode=0 +Pen=1 0 0 128 192 +Shadow color=192 192 192 +Shadow=0 + +[DisplayPreferences\Symbol\VREF] +SOURCEFont=新宋体,8,N +SOURCEFont color=0, 0, 0 +CENTERFont=新宋体,8,N +CENTERFont color=0, 0, 0 +DESTINATIONFont=新宋体,8,N +DESTINATIONFont color=0, 0, 0 +Line style=1 +AutoAdjustToText=Yes +Keep aspect=No +Keep center=No +Keep size=No +Brush color=255 255 255 +Fill Color=Yes +Brush style=1 +Brush bitmap mode=12 +Brush gradient mode=0 +Brush gradient color=118 118 118 +Brush background image= +Custom shape= +Custom text mode=0 +Pen=1 0 128 128 192 +Shadow color=192 192 192 +Shadow=0 + +[DisplayPreferences\Symbol\USRDEPD] +OBJXSTRFont=新宋体,8,N +OBJXSTRFont color=0, 0, 0 +Line style=1 +AutoAdjustToText=Yes +Keep aspect=No +Keep center=No +Keep size=No +Brush color=255 255 255 +Fill Color=Yes +Brush style=1 +Brush bitmap mode=12 +Brush gradient mode=0 +Brush gradient color=118 118 118 +Brush background image= +Custom shape= +Custom text mode=0 +Pen=2 0 128 128 255 +Shadow color=192 192 192 +Shadow=0 + +[DisplayPreferences\Symbol\Free Symbol] +Free TextFont=新宋体,8,N +Free TextFont color=0, 0, 0 +Line style=0 +AutoAdjustToText=Yes +Keep aspect=No +Keep center=No +Keep size=No +Brush color=255 255 255 +Fill Color=Yes +Brush style=1 +Brush bitmap mode=12 +Brush gradient mode=0 +Brush gradient color=118 118 118 +Brush background image= +Custom shape= +Custom text mode=0 +Pen=1 0 0 0 255 +Shadow color=192 192 192 +Shadow=0 +(8268, 11693) +((315,354), (433,354)) +1 +7 + + +1458095981 +1459042267 +((-54924,22422), (-32915,26863)) +((-33315,26463),(-45514,26463),(-45514,23047),(-54524,23047)) +1 +1 +12615680 +12632256 +CENTER 0 新宋体,8,N +SOURCE 0 新宋体,8,N +DESTINATION 0 新宋体,8,N +4 + + + + + + + + + + + +1458096239 +1458682239 +((-54792,11904), (-43912,17507)) +((-44312,12304),(-54167,12304),(-54167,17107)) +1 +1 +12615680 +12632256 +CENTER 0 新宋体,8,N +SOURCE 0 新宋体,8,N +DESTINATION 0 新宋体,8,N + + + + + + + + + + + +1458115348 +1458836906 +((-63575,5772), (-58435,7022)) +((-63175,6397),(-58835,6397)) +1 +1 +12615680 +12632256 +CENTER 0 新宋体,8,N +SOURCE 0 新宋体,8,N +DESTINATION 0 新宋体,8,N + + + + + + + + + + + +1458115352 +1459083463 +((-68582,263), (-67332,4206)) +((-67957,3806),(-67957,663)) +1 +1 +12615680 +12632256 +CENTER 0 新宋体,8,N +SOURCE 0 新宋体,8,N +DESTINATION 0 新宋体,8,N + + + + + + + + + + + +1458116048 +1459083463 +((-47161,2004), (-39460,10753)) +((-39860,10353),(-39860,2629),(-46761,2629)) +1 +1 +12615680 +12632256 +CENTER 0 新宋体,8,N +SOURCE 0 新宋体,8,N +DESTINATION 0 新宋体,8,N + + + + + + + + + + + +1458116101 +1458739276 +((-65670,-9126), (-55717,-7876)) +((-56117,-8501),(-65270,-8501)) +1 +1 +12615680 +12632256 +CENTER 0 新宋体,8,N +SOURCE 0 新宋体,8,N +DESTINATION 0 新宋体,8,N +4 + + + + + + + + + + + +1458116394 +1458835392 +((-79662,28428), (-74996,29678)) +((-79262,29053),(-75396,29053)) +1 +1 +12615680 +12632256 +CENTER 0 新宋体,8,N +SOURCE 0 新宋体,8,N +DESTINATION 0 新宋体,8,N + + + + + + + + + + + +1458680260 +1458682043 +((-78148,-2323), (-72818,-1073)) +((-77748,-1698),(-73218,-1698)) +1 +1 +12615680 +12632256 +CENTER 0 新宋体,8,N +SOURCE 0 新宋体,8,N +DESTINATION 0 新宋体,8,N + + + + + + + + + + + +1458680262 +1458682046 +((-90276,-1363), (-86720,-113)) +((-87120,-738),(-89876,-738)) +1 +1 +12615680 +12632256 +CENTER 0 新宋体,8,N +SOURCE 0 新宋体,8,N +DESTINATION 0 新宋体,8,N + + + + + + + + + + + +1458680464 +1458835392 +((-79607,37830), (-74996,39080)) +((-75396,38455),(-79207,38455)) +1 +1 +12615680 +12632256 +CENTER 0 新宋体,8,N +SOURCE 0 新宋体,8,N +DESTINATION 0 新宋体,8,N + + + + + + + + + + + +1458680782 +1459042267 +((-49959,30401), (-38506,31651)) +((-49559,31026),(-38906,31026)) +1 +1 +12615680 +12632256 +CENTER 0 新宋体,8,N +SOURCE 0 新宋体,8,N +DESTINATION 0 新宋体,8,N + + + + + + + + + + + +1458680784 +1458739707 +((-54792,23079), (-53542,28681)) +((-54167,28281),(-54167,23479)) +1 +1 +12615680 +12632256 +CENTER 0 新宋体,8,N +SOURCE 0 新宋体,8,N +DESTINATION 0 新宋体,8,N + + + + + + + + + + + +1458681970 +1458739707 +((-55850,35903), (-54600,42106)) +((-55225,41706),(-55225,36303)) +1 +1 +12615680 +12632256 +CENTER 0 新宋体,8,N +SOURCE 0 新宋体,8,N +DESTINATION 0 新宋体,8,N + + + + + + + + + + + +1459041851 +1459041851 +((-63774,42266), (-60357,43516)) +((-60757,42891),(-63374,42891)) +1 +1 +12615680 +12632256 +CENTER 0 新宋体,8,N +SOURCE 0 新宋体,8,N +DESTINATION 0 新宋体,8,N + + + + + + + + + + + +1459046368 +1459093317 +((-88750,18433), (-82694,19683)) +((-88350,19058),(-83094,19058)) +1 +1 +12615680 +12632256 +CENTER 0 新宋体,8,N +SOURCE 0 新宋体,8,N +DESTINATION 0 新宋体,8,N + + + + + + + + + + + +1459047135 +1459047240 +((-28384,-1144), (-21300,106)) +((-27984,-519),(-21700,-519)) +1 +1 +12615680 +12632256 +CENTER 0 新宋体,8,N +SOURCE 0 新宋体,8,N +DESTINATION 0 新宋体,8,N + + + + + + + + + + + +1459047243 +1459047243 +((-47161,-1934), (-36964,-684)) +((-37364,-1309),(-46761,-1309)) +1 +1 +12615680 +12632256 +CENTER 0 新宋体,8,N +SOURCE 0 新宋体,8,N +DESTINATION 0 新宋体,8,N + + + + + + + + + + + +1459093351 +1459093351 +((-108891,6479), (-107633,10064)) +((-108245,6879),(-108266,9662)) +1 +1 +12615680 +12632256 +CENTER 0 新宋体,8,N +SOURCE 0 新宋体,8,N +DESTINATION 0 新宋体,8,N + + + + + + + + + + + +1458094412 +1459042267 +-1 +((-38906,23549), (-25484,38503)) +0 +12615680 +16570034 +12632256 +STRN 0 新宋体,8,N +DISPNAME 0 新宋体,8,N +OWNRDISPNAME 0 新宋体,8,N +Columns 0 新宋体,8,N +TablePkColumns 0 新宋体,8,U +TableFkColumns 0 新宋体,8,N +Keys 0 新宋体,8,N +Indexes 0 新宋体,8,N +Triggers 0 新宋体,8,N +LABL 0 新宋体,8,N +6 +65 +16777215 +1 + + + + + +1458094568 +1458835424 +-1 +((-75396,23621), (-63374,43491)) +0 +12615680 +16570034 +12632256 +STRN 0 新宋体,8,N +DISPNAME 0 新宋体,8,N +OWNRDISPNAME 0 新宋体,8,N +Columns 0 新宋体,8,N +TablePkColumns 0 新宋体,8,U +TableFkColumns 0 新宋体,8,N +Keys 0 新宋体,8,N +Indexes 0 新宋体,8,N +Triggers 0 新宋体,8,N +LABL 0 新宋体,8,N +6 +65 +16777215 +1 + + + + + +1458094586 +1459083588 +-1 +((-44312,10353), (-34940,14352)) +12615680 +16570034 +12632256 +STRN 0 新宋体,8,N +DISPNAME 0 新宋体,8,N +OWNRDISPNAME 0 新宋体,8,N +Columns 0 新宋体,8,N +TablePkColumns 0 新宋体,8,U +TableFkColumns 0 新宋体,8,N +Keys 0 新宋体,8,N +Indexes 0 新宋体,8,N +Triggers 0 新宋体,8,N +LABL 0 新宋体,8,N +6 +65 +16777215 + + + + + +1458094587 +1459083588 +-1 +((-60011,17107), (-48323,23479)) +12615680 +16570034 +12632256 +STRN 0 新宋体,8,N +DISPNAME 0 新宋体,8,N +OWNRDISPNAME 0 新宋体,8,N +Columns 0 新宋体,8,N +TablePkColumns 0 新宋体,8,U +TableFkColumns 0 新宋体,8,N +Keys 0 新宋体,8,N +Indexes 0 新宋体,8,N +Triggers 0 新宋体,8,N +LABL 0 新宋体,8,N +6 +65 +16777215 + + + + + +1458094589 +1459083588 +-1 +((-73218,-4060), (-62688,663)) +12615680 +16570034 +12632256 +STRN 0 新宋体,8,N +DISPNAME 0 新宋体,8,N +OWNRDISPNAME 0 新宋体,8,N +Columns 0 新宋体,8,N +TablePkColumns 0 新宋体,8,U +TableFkColumns 0 新宋体,8,N +Keys 0 新宋体,8,N +Indexes 0 新宋体,8,N +Triggers 0 新宋体,8,N +LABL 0 新宋体,8,N +6 +65 +16777215 + + + + + +1458115154 +1459083588 +-1 +((-72547,3806), (-63175,8529)) +12615680 +16570034 +12632256 +STRN 0 新宋体,8,N +DISPNAME 0 新宋体,8,N +OWNRDISPNAME 0 新宋体,8,N +Columns 0 新宋体,8,N +TablePkColumns 0 新宋体,8,U +TableFkColumns 0 新宋体,8,N +Keys 0 新宋体,8,N +Indexes 0 新宋体,8,N +Triggers 0 新宋体,8,N +LABL 0 新宋体,8,N +6 +65 +16777215 + + + + + +1458115155 +1459083588 +-1 +((-58835,-2883), (-46761,9265)) +12615680 +16570034 +12632256 +STRN 0 新宋体,8,N +DISPNAME 0 新宋体,8,N +OWNRDISPNAME 0 新宋体,8,N +Columns 0 新宋体,8,N +TablePkColumns 0 新宋体,8,U +TableFkColumns 0 新宋体,8,N +Keys 0 新宋体,8,N +Indexes 0 新宋体,8,N +Triggers 0 新宋体,8,N +LABL 0 新宋体,8,N +6 +65 +16777215 + + + + + +1458115156 +1459083588 +-1 +((-21700,-2881), (-10782,1843)) +12615680 +16570034 +12632256 +STRN 0 新宋体,8,N +DISPNAME 0 新宋体,8,N +OWNRDISPNAME 0 新宋体,8,N +Columns 0 新宋体,8,N +TablePkColumns 0 新宋体,8,U +TableFkColumns 0 新宋体,8,N +Keys 0 新宋体,8,N +Indexes 0 新宋体,8,N +Triggers 0 新宋体,8,N +LABL 0 新宋体,8,N +6 +65 +16777215 + + + + + +1458115758 +1459083588 +-1 +((-74234,-11105), (-63318,-6382)) +12615680 +16570034 +12632256 +STRN 0 新宋体,8,N +DISPNAME 0 新宋体,8,N +OWNRDISPNAME 0 新宋体,8,N +Columns 0 新宋体,8,N +TablePkColumns 0 新宋体,8,U +TableFkColumns 0 新宋体,8,N +Keys 0 新宋体,8,N +Indexes 0 新宋体,8,N +Triggers 0 新宋体,8,N +LABL 0 新宋体,8,N +6 +65 +16777215 + + + + + +1458115812 +1459083588 +-1 +((-57867,-11253), (-47337,-4881)) +12615680 +16570034 +12632256 +STRN 0 新宋体,8,N +DISPNAME 0 新宋体,8,N +OWNRDISPNAME 0 新宋体,8,N +Columns 0 新宋体,8,N +TablePkColumns 0 新宋体,8,U +TableFkColumns 0 新宋体,8,N +Keys 0 新宋体,8,N +Indexes 0 新宋体,8,N +Triggers 0 新宋体,8,N +LABL 0 新宋体,8,N +6 +65 +16777215 + + + + + +1458116324 +1459083588 +-1 +((-89792,26281), (-79262,31829)) +12615680 +16570034 +12632256 +STRN 0 新宋体,8,N +DISPNAME 0 新宋体,8,N +OWNRDISPNAME 0 新宋体,8,N +Columns 0 新宋体,8,N +TablePkColumns 0 新宋体,8,U +TableFkColumns 0 新宋体,8,N +Keys 0 新宋体,8,N +Indexes 0 新宋体,8,N +Triggers 0 新宋体,8,N +LABL 0 新宋体,8,N +6 +65 +16777215 + + + + + +1458680040 +1459083588 +-1 +((-100792,-3100), (-89876,1623)) +12615680 +16570034 +12632256 +STRN 0 新宋体,8,N +DISPNAME 0 新宋体,8,N +OWNRDISPNAME 0 新宋体,8,N +Columns 0 新宋体,8,N +TablePkColumns 0 新宋体,8,U +TableFkColumns 0 新宋体,8,N +Keys 0 新宋体,8,N +Indexes 0 新宋体,8,N +Triggers 0 新宋体,8,N +LABL 0 新宋体,8,N +6 +65 +16777215 + + + + + +1458680041 +1458682043 +-1 +((-87120,-2812), (-77748,1917)) +0 +12615680 +16570034 +12632256 +STRN 0 新宋体,8,N +DISPNAME 0 新宋体,8,N +OWNRDISPNAME 0 新宋体,8,N +Columns 0 新宋体,8,N +TablePkColumns 0 新宋体,8,U +TableFkColumns 0 新宋体,8,N +Keys 0 新宋体,8,N +Indexes 0 新宋体,8,N +Triggers 0 新宋体,8,N +LABL 0 新宋体,8,N +6 +65 +16777215 +1 + + + + + +1458680379 +1458680533 +-1 +((-89781,36456), (-79207,40455)) +0 +12615680 +16570034 +12632256 +STRN 0 新宋体,8,N +DISPNAME 0 新宋体,8,N +OWNRDISPNAME 0 新宋体,8,N +Columns 0 新宋体,8,N +TablePkColumns 0 新宋体,8,U +TableFkColumns 0 新宋体,8,N +Keys 0 新宋体,8,N +Indexes 0 新宋体,8,N +Triggers 0 新宋体,8,N +LABL 0 新宋体,8,N +6 +65 +16777215 +1 + + + + + +1458680558 +1458739707 +-1 +((-60892,28281), (-49559,36303)) +0 +12615680 +16570034 +12632256 +STRN 0 新宋体,8,N +DISPNAME 0 新宋体,8,N +OWNRDISPNAME 0 新宋体,8,N +Columns 0 新宋体,8,N +TablePkColumns 0 新宋体,8,U +TableFkColumns 0 新宋体,8,N +Keys 0 新宋体,8,N +Indexes 0 新宋体,8,N +Triggers 0 新宋体,8,N +LABL 0 新宋体,8,N +6 +65 +16777215 +1 + + + + + +1458680910 +1459093317 +-1 +((-83094,10054), (-71792,21376)) +12615680 +16570034 +12632256 +STRN 0 新宋体,8,N +DISPNAME 0 新宋体,8,N +OWNRDISPNAME 0 新宋体,8,N +Columns 0 新宋体,8,N +TablePkColumns 0 新宋体,8,U +TableFkColumns 0 新宋体,8,N +Keys 0 新宋体,8,N +Indexes 0 新宋体,8,N +Triggers 0 新宋体,8,N +LABL 0 新宋体,8,N +6 +65 +16777215 + + + + + +1458681746 +1458739307 +-1 +((-60757,41706), (-49393,46429)) +0 +12615680 +16570034 +12632256 +STRN 0 新宋体,8,N +DISPNAME 0 新宋体,8,N +OWNRDISPNAME 0 新宋体,8,N +Columns 0 新宋体,8,N +TablePkColumns 0 新宋体,8,U +TableFkColumns 0 新宋体,8,N +Keys 0 新宋体,8,N +Indexes 0 新宋体,8,N +Triggers 0 新宋体,8,N +LABL 0 新宋体,8,N +6 +65 +16777215 +1 + + + + + +1458836895 +1459047206 +-1 +((-37364,-4652), (-27984,2032)) +0 +12615680 +16570034 +12632256 +STRN 0 新宋体,8,N +DISPNAME 0 新宋体,8,N +OWNRDISPNAME 0 新宋体,8,N +Columns 0 新宋体,8,N +TablePkColumns 0 新宋体,8,U +TableFkColumns 0 新宋体,8,N +Keys 0 新宋体,8,N +Indexes 0 新宋体,8,N +Triggers 0 新宋体,8,N +LABL 0 新宋体,8,N +6 +65 +16777215 +1 + + + + + +1459046007 +1459093316 +-1 +((-98880,16284), (-88350,21832)) +12615680 +16570034 +12632256 +STRN 0 新宋体,8,N +DISPNAME 0 新宋体,8,N +OWNRDISPNAME 0 新宋体,8,N +Columns 0 新宋体,8,N +TablePkColumns 0 新宋体,8,U +TableFkColumns 0 新宋体,8,N +Keys 0 新宋体,8,N +Indexes 0 新宋体,8,N +Triggers 0 新宋体,8,N +LABL 0 新宋体,8,N +6 +65 +16777215 + + + + + +1459091827 +1459093314 +-1 +((-114679,9662), (-101831,25110)) +12615680 +16570034 +12632256 +STRN 0 新宋体,8,N +DISPNAME 0 新宋体,8,N +OWNRDISPNAME 0 新宋体,8,N +Columns 0 新宋体,8,N +TablePkColumns 0 新宋体,8,U +TableFkColumns 0 新宋体,8,N +Keys 0 新宋体,8,N +Indexes 0 新宋体,8,N +Triggers 0 新宋体,8,N +LABL 0 新宋体,8,N +6 +65 +16777215 + + + + + +1459092908 +1459093351 +-1 +((-114207,-1145), (-102905,6879)) +12615680 +16570034 +12632256 +STRN 0 新宋体,8,N +DISPNAME 0 新宋体,8,N +OWNRDISPNAME 0 新宋体,8,N +Columns 0 新宋体,8,N +TablePkColumns 0 新宋体,8,U +TableFkColumns 0 新宋体,8,N +Keys 0 新宋体,8,N +Indexes 0 新宋体,8,N +Triggers 0 新宋体,8,N +LABL 0 新宋体,8,N +6 +65 +16777215 + + + + + + + + + +AB9FF73F-1255-4FAC-A6A4-7B1A22C6E691 +订单模型 +订单模型 +1458183081 +Administrator +1459094461 +Administrator +Administrator +%DATE% +LightBlue_Theme.css +Header_LightBlue.html +Footer_LightBlue.html +54 +18 +4 +0 +Home_LightBlue.html +Light Blue +Professional +1 + + +343A54AC-A718-4469-9F22-C0F79D83E3AB +1458183081 +Administrator +1458183081 +Administrator +新宋体 +10 +1 +4 +423 +106 +15 +0 + + +9FFDF099-6679-4E4F-8950-83823C724D48 +1458183081 +Administrator +1458183081 +Administrator +Microsoft Sans Serif +10 +4 +0 + + + + +E63B9B5E-8949-4BF5-B789-6386AAC64029 +订单管理表模型 +1458183081 +Administrator +1458683698 +Administrator +7A5F12AC-80F5-4D0A-8715-B17926B78762 +1 +TEMPLATE +PDM +订单管理模型 +页脚 +((800,900), (1100,900)) +(21000, 29700) +1 + + +C68B4726-6DE6-4272-B07B-4140AEE86221 +1458683481 +Administrator +1458683481 +Administrator +1 +1 +PDM_MODEL_TABL_LIST +PDM +List of tables +List of tables +List of tables +Tables +1 +-50 Name +-50 Code + + + +A2F46272-FD8B-48CB-9E09-96D2B14E31F7 +1458683481 +Administrator +1458683481 +Administrator +新宋体 +10 +5 +353 +106 +0 + + +0CD82B2B-B9F3-4DB8-A721-98FEDB22C17B +1458683481 +Administrator +1458683481 +Administrator +Microsoft Sans Serif +10 +2 +4 +1 +1 + + +982B1819-F5E8-4332-BEB5-AB253E685DC8 +1458683481 +Administrator +1458683481 +Administrator +Microsoft Sans Serif +10 +1 +1 + + + + +6D1D5772-15FB-426F-8DC0-7932ECE6FA2E +1458683481 +Administrator +1458683481 +Administrator + + + + +53FF7570-95AC-4765-A094-934CA35E69A3 +1458683485 +Administrator +1458683485 +Administrator +1 +1 +PDM_TABL_TITLE +PDM +Table %ITEM% +Table %ITEM% +Table %ITEM% +Tables + + +8B0820A5-5EEB-4AC4-925E-E9E1144B0993 +1458683485 +Administrator +1459094350 +Administrator +1 +1 +PDM_TABL_COLN_LIST +PDM +List of columns of the table %PARENT% +List of columns of the table %PARENT% +List of columns of the table %PARENT% +Columns +1 +-25 Name +-25 Code +-30 Comment +-20 DataType + + + +1D966AA0-82C4-4C40-AAEB-D066CCF755D5 +1458683485 +Administrator +1458683485 +Administrator +新宋体 +10 +5 +353 +106 +0 + + +E63D3440-2B13-4F89-A177-03DCC9AB42AA +1458683485 +Administrator +1458683485 +Administrator +Microsoft Sans Serif +10 +2 +4 +1 +1 + + +6227D5DC-6199-4C25-BCF8-BB416C965443 +1458683485 +Administrator +1458683485 +Administrator +Microsoft Sans Serif +10 +1 +1 + + + + +4F97DFCB-7E06-4217-81CD-A70D2CD2FAED +1458683485 +Administrator +1458683485 +Administrator + + + + + + +37B0ABE9-F1F4-4AB6-8C2A-5E006761D0C7 +1458683485 +Administrator +1458683485 +Administrator +新宋体 +10 +5 +353 +106 +0 + + + + + + +8779F459-F68C-4CA2-AE71-E97A870572CA +1458183081 +Administrator +1458183081 +Administrator +Microsoft Sans Serif +10 +8 +0 + + +ADE62904-C8E2-46A4-80E6-57DF6855CE2A +1458183081 +Administrator +1458183081 +Administrator +19100 +3 + + + + +9C6BB0D3-FA1E-4F74-8B93-5AA053F71914 +1458183081 +Administrator +1458183081 +Administrator +Microsoft Sans Serif +10 +2 +0 + + +F891AC6D-732A-4EB3-B8AA-A29213B26546 +1458183081 +Administrator +1458183081 +Administrator +9550 +2 + + +E451C6E2-78D6-4DE0-9A97-1369A99E8461 +1458183081 +Administrator +1458183081 +Administrator +19100 +3 + + + + + + + + + + + +71AA1BAE-5803-4DF4-BDDF-B23536FA4A75 +Simplified Chinese +ZH-CN +1458183081 +Administrator +1458183081 +Administrator + +F3A0BF0F-7536-11D5-A4D6-0008C79B4501 +585CBB37-C940-11D1-BD0D-00A02478ECC9 + + + + +00E477CD-D8A8-4813-AD25-988290FDFBC8 +order +order +1458183081 +Administrator +1459094449 +Administrator +file:///. +7A5F12AC-80F5-4D0A-8715-B17926B78762 +CDE44E21-9669-11D1-9914-006097355D9B +1459094461 + + + + + + + + + +107E38D7-5E20-4435-969F-C58651D8932F +客户会员表 +cd_member +1458094412 +Administrator +1459083926 +Administrator +客户会员表基础表 +type = InnoDB ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8 +COLLATE = utf8_general_ci + + + +D5493C40-5F7C-4614-8E47-947C32A9C8DF +主键ID +主键ID +1458095911 +Administrator +1459082891 +Administrator +int(11) +11 +1 +1 + + +9FC35B6A-0FB7-4235-A273-26A0C098F200 +会员编号 +MEMBER_CODE +1459042223 +Administrator +1459045165 +Administrator +会员编号 +VARCHAR(50) +50 + + +CEC08BA9-0CE0-4AE4-8E9A-F07ABB1D6F2F +姓名 +NAME +1458095645 +Administrator +1459045165 +Administrator +姓名 +VARCHAR(50) +50 + + +0BF770FF-FC51-4C9C-837D-EC77DF27A6D3 +手机号 +PHONE_NUMBER +1458095645 +Administrator +1459084280 +Administrator +手机号 +VARCHAR(20) +20 + + +1DE0DF1B-DD74-4358-A1CD-459FF951478C +备用手机号1 +SPARE_TEL +1458095645 +Administrator +1459082023 +Administrator +备用手机号1 +VARCHAR(20) +20 + + +68417D96-051D-4C01-9E8E-997805CB1D41 +备用手机号2 +SPARE_TEL2 +1458095645 +Administrator +1459082023 +Administrator +备用手机号2 +VARCHAR(20) +20 + + +F063B5A2-FD1A-455D-B04B-26BF593083DA +家庭固话 +TEL_NUMBER +1458095645 +Administrator +1459082023 +Administrator +家庭固话 +VARCHAR(20) +20 + + +F7D2441E-F9B4-4CB0-966D-D96951DD3EE7 +办公室电话 +OFFICE_TEL +1458095645 +Administrator +1459082023 +Administrator +办公室电话 +VARCHAR(20) +20 + + +6944544C-384D-4BFA-896C-EC05A5487EAF +收货地址 +ADDRESS +1458095645 +Administrator +1459082023 +Administrator +收货地址 +VARCHAR(255) +255 + + +EE52EA27-730D-4BED-AACA-7224334497A6 +备用地址1 +SPARE_ADDRESS +1458095645 +Administrator +1459084280 +Administrator +备用地址1 +VARCHAR(255) +255 + + +BC74DB2E-034C-4425-A634-D6A36BE8AE21 +备用地址2 +SPARE_ADDRESS2 +1458095645 +Administrator +1459082023 +Administrator +备用地址2 +VARCHAR(255) +255 + + +6BD7D3EF-95F1-4474-8D11-207AFFD1BA43 +客户类型 +MEMBER_TYPE +1458106430 +Administrator +1459082806 +Administrator +1-潜在客户,2-普通客户,3-优质客户 +int(1) +1 + + +120CD710-5DC1-4105-9E56-5014012726A8 +所属单位 +CD_COMPANY_ID +1458106430 +Administrator +1459082806 +Administrator +所属单位 +int(11) +11 + + +B929C444-8332-49B0-BBF8-4E25E0C7CEC7 +所属客服经理 +CD_USER_ID +1458679843 +Administrator +1459082806 +Administrator +所属客服经理 +int(11) +11 + + + + +93288780-D2F0-4856-A7A4-C1B0B53364C6 +Key_1 +Key_1 +1459042223 +Administrator +1459042258 +Administrator + + + + + + + + + + +83CF4D43-ED98-47EA-9747-81145154C7B1 +产品表 +cd_item +1458094568 +Administrator +1459083971 +Administrator +产品基础表 +ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8 +COLLATE = utf8_general_ci + +{F4F16ECD-F2F1-4006-AF6F-638D5C65F35E},MYSQL50,58={31D066BE-2F61-4B4D-B7B4-230D38F22B99},Temporary,5=false + + + + +225E558B-058D-4F3A-BB8A-02765D8F72FE +主键id +CD_ITEM_ID +1458106186 +Administrator +1459082733 +Administrator +int(11) +11 +1 +1 + + +20E8F4F2-158F-42FA-998A-8CFCDAA23258 +产品编号 +ITEM_CODE +1458106186 +Administrator +1458835389 +Administrator +产品编号 +varchar(30) +30 + + +E32DC5D3-FDFD-4F66-A16A-AEA061AC021B +产品类别 +CD_CATEGORY_ID +1458680425 +Administrator +1459082760 +Administrator +产品归属的类别 +int(11) +11 + + +CCB621C7-7C0D-4E95-B279-903D212D392D +产品名称 +ITEM_NAME +1458106186 +Administrator +1458835389 +Administrator +产品名称 +VARCHAR(50) +50 + + +6FC5999F-04CF-4D95-AB85-BD4EC8F6CDC8 +产品描述 +ITEM_DESCRIBE +1458116428 +Administrator +1458835389 +Administrator +产品描述 +VARCHAR(255) +255 + + +23A03DDA-797E-418D-8F0C-E99164C1F519 +产品类型 +ITEM_TYPE +1458106186 +Administrator +1458835389 +Administrator +产品类型 +VARCHAR(30) +30 + + +389EF0B5-BAEB-4D84-8FAA-896913AD8D42 +生产地 +YIELDLY +1458107062 +Administrator +1458835389 +Administrator +生产地 +VARCHAR(30) +30 + + +7F23A5BB-C099-4C84-8A4A-90643A53D871 +产品规格 +SPEC +1458107335 +Administrator +1459081996 +Administrator +产品规格 +VARCHAR(20) +20 + + +4800B165-4490-42FE-B252-55673FFA2C8A +基础价格 +BASE_PRICE +1458106186 +Administrator +1459081996 +Administrator +基础价格 +decimal(10,2) +10 +2 + + +7FBC26EC-754C-4C0A-B4FC-D9C88F4401C1 +会员价格 +MEMBER_PRICE +1458680584 +Administrator +1459081996 +Administrator +会员价格 +DECIMAL(10,2) +10 +2 + + +06E742E5-161F-4883-A400-488D57F9BAE4 +计价方式 +PRICING_MANNER +1458106186 +Administrator +1459081996 +Administrator +计价方式 +VARCHAR(10) +10 + + +A3FE3AC0-98C1-48C4-8D48-E0BC7F3EAC8E +销售状态 +SELL_STATUS +1458107062 +Administrator +1459082760 +Administrator +0-下架 1-上架 +INT(1) +1 + + +0F53E110-C69D-4D55-905B-CD291FBD608C +销售单位 +SELL_UNIT +1458107062 +Administrator +1459083691 +Administrator +销售单位 +VARCHAR(20) +20 + + +12824C16-4CAE-4A96-90AF-2FB1282694B6 +销售金额 +SELL_PRICE +1458107062 +Administrator +1459081996 +Administrator +销售金额 +DECIMAL(10,2) +10 +2 + + +A8E9FDFE-C854-4577-80CF-D0BCD5F0CC0C +是否组合 +IS_COMBINATION +1458107062 +Administrator +1459082760 +Administrator +0-未组合,1-组合 +INT(1) +1 + + +7C75AC83-EFD9-4350-8D06-8C82BEEE5AC9 +父产品ID +PARENT_ITEM_ID +1458107062 +Administrator +1459082760 +Administrator +组合产品的父id +INT(11) +11 + + +FF43AA44-EF92-4DC8-AE53-C503EB697BEF +是否审核 +IS_AUDIT +1458680735 +Administrator +1459082760 +Administrator +0-未审核,1-审核 +INT(1) +1 + + +C50DBBB1-24A4-4B1D-9078-E198854D74BE +录入时间 +CREATE_DATE_TIME +1458834144 +Administrator +1458835389 +Administrator +录入时间 +datetime + + +2FCD6114-FA49-4B46-95FC-CFBB0C808A22 +录入人 +CREATE_USER_CODE +1458834144 +Administrator +1458835389 +Administrator +录入人 +VARCHAR(20) +20 + + + + +E0AF5D07-3AFE-4EA6-AE86-BB3558F12ED7 +Key_1 +Key_1 +1458835408 +Administrator +1458835416 +Administrator + + + + + + + + + + +D322CB56-EA3C-4FB5-982B-F5CBB001B556 +客服经理单位关联表 +cd_manager_company +1458094586 +Administrator +1459083926 +Administrator +记录客户经理和单位关联关系表 +type = InnoDB ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8 +COLLATE = utf8_general_ci + + + +0ED449A6-D138-4B60-BD4D-3E6C308745E4 +主键ID +CD_MANAGER_COMPANY_ID +1458096079 +Administrator +1459082827 +Administrator +int(11) +11 +1 +1 + + +B5449C35-C102-4F50-B057-10B1BE29CAB9 +单位 +CD_COMPANY_ID +1458096079 +Administrator +1459082820 +Administrator +单位 +int(11) +11 + + +219E1691-6F72-47B3-8A73-3A0A366E76CD +客户经理 +CD_MANAGER_ID +1458096079 +Administrator +1459082820 +Administrator +客户经理 +int(11) +11 + + + + +380821BB-5462-41A4-A03A-EBF27CBBF829 +Key_1 +Key_1 +1459081749 +Administrator +1459081795 +Administrator + + + + + + + + + + +D6B4105F-0BAF-4FA7-BD07-23E5DED74B1D +单位公司表 +cd_company +1458094587 +Administrator +1459083926 +Administrator +记录签约单位、公司 +type = InnoDB ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8 +COLLATE = utf8_general_ci + + + +801C4062-FDDA-47A9-B8ED-E4C89497A543 +主键ID +CD_COMPANY_ID +1458096703 +Administrator +1459083209 +Administrator +int(11) +11 +1 +1 + + +CC843943-B17C-4E9A-B547-F542C51E68B2 +单位编号 +COMPANY_CODE +1458095841 +Administrator +1459082059 +Administrator +单位编号 +VARCHAR(30) +30 + + +05E54D4C-ABDB-444B-8C60-F2FDD784793D +单位名称 +COMPANY_NAME +1458095841 +Administrator +1459082059 +Administrator +单位名称 +VARCHAR(100) +100 + + +0658D5B0-6F3B-4EDC-A353-B6506F322C8F +单位地址 +COMPANY_ADDRESS +1458095841 +Administrator +1459082059 +Administrator +单位地址 +VARCHAR(255) +255 + + +30B761A6-E23D-4652-AEF9-E043739BB5AA +单位联系人 +COMPANY_LEADER +1458095841 +Administrator +1459082059 +Administrator +单位联系人 +VARCHAR(20) +20 + + +D2F040C5-2EA1-480B-B883-32FE0E0BDFB6 +联系人电话 +COMPANY_LEADER_TEL +1459045228 +Administrator +1459082059 +Administrator +联系人电话 +VARCHAR(20) +20 + + + + +3FB00543-5F8C-44C7-A3C7-35B5E4CA806B +Key_1 +Key_1 +1459045171 +Administrator +1459045227 +Administrator + + + + + + + + + + +95A2D5CF-7362-440E-8FD9-2B30D8A2A28B +角色 +sys_roles +1458094589 +Administrator +1459083926 +Administrator +角色表 +type = InnoDB ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8 +COLLATE = utf8_general_ci + + + +60222991-1E0E-4603-A796-1E707B6410AC +ID +ID +1458114833 +Administrator +1459084185 +Administrator +int(11) +11 +1 + + +CC3548C8-0D18-403C-9872-6F729CE2B0C4 +角色 +ROLE +1458114833 +Administrator +1459082174 +Administrator +角色 +VARCHAR(30) +30 + + +4E070867-2135-4E8F-BCF2-719EC0225F84 +角色描述 +DESCRIPTION +1458114833 +Administrator +1459082174 +Administrator +角色描述 +VARCHAR(50) +50 + + +BA642724-56F3-4261-970C-304C42C95D22 +是否启用 +AVAILABLE +1458114833 +Administrator +1459084185 +Administrator +0-禁用,1-启用 +INT(1) +1 + + + + +E3462014-32A5-43AC-8E20-434F528A77B7 +Key_1 +Key_1 +1459081060 +Administrator +1459081064 +Administrator + + + + + + + + + + +DB55C20A-0703-4876-BCBD-4DA363543B07 +用户角色关联表 +sys_users_roles +1458115154 +Administrator +1459083926 +Administrator +用户角色关联表 +type = InnoDB ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8 +COLLATE = utf8_general_ci + + + +86E945E3-2418-4E9B-B793-1BAC9761E187 +ID +ID +1458115197 +Administrator +1459083224 +Administrator +int(11) +11 +1 +1 + + +DE934176-F6FD-48A4-998A-09BB9291B968 +用户 +USER_ID +1458115197 +Administrator +1459083224 +Administrator +用户 +int(11) +11 + + +EEB4DAA9-DA46-4A90-8770-CF0FF0430A7E +角色 +ROLE_ID +1458115197 +Administrator +1459083224 +Administrator +角色 +int(11) +11 + + +80772C7B-4C22-4621-93FF-6C6C4A59F5B0 +是否启用 +AVAILABLE +1458115960 +Administrator +1459083224 +Administrator +0-禁用,1-启用 +INT(1) +1 + + + + +F7AD7700-D72E-4B96-83BE-1461BA30C4E8 +Key_1 +Key_1 +1459047706 +Administrator +1459047747 +Administrator + + + + + + + + + + +BEA180C5-2118-486C-8D73-0D2432ACD74A +用户表 +sys_users +1458115155 +Administrator +1459083926 +Administrator +用户表 +type = InnoDB ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8 +COLLATE = utf8_general_ci + + + +88088BC6-4F26-468A-930A-E6263F72AD3F +ID +ID +1458115268 +Administrator +1459083170 +Administrator +int(11) +11 +1 +1 + + +BAB33074-95E6-4D19-93D9-2E4243B4501F +登陆用户名 +USERNAME +1458115268 +Administrator +1459082133 +Administrator +登陆用户名 +VARCHAR(30) +30 + + +793DDC49-0194-4F4C-A5C4-8124F5BBA220 +真实姓名 +REALNAME +1458115268 +Administrator +1459082133 +Administrator +真实姓名 +VARCHAR(20) +20 + + +594088E6-DAB3-4DE2-83A6-10FBD20D217F +密码盐值 +SALT +1459046593 +Administrator +1459082133 +Administrator +密码盐值 +VARCHAR(50) +50 + + +90C6ECC1-4878-4B4B-AC80-D584CBF957DA +登陆密码 +PASSWORD +1458115540 +Administrator +1459084594 +Administrator +登陆密码 +VARCHAR(50) +50 + + +9F267C78-64B7-43A4-9099-B3B1181DC522 +年龄 +AGE +1458115556 +Administrator +1459083170 +Administrator +年龄 +int(2) +2 + + +5FD2DB8E-65E1-4178-8F4C-00D07FE666A0 +性别 +SEX +1458115556 +Administrator +1459083170 +Administrator +1-男,2女 +int(1) +1 + + +FA850832-3FB9-4B6A-84E6-16D9F6D2C638 +邮箱 +EMAIL +1458115268 +Administrator +1459082133 +Administrator +邮箱 +varchar(30) +30 + + +F48C571C-BEDE-47E7-8A93-0CA07EED83AC +QQ +QQ +1458115268 +Administrator +1459082133 +Administrator +QQ +varchar(30) +30 + + +7EF13DE3-E8C9-4AAF-8C22-AF61646649EE +手机号 +IPHONE_NUMBER +1458115268 +Administrator +1459082133 +Administrator +手机号 +varchar(20) +20 + + +1FF54B6A-496D-4ADE-8133-DD01D83DEFA1 +办公室电话 +OFFICE_TEL +1458115268 +Administrator +1459082133 +Administrator +办公室电话 +varchar(20) +20 + + +1972E676-6C50-437B-A2D3-D7A710714179 +是否锁定 +LOCKED +1458115579 +Administrator +1459083170 +Administrator +0-禁用,1-启用 +int(1) +1 + + +1F30C383-4C34-4AC4-856D-882F6AD711B1 +是否客户经理 +IS_MANAGE +1459047009 +Administrator +1459083170 +Administrator +1-经理 +int(1) +1 + + + + +6D45DE09-05F0-4078-B658-3401D5028B98 +Key_1 +Key_1 +1459046593 +Administrator +1459046893 +Administrator + + + + + + + + + + +AB0B876D-9ED3-4718-85FC-7BA425D1DA09 +部门表 +sys_organization +1458115156 +Administrator +1459084413 +Administrator +部门表 +type = InnoDB ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8 +COLLATE = utf8_general_ci + + + +E6A31C70-EACD-4C4A-8B9D-19921E14D943 +主键ID +ID +1459047162 +Administrator +1459083201 +Administrator +int(11) +11 +1 +1 + + +CAA39DB5-F843-48F8-B828-B90F53F1D164 +部门名称 +NAME +1459048078 +Administrator +1459082160 +Administrator +部门名称 +VARCHAR(30) +30 + + +9700DFDB-459B-43CD-89CE-2F4F933AACF0 +部门描述 +DESCRIPTION +1458115415 +Administrator +1459082160 +Administrator +部门描述 +VARCHAR(100) +100 + + +3806EF22-D790-424E-80A2-634A802DA326 +上级组织 +PARENT_ID +1459047983 +Administrator +1459083201 +Administrator +上级组织 +int(11) +11 + + + + +64CF7E84-3216-4D5F-AE88-BBFB38239479 +Key_1 +Key_1 +1459047162 +Administrator +1459047200 +Administrator + + + + + + + + + + +5393BB6C-8AB9-478A-87A4-225CB243BD53 +数据字典 +sys_dictionary +1458115758 +Administrator +1459083926 +Administrator +数据字典 +type = InnoDB ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8 +COLLATE = utf8_general_ci + + + +8910FC46-6D4B-4470-A757-FA2D6DBB45C3 +ID +SYS_DICTIONARY_ID +1458115759 +Administrator +1459083139 +Administrator +int(11) +11 +1 +1 + + +DB1ED129-934D-4D7A-A6E0-39BC47C3CCBD +字典编号 +DICTIONARY_CODE +1458115759 +Administrator +1459082184 +Administrator +字典编号 +varchar(30) +30 + + +0601C6B9-8025-4D0F-8946-B27995C1D235 +字典描述 +DICTIONARY_DESC +1458115759 +Administrator +1459082184 +Administrator +字典描述 +varchar(255) +255 + + +17E5C182-F5A3-4CA6-90AF-E785D43F7EE2 +是否启用 +AVAILABLE +1458115903 +Administrator +1459083139 +Administrator +是否启用 +int(1) +1 + + + + +3BA60E0C-581C-4A23-B5B4-5688A7890716 +Key_1 +Key_1 +1459081079 +Administrator +1459081119 +Administrator + + + + + + + + + + +D01C7E4B-8A72-4AC9-839A-17D721B3ABFF +数据字典参数表 +sys_dictionary_parameter +1458115812 +Administrator +1459083926 +Administrator +数据字典参数表 +type = InnoDB ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8 +COLLATE = utf8_general_ci + + + +846C8088-DB0D-4052-85E2-793FA6C16B72 +主键ID +SYS_DICTIONARY_PARAMETER_ID +1458115813 +Administrator +1459083154 +Administrator +int(11) +11 +1 +1 + + +513C4F79-7AA0-4A83-BD6E-63F85C2C6107 +字典 +SYS_DICTIONARY_ID +1458115813 +Administrator +1459083154 +Administrator +字典 +INT(11) +11 + + +C3CA971F-27B7-4BD0-AC90-648EB76B07FE +显示值 +SHOW_VALUE +1458115813 +Administrator +1459082198 +Administrator +显示值 +VARCHAR(50) +50 + + +F5748421-6200-4183-8C8B-FF6113CF8F7C +实际值 +REAL_VALUE +1458115813 +Administrator +1459082198 +Administrator +实际值 +VARCHAR(50) +50 + + +04CCB3B6-4B49-49B4-B15A-736B1EC6E403 +排位 +SORT_VALUE +1458115850 +Administrator +1459083154 +Administrator +排位 +INT(3) +3 + + +3C084302-1C2E-4935-866B-E201091627B3 +是否启用 +AVAILABLE +1458115890 +Administrator +1459083154 +Administrator +0-禁用,1-启用 +INT(1) +1 + + + + +496CE5D0-8DF9-4DD1-AD63-816E2B3760A0 +Key_1 +Key_1 +1459081249 +Administrator +1459081389 +Administrator + + + + + + + + + + +A7A55C93-850E-430F-8721-6BAB9A0B0EFD +产品拓展表 +cd_item_ref +1458116324 +Administrator +1459083966 +Administrator +产品拓展表 +如果产品有额外属性可添加在拓展表中 +ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8 +COLLATE = utf8_general_ci + + + +BA4C41F9-A621-4E72-B7C8-AF9E7E27AA46 +主键ID +CD_ITEM_REF_ID +1458116327 +Administrator +1459083248 +Administrator +int(11) +11 +1 +1 + + +5D03C170-C285-49CE-B8E9-361057BD770D +拓展类型 +REF_TYPE +1458116327 +Administrator +1459042073 +Administrator +拓展类型 +VARCHAR(50) +50 + + +ECAC1942-68A0-4618-AF2D-25BF573B2B11 +拓展描述 +REF_NAME +1459041954 +Administrator +1459042073 +Administrator +拓展描述 +VARCHAR(50) +50 + + +48F404E1-A2F3-4C29-AD30-B59CBE6D98FF +拓展值 +REF_VALUE +1458116327 +Administrator +1459046314 +Administrator +拓展值 +VARCHAR(50) +50 + + +F3544AD9-9D29-43CB-9108-10C62C844384 +对应产品 +CD_ITEM_ID +1458116327 +Administrator +1459083248 +Administrator +对应产品 +INT(11) +11 + + + + +0D2E702F-72F0-429A-8D40-1F4F258F0070 +Key_1 +Key_1 +1459045635 +Administrator +1459045640 +Administrator + + + + + + + + + + +C3939E38-44D5-45DA-9D18-79EB932DBB91 +权限表 +sys_permissions +1458680040 +Administrator +1459083926 +Administrator +权限表 +type = InnoDB ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8 +COLLATE = utf8_general_ci + + + +8D95515A-76A7-4BCA-AA82-8565107C8A23 +ID +ID +1458680053 +Administrator +1459083115 +Administrator +int(11) +11 +1 +1 + + +C8E40D0B-DA6A-4F0D-820D-F6A9C16A852D +权限 +PERMISSION +1458680199 +Administrator +1459082208 +Administrator +权限 +VARCHAR(50) +50 + + +CA861B8D-0F02-40B8-825F-BD81977EEBE1 +权限描述 +DESCRIPTION +1458680053 +Administrator +1459082208 +Administrator +权限描述 +VARCHAR(100) +100 + + +76306C52-9FE9-4A96-AF1F-9A2D73AF4791 +是否启用 +AVAILABLE +1458680053 +Administrator +1459083115 +Administrator +0-禁用,1-启用 +INT(1) +1 + + + + +68AABFB1-E710-4A51-89EE-0AA601D280BA +Key_1 +Key_1 +1459081072 +Administrator +1459081075 +Administrator + + + + + + + + + + +99C8B3BA-2CB8-4244-A15E-D56A3DAA35DC +角色权限关联表 +sys_roles_permissions +1458680041 +Administrator +1459083926 +Administrator +角色权限关联表 +type = InnoDB ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8 +COLLATE = utf8_general_ci + + + +5BE54FAA-B3EE-4667-BCF0-E2C41C993CAC +ID +ID +1458680226 +Administrator +1459083129 +Administrator +int(11) +11 +1 +1 + + +BC5756F4-4F0A-48C6-86D1-91438CEBE19F +角色 +ROLE_ID +1458680226 +Administrator +1459083129 +Administrator +角色 +INT(11) +11 + + +8C82F7E1-51EA-4A16-B467-C03F008D8F2D +权限 +PERMISSION_ID +1458680226 +Administrator +1459083129 +Administrator +权限 +INT(11) +11 + + + + +477CBFAB-2594-4809-A214-CF42BA92FC3E +Key_1 +Key_1 +1459081066 +Administrator +1459081071 +Administrator + + + + + + + + + + +4E371F29-D7F3-48C6-811D-0BC741A51A37 +产品类别表 +cd_category +1458680379 +Administrator +1459083961 +Administrator +产品类别表 +ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8 +COLLATE = utf8_general_ci + + + +8AE288DD-97FE-4B9B-B071-6C55829DC2A6 +主键id +CD_CATEGORY_ID +1458680381 +Administrator +1459083237 +Administrator +int(11) +11 +1 +1 + + +65EB4E91-00FB-4F78-B3D6-D4D988ACAEA2 +类别名称 +CATEGORY_NAME +1458680381 +Administrator +1459082071 +Administrator +类别名称 +varchar(30) +30 + + + + +7C300379-3DD6-434B-B852-B2F47FE9A523 +Key_1 +Key_1 +1459041899 +Administrator +1459041902 +Administrator + + + + + + + + + + +A15B7DA3-66CE-4A24-B6A0-41488CCA1BCE +产品合同 +cd_contract +1458680558 +Administrator +1459083926 +Administrator +合同价格表 +type = InnoDB ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8 +COLLATE = utf8_general_ci + + + +9935B9E3-5D3E-40B4-BEDC-CF5C36DB05CC +主键ID +CD_CONTRACT_ID +1458680607 +Administrator +1459082898 +Administrator +int(11) +11 +1 +1 + + +5A7A888D-6661-4FD8-8821-610310CE2652 +所属客户 +CD_MEMBER_ID +1458680607 +Administrator +1459082792 +Administrator +合同价的客户 +int(11) +11 + + +9FC7DADD-1DC3-4D0C-ABBC-C9DB2955F858 +所属单位 +CD_COMPANY_ID +1458680662 +Administrator +1459082792 +Administrator +合同价的单位 +int(11) +11 + + +47D55BEF-94E3-4B2C-9D5C-F6595202BA9D +适用范围 +SCOPE +1458681553 +Administrator +1459082792 +Administrator +1-部分产品,2-全部产品 +int(1) +1 + + +D4CE2D4E-FB84-480A-9E61-109DA4CF4E65 +合同价格 +CONTRACT_PRICE +1458681905 +Administrator +1459045577 +Administrator +仅当适用范围为全部产品时适用 +decimal(10,2) +10 +2 + + +7B0E2A18-380B-46C4-BC0B-F23F95A34437 +开始时间 +BENGIN_TIME +1458681821 +Administrator +1459045577 +Administrator +合同开始时间 +datetime + + +3C3D4126-59E6-4461-B1B5-89F025F52AF3 +结束时间 +END_TIME +1458681821 +Administrator +1459045577 +Administrator +合同结束时间 +datetime + + +634A3735-05D2-45A5-9B05-99E63F9004BB +是否审核 +IS_AUDITOR +1458681994 +Administrator +1459082792 +Administrator +0-未审核,1-审核 +int(1) +1 + + + + +4E22C30D-1AA5-44B9-8D37-317B21DF87A7 +Key_1 +Key_1 +1459041892 +Administrator +1459041896 +Administrator + + + + + + + + + + +1A40C1C3-12D0-4985-872E-158BDC3F5BE1 +卡劵表 +cd_coupon +1458680910 +Administrator +1459083926 +Administrator +卡劵维护表 +type = InnoDB ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8 +COLLATE = utf8_general_ci + + + +A8EEB08D-FC6C-447C-9466-A373D0F78254 +主键ID +CD_COUPON_ID +1458680911 +Administrator +1459083104 +Administrator +int(11) +11 +1 +1 + + +84A6FF62-72D5-437A-A853-7C8576641C47 +种类 +COUPON_TYPE +1458680911 +Administrator +1459083104 +Administrator +卡或者劵,1-卡,2-劵 +INT(1) +1 + + +A0831223-1F38-4A79-A308-2FAEEAF60A0C +卡号 +COUPON_NUMBER +1458744193 +Administrator +1459082080 +Administrator +卡号 +VARCHAR(50) +50 + + +FE8E12A8-944E-46FD-87AE-2F90A7AD9261 +密码 +COUPON_PASSWORD +1458744193 +Administrator +1459082080 +Administrator +密码 +VARCHAR(20) +20 + + +DA4AB407-39DD-4D4B-9A79-8C9458BCA770 +开始日期 +BEGIN_TIME +1458680911 +Administrator +1459045993 +Administrator +有效开始时间 +DATETIME + + +1DE75394-FAAB-4898-8731-E2228F67BC62 +结束日期 +END_TIME +1458680911 +Administrator +1459045993 +Administrator +有效结束时间 +DATETIME + + +9D51A0DC-ABA3-44BD-AB4B-44ABD51D037B +金额 +PRICE +1458680911 +Administrator +1459045993 +Administrator +固定金额 +DECIMAL(10,2) +10 +2 + + +28DDB978-D9AA-47C8-B5A5-B0D02D6B2699 +次数 +COUNT +1458680911 +Administrator +1459083104 +Administrator +固定次数 +INT(11) +11 + + +986CD827-F7DC-4179-B3A0-CAED9A1C6315 +是否使用 +IS_USED +1458680911 +Administrator +1459083104 +Administrator +0-未使用,1-已使用 +INT(1) +1 + + +715E8D14-0CBE-44F0-ACAD-8CFC5B5A1C33 +是否有效 +IS_USEFUL +1458680911 +Administrator +1459083104 +Administrator +0-无效,1-有效 +INT(1) +1 + + +7B804384-6E12-471C-BA0A-5FDE8E77A3F3 +是否回馈 +IS_FEEDBACK +1458738848 +Administrator +1459083104 +Administrator +0-否,1-是 +INT(1) +1 + + +39684FC3-B2D9-46BF-9322-99042A084D66 +备注 +NOTES +1458739238 +Administrator +1459045993 +Administrator +VARCHAR(255) +255 + + + + +02CDE9F4-6422-4505-95F3-79BB27BE151E +Key_1 +Key_1 +1459045645 +Administrator +1459045661 +Administrator + + + + + + + + + + +465AA41C-4A3A-4B83-91B0-CFD2A247055A +产品合同明细 +cd_item_contract_item +1458681746 +Administrator +1459083926 +Administrator +产品合同明细 +type = InnoDB ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8 +COLLATE = utf8_general_ci + + + +8B9AC003-CA36-4566-9F19-7E25EF677AAC +主键id +CD_ITEM_CONTRACT_ITEM_ID +1458681751 +Administrator +1459082880 +Administrator +int(11) +11 +1 +1 + + +2CA7427E-F464-416B-BBE8-D4031A512FDB +产品合同 +CD_CONTRACT_ID +1458681751 +Administrator +1459082775 +Administrator +产品合同 +int(11) +11 + + +4C2A166F-C75C-4663-93AF-1D5317E29DFA +对应产品 +CD_ITEM_ID +1458681751 +Administrator +1459082775 +Administrator +当合同适用范围为1的时候,每种产品要设定对应的合同价 +int(11) +11 + + +A69EA4CD-6495-4C6E-B6BA-0CDF47A22990 +合同价 +CONTRACT_PRICE +1458681751 +Administrator +1459041799 +Administrator +合同价格 +decimal(10,2) +10 +2 + + + + +BD72A87C-CCC3-4445-8535-161061843949 +Key_1 +Key_1 +1459041884 +Administrator +1459041891 +Administrator + + + + + + + + + + +5C4F0A91-0CCB-434C-8C99-EA584DD1E85A +部门用户关联表 +sys_user_organization +1458836895 +Administrator +1459083926 +Administrator +部门用户关联表 +type = InnoDB ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8 +COLLATE = utf8_general_ci + + + +BE602C0C-DA45-48D4-9389-A2241D904399 +ID +ID +1458836915 +Administrator +1459083188 +Administrator +int(11) +11 +1 +1 + + +9DAF2754-776C-4FD3-ABB3-373B536DEE1F +部门 +ORGANIZATION_ID +1458836915 +Administrator +1459083188 +Administrator +部门 +int(11) +11 + + +3FDF386A-4694-4178-B0E0-CD35DA4FD394 +用户 +USER_ID +1458836915 +Administrator +1459083188 +Administrator +用户 +int(11) +11 + + + + +8B61A0F5-FA29-41DB-A5C8-7CA25B31966C +Key_1 +Key_1 +1459046975 +Administrator +1459046979 +Administrator + + + + + + + + + + +0EAC3354-B326-460D-A896-AF0C06C2BDA7 +卡劵拓展 +cd_coupon_ref +1459046007 +Administrator +1459083926 +Administrator +卡劵拓展 +type = InnoDB ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8 +COLLATE = utf8_general_ci + + + +D4F5A78C-5F94-41D0-AF7D-B667D9286742 +主键ID +主键ID +1459046008 +Administrator +1459083257 +Administrator +int(11) +11 +1 +1 + + +529A3DE3-C515-4FBC-9D8E-63CCE227C319 +对应卡劵 +CD_COUPON_ID +1459046008 +Administrator +1459083257 +Administrator +卡劵 +INT(11) +11 + + +B2A1BD79-A400-46E7-AED2-607DBBE3514E +拓展类型 +REF_TYPE +1459046170 +Administrator +1459082087 +Administrator +拓展类型 +VARCHAR(50) +50 + + +A72D6295-8B5C-4A55-8614-45871D211FEF +拓展描述 +REF_NAME +1459046170 +Administrator +1459082087 +Administrator +拓展描述 +VARCHAR(30) +30 + + +51D761DE-B2A1-4A85-B466-898BC1499D26 +拓展值 +REF_VALUE +1459046170 +Administrator +1459082087 +Administrator +拓展值 +VARCHAR(50) +50 + + + + +BA2F2714-096B-4C28-82B8-8B512A948EC5 +Key_1 +Key_1 +1459046008 +Administrator +1459046155 +Administrator + + + + + + + + + + +49BB4333-5B4E-4D44-8EFF-B3EFDC243457 +订单表 +tb_order +1459091827 +Administrator +1459093408 +Administrator +订单表 +ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8 +COLLATE = utf8_general_ci + + + +975492BC-EA05-4B22-BF95-9D90B12FB7D9 +主键ID +TB_ORDER_ID +1459091828 +Administrator +1459092328 +Administrator +INT(11) +11 +1 + + +F1744295-0B71-469A-89D4-48B643365986 +订单编号 +ORDER_CODE +1459091959 +Administrator +1459093908 +Administrator +varchar(30) +30 + + +9E49766A-1500-4DCD-866F-600DA3EC22BD +订单类型 +ORDER_TYPE +1459091959 +Administrator +1459093908 +Administrator +1-卡,2-劵,3-常规 +int(1) +1 + + +6952F05C-A305-45EE-8D6D-D39B9374C8F0 +卡号 +COUPON_NUMBER +1459093023 +Administrator +1459094047 +Administrator +卡号(订单类型为卡时记录卡号) +varchar(50) +50 + + +E99B1ECA-95F6-4433-B89B-1C9545AA773F +卡密码 +COUPON_PASSWORD +1459093023 +Administrator +1459094047 +Administrator +卡密码(订单类型为卡时记录密码) +varchar(50) +50 + + +7BEBAB62-E43A-43B9-A294-0575ACE3E310 +订单来源 +ORDER_SOURCE +1459091959 +Administrator +1459093908 +Administrator +1-微信订单,2-商城订单,3-客服下单,4-采摘订单 +int(1) +1 + + +13E7DFB4-FFAC-4A54-B5C3-32F0F66F233D +付款方式 +PAYMENT_MODE +1459091959 +Administrator +1459093908 +Administrator +1-预付款,2-后付款,3-免费 +int(1) +1 + + +AF8C064F-9789-467A-AD4E-0C4B686E72CC +订单状态 +ORDER_STATUS +1459092344 +Administrator +1459093908 +Administrator +订单状态 +varchar(30) +30 + + +E647BAAE-319E-4989-96BA-A91371829BC6 +收货人手机 +CONSIGNEE_PHONE +1459092344 +Administrator +1459093908 +Administrator +收货人手机 +varchar(11) +11 + + +41881411-A2B6-432C-A230-23C8A8435C1F +收货人姓名 +CONSIGNEE_NAME +1459092344 +Administrator +1459093908 +Administrator +收货人姓名 +varchar(30) +30 + + +070B849E-A8E9-481C-BCDD-EAD4D60D0D2B +收货人地址 +CONSIGNEE_ADDRESS +1459092344 +Administrator +1459093908 +Administrator +收货人地址 +varchar(200) +200 + + +C8C3E0B1-A617-4F30-A4CD-4B50523D9F2D +邮政编码 +POSTCODE +1459092344 +Administrator +1459093908 +Administrator +邮政编码 +varchar(10) +10 + + +573B9CAE-86EA-4A51-BACC-C780AC0AC279 +运送方式 +TRANSPORT_MODE +1459092344 +Administrator +1459093908 +Administrator +运送方式 1-快递,2-自提 +int(1) +1 + + +90C8690A-DDC6-49C4-AC5B-DE5EFE8CE8CC +订单备注 +REMARK +1459092344 +Administrator +1459093908 +Administrator +订单备注 +varchar(300) +300 + + +124681BC-31F5-4789-98E5-B10103D9C8ED +订单总金额 +TOTAL_AMOUNT +1459092344 +Administrator +1459093908 +Administrator +订单总金额 +decimal(10,2) +10 +2 + + +D20FCAA8-3667-48F6-9B53-81F9764D018A +订单创建时间 +CREATE_TIME +1459092344 +Administrator +1459093908 +Administrator +订单创建时间 +datetime + + +BF5175BD-CD6D-4F30-8FB3-F3B3E88DD025 +订单创建人 +CREATE_USER +1459092344 +Administrator +1459093908 +Administrator +订单创建人 +varchar(30) +30 + + + + +71C1B03B-65DA-42AB-BB0F-0D2EDC9198F0 +Key_1 +Key_1 +1459091959 +Administrator +1459092328 +Administrator + + + + + + + + + + +08FAB88E-D406-415E-9FB3-54F2F0988CEF +订单明细表 +tb_order_item +1459092908 +Administrator +1459093929 +Administrator +订单明细表 +ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8 +COLLATE = utf8_general_ci + + + +FC875333-4424-4AC5-BB4B-A7D1E39EFD4F +主键ID +TB_ORDER_ITEM_ID +1459092930 +Administrator +1459093919 +Administrator +int(11) +11 +1 + + +E5BE145D-AA63-4229-A954-E076A3A24EB3 +订单 +TB_ORDER_ID +1459092930 +Administrator +1459093408 +Administrator +订单ID +int(11) +11 + + +5068C03F-DCE4-4B5F-8A94-5B4462383DEA +订单编号 +ORDER_NO +1459092930 +Administrator +1459093010 +Administrator +订单编号 +varchar(30) +30 + + +4713A2C7-7DB0-43DA-AE6B-D9680B43BA65 +商品编码 +ITEM_CODE +1459093129 +Administrator +1459093431 +Administrator +商品编码 +varchar(30) +30 + + +B9824870-BA15-4A09-8A64-1EA32D6A6723 +商品名称 +ITEM_NAME +1459093129 +Administrator +1459093431 +Administrator +商品名称 +varchar(50) +50 + + +A2EBE921-A513-4CDB-A40D-8228FA6E5C0F +商品单价 +ITEM_PRICE +1459093129 +Administrator +1459093474 +Administrator +商品单价 +decimal(10,2) +10 +2 + + +DCC65E6F-4F3F-408D-B8B1-F350FBB42ECB +商品数量 +ITEM_QTY +1459093129 +Administrator +1459093474 +Administrator +商品数量 +int(5) +5 + + +A674FD6E-9F1E-47BD-8607-A1D3E8ADF48A +商品单位 +ITEM_UNIT +1459093129 +Administrator +1459093474 +Administrator +商品单位 +varchar(30) +30 + + + + +50FEC9A1-0AA9-4699-96D2-D809D42CAC38 +Key_1 +Key_1 +1459093911 +Administrator +1459093919 +Administrator + + + + + + + + + + + + +AFD905A0-8990-474C-89A8-D82883968AA6 +单位客户关联 +单位客户关联 +1458095981 +Administrator +1458106495 +Administrator +0..* +1 +1 + + + + + + + + +BE3EC5FD-5E47-4E4F-BC84-603D6F0E6B17 +1458106475 +Administrator +1458106495 +Administrator + + + + + + + + + + +8B519CF3-6729-4C29-917C-78E9A51482AB +单位客户经理关联 +单位客户经理关联 +1458096239 +Administrator +1458096724 +Administrator +0..* +1 +1 + + + + + + + + +86BD3BCF-4B55-4B9F-A8C0-299C63ADDD67 +1458096715 +Administrator +1458096724 +Administrator + + + + + + + + + + +31064A9B-2A83-4ECE-8140-4F70A356E5ED +用户关联 +用户关联 +1458115348 +Administrator +1458115379 +Administrator +0..* +1 +1 + + + + + + + + +47F055B5-41D7-4267-8BE3-0DBD56AE9B66 +1458115358 +Administrator +1458115379 +Administrator + + + + + + + + + + +8A39F934-985E-4A9F-A0D9-3588ACC9FE35 +角色关联 +角色关联 +1458115352 +Administrator +1458115398 +Administrator +0..* +1 +1 + + + + + + + + +C64844F2-71FA-4EAA-A26F-EBF379976C9E +1458115384 +Administrator +1458115398 +Administrator + + + + + + + + + + +A8A1AFA2-4426-4B8C-A898-0A75D572C516 +客户经理关联 +客户经理关联 +1458116048 +Administrator +1458116068 +Administrator +0..* +1 +1 + + + + + + + + +8DB30E7E-583D-46CE-8FD1-CC366B77B107 +1458116051 +Administrator +1458116068 +Administrator + + + + + + + + + + +8063EB56-3DE8-4642-BF0C-3A60DC3A7EBD +字典关联 +字典关联 +1458116101 +Administrator +1458116127 +Administrator +0..* +1 +1 + + + + + + + + +E1F7DF0F-7CC9-45FC-94F6-871DECD091A0 +1458116104 +Administrator +1458116114 +Administrator + + + + + + + + + + +792DCDE1-6F04-44F6-9684-ACAB2C787239 +产品拓展关联 +产品拓展关联 +1458116394 +Administrator +1458116415 +Administrator +0..* +1 +1 + + + + + + + + +81332F98-0A94-4D44-BBB5-2FE612E04913 +1458116395 +Administrator +1458116415 +Administrator + + + + + + + + + + +F1348F0D-BCB2-494D-9030-F860DC49726B +角色关联关系 +角色关联关系 +1458680260 +Administrator +1458680316 +Administrator +0..* +1 +1 + + + + + + + + +74BBA4A2-C902-40F2-AED2-4482C02E6F87 +1458680298 +Administrator +1458680316 +Administrator + + + + + + + + + + +64C2B9F5-B045-460D-92A9-51EFB0C58A92 +权限关联 +权限关联 +1458680262 +Administrator +1458680292 +Administrator +0..* +1 +1 + + + + + + + + +8CC998C0-48C9-41DB-A94F-777B9BE4060A +1458680264 +Administrator +1458680292 +Administrator + + + + + + + + + + +DBF473C4-94B3-4842-B11F-73EA4933660C +商品类别关联 +商品类别关联 +1458680464 +Administrator +1458680487 +Administrator +0..* +1 +1 + + + + + + + + +C48D54D9-27BB-42A1-8682-E7385B82A71E +1458680467 +Administrator +1458680487 +Administrator + + + + + + + + + + +71ED9917-DD9C-4B67-9903-4D8BE2C62B53 +合同客户关联 +合同客户关联 +1458680782 +Administrator +1458680818 +Administrator +0..* +1 +1 + + + + + + + + +403C30EF-8341-4F0B-842F-939D564DA95C +1458680789 +Administrator +1458680818 +Administrator + + + + + + + + + + +A9F62EF8-5870-43D2-9597-6A9F31DAA244 +合同单位关联 +合同单位关联 +1458680784 +Administrator +1458680840 +Administrator +0..* +1 +1 + + + + + + + + +EEE1246F-163F-4D42-BE86-D382A77EEA70 +1458680831 +Administrator +1458680840 +Administrator + + + + + + + + + + +5CFDBB7A-632C-460B-B1E8-BADFFC2506E5 +合同关联关系 +合同关联关系 +1458681970 +Administrator +1458681991 +Administrator +0..* +1 +1 + + + + + + + + +C80FD851-15D0-4BD4-92BE-3170E1A0B80D +1458681971 +Administrator +1458681991 +Administrator + + + + + + + + + + +47082CE3-E015-4F1C-8546-DEA3C67F4448 +合同明细产品关联关系 +合同明细产品关联关系 +1459041851 +Administrator +1459041881 +Administrator +0..* +1 +1 + + + + + + + + + + + +390377A5-324E-452B-A252-8809207A1A3D +1459041851 +Administrator +1459041851 +Administrator + + + + + + + + + + +1A49CDAD-8746-42FB-85EE-610FB82A06A3 +卡劵拓展关联 +卡劵拓展关联 +1459046368 +Administrator +1459046393 +Administrator +0..* +1 +1 + + + + + + + + + + + +27DAF631-A2BC-4066-8CA3-0373EBC053F4 +1459046368 +Administrator +1459046393 +Administrator + + + + + + + + + + +F55985AD-CF79-4175-BE9E-2F3D9829C114 +部门用户关联表 +部门用户关联表 +1459047135 +Administrator +1459047312 +Administrator +0..* +1 +1 + + + + + + + + + + + +4294BD78-B817-46D1-882D-FCB80200FCB4 +1459047162 +Administrator +1459047234 +Administrator + + + + + + + + + + +B3A6D4F9-241A-4A57-8A99-0ED801C6CC3C +用户部门关联 +用户部门关联 +1459047243 +Administrator +1459047323 +Administrator +0..* +1 +1 + + + + + + + + + + + +D57319BF-343C-40E3-82A9-400A44F4BC8E +1459047243 +Administrator +1459047323 +Administrator + + + + + + + + + + +35430E53-7D00-4025-9885-E772F1BD1DD1 +订单明细关联 +订单明细关联 +1459093351 +Administrator +1459093408 +Administrator +0..* +1 +1 + + + + + + + + + + + +CABC91C4-53B9-4C7A-8238-3CA65605FEBB +1459093351 +Administrator +1459093408 +Administrator + + + + + + + + + + + + +533E135D-FE04-4F4A-8A3E-2DC0E0841A62 +PUBLIC +PUBLIC +1458094227 +Administrator +1458094227 +Administrator + + + + +2E6DE9D7-C007-42D8-81D0-411F1B26EF66 +MySQL 5.0 +MYSQL50 +1458094227 +Administrator +1459083590 +Administrator +file:///%_DBMS%/mysql50.xdb +F4F16ECD-F2F1-4006-AF6F-638D5C65F35E +4BA9F647-DAB1-11D1-9944-006097355D9B +1459083588 + + + + + +566708BC-EA46-4C93-8472-CAE6109591B5 +Simplified Chinese +ZH-CN +1458183081 +Administrator +1458183081 +Administrator +file:///%_RTPLANG%/Chinese.xrl +F3A0BF0F-7536-11D5-A4D6-0008C79B4501 +585CBB37-C940-11D1-BD0D-00A02478ECC9 +1310116582 + + + + + + + + + + \ No newline at end of file diff --git a/documents/生鲜配送管理系统功能概要(二版).docx b/documents/生鲜配送管理系统功能概要(二版).docx new file mode 100644 index 0000000000000000000000000000000000000000..476e85b79de0161bdff8d5ee0c61f09f26e41474 GIT binary patch literal 161948 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 literal 0 HcmV?d00001 diff --git a/documents/订单业务属性.doc b/documents/订单业务属性.doc new file mode 100644 index 0000000000000000000000000000000000000000..6d6626fb05a0f3e92af349d000f63706c2a9351e GIT binary patch literal 17658 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: Zhang Kaitao + *

    Date: 14-1-28 + *

    Version: 1.0 + */ +public @Data class CreateUser implements Serializable { + + private String username; + private String email; + private String password; + /** + * 真实姓名 + */ + private String realname; + + /** + * 年龄 + */ + private Integer age; + /** + * 1-男,2女 + */ + private Integer sex; + + /** + * QQ + */ + private String qq; + + /** + * 手机号 + */ + private String phoneNumber; + + /** + * 办公室电话 + */ + private String officeTel; + + private Boolean locked = Boolean.FALSE; + + private Integer organizationId; + + private List userGroupIds; +} diff --git a/src/main/java/com/xmomen/module/account/model/User.java b/src/main/java/com/xmomen/module/account/model/User.java new file mode 100644 index 0000000..1059b9f --- /dev/null +++ b/src/main/java/com/xmomen/module/account/model/User.java @@ -0,0 +1,25 @@ +package com.xmomen.module.account.model; + +import java.io.Serializable; +import java.util.List; + +import lombok.Data; + +/** + * Created by Jeng on 2016/1/28. + */ +public @Data class User implements Serializable { + private Integer id; + private String username; + private String realName; + private String phoneNumber; + private String sex; + private Integer age; + private String qq; + private String officeTel; + private Integer locked; + private String email; + private String organization;//组织 + private Integer organizationId; + private List userGroups; +} diff --git a/src/main/java/com/xmomen/module/account/realm/UserRealm.java b/src/main/java/com/xmomen/module/account/realm/UserRealm.java new file mode 100644 index 0000000..d1af711 --- /dev/null +++ b/src/main/java/com/xmomen/module/account/realm/UserRealm.java @@ -0,0 +1,112 @@ +package com.xmomen.module.account.realm; + +import com.xmomen.module.account.service.UserService; +import com.xmomen.module.core.web.token.SysUserToken; +import com.xmomen.module.user.entity.SysUsers; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.AuthenticationInfo; +import org.apache.shiro.authc.AuthenticationToken; +import org.apache.shiro.authc.LockedAccountException; +import org.apache.shiro.authc.SimpleAuthenticationInfo; +import org.apache.shiro.authc.UnknownAccountException; +import org.apache.shiro.authz.AuthorizationInfo; +import org.apache.shiro.authz.SimpleAuthorizationInfo; +import org.apache.shiro.realm.AuthorizingRealm; +import org.apache.shiro.subject.PrincipalCollection; +import org.apache.shiro.util.ByteSource; + +import java.util.Set; + + +/** + *

    User: Zhang Kaitao + *

    Date: 14-1-28 + *

    Version: 1.0 + */ +public class UserRealm extends AuthorizingRealm { + + private UserService userService; + + public void setUserService(UserService userService) { + this.userService = userService; + } + + @Override + protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { + String username = (String)principals.getPrimaryPrincipal(); + Set roles = userService.findRoles(username); + Set realmNames = principals.getRealmNames(); + for(String realmName: realmNames) { + if(realmName.contains("UserRealm")) { + roles.add("user"); + } + } + SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo(); + authorizationInfo.setRoles(roles); + authorizationInfo.setStringPermissions(userService.findPermissions(username)); + return authorizationInfo; + } + + + @Override + public boolean supports(AuthenticationToken token) { + if(token instanceof SysUserToken) { + return super.supports(token); + } + return false; + } + + @Override + protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { + + String username = (String)token.getPrincipal(); + + SysUsers user = userService.findByUsername(username); + + if(user == null) { + throw new UnknownAccountException();//没找到帐号 + } + + if(Boolean.TRUE.equals(user.getLocked())) { + throw new LockedAccountException(); //帐号锁定 + } + + //交给AuthenticatingRealm使用CredentialsMatcher进行密码匹配,如果觉得人家的不好可以自定义实现 + SimpleAuthenticationInfo authenticationInfo = new SimpleAuthenticationInfo( + username, //用户名 + user.getPassword(), //密码 + ByteSource.Util.bytes(user.getSalt()),//salt=salt + getName() //realm name + ); + return authenticationInfo; + } + + @Override + public void clearCachedAuthorizationInfo(PrincipalCollection principals) { + super.clearCachedAuthorizationInfo(principals); + } + + @Override + public void clearCachedAuthenticationInfo(PrincipalCollection principals) { + super.clearCachedAuthenticationInfo(principals); + } + + @Override + public void clearCache(PrincipalCollection principals) { + super.clearCache(principals); + } + + public void clearAllCachedAuthorizationInfo() { + getAuthorizationCache().clear(); + } + + public void clearAllCachedAuthenticationInfo() { + getAuthenticationCache().clear(); + } + + public void clearAllCache() { + clearAllCachedAuthenticationInfo(); + clearAllCachedAuthorizationInfo(); + } + +} diff --git a/src/main/java/com/xmomen/module/account/service/PasswordHelper.java b/src/main/java/com/xmomen/module/account/service/PasswordHelper.java new file mode 100644 index 0000000..6a65cbe --- /dev/null +++ b/src/main/java/com/xmomen/module/account/service/PasswordHelper.java @@ -0,0 +1,43 @@ +package com.xmomen.module.account.service; + +import org.apache.shiro.crypto.RandomNumberGenerator; +import org.apache.shiro.crypto.SecureRandomNumberGenerator; +import org.apache.shiro.crypto.hash.SimpleHash; +import org.apache.shiro.util.ByteSource; + +/** + *

    User: Zhang Kaitao + *

    Date: 14-1-28 + *

    Version: 1.0 + */ +public class PasswordHelper { + + private RandomNumberGenerator randomNumberGenerator = new SecureRandomNumberGenerator(); + private String algorithmName = "md5"; + private int hashIterations = 2; + + public void setRandomNumberGenerator(RandomNumberGenerator randomNumberGenerator) { + this.randomNumberGenerator = randomNumberGenerator; + } + + public void setAlgorithmName(String algorithmName) { + this.algorithmName = algorithmName; + } + + public void setHashIterations(int hashIterations) { + this.hashIterations = hashIterations; + } + + public String getSalt(){ + return randomNumberGenerator.nextBytes().toHex(); + } + + public String encryptPassword(String password, String salt) { + return new SimpleHash( + algorithmName, + password, + ByteSource.Util.bytes(salt), + hashIterations).toHex(); + + } +} diff --git a/src/main/java/com/xmomen/module/account/service/PermissionServiceImpl.java b/src/main/java/com/xmomen/module/account/service/PermissionServiceImpl.java new file mode 100644 index 0000000..47590fc --- /dev/null +++ b/src/main/java/com/xmomen/module/account/service/PermissionServiceImpl.java @@ -0,0 +1,33 @@ +package com.xmomen.module.account.service; + +import com.xmomen.module.user.entity.SysPermissions; +import org.springframework.beans.factory.annotation.Autowired; + +import com.xmomen.framework.mybatis.dao.MybatisDao; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + *

    User: Zhang Kaitao + *

    Date: 14-1-28 + *

    Version: 1.0 + */ +@Service +public class PermissionServiceImpl implements PermissionService { + + @Autowired + private MybatisDao mybatisDao; + + @Override + @Transactional + public SysPermissions createPermission(SysPermissions permission) { + permission = mybatisDao.saveByModel(permission); + return permission; + } + + @Override + @Transactional + public void deletePermission(Long permissionId) { + mybatisDao.deleteByPrimaryKey(SysPermissions.class, permissionId); + } +} diff --git a/src/main/java/com/xmomen/module/account/web/controller/PermissionController.java b/src/main/java/com/xmomen/module/account/web/controller/PermissionController.java new file mode 100644 index 0000000..e839a47 --- /dev/null +++ b/src/main/java/com/xmomen/module/account/web/controller/PermissionController.java @@ -0,0 +1,114 @@ +package com.xmomen.module.account.web.controller; + +import com.xmomen.module.account.service.PermissionService; +import com.xmomen.module.account.service.RoleService; +import com.xmomen.module.account.service.UserService; +import com.xmomen.module.account.web.controller.vo.CreatePermissionVo; +import com.xmomen.module.user.entity.SysPermissions; +import com.xmomen.module.user.entity.SysPermissionsExample; +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.framework.web.exceptions.ArgumentValidException; +import com.xmomen.module.logger.Log; +import org.apache.commons.lang.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.*; + +/** + * Created by Jeng on 2016/1/5. + */ +@RestController +public class PermissionController { + + @Autowired + UserService userService; + + @Autowired + PermissionService permissionService; + + @Autowired + RoleService roleService; + + @Autowired + MybatisDao mybatisDao; + + /** + * 权限权限 + * @return + */ + @RequestMapping(value = "/user/permissions", method = RequestMethod.GET) + public Map getPermission(){ + String username = (String) SecurityUtils.getSubject().getPrincipal(); + Set roles = userService.findRoles(username); + Set permissions = userService.findPermissions(username); + Map rolesMap = new HashMap(); + rolesMap.put("roles", roles); + rolesMap.put("permissions", permissions); + return rolesMap; + } + + /** + * 权限列表 + * @param limit + * @param offset + * @param keyword + * @return + */ + @RequestMapping(value = "/permission", method = RequestMethod.GET) + @Log(actionName = "查看权限列表") + public Page getPermissionList(@RequestParam(value = "limit") Integer limit, + @RequestParam(value = "offset") Integer offset, + @RequestParam(value = "keyword", required = false) String keyword){ + SysPermissionsExample sysPermissionsExample = new SysPermissionsExample(); + sysPermissionsExample.createCriteria() + .andPermissionLike("%" + StringUtils.trimToEmpty(keyword) + "%"); + sysPermissionsExample.or() + .andDescriptionLike("%" + StringUtils.trimToEmpty(keyword) + "%"); + return mybatisDao.selectPageByExample(sysPermissionsExample, limit, offset); + } + + /** + * 权限资源 + * @param id + */ + @RequestMapping(value = "/permission/{id}", method = RequestMethod.GET) + @Log(actionName = "查询单个权限") + public SysPermissions getPermission(@PathVariable(value = "id") Integer id){ + return mybatisDao.selectByPrimaryKey(SysPermissions.class, id); + } + + /** + * 新增权限 + * @param createPermissionVo + * @param bindingResult + * @return + */ + @RequestMapping(value = "/permission", method = RequestMethod.POST) + @Log(actionName = "新增权限资源") + public SysPermissions createPermission(@RequestBody @Valid CreatePermissionVo createPermissionVo, BindingResult bindingResult) throws ArgumentValidException { + if(bindingResult != null && bindingResult.hasErrors()){ + throw new ArgumentValidException(bindingResult); + } + SysPermissions sysPermissions = new SysPermissions(); + sysPermissions.setDescription(createPermissionVo.getDescription()); + sysPermissions.setPermission(createPermissionVo.getPermissionCode().toUpperCase()); + sysPermissions.setAvailable(createPermissionVo.getAvailable() != null && createPermissionVo.getAvailable() ? 1 : 0); + return permissionService.createPermission(sysPermissions); + } + + /** + * 删除权限 + * @param id + */ + @RequestMapping(value = "/permission/{id}", method = RequestMethod.DELETE) + @Log(actionName = "删除权限资源") + public void deletePermission(@PathVariable(value = "id") Long id){ + mybatisDao.deleteByPrimaryKey(SysPermissions.class, id); + } + +} diff --git a/src/main/java/com/xmomen/module/account/web/controller/UserController.java b/src/main/java/com/xmomen/module/account/web/controller/UserController.java new file mode 100644 index 0000000..d34cb4b --- /dev/null +++ b/src/main/java/com/xmomen/module/account/web/controller/UserController.java @@ -0,0 +1,147 @@ +package com.xmomen.module.account.web.controller; + +import javax.validation.Valid; + +import com.xmomen.module.account.model.CreateUser; +import com.xmomen.module.account.mapper.UserMapper; +import com.xmomen.module.account.model.User; +import com.xmomen.module.account.service.UserService; +import com.xmomen.module.account.web.controller.vo.CreateUserVo; +import com.xmomen.module.account.web.controller.vo.UpdateUserVo; +import com.xmomen.module.user.entity.SysUsers; +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.framework.web.exceptions.ArgumentValidException; +import com.xmomen.module.logger.Log; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import com.xmomen.framework.mybatis.dao.MybatisDao; + +import java.util.HashMap; +import java.util.Map; + +/** + * Created by Jeng on 2016/1/5. + */ +@RestController +public class UserController { + + @Autowired + UserService userService; + + @Autowired + UserMapper userMapper; + + @Autowired + MybatisDao mybatisDao; + + /** + * 用户列表 + * @param id + */ + @RequestMapping(value = "/user", method = RequestMethod.GET) + @Log(actionName = "查询用户列表") + public Page getUserList(@RequestParam(value = "limit") Integer limit, + @RequestParam(value = "offset") Integer offset, + @RequestParam(value = "id", required = false) Integer id, + @RequestParam(value = "keyword", required = false) String keyword, + @RequestParam(value = "organizationId",required = false) Integer organizationId){ + Map map = new HashMap(); + map.put("id", id); + map.put("keyword", keyword); + map.put("organizationId", organizationId); + return (Page) mybatisDao.selectPage(UserMapper.UserMapperNameSpace + "getUsers", map, limit, offset); + } + + /** + * 用户列表 + * @param id + */ + @RequestMapping(value = "/user/{id}", method = RequestMethod.GET) + @Log(actionName = "查询用户") + public SysUsers getUserList(@PathVariable(value = "id") Integer id){ + return mybatisDao.selectByPrimaryKey(SysUsers.class, id); + } + + /** + * 新增用户 + * @param createUser + * @param bindingResult + * @return + */ + @RequestMapping(value = "/user", method = RequestMethod.POST) + @Log(actionName = "新增用户") + public SysUsers createUser(@RequestBody @Valid CreateUserVo createUser, BindingResult bindingResult) throws ArgumentValidException { + if(bindingResult != null && bindingResult.hasErrors()){ + throw new ArgumentValidException(bindingResult); + } + CreateUser user = new CreateUser(); + user.setAge(createUser.getAge()); + user.setOfficeTel(createUser.getOfficeTel()); + user.setPhoneNumber(createUser.getPhoneNumber()); + user.setQq(createUser.getQq()); + user.setRealname(createUser.getRealName()); + user.setSex(createUser.getSex()); + user.setUsername(createUser.getUsername()); + user.setPassword(createUser.getPassword()); + user.setEmail(createUser.getEmail()); + user.setLocked(createUser.getLocked() != null && createUser.getLocked() == true ? true : false); + user.setOrganizationId(createUser.getOrganizationId()); + user.setUserGroupIds(createUser.getUserGroupIds()); + return userService.createUser(user); + } + + /** + * 更新用户 + * @param id + * @param updateUserVo + * @param bindingResult + * @throws ArgumentValidException + */ + @RequestMapping(value = "/user/{id}", method = RequestMethod.PUT) + @Log(actionName = "更新用户") + public void updateUser(@PathVariable(value = "id") Integer id, + @RequestBody @Valid UpdateUserVo updateUserVo, BindingResult bindingResult) throws ArgumentValidException { + if(bindingResult != null && bindingResult.hasErrors()){ + throw new ArgumentValidException(bindingResult); + } + userService.updateUser(updateUserVo); + } + + /** + * 删除用户 + * @param id + */ + @RequestMapping(value = "/user/{id}", method = RequestMethod.DELETE) + @Log(actionName = "删除用户") + public void deleteUser(@PathVariable(value = "id") Long id){ + mybatisDao.deleteByPrimaryKey(SysUsers.class, id); + } + + /** + * 锁定用户 + * @param id + */ + @RequestMapping(value = "/user/{id}/locked", method = RequestMethod.PUT) + @Log(actionName = "修改用户信息") + public void lockedUser(@PathVariable(value = "id") Integer id, + @RequestParam(value = "locked") Boolean locked){ + SysUsers sysUsers = new SysUsers(); + sysUsers.setLocked(locked ? 1 : 0); + sysUsers.setId(id); + mybatisDao.update(sysUsers); + } + + /** + * 重置密码 + * @param id + */ + @RequestMapping(value = "/user/{id}/resetPassword", method = RequestMethod.PUT) + @Log(actionName = "重置密码") + public void resetPassword(@PathVariable(value = "id") Integer id){ + userService.changePassword(id, "123456"); + } + +} diff --git a/src/main/java/com/xmomen/module/account/web/controller/vo/CreateUserVo.java b/src/main/java/com/xmomen/module/account/web/controller/vo/CreateUserVo.java new file mode 100644 index 0000000..86a6933 --- /dev/null +++ b/src/main/java/com/xmomen/module/account/web/controller/vo/CreateUserVo.java @@ -0,0 +1,37 @@ +package com.xmomen.module.account.web.controller.vo; + +import java.io.Serializable; +import java.util.List; + +import lombok.Data; + +import org.hibernate.validator.constraints.NotBlank; + +/** + * Created by Jeng on 2016/1/7. + */ +public @Data class CreateUserVo implements Serializable { + + @NotBlank + private String username; + @NotBlank + private String password; + private String email; + @NotBlank + private String realName; + @NotBlank + private String phoneNumber; + private Integer age; + private String qq; + private String officeTel; + private Boolean locked; + /** + * 1-男,2女 + */ + private Integer sex; + + private Integer organizationId; + + private List userGroupIds; + +} diff --git a/src/main/java/com/xmomen/module/account/web/controller/vo/UpdateUserVo.java b/src/main/java/com/xmomen/module/account/web/controller/vo/UpdateUserVo.java new file mode 100644 index 0000000..5ab62d9 --- /dev/null +++ b/src/main/java/com/xmomen/module/account/web/controller/vo/UpdateUserVo.java @@ -0,0 +1,39 @@ +package com.xmomen.module.account.web.controller.vo; + +import java.io.Serializable; +import java.util.List; + +import javax.validation.constraints.NotNull; + +import lombok.Data; + +import org.hibernate.validator.constraints.NotBlank; + +/** + * Created by Jeng on 2016/1/7. + */ +public @Data class UpdateUserVo implements Serializable { + + @NotNull + private Integer id; + @NotBlank + private String username; + private String email; + @NotBlank + private String realName; + @NotNull + private String phoneNumber; + private Integer age; + private String qq; + private String officeTel; + private Boolean locked; + /** + * 1-男,2女 + */ + private Integer sex; + + private Integer organizationId; + + private List userGroupIds; + +} diff --git a/src/main/java/com/xmomen/module/advice/entity/Advice.java b/src/main/java/com/xmomen/module/advice/entity/Advice.java new file mode 100644 index 0000000..af4bf06 --- /dev/null +++ b/src/main/java/com/xmomen/module/advice/entity/Advice.java @@ -0,0 +1,149 @@ +package com.xmomen.module.advice.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "cd_advice") +public class Advice extends BaseMybatisModel { + /** + * 主键 + */ + private String id; + + /** + * 标题 + */ + private String title; + + /** + * 创建时间 + */ + private Date insertDate; + + /** + * 创建人 + */ + private Integer insertUserId; + + /** + * 更新时间 + */ + private Date updateDate; + + /** + * 更新人 + */ + private Integer updateUserId; + + /** + * 内容 + */ + private String content; + + @Column(name = "id") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "title") + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + if(title == null){ + removeValidField("title"); + return; + } + addValidField("title"); + } + + @Column(name = "insert_date") + public Date getInsertDate() { + return insertDate; + } + + public void setInsertDate(Date insertDate) { + this.insertDate = insertDate; + if(insertDate == null){ + removeValidField("insertDate"); + return; + } + addValidField("insertDate"); + } + + @Column(name = "insert_user_id") + public Integer getInsertUserId() { + return insertUserId; + } + + public void setInsertUserId(Integer insertUserId) { + this.insertUserId = insertUserId; + if(insertUserId == null){ + removeValidField("insertUserId"); + return; + } + addValidField("insertUserId"); + } + + @Column(name = "update_date") + public Date getUpdateDate() { + return updateDate; + } + + public void setUpdateDate(Date updateDate) { + this.updateDate = updateDate; + if(updateDate == null){ + removeValidField("updateDate"); + return; + } + addValidField("updateDate"); + } + + @Column(name = "update_user_id") + public Integer getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(Integer updateUserId) { + this.updateUserId = updateUserId; + if(updateUserId == null){ + removeValidField("updateUserId"); + return; + } + addValidField("updateUserId"); + } + + @Column(name = "content") + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + if(content == null){ + removeValidField("content"); + return; + } + addValidField("content"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/advice/entity/mapper/AdviceMapper.java b/src/main/java/com/xmomen/module/advice/entity/mapper/AdviceMapper.java new file mode 100644 index 0000000..c24d5a2 --- /dev/null +++ b/src/main/java/com/xmomen/module/advice/entity/mapper/AdviceMapper.java @@ -0,0 +1,16 @@ +package com.xmomen.module.advice.entity.mapper; + +import com.xmomen.framework.mybatis.mapper.MybatisMapper; +import com.xmomen.module.advice.entity.Advice; +import com.xmomen.module.advice.entity.AdviceExample; +import org.apache.ibatis.annotations.Param; + +public interface AdviceMapper extends MybatisMapper { + int countByExample(AdviceExample example); + + int deleteByExample(AdviceExample example); + + int insertSelective(Advice record); + + int updateByExampleSelective(@Param("record") Advice record, @Param("example") AdviceExample example); +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/advice/mapper/AdviceMapperExt.xml b/src/main/java/com/xmomen/module/advice/mapper/AdviceMapperExt.xml new file mode 100644 index 0000000..78b226c --- /dev/null +++ b/src/main/java/com/xmomen/module/advice/mapper/AdviceMapperExt.xml @@ -0,0 +1,36 @@ + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/advice/model/AdviceModel.java b/src/main/java/com/xmomen/module/advice/model/AdviceModel.java new file mode 100644 index 0000000..6735443 --- /dev/null +++ b/src/main/java/com/xmomen/module/advice/model/AdviceModel.java @@ -0,0 +1,87 @@ +package com.xmomen.module.advice.model; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.xmomen.module.advice.entity.Advice; +import lombok.Data; +import org.hibernate.validator.constraints.*; + +import javax.validation.constraints.*; + +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecgframework.poi.excel.annotation.ExcelTarget; +import org.springframework.beans.BeanUtils; + +import java.lang.String; +import java.lang.Integer; +import java.util.Date; +import java.io.Serializable; + +/** + * @author tanxinzheng + * @version 1.0.0 + * @date 2017-5-14 20:05:05 + */ +@ExcelTarget(value = "AdviceModel") +public +@Data +class AdviceModel implements Serializable { + + /** + * 主键 + */ + @Length(max = 32, message = "主键字符长度限制[0,32]") + private String id; + /** + * 标题 + */ + @Excel(name = "标题") + @NotBlank(message = "标题为必填项") + @Length(max = 128, message = "标题字符长度限制[0,128]") + private String title; + /** + * 创建时间 + */ + @Excel(name = "创建时间") + private Date insertDate; + /** + * 创建人 + */ + @Excel(name = "创建人") + @Range(max = 999999999, min = -999999999, message = "创建人数值范围[999999999,-999999999]") + private Integer insertUserId; + + private String insertUser; + /** + * 更新时间 + */ + @Excel(name = "更新时间") + private Date updateDate; + /** + * 更新人 + */ + @Excel(name = "更新人") + @Range(max = 999999999, min = -999999999, message = "更新人数值范围[999999999,-999999999]") + private Integer updateUserId; + + private String updateUser; + /** + * 内容 + */ + @Excel(name = "内容") + @Length(max = 65535, message = "内容字符长度限制[0,65,535]") + private String content; + + /** + * Get Advice Entity Object + * + * @return + */ + @JsonIgnore + public Advice getEntity() { + Advice advice = new Advice(); + BeanUtils.copyProperties(this, advice); + return advice; + } + + +} diff --git a/src/main/java/com/xmomen/module/advice/service/impl/AdviceServiceImpl.java b/src/main/java/com/xmomen/module/advice/service/impl/AdviceServiceImpl.java new file mode 100644 index 0000000..d03dd03 --- /dev/null +++ b/src/main/java/com/xmomen/module/advice/service/impl/AdviceServiceImpl.java @@ -0,0 +1,222 @@ +package com.xmomen.module.advice.service.impl; + +import com.xmomen.module.advice.entity.Advice; +import com.xmomen.module.advice.entity.AdviceExample; +import com.xmomen.module.advice.mapper.AdviceMapperExt; +import com.xmomen.module.advice.model.AdviceCreate; +import com.xmomen.module.advice.model.AdviceQuery; +import com.xmomen.module.advice.model.AdviceUpdate; +import com.xmomen.module.advice.model.AdviceModel; +import com.xmomen.module.advice.service.AdviceService; +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.module.base.constant.AppConstants; +import com.xmomen.module.wx.util.DateUtils; +import org.apache.ibatis.exceptions.TooManyResultsException; +import org.apache.shiro.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * @author tanxinzheng + * @date 2017-5-14 20:05:05 + * @version 1.0.0 + */ +@Service +public class AdviceServiceImpl implements AdviceService { + + @Autowired + MybatisDao mybatisDao; + + /** + * 新增快报 + * + * @param adviceModel 新增快报对象参数 + * @return AdviceModel 快报领域对象 + */ + @Override + @Transactional + public AdviceModel createAdvice(AdviceModel adviceModel) { + Advice advice = createAdvice(adviceModel.getEntity()); + if(advice != null){ + return getOneAdviceModel(advice.getId()); + } + return null; + } + + /** + * 新增快报实体对象 + * + * @param advice 新增快报实体对象参数 + * @return Advice 快报实体对象 + */ + @Override + @Transactional + public Advice createAdvice(Advice advice) { + advice.setInsertDate(DateUtils.getNowDate()); + advice.setInsertUserId((Integer) SecurityUtils.getSubject().getSession().getAttribute(AppConstants.SESSION_USER_ID_KEY)); + advice.setUpdateDate(mybatisDao.getSysdate()); + advice.setUpdateUserId((Integer) SecurityUtils.getSubject().getSession().getAttribute(AppConstants.SESSION_USER_ID_KEY)); + return mybatisDao.insertByModel(advice); + } + + /** + * 批量新增快报 + * + * @param adviceModels 新增快报对象集合参数 + * @return List 快报领域对象集合 + */ + @Override + @Transactional + public List createAdvices(List adviceModels) { + List adviceModelList = null; + for (AdviceModel adviceModel : adviceModels) { + adviceModel = createAdvice(adviceModel); + if(adviceModel != null){ + if(adviceModelList == null){ + adviceModelList = new ArrayList<>(); + } + adviceModelList.add(adviceModel); + } + } + return adviceModelList; + } + + /** + * 更新快报 + * + * @param adviceModel 更新快报对象参数 + */ + @Override + @Transactional + public void updateAdvice(AdviceModel adviceModel) { + adviceModel.setUpdateDate(mybatisDao.getSysdate()); + adviceModel.setUpdateUserId((Integer) SecurityUtils.getSubject().getSession().getAttribute(AppConstants.SESSION_USER_ID_KEY)); + mybatisDao.update(adviceModel.getEntity()); + } + + /** + * 更新快报实体对象 + * + * @param advice 新增快报实体对象参数 + * @return Advice 快报实体对象 + */ + @Override + @Transactional + public void updateAdvice(Advice advice) { + advice.setUpdateDate(mybatisDao.getSysdate()); + advice.setUpdateUserId((Integer) SecurityUtils.getSubject().getSession().getAttribute(AppConstants.SESSION_USER_ID_KEY)); + mybatisDao.update(advice); + } + + /** + * 删除快报 + * + * @param ids 主键数组 + */ + @Override + @Transactional + public void deleteAdvice(String[] ids) { + AdviceExample adviceExample = new AdviceExample(); + adviceExample.createCriteria().andIdIn(Arrays.asList((String[]) ids)); + mybatisDao.deleteByExample(adviceExample); + } + + /** + * 删除快报 + * + * @param id 主键 + */ + @Override + @Transactional + public void deleteAdvice(String id) { + mybatisDao.deleteByPrimaryKey(Advice.class, id); + } + + /** + * 查询快报领域分页对象(带参数条件) + * + * @param limit 每页最大数 + * @param offset 页码 + * @param adviceQuery 查询参数 + * @return Page 快报参数对象 + */ + @Override + public Page getAdviceModelPage(int limit, int offset, AdviceQuery adviceQuery) { + return (Page) mybatisDao.selectPage(AdviceMapperExt.AdviceMapperNameSpace + "getAdviceModel", adviceQuery, limit, offset); + } + + /** + * 查询快报领域分页对象(无参数条件) + * + * @param limit 每页最大数 + * @param offset 页码 + * @return Page 快报领域对象 + */ + @Override + public Page getAdviceModelPage(int limit, int offset) { + return (Page) mybatisDao.selectPage(AdviceMapperExt.AdviceMapperNameSpace + "getAdviceModel", null, limit, offset); + } + + /** + * 查询快报领域集合对象(带参数条件) + * + * @param adviceQuery 查询参数对象 + * @return List 快报领域集合对象 + */ + @Override + public List getAdviceModelList(AdviceQuery adviceQuery) { + return mybatisDao.getSqlSessionTemplate().selectList(AdviceMapperExt.AdviceMapperNameSpace + "getAdviceModel", adviceQuery); + } + + /** + * 查询快报领域集合对象(无参数条件) + * + * @return List 快报领域集合对象 + */ + @Override + public List getAdviceModelList() { + return mybatisDao.getSqlSessionTemplate().selectList(AdviceMapperExt.AdviceMapperNameSpace + "getAdviceModel"); + } + + /** + * 查询快报实体对象 + * + * @param id 主键 + * @return Advice 快报实体对象 + */ + @Override + public Advice getOneAdvice(String id) { + return mybatisDao.selectByPrimaryKey(Advice.class, id); + } + + /** + * 根据主键查询单个对象 + * + * @param id 主键 + * @return AdviceModel 快报领域对象 + */ + @Override + public AdviceModel getOneAdviceModel(String id) { + AdviceQuery adviceQuery = new AdviceQuery(); + adviceQuery.setId(id); + return mybatisDao.getSqlSessionTemplate().selectOne(AdviceMapperExt.AdviceMapperNameSpace + "getAdviceModel", adviceQuery); + } + + /** + * 根据查询参数查询单个对象(此方法只用于提供精确查询单个对象,若结果数超过1,则会报错) + * + * @param adviceQuery 快报查询参数对象 + * @return AdviceModel 快报领域对象 + */ + @Override + public AdviceModel getOneAdviceModel(AdviceQuery adviceQuery) throws TooManyResultsException { + return mybatisDao.getSqlSessionTemplate().selectOne(AdviceMapperExt.AdviceMapperNameSpace + "getAdviceModel", adviceQuery); + } +} diff --git a/src/main/java/com/xmomen/module/base/constant/AppConstants.java b/src/main/java/com/xmomen/module/base/constant/AppConstants.java new file mode 100644 index 0000000..f2bce9e --- /dev/null +++ b/src/main/java/com/xmomen/module/base/constant/AppConstants.java @@ -0,0 +1,68 @@ +package com.xmomen.module.base.constant; + +import java.io.Serializable; + +/** + * Created by Jeng on 16/5/10. + */ +public class AppConstants implements Serializable { + + /** + * 客服经理角色代码 + */ + public static final String CUSTOMER_MANAGER_PERMISSION_CODE = "customer_manager"; + + /** + * 客服组 + */ + public static final String CUSTOMER_PERMISSION_CODE = "kehuzu"; + + /** + * 后台组 + */ + public static final String HOU_TAI_CODE = "houtaibu"; + + /** + * 管理员 + */ + public static final String ADMIN = "admin"; + + /** + * 超级管理员 + */ + public static final String SUPER_ADMIN = "super_admin"; + + /** + * 物流中心 + */ + public static final String WULIUZXB = "wuliuzxb"; + + /** + * 财务组 + */ + public static final String CWU = "cwu"; + + public static final String PACKAGE_PERMISSION_CODE = "baozhuangzu"; + + public static final String PACKING_PERMISSION_CODE = "zhuangxiangzu"; + /** + * 运输 + */ + public static final String YUN_SHU_PERMISSION_CODE = "yunshubu"; + + /** + * 快递商 + */ + public static final String KUAI_DI_SHANG = "kuaidishang"; + + /** + * 用户sessionUserId键值 + */ + public static final String SESSION_USER_ID_KEY = "user_id"; + + public static final String PC_PASSWORD_SALT = "dms_pc"; + + public static final int STOCK_CHANGE_TYPE_IN = 1;//入库 + public static final int STOCK_CHANGE_TYPE_BROKEN = 2;//破损 + public static final int STOCK_CHANGE_TYPE_CANCEL = 3;//核销 +} diff --git a/src/main/java/com/xmomen/module/base/controller/CompanyController.java b/src/main/java/com/xmomen/module/base/controller/CompanyController.java new file mode 100644 index 0000000..49198c9 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/controller/CompanyController.java @@ -0,0 +1,113 @@ +package com.xmomen.module.base.controller; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.validation.Valid; + +import com.xmomen.module.base.constant.AppConstants; +import com.xmomen.module.base.mapper.MemberMapper; +import com.xmomen.module.base.model.*; +import org.apache.shiro.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.framework.web.exceptions.ArgumentValidException; +import com.xmomen.module.base.mapper.CompanyMapper; +import com.xmomen.module.base.service.CompanyService; +import com.xmomen.module.logger.Log; + +@RestController +public class CompanyController { + @Autowired + CompanyService companyService; + @Autowired + CompanyMapper companyMapper; + @Autowired + MybatisDao mybatisDao; + + /** + * 查询单位公司信息 + * + * @param id + * @return + */ + @RequestMapping(value = "/company", method = RequestMethod.GET) + @Log(actionName = "查询单位公司信息") + public Page getMemberList(@RequestParam(value = "limit") Integer limit, + @RequestParam(value = "offset") Integer offset, + @RequestParam(value = "id", required = false) Integer id, + @RequestParam(value = "keyword", required = false) String keyword) { + Map map = new HashMap(); + map.put("id", id); + map.put("keyword", keyword); + //客服经理过滤 如果有客服组权限则不过滤 + if (SecurityUtils.getSubject().hasRole(AppConstants.CUSTOMER_MANAGER_PERMISSION_CODE) && !SecurityUtils.getSubject().hasRole(AppConstants.CUSTOMER_PERMISSION_CODE)) { + Integer userId = (Integer) SecurityUtils.getSubject().getSession().getAttribute(AppConstants.SESSION_USER_ID_KEY); + map.put("managerId", userId); + } + return (Page) mybatisDao.selectPage(CompanyMapper.CompanyMapperNameSpace + "getCompanyList", map, limit, offset); + } + + /** + * 根据ID查询客户经理信息 + * + * @param id + */ + @RequestMapping(value = "/company/queryCompanyManagerListById", method = RequestMethod.GET) + @Log(actionName = "根据ID查询客户经理信息") + public List queryCompanyManagerListById(@PathVariable(value = "id") Integer id) { + Map map = new HashMap(); + map.put("id", id); + //客服经理过滤 如果有客服组权限则不过滤 + if (SecurityUtils.getSubject().hasRole(AppConstants.CUSTOMER_MANAGER_PERMISSION_CODE) && !SecurityUtils.getSubject().hasRole(AppConstants.CUSTOMER_PERMISSION_CODE)) { + Integer userId = (Integer) SecurityUtils.getSubject().getSession().getAttribute(AppConstants.SESSION_USER_ID_KEY); + map.put("managerId", userId); + } + return mybatisDao.getSqlSessionTemplate().selectList(CompanyMapper.CompanyMapperNameSpace + "queryCompanyManagerListById", map); + } + + @RequestMapping(value = "/company", method = RequestMethod.POST) + @Log(actionName = "新增单位、公司") + public void createCompany(@RequestBody @Valid CreateCompany createCompany, BindingResult bindingResult) throws ArgumentValidException { + if (bindingResult != null && bindingResult.hasErrors()) { + throw new ArgumentValidException(bindingResult); + } + companyService.createCompany(createCompany); + } + + /** + * 修改 + * + * @param id + */ + @RequestMapping(value = "/company/{id}", method = RequestMethod.PUT) + @Log(actionName = "修改单位信息") + public void updateMember(@PathVariable(value = "id") Integer id, + @RequestBody @Valid UpdateCompany updateCompany, BindingResult bindingResult) throws ArgumentValidException { + if (bindingResult != null && bindingResult.hasErrors()) { + throw new ArgumentValidException(bindingResult); + } + companyService.updateCompany(id, updateCompany); + } + + /** + * 删除 + * + * @param id + */ + @RequestMapping(value = "/company/{id}", method = RequestMethod.DELETE) + @Log(actionName = "删除单位信息") + public void deleteMember(@PathVariable(value = "id") Integer id) { + companyService.delete(id); + } +} diff --git a/src/main/java/com/xmomen/module/base/controller/ContractController.java b/src/main/java/com/xmomen/module/base/controller/ContractController.java new file mode 100644 index 0000000..ab7781d --- /dev/null +++ b/src/main/java/com/xmomen/module/base/controller/ContractController.java @@ -0,0 +1,102 @@ +package com.xmomen.module.base.controller; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.framework.web.exceptions.ArgumentValidException; +import com.xmomen.module.base.entity.CdContract; +import com.xmomen.module.base.mapper.ContractMapper; +import com.xmomen.module.base.model.ContractModel; +import com.xmomen.module.base.model.CreateContract; +import com.xmomen.module.base.model.UpdateContract; +import com.xmomen.module.base.service.ContractService; +import com.xmomen.module.logger.Log; +@RestController +public class ContractController { + @Autowired + ContractService contractService; + @Autowired + ContractMapper contractMapper; + @Autowired + MybatisDao mybatisDao; + /** + * 查询合同信息 + * @param id + * @return + */ + @RequestMapping(value = "/contract", method = RequestMethod.GET) + @Log(actionName = "查询合同信息") + public Page getMemberList(@RequestParam(value = "limit") Integer limit, + @RequestParam(value = "offset") Integer offset, + @RequestParam(value = "id", required = false) Integer id, + @RequestParam(value = "keyword", required = false) String keyword){ + Map map = new HashMap(); + map.put("id", id); + map.put("keyword", keyword); + return (Page) mybatisDao.selectPage(ContractMapper.ContractMapperNameSpace + "getContractList", map, limit, offset); + } + @RequestMapping(value = "/contract", method = RequestMethod.POST) + @Log(actionName = "新增合同") + public void createCompany(@RequestBody @Valid CreateContract createContract, BindingResult bindingResult) throws ArgumentValidException { + if(bindingResult != null && bindingResult.hasErrors()){ + throw new ArgumentValidException(bindingResult); + } + contractService.createContract(createContract); + } + + /** + * 合同查看 + * @return + */ + @RequestMapping(value = "/contract/{id}", method = RequestMethod.GET) + @Log(actionName = "查询合同") + public ContractModel getContractDetail(@PathVariable(value = "id") Integer id){ + //查询合同 + Map map = new HashMap(); + map.put("id", id); + List contracts = mybatisDao.getSqlSessionTemplate().selectList(ContractMapper.ContractMapperNameSpace + "getContractListAndDetail", map); + if(contracts != null && !contracts.isEmpty() && contracts.size() == 1){ + return contracts.get(0); + } + return null; + } + + /** + * 修改 + * @param id + */ + @RequestMapping(value = "/contract/{id}", method = RequestMethod.PUT) + @Log(actionName = "修改合同") + public void updateMember(@PathVariable(value = "id") Integer id, + @RequestBody @Valid UpdateContract updateContract, BindingResult bindingResult) throws ArgumentValidException { + if(bindingResult != null && bindingResult.hasErrors()){ + throw new ArgumentValidException(bindingResult); + } + contractService.updateContract(id, updateContract); + } + + /** + * 删除 + * @param id + */ + @RequestMapping(value = "/contract/{id}", method = RequestMethod.DELETE) + @Log(actionName = "删除合同信息") + public void deleteMember(@PathVariable(value = "id") Integer id){ + contractService.delete(id); + } + +} diff --git a/src/main/java/com/xmomen/module/base/controller/CouponCategoryController.java b/src/main/java/com/xmomen/module/base/controller/CouponCategoryController.java new file mode 100644 index 0000000..c675b20 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/controller/CouponCategoryController.java @@ -0,0 +1,122 @@ +package com.xmomen.module.base.controller; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.framework.web.exceptions.ArgumentValidException; +import com.xmomen.module.base.entity.CdCouponCategory; +import com.xmomen.module.base.mapper.CouponCategoryMapper; +import com.xmomen.module.base.model.CreateCouponCategory; +import com.xmomen.module.base.model.ItemChildModel; +import com.xmomen.module.base.model.UpdateCouponCategory; +import com.xmomen.module.base.service.CouponCategoryService; +import com.xmomen.module.logger.Log; + +/** + * Created by Jeng on 2016/3/30. + */ +@RestController +public class CouponCategoryController { + + @Autowired + CouponCategoryService couponCategoryService; + + @Autowired + MybatisDao mybatisDao; + + /** + * 卡券类别列表 + * @param limit + * @param offset + * @param keyword + * @return + */ + @RequestMapping(value = "/couponCategory", method = RequestMethod.GET) + @Log(actionName = "查询卡券类别列表") + public Page getUserList(@RequestParam(value = "limit") Integer limit, + @RequestParam(value = "offset") Integer offset, + @RequestParam(value = "keyword", required = false) String keyword, + @RequestParam(value = "categoryType", required = false) Integer categoryType){ + return couponCategoryService.getCouponCategoryList(keyword,categoryType, limit, offset); + } + + /** + * 卡券类别列表 + * @param id + */ + @RequestMapping(value = "/couponCategory/{id}", method = RequestMethod.GET) + @Log(actionName = "查询卡券类别") + public CdCouponCategory getUserList(@PathVariable(value = "id") Integer id){ + return couponCategoryService.getCouponCategory(id); + } + + /** + * 新增卡券类别 + * @param createCouponCategory + * @param bindingResult + * @return + */ + @RequestMapping(value = "/couponCategory", method = RequestMethod.POST) + @Log(actionName = "新增卡券类别") + public CdCouponCategory createCouponCategory(@RequestBody @Valid CreateCouponCategory createCouponCategory, BindingResult bindingResult) throws ArgumentValidException { + if(bindingResult != null && bindingResult.hasErrors()){ + throw new ArgumentValidException(bindingResult); + } + return couponCategoryService.createCouponCategory(createCouponCategory); + } + + /** + * 更新卡券类别 + * @param id + * @param updateCouponCategory + * @param bindingResult + * @throws ArgumentValidException + */ + @RequestMapping(value = "/couponCategory/{id}", method = RequestMethod.PUT) + @Log(actionName = "更新卡券类别") + public CdCouponCategory updateCouponCategory(@PathVariable(value = "id") Integer id, + @RequestBody @Valid UpdateCouponCategory updateCouponCategory, BindingResult bindingResult) throws ArgumentValidException { + if(bindingResult != null && bindingResult.hasErrors()){ + throw new ArgumentValidException(bindingResult); + } + return couponCategoryService.updateCouponCategory(id,updateCouponCategory); + } + + /** + * 删除卡券类别类别 + * @param id + */ + @RequestMapping(value = "/couponCategory/{id}", method = RequestMethod.DELETE) + @Log(actionName = "删除卡券类别") + public void deleteCouponCategory(@PathVariable(value = "id") Long id){ + mybatisDao.deleteByPrimaryKey(CdCouponCategory.class, id); + } + /** + * 查询选择的产品 + * @param parentId + * @return + */ + @RequestMapping(value = "/getChoseItemList", method = RequestMethod.GET) + public List getChildItem(@RequestParam(value = "parentId", required = false) Integer parentId){ + List childItems = new ArrayList(); + Map map = new HashMap(); + map.put("parentId", parentId); + childItems = mybatisDao.getSqlSessionTemplate().selectList(CouponCategoryMapper.CouponCategoryMapperNameSpace + "getChoseItemList", map); + return childItems; + } +} diff --git a/src/main/java/com/xmomen/module/base/controller/CouponController.java b/src/main/java/com/xmomen/module/base/controller/CouponController.java new file mode 100644 index 0000000..d7ce35d --- /dev/null +++ b/src/main/java/com/xmomen/module/base/controller/CouponController.java @@ -0,0 +1,508 @@ +package com.xmomen.module.base.controller; + +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.framework.utils.AssertExt; +import com.xmomen.framework.utils.StringUtilsExt; +import com.xmomen.framework.web.exceptions.ArgumentValidException; +import com.xmomen.module.base.constant.AppConstants; +import com.xmomen.module.base.entity.*; +import com.xmomen.module.base.mapper.CouponMapper; +import com.xmomen.module.base.model.*; +import com.xmomen.module.base.service.CouponService; +import com.xmomen.module.export.model.UploadFileVo; +import com.xmomen.module.export.util.PrintUtils; +import com.xmomen.module.logger.Log; +import com.xmomen.module.wx.util.DateUtils; +import org.apache.commons.lang.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.IOException; +import java.math.BigDecimal; +import java.text.ParseException; +import java.util.List; +import java.util.Map; + +/** + * Created by Jeng on 2016/3/30. + */ +@RestController +public class CouponController { + + @Autowired + CouponService couponService; + + @Autowired + MybatisDao mybatisDao; + + /** + * 卡券列表 + * + * @param limit + * @param offset + * @param keyword + * @return + */ + @RequestMapping(value = "/coupon", method = RequestMethod.GET) + @Log(actionName = "查询卡券列表") + public Page getCouponList(@RequestParam(value = "limit") Integer limit, + @RequestParam(value = "offset") Integer offset, + @RequestParam(value = "couponNumber", required = false) String couponNumber, + @RequestParam(value = "couponType", required = false) Integer couponType, + @RequestParam(value = "couponCategoryId", required = false) Integer couponCategoryId, + @RequestParam(value = "isSend", required = false) Integer isSend, + @RequestParam(value = "cdCompanyId", required = false) Integer cdCompanyId, + @RequestParam(value = "customerMangerId", required = false) Integer customerMangerId, + @RequestParam(value = "isUseful", required = false) Integer isUseful, + @RequestParam(value = "auditDateStart", required = false) String auditDateStart, + @RequestParam(value = "auditDateEnd", required = false) String auditDateEnd, + @RequestParam(value = "isOver", required = false) Integer isOver, + @RequestParam(value = "batch", required = false) String batch, + @RequestParam(value = "keyword", required = false) String keyword) { + CouponQuery couponQuery = new CouponQuery(); + couponQuery.setKeyword(keyword); + couponQuery.setCdCompanyId(cdCompanyId); + couponQuery.setCouponCategoryId(couponCategoryId); + couponQuery.setCouponNumber(couponNumber); + couponQuery.setCouponType(couponType); + couponQuery.setCustomerMangerId(customerMangerId); + couponQuery.setIsOver(isOver); + couponQuery.setIsSend(isSend); + couponQuery.setIsUseful(isUseful); + + if (StringUtilsExt.isNotBlank(auditDateStart)) { + couponQuery.setAuditDateStart(auditDateStart.substring(0, 10)); + } + + if (StringUtilsExt.isNotBlank(auditDateEnd)) { + couponQuery.setAuditDateEnd(auditDateEnd.substring(0, 10)); + } + + if (!StringUtils.isBlank(batch)) { + couponQuery.setBatch(batch); + } + //客服经理过滤 如果有客服组权限则不过滤 + if (SecurityUtils.getSubject().hasRole(AppConstants.CUSTOMER_MANAGER_PERMISSION_CODE) && !SecurityUtils.getSubject().hasRole(AppConstants.CUSTOMER_PERMISSION_CODE)) { + Integer userId = (Integer) SecurityUtils.getSubject().getSession().getAttribute(AppConstants.SESSION_USER_ID_KEY); + couponQuery.setManagerId(userId); + } + return couponService.queryCoupon(couponQuery, limit, offset); + } + + /** + * 卡券列表 + * + * @param id + */ + @RequestMapping(value = "/coupon/{id}", method = RequestMethod.GET) + @Log(actionName = "查询卡券") + public CdCoupon getUserList(@PathVariable(value = "id") Integer id) { + return couponService.getCoupon(id); + } + + /** + * 新增卡券 + * + * @param createCoupon + * @param bindingResult + * @return + */ + @RequestMapping(value = "/coupon", method = RequestMethod.POST) + @Log(actionName = "新增卡券") + public CdCoupon createCoupon(@RequestBody @Valid CreateCoupon createCoupon, BindingResult bindingResult) throws ArgumentValidException { + if (bindingResult != null && bindingResult.hasErrors()) { + throw new ArgumentValidException(bindingResult); + } + CdCoupon cdCoupon = new CdCoupon(); + cdCoupon.setCouponType(createCoupon.getCouponType()); + cdCoupon.setCouponCategory(createCoupon.getCouponCategory()); + cdCoupon.setCouponDesc(createCoupon.getCouponDesc()); + cdCoupon.setCouponNumber(createCoupon.getCouponNumber()); + cdCoupon.setCouponPassword(createCoupon.getCouponPassword()); + cdCoupon.setBeginTime(createCoupon.getBeginTime()); + cdCoupon.setEndTime(createCoupon.getEndTime()); + cdCoupon.setCouponValue(createCoupon.getCouponValue()); + cdCoupon.setIsGift(createCoupon.getIsGift()); + cdCoupon.setIsUsed(createCoupon.getIsUsed()); + cdCoupon.setIsUseful(createCoupon.getIsUseful()); + cdCoupon.setNotes(createCoupon.getNotes()); + cdCoupon.setPaymentType(createCoupon.getPaymentType()); + cdCoupon.setUserPrice(createCoupon.getUserPrice()); + return couponService.createCoupon(cdCoupon); + } + + /** + * 更新卡券 + * + * @param id + * @param updateCoupon + * @param bindingResult + * @throws ArgumentValidException + */ + @RequestMapping(value = "/coupon/{id}", method = RequestMethod.PUT) + @Log(actionName = "更新卡券") + public void updateCoupon(@PathVariable(value = "id") Integer id, + @RequestBody @Valid UpdateCoupon updateCoupon, BindingResult bindingResult) throws ArgumentValidException { + if (bindingResult != null && bindingResult.hasErrors()) { + throw new ArgumentValidException(bindingResult); + } + CdCoupon cdCoupon = new CdCoupon(); + cdCoupon.setId(id); + cdCoupon.setCouponCategory(updateCoupon.getCouponCategory()); + cdCoupon.setCouponType(updateCoupon.getCouponType()); + cdCoupon.setCouponDesc(updateCoupon.getCouponDesc()); + cdCoupon.setCouponNumber(updateCoupon.getCouponNumber()); + cdCoupon.setCouponPassword(updateCoupon.getCouponPassword()); + cdCoupon.setBeginTime(updateCoupon.getBeginTime()); + cdCoupon.setEndTime(updateCoupon.getEndTime()); + cdCoupon.setCouponValue(updateCoupon.getCouponValue()); + cdCoupon.setIsGift(updateCoupon.getIsGift()); + cdCoupon.setIsUsed(updateCoupon.getIsUsed()); + cdCoupon.setUserPrice(updateCoupon.getUserPrice()); + cdCoupon.setIsUseful(updateCoupon.getIsUseful()); + cdCoupon.setNotes(updateCoupon.getNotes()); + cdCoupon.setPaymentType(updateCoupon.getPaymentType()); + couponService.updateCoupon(cdCoupon); + } + + /** + * 删除卡券 + * + * @param id + */ + @RequestMapping(value = "/coupon/{id}", method = RequestMethod.DELETE) + @Log(actionName = "删除卡券") + public void deleteCoupon(@PathVariable(value = "id") Long id) { + mybatisDao.deleteByPrimaryKey(CdCoupon.class, id); + } + + /** + * @param id + */ + @RequestMapping(value = "/coupon/sendOneCoupon", method = RequestMethod.GET) + @Log(actionName = "发放单卡") + public void sendOneCoupon( + @RequestParam(value = "id") Integer id, + @RequestParam(value = "companyId") Integer companyId, + @RequestParam(value = "customerMangerId") Integer customerMangerId, + @RequestParam(value = "couponNumber") String couponNumber, + @RequestParam(value = "batch") String batch, + @RequestParam(value = "isGift") Integer isGift) { + couponService.sendOneCoupon(id, companyId, customerMangerId, couponNumber, batch, isGift); + } + + /** + * @param id + */ + @RequestMapping(value = "/coupon/sendMoreCoupon", method = RequestMethod.GET) + @Log(actionName = "批量发放卡") + public void sendMoreCoupon( + @RequestParam(value = "companyId") Integer companyId, + @RequestParam(value = "customerMangerId") Integer customerMangerId, + @RequestParam(value = "couponNumberList") String couponNumberList, + @RequestParam(value = "batch") String batch, + @RequestParam(value = "isGift") Integer isGift) { + String[] couponNumbers = couponNumberList.split(","); + for (int i = 0, length = couponNumbers.length; i < length; i++) { + String couponNumber = couponNumbers[i]; + CdCoupon coupon = new CdCoupon(); + coupon.setCouponNumber(couponNumber); +// coupon.setCouponType(1); + coupon.setIsSend(0); + coupon.setIsUseful(0); + coupon = mybatisDao.selectOneByModel(coupon); + if (coupon != null) { + couponService.sendOneCoupon(coupon.getId(), companyId, customerMangerId, coupon.getCouponNumber(), batch, isGift); + } + } + } + + /** + * 根据批次号修改 + */ + @RequestMapping(value = "/coupon/updateBatchCoupon", method = RequestMethod.GET) + @Log(actionName = "根据批次号修改") + public void updateBatchCoupon( + @RequestParam(value = "companyId") Integer companyId, + @RequestParam(value = "customerMangerId") Integer customerMangerId, + @RequestParam(value = "couponNumberList") String couponNumberList) { + String[] couponNumbers = couponNumberList.split(","); + for (int i = 0, length = couponNumbers.length; i < length; i++) { + String couponNumber = couponNumbers[i]; + CdCoupon coupon = new CdCoupon(); + coupon.setCouponNumber(couponNumber); + coupon = mybatisDao.selectOneByModel(coupon); + coupon.setCdCompanyId(companyId); + coupon.setCdUserId(customerMangerId); + mybatisDao.updateByModel(coupon); + } + } + + /** + * 批量修改卡类型 + */ + @RequestMapping(value = "/coupon/updateBatchCouponType", method = RequestMethod.GET) + @Log(actionName = "批量修改卡类型") + public void updateBatchCouponType( + @RequestParam(value = "couponCategoryId") Integer couponCategoryId, + @RequestParam(value = "couponNumberList") String couponNumberList) { + String[] couponNumbers = couponNumberList.split(","); + for (int i = 0, length = couponNumbers.length; i < length; i++) { + String couponNumber = couponNumbers[i]; + CdCoupon coupon = new CdCoupon(); + coupon.setCouponNumber(couponNumber); + coupon = mybatisDao.selectOneByModel(coupon); + coupon.setCouponCategory(couponCategoryId); + mybatisDao.updateByModel(coupon); + } + } + + /** + * @param id + * @throws ParseException + */ + @RequestMapping(value = "/coupon/activityAddress", method = RequestMethod.POST) + @Log(actionName = "活动送货地址信息") + public void activityAddress(@RequestBody CouponActivityAddressHead couponActivityAddressHead) throws ParseException { + CdActivityAddress activityAddress = new CdActivityAddress(); + activityAddress.setCouponNumber(couponActivityAddressHead.getCouponNumber()); + List activityAddressList = mybatisDao.selectByModel(activityAddress); + mybatisDao.deleteAllByModel(activityAddressList); + for (CouponActivityAddress couponActivityAddress : couponActivityAddressHead.getCouponActivityAddressList()) { + + activityAddress = new CdActivityAddress(); + activityAddress.setConsignmentAddress(couponActivityAddress.getConsignmentAddress()); + activityAddress.setConsignmentPhone(couponActivityAddress.getConsignmentPhone()); + activityAddress.setConsignmentName(couponActivityAddress.getConsignmentName()); + activityAddress.setCouponNumber(couponActivityAddressHead.getCouponNumber()); + activityAddress.setSendTime(couponActivityAddress.getSendTime()); + activityAddress.setSendCount(couponActivityAddress.getSendCount()); + mybatisDao.save(activityAddress); + + //查找客户 进行添加或者修改第三个地址 + if (StringUtilsExt.isNotBlank(couponActivityAddress.getConsignmentPhone())) { + CdMember member = new CdMember(); + member.setPhoneNumber(couponActivityAddress.getConsignmentPhone()); + List members = mybatisDao.selectByModel(member); + if (members != null && members.size() > 0) { + member = members.get(0); + if (StringUtilsExt.isNotBlank(couponActivityAddress.getConsignmentAddress())) + member.setSpareAddress2(couponActivityAddress.getConsignmentAddress()); + if (StringUtilsExt.isNotBlank(couponActivityAddress.getConsignmentName())) + member.setSpareName2(couponActivityAddress.getConsignmentName()); + member.setSpareTel2(couponActivityAddress.getConsignmentPhone()); + mybatisDao.update(member); + } + } + } + } + + /** + * 审核金额 + * + * @param id + */ + @RequestMapping(value = "/coupon/{id}/audit", method = RequestMethod.PUT) + @Log(actionName = "审核金额") + public void audit(@PathVariable(value = "id") Integer id, + @RequestParam(value = "locked") Boolean locked) { + this.couponService.auditCoupon(id, locked); + } + + /** + * 批量审核金额 + * + * @param id + */ + @RequestMapping(value = "/coupon/batchAudit", method = RequestMethod.PUT) + @Log(actionName = "批量审核金额") + public void batchAudit(@RequestParam(value = "ids") String ids, + @RequestParam(value = "locked") Boolean locked) { + String[] idchars = ids.split(","); + for (String id : idchars) { + this.couponService.auditCoupon(Integer.parseInt(id), locked); + } + } + + /** + * 退卡 + * + * @param id + */ + @RequestMapping(value = "/coupon/{id}/returnCoupon", method = RequestMethod.PUT) + @Log(actionName = "退卡") + public void returnCoupon(@PathVariable(value = "id") Integer id) { + couponService.returnCoupon(id); + } + + /** + * 完结卡 + * + * @param id + */ + @RequestMapping(value = "/coupon/{id}/overCoupon", method = RequestMethod.PUT) + @Log(actionName = "完结卡") + public void overCoupon(@PathVariable(value = "id") Integer id, + @RequestParam(value = "isOver") Integer isOver) { + CdCoupon coupon = new CdCoupon(); + coupon.setIsOver(isOver); + coupon.setId(id); + mybatisDao.update(coupon); + } + + @RequestMapping(value = "/coupon/receivedPrice", method = RequestMethod.GET) + @Log(actionName = "财务实收金额添加") + public void received( + @RequestParam(value = "couponId") Integer couponId, + @RequestParam(value = "couponNumber") String couponNumber, + @RequestParam(value = "receivedPrice", required = false) BigDecimal receivedPrice, + @RequestParam(value = "isAutoAudit", required = false) Integer isAutoAudit) { + CdCouponRefExample couponRefExample = new CdCouponRefExample(); + couponRefExample.createCriteria().andCdCouponIdEqualTo(couponId) + .andRefTypeEqualTo("RECEIVED_PRICE"); + CdCouponRef couponRef = mybatisDao.selectOneByExample(couponRefExample); + if (couponRef == null) { + couponRef = new CdCouponRef(); + couponRef.setCdCouponId(couponId); + couponRef.setCouponNumber(couponNumber); + couponRef.setRefName("财务实收金额"); + couponRef.setRefType("RECEIVED_PRICE"); + couponRef.setRefValue(receivedPrice.toString()); + mybatisDao.save(couponRef); + } + else { + couponRef.setRefValue(receivedPrice.toString()); + mybatisDao.update(couponRef); + } + if (isAutoAudit == 1) { + CdCoupon coupon = new CdCoupon(); + coupon.setIsUseful(1); + //更新卡发放状态 + CdCoupon couponDb = mybatisDao.selectByPrimaryKey(CdCoupon.class, couponId); + //如果是后付款类型并且是卡则记录激活时间 + if (couponDb.getPaymentType() == 1 && couponDb.getCouponType() == 1) { + coupon.setUsefulDate(DateUtils.getNowDate()); + } + coupon.setId(couponId); + if (coupon.getCouponValue() == null) { + coupon.setCouponValue(receivedPrice); + } + if (coupon.getCouponType() == 1) { + coupon.setUserPrice(receivedPrice); + } + mybatisDao.update(coupon); + } + } + + @RequestMapping(value = "/coupon/readCard", method = RequestMethod.GET) + @Log(actionName = "读卡") + public ReadCardVo readCard( + @RequestParam(value = "couponNo") String couponNo, + @RequestParam(value = "password", required = false) String password + ) { + CouponQuery couponQuery = new CouponQuery(); + couponQuery.setCouponNumber(couponNo); + if (StringUtilsExt.isNotEmpty(password)) { + couponQuery.setPassword(password); + } + return mybatisDao.getSqlSessionTemplate().selectOne(CouponMapper.CouponMapperNameSpace + "getCouponByCouponNo", couponQuery); + } + + @RequestMapping(value = "/coupon/cardRecharge", method = RequestMethod.GET) + @Log(actionName = "充值") + public void cardRecharge( + @RequestParam(value = "couponNo") String couponNo, + @RequestParam(value = "rechargePrice") BigDecimal rechargePrice + ) { + AssertExt.notNull("couponNo", "卡号不能为空"); + AssertExt.notNull("rechargePrice", "充值金额不能为空"); + couponService.cardRecharge(couponNo, rechargePrice); + } + + + @RequestMapping(value = "/coupon/exchangeCard", method = RequestMethod.GET) + @Log(actionName = "换卡") + public void exchangeCard( + @RequestParam(value = "oldCouponNo") String oldCouponNo, + @RequestParam(value = "oldPassword") String oldPassword, + @RequestParam(value = "newCouponNo") String newCouponNo, + @RequestParam(value = "newPassword") String newPassword + ) { + AssertExt.notNull("couponNo", "卡号不能为空"); + AssertExt.notNull("rechargePrice", "充值金额不能为空"); + couponService.exchangeCard(oldCouponNo, oldPassword, newCouponNo, newPassword); + } + + + @RequestMapping(value = "/coupon/updateBalance", method = RequestMethod.GET) + @Log(actionName = "更新余额") + public void exchangeCard( + @RequestParam(value = "couponNo") String couponNo, + @RequestParam(value = "updatePrice") BigDecimal updatePrice, + @RequestParam(value = "remark") String remark + ) { + couponService.updateBalance(couponNo, updatePrice, remark); + } + + /** + * 卡劵导入 + * + * @param request + * @param response + */ + @RequestMapping(value = "/coupon/importExcel", method = RequestMethod.POST) + public void importExcel(HttpServletRequest request, HttpServletResponse response) { + MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; + Map fileMap = multipartRequest.getFileMap(); + for (Map.Entry entity : fileMap.entrySet()) { + MultipartFile file = entity.getValue();// 获取上传文件对象 + ImportParams params = new ImportParams(); + params.setTitleRows(0); + params.setHeadRows(1); + params.setNeedSave(false); + try { + List couponImportList = ExcelImportUtil.importExcel(file.getInputStream(), CouponReportModel.class, params); + CdCouponCategory couponCategory = new CdCouponCategory(); + List cdCouponCategoryList = mybatisDao.selectByModel(couponCategory); + for (CouponReportModel couponImport : couponImportList) { + for (CdCouponCategory cdCouponCategory : cdCouponCategoryList) { + if (cdCouponCategory.getCategoryName().equals(couponImport.getCategoryName())) { + couponImport.setCouponCategoryId(cdCouponCategory.getId()); + couponService.importCoupon(couponImport); + } + } + + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + file.getInputStream().close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + @RequestMapping(value = "/coupon/downCouponImportTemplate") + public void downAsnImportTemplate(HttpServletRequest request, HttpServletResponse response) { + UploadFileVo uploadFile = new UploadFileVo(); + uploadFile.setRequest(request); + uploadFile.setResponse(response); + uploadFile.setExtend("xlsx"); + uploadFile.setTitleField("卡劵导入模板"); + uploadFile.setRealPath("/WEB-INF/excelFile/couponExcel.xlsx"); + PrintUtils.viewOrDownloadFile(uploadFile); + } +} diff --git a/src/main/java/com/xmomen/module/base/controller/ExpressController.java b/src/main/java/com/xmomen/module/base/controller/ExpressController.java new file mode 100644 index 0000000..1cc85fd --- /dev/null +++ b/src/main/java/com/xmomen/module/base/controller/ExpressController.java @@ -0,0 +1,214 @@ +package com.xmomen.module.base.controller; + +import java.util.HashMap; +import java.util.Map; + +import javax.validation.Valid; + +import org.apache.shiro.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.framework.utils.StringUtilsExt; +import com.xmomen.framework.web.exceptions.ArgumentValidException; +import com.xmomen.module.base.constant.AppConstants; +import com.xmomen.module.base.entity.CdExpress; +import com.xmomen.module.base.mapper.ExpressMapper; +import com.xmomen.module.base.model.ExpressTask; +import com.xmomen.module.base.service.ExpressService; +import com.xmomen.module.logger.Log; +import com.xmomen.module.order.model.OrderModel; +import com.xmomen.module.order.model.OrderQuery; + +@RestController +public class ExpressController { + @Autowired + ExpressService expressService; + @Autowired + ExpressMapper expressMapper; + @Autowired + MybatisDao mybatisDao; + + /** + * 查询快递公司信息 + * + * @param id + * @return + */ + @RequestMapping(value = "/express", method = RequestMethod.GET) + @Log(actionName = "查询快递公司信息") + public Page getExpressList(@RequestParam(value = "limit") Integer limit, + @RequestParam(value = "offset") Integer offset, + @RequestParam(value = "id", required = false) Integer id, + @RequestParam(value = "keyword", required = false) String keyword) { + Map map = new HashMap(); + map.put("id", id); + map.put("keyword", keyword); + return (Page) mybatisDao.selectPage(ExpressMapper.ExpressMapperNameSpace + "getExpressList", map, limit, offset); + } + + @RequestMapping(value = "/express", method = RequestMethod.POST) + @Log(actionName = "新增快递、公司") + public void createExpress(@RequestBody @Valid CdExpress createExpress, BindingResult bindingResult) throws ArgumentValidException { + if (bindingResult != null && bindingResult.hasErrors()) { + throw new ArgumentValidException(bindingResult); + } + expressService.createExpress(createExpress); + } + + + /** + * 快递商查询已分配未提货订单 + * + * @param limit + * @param offset + * @param keyword + * @return + */ + @RequestMapping(value = "/express/noScanOrder", method = RequestMethod.GET) + @Log(actionName = "快递商查询已分配未提货订单") + public Page noScanOrder(@RequestParam(value = "limit") Integer limit, + @RequestParam(value = "offset") Integer offset, + @RequestParam(value = "keyword", required = false) String keyword, + @RequestParam(value = "startTime", required = false) String startTime, + @RequestParam(value = "endTime", required = false) String endTime) { + OrderQuery orderQuery = new OrderQuery(); + if (StringUtilsExt.isNotBlank(startTime) + && !"undefined".equals(startTime)) { + orderQuery.setOrderCreateTimeStart(startTime.substring(0, 10)); + } + if (StringUtilsExt.isNotBlank(endTime) && !"undefined".equals(endTime)) { + orderQuery.setOrderCreateTimeEnd(endTime.substring(0, 10)); + } + // 运输部 + if (SecurityUtils.getSubject().hasRole( + AppConstants.YUN_SHU_PERMISSION_CODE)|| SecurityUtils.getSubject().hasRole(AppConstants.KUAI_DI_SHANG)) { + String despatchExpressCode = (String) SecurityUtils.getSubject() + .getPrincipal(); + orderQuery.setDespatchExpressCode(despatchExpressCode); + } + return expressService.getOrderNoDespatchReportList(orderQuery, limit, offset); + } + + + /** + * 订单列表 + * + * @param limit + * @param offset + * @param keyword + * @return + */ + @RequestMapping(value = "/express/order", method = RequestMethod.GET) + @Log(actionName = "查询订单列表") + public Page getUserList(@RequestParam(value = "limit") Integer limit, + @RequestParam(value = "offset") Integer offset, + @RequestParam(value = "orderStatus", required = false) Integer orderStatus, + @RequestParam(value = "keyword", required = false) String keyword, + @RequestParam(value = "orderCreateTimeStart", required = false) String orderCreateTimeStart, + @RequestParam(value = "orderCreateTimeEnd", required = false) String orderCreateTimeEnd, + @RequestParam(value = "managerId", required = false) Integer managerId, + @RequestParam(value = "consigneeName", required = false) String consigneeName, + @RequestParam(value = "hasNoShowCancel", required = false) Boolean hasNoShowCancel) { + OrderQuery orderQuery = new OrderQuery(); + orderQuery.setKeyword(keyword); + orderQuery.setOrderStatus(orderStatus); + orderQuery.setManagerId(managerId); + orderQuery.setHasNoShowCancel(hasNoShowCancel == null ? false : hasNoShowCancel); + orderQuery.setConsigneeName(consigneeName); + if (StringUtilsExt.isNotBlank(orderCreateTimeStart)) { + orderQuery.setOrderCreateTimeStart(orderCreateTimeStart.substring(0, 10)); + } + if (StringUtilsExt.isNotBlank(orderCreateTimeEnd)) { + orderQuery.setOrderCreateTimeEnd(orderCreateTimeEnd.substring(0, 10)); + } + //运输部 + if (SecurityUtils.getSubject().hasRole(AppConstants.YUN_SHU_PERMISSION_CODE) || SecurityUtils.getSubject().hasRole(AppConstants.KUAI_DI_SHANG)) { + String despatchExpressCode = (String) SecurityUtils.getSubject().getPrincipal(); + orderQuery.setDespatchExpressCode(despatchExpressCode); + } + return expressService.getTakeDeliveryList(orderQuery, limit, offset); + } + + /** + * 修改 + * + * @param id + */ + @RequestMapping(value = "/express/{id}", method = RequestMethod.PUT) + @Log(actionName = "修改快递信息") + public void updateMember(@PathVariable(value = "id") Integer id, + @RequestBody @Valid CdExpress updateExpress, BindingResult bindingResult) throws ArgumentValidException { + if (bindingResult != null && bindingResult.hasErrors()) { + throw new ArgumentValidException(bindingResult); + } + expressService.updateExpress(id, updateExpress); + } + + /** + * 删除 + * + * @param id + */ + @RequestMapping(value = "/express/{id}", method = RequestMethod.DELETE) + @Log(actionName = "删除快递信息") + public void deleteMember(@PathVariable(value = "id") Integer id) { + expressService.delete(id); + } + + + /** + * 分配快递商 + * + * @param packingTask + * @param bindingResult + * @return + */ + @RequestMapping(value = "/express/order/bind", method = RequestMethod.PUT) + @Log(actionName = "分配快递商") + public void createPacking(@RequestBody @Valid ExpressTask expressTask, BindingResult bindingResult) throws ArgumentValidException { + if (bindingResult != null && bindingResult.hasErrors()) { + throw new ArgumentValidException(bindingResult); + } + expressService.dispatchExpress(expressTask); + } + + /** + * 解绑快递商 + * + * @param orderNoList + * @throws ArgumentValidException + */ + @RequestMapping(value = "/express/order/unbind", method = RequestMethod.PUT) + @Log(actionName = "解绑快递商") + public void createPacking(@RequestParam(value = "orderNos", required = true) String[] orderNoList) throws ArgumentValidException { + if (orderNoList != null && orderNoList.length <= 0) { + return; + } + expressService.cancelExpress(orderNoList); + } + + @RequestMapping(value = "/express/order/takeDelivery", method = RequestMethod.PUT) + @Log(actionName = "快递商提货") + /** + * + * @param boxNo 箱号 + */ + public void takeDelivery(@RequestParam(value = "boxNo", required = true) String boxNo) { + expressService.takeDelivery(boxNo); + } + + @RequestMapping(value = "/express/order/untakeDelivery", method = RequestMethod.PUT) + @Log(actionName = "快递商取消提货") + public void untakeDelivery(@RequestParam(value = "orderNo", required = true) String orderNo) { + expressService.unTakeDelivery(orderNo); + } +} diff --git a/src/main/java/com/xmomen/module/base/controller/PublicController.java b/src/main/java/com/xmomen/module/base/controller/PublicController.java new file mode 100644 index 0000000..07563c5 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/controller/PublicController.java @@ -0,0 +1,62 @@ +package com.xmomen.module.base.controller; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.commons.lang.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.module.base.constant.AppConstants; +import com.xmomen.module.base.entity.CdCompany; +import com.xmomen.module.base.mapper.PublicMapper; +import com.xmomen.module.base.model.CompanyCustomerManager; + +@RestController +public class PublicController { + + @Autowired + MybatisDao mybatisDao; + + @Autowired + PublicMapper publicMapper; + + @RequestMapping(value = "/companyList", method = RequestMethod.GET) + public List getCompany() { + CdCompany company = new CdCompany(); + List companys = mybatisDao.selectByModel(company); + return companys; + } + + //查询客服经理 + @RequestMapping(value = "/customerManagerList", method = RequestMethod.GET) + public List getCustomerManager( + @RequestParam(value = "userType", required = false) String userType, + @RequestParam(value = "keyword", required = false) String keyword) { + Map map = new HashMap(); + map.put("userType", userType); + if ("customer_manager".equals(userType)) { + //客服经理过滤 如果有客服组权限则不过滤 + if (SecurityUtils.getSubject().hasRole(AppConstants.CUSTOMER_MANAGER_PERMISSION_CODE) + && !SecurityUtils.getSubject().hasRole(AppConstants.CUSTOMER_PERMISSION_CODE) + && !SecurityUtils.getSubject().hasRole(AppConstants.HOU_TAI_CODE) + && !SecurityUtils.getSubject().hasRole(AppConstants.ADMIN) + && !SecurityUtils.getSubject().hasRole(AppConstants.SUPER_ADMIN) + && !SecurityUtils.getSubject().hasRole(AppConstants.WULIUZXB)) { + Integer userId = (Integer) SecurityUtils.getSubject().getSession().getAttribute(AppConstants.SESSION_USER_ID_KEY); + map.put("managerId", userId); + } + } + if (StringUtils.trimToNull(keyword) != null) { + map.put("keyword", StringUtils.trimToEmpty(keyword)); + } + List customerManagerList = mybatisDao.getSqlSessionTemplate().selectList(PublicMapper.PublicMapperNameSpace + "getManagerList", map); + return customerManagerList; + } +} diff --git a/src/main/java/com/xmomen/module/base/entity/CdActivityAddress.java b/src/main/java/com/xmomen/module/base/entity/CdActivityAddress.java new file mode 100644 index 0000000..317afdf --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/CdActivityAddress.java @@ -0,0 +1,149 @@ +package com.xmomen.module.base.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "cd_activity_address") +public class CdActivityAddress extends BaseMybatisModel { + /** + * 主键 + */ + private Integer id; + + /** + * 卡号 + */ + private String couponNumber; + + /** + * + */ + private String consignmentName; + + /** + * 收货手机号 + */ + private String consignmentPhone; + + /** + * 收货地址 + */ + private String consignmentAddress; + + /** + * 赠送日期 + */ + private Date sendTime; + + /** + * 赠送份数 + */ + private Integer sendCount; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "COUPON_NUMBER") + public String getCouponNumber() { + return couponNumber; + } + + public void setCouponNumber(String couponNumber) { + this.couponNumber = couponNumber; + if(couponNumber == null){ + removeValidField("couponNumber"); + return; + } + addValidField("couponNumber"); + } + + @Column(name = "CONSIGNMENT_NAME") + public String getConsignmentName() { + return consignmentName; + } + + public void setConsignmentName(String consignmentName) { + this.consignmentName = consignmentName; + if(consignmentName == null){ + removeValidField("consignmentName"); + return; + } + addValidField("consignmentName"); + } + + @Column(name = "CONSIGNMENT_PHONE") + public String getConsignmentPhone() { + return consignmentPhone; + } + + public void setConsignmentPhone(String consignmentPhone) { + this.consignmentPhone = consignmentPhone; + if(consignmentPhone == null){ + removeValidField("consignmentPhone"); + return; + } + addValidField("consignmentPhone"); + } + + @Column(name = "CONSIGNMENT_ADDRESS") + public String getConsignmentAddress() { + return consignmentAddress; + } + + public void setConsignmentAddress(String consignmentAddress) { + this.consignmentAddress = consignmentAddress; + if(consignmentAddress == null){ + removeValidField("consignmentAddress"); + return; + } + addValidField("consignmentAddress"); + } + + @Column(name = "SEND_TIME") + public Date getSendTime() { + return sendTime; + } + + public void setSendTime(Date sendTime) { + this.sendTime = sendTime; + if(sendTime == null){ + removeValidField("sendTime"); + return; + } + addValidField("sendTime"); + } + + @Column(name = "SEND_COUNT") + public Integer getSendCount() { + return sendCount; + } + + public void setSendCount(Integer sendCount) { + this.sendCount = sendCount; + if(sendCount == null){ + removeValidField("sendCount"); + return; + } + addValidField("sendCount"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/entity/CdActivityAddressExample.java b/src/main/java/com/xmomen/module/base/entity/CdActivityAddressExample.java new file mode 100644 index 0000000..9df3bde --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/CdActivityAddressExample.java @@ -0,0 +1,689 @@ +package com.xmomen.module.base.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisExample; +import java.util.ArrayList; +import java.util.Date; +import java.util.Iterator; +import java.util.List; + +public class CdActivityAddressExample extends BaseMybatisExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public CdActivityAddressExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + protected void addCriterionForJDBCDate(String condition, Date value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + addCriterion(condition, new java.sql.Date(value.getTime()), property); + } + + protected void addCriterionForJDBCDate(String condition, List values, String property) { + if (values == null || values.size() == 0) { + throw new RuntimeException("Value list for " + property + " cannot be null or empty"); + } + List dateList = new ArrayList(); + Iterator iter = values.iterator(); + while (iter.hasNext()) { + dateList.add(new java.sql.Date(iter.next().getTime())); + } + addCriterion(condition, dateList, property); + } + + protected void addCriterionForJDBCDate(String condition, Date value1, Date value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + addCriterion(condition, new java.sql.Date(value1.getTime()), new java.sql.Date(value2.getTime()), property); + } + + public Criteria andIdIsNull() { + addCriterion("ID is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("ID is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Integer value) { + addCriterion("ID =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Integer value) { + addCriterion("ID <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Integer value) { + addCriterion("ID >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Integer value) { + addCriterion("ID >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Integer value) { + addCriterion("ID <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Integer value) { + addCriterion("ID <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("ID in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("ID not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Integer value1, Integer value2) { + addCriterion("ID between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Integer value1, Integer value2) { + addCriterion("ID not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andCouponNumberIsNull() { + addCriterion("COUPON_NUMBER is null"); + return (Criteria) this; + } + + public Criteria andCouponNumberIsNotNull() { + addCriterion("COUPON_NUMBER is not null"); + return (Criteria) this; + } + + public Criteria andCouponNumberEqualTo(String value) { + addCriterion("COUPON_NUMBER =", value, "couponNumber"); + return (Criteria) this; + } + + public Criteria andCouponNumberNotEqualTo(String value) { + addCriterion("COUPON_NUMBER <>", value, "couponNumber"); + return (Criteria) this; + } + + public Criteria andCouponNumberGreaterThan(String value) { + addCriterion("COUPON_NUMBER >", value, "couponNumber"); + return (Criteria) this; + } + + public Criteria andCouponNumberGreaterThanOrEqualTo(String value) { + addCriterion("COUPON_NUMBER >=", value, "couponNumber"); + return (Criteria) this; + } + + public Criteria andCouponNumberLessThan(String value) { + addCriterion("COUPON_NUMBER <", value, "couponNumber"); + return (Criteria) this; + } + + public Criteria andCouponNumberLessThanOrEqualTo(String value) { + addCriterion("COUPON_NUMBER <=", value, "couponNumber"); + return (Criteria) this; + } + + public Criteria andCouponNumberLike(String value) { + addCriterion("COUPON_NUMBER like", value, "couponNumber"); + return (Criteria) this; + } + + public Criteria andCouponNumberNotLike(String value) { + addCriterion("COUPON_NUMBER not like", value, "couponNumber"); + return (Criteria) this; + } + + public Criteria andCouponNumberIn(List values) { + addCriterion("COUPON_NUMBER in", values, "couponNumber"); + return (Criteria) this; + } + + public Criteria andCouponNumberNotIn(List values) { + addCriterion("COUPON_NUMBER not in", values, "couponNumber"); + return (Criteria) this; + } + + public Criteria andCouponNumberBetween(String value1, String value2) { + addCriterion("COUPON_NUMBER between", value1, value2, "couponNumber"); + return (Criteria) this; + } + + public Criteria andCouponNumberNotBetween(String value1, String value2) { + addCriterion("COUPON_NUMBER not between", value1, value2, "couponNumber"); + return (Criteria) this; + } + + public Criteria andConsignmentNameIsNull() { + addCriterion("CONSIGNMENT_NAME is null"); + return (Criteria) this; + } + + public Criteria andConsignmentNameIsNotNull() { + addCriterion("CONSIGNMENT_NAME is not null"); + return (Criteria) this; + } + + public Criteria andConsignmentNameEqualTo(String value) { + addCriterion("CONSIGNMENT_NAME =", value, "consignmentName"); + return (Criteria) this; + } + + public Criteria andConsignmentNameNotEqualTo(String value) { + addCriterion("CONSIGNMENT_NAME <>", value, "consignmentName"); + return (Criteria) this; + } + + public Criteria andConsignmentNameGreaterThan(String value) { + addCriterion("CONSIGNMENT_NAME >", value, "consignmentName"); + return (Criteria) this; + } + + public Criteria andConsignmentNameGreaterThanOrEqualTo(String value) { + addCriterion("CONSIGNMENT_NAME >=", value, "consignmentName"); + return (Criteria) this; + } + + public Criteria andConsignmentNameLessThan(String value) { + addCriterion("CONSIGNMENT_NAME <", value, "consignmentName"); + return (Criteria) this; + } + + public Criteria andConsignmentNameLessThanOrEqualTo(String value) { + addCriterion("CONSIGNMENT_NAME <=", value, "consignmentName"); + return (Criteria) this; + } + + public Criteria andConsignmentNameLike(String value) { + addCriterion("CONSIGNMENT_NAME like", value, "consignmentName"); + return (Criteria) this; + } + + public Criteria andConsignmentNameNotLike(String value) { + addCriterion("CONSIGNMENT_NAME not like", value, "consignmentName"); + return (Criteria) this; + } + + public Criteria andConsignmentNameIn(List values) { + addCriterion("CONSIGNMENT_NAME in", values, "consignmentName"); + return (Criteria) this; + } + + public Criteria andConsignmentNameNotIn(List values) { + addCriterion("CONSIGNMENT_NAME not in", values, "consignmentName"); + return (Criteria) this; + } + + public Criteria andConsignmentNameBetween(String value1, String value2) { + addCriterion("CONSIGNMENT_NAME between", value1, value2, "consignmentName"); + return (Criteria) this; + } + + public Criteria andConsignmentNameNotBetween(String value1, String value2) { + addCriterion("CONSIGNMENT_NAME not between", value1, value2, "consignmentName"); + return (Criteria) this; + } + + public Criteria andConsignmentPhoneIsNull() { + addCriterion("CONSIGNMENT_PHONE is null"); + return (Criteria) this; + } + + public Criteria andConsignmentPhoneIsNotNull() { + addCriterion("CONSIGNMENT_PHONE is not null"); + return (Criteria) this; + } + + public Criteria andConsignmentPhoneEqualTo(String value) { + addCriterion("CONSIGNMENT_PHONE =", value, "consignmentPhone"); + return (Criteria) this; + } + + public Criteria andConsignmentPhoneNotEqualTo(String value) { + addCriterion("CONSIGNMENT_PHONE <>", value, "consignmentPhone"); + return (Criteria) this; + } + + public Criteria andConsignmentPhoneGreaterThan(String value) { + addCriterion("CONSIGNMENT_PHONE >", value, "consignmentPhone"); + return (Criteria) this; + } + + public Criteria andConsignmentPhoneGreaterThanOrEqualTo(String value) { + addCriterion("CONSIGNMENT_PHONE >=", value, "consignmentPhone"); + return (Criteria) this; + } + + public Criteria andConsignmentPhoneLessThan(String value) { + addCriterion("CONSIGNMENT_PHONE <", value, "consignmentPhone"); + return (Criteria) this; + } + + public Criteria andConsignmentPhoneLessThanOrEqualTo(String value) { + addCriterion("CONSIGNMENT_PHONE <=", value, "consignmentPhone"); + return (Criteria) this; + } + + public Criteria andConsignmentPhoneLike(String value) { + addCriterion("CONSIGNMENT_PHONE like", value, "consignmentPhone"); + return (Criteria) this; + } + + public Criteria andConsignmentPhoneNotLike(String value) { + addCriterion("CONSIGNMENT_PHONE not like", value, "consignmentPhone"); + return (Criteria) this; + } + + public Criteria andConsignmentPhoneIn(List values) { + addCriterion("CONSIGNMENT_PHONE in", values, "consignmentPhone"); + return (Criteria) this; + } + + public Criteria andConsignmentPhoneNotIn(List values) { + addCriterion("CONSIGNMENT_PHONE not in", values, "consignmentPhone"); + return (Criteria) this; + } + + public Criteria andConsignmentPhoneBetween(String value1, String value2) { + addCriterion("CONSIGNMENT_PHONE between", value1, value2, "consignmentPhone"); + return (Criteria) this; + } + + public Criteria andConsignmentPhoneNotBetween(String value1, String value2) { + addCriterion("CONSIGNMENT_PHONE not between", value1, value2, "consignmentPhone"); + return (Criteria) this; + } + + public Criteria andConsignmentAddressIsNull() { + addCriterion("CONSIGNMENT_ADDRESS is null"); + return (Criteria) this; + } + + public Criteria andConsignmentAddressIsNotNull() { + addCriterion("CONSIGNMENT_ADDRESS is not null"); + return (Criteria) this; + } + + public Criteria andConsignmentAddressEqualTo(String value) { + addCriterion("CONSIGNMENT_ADDRESS =", value, "consignmentAddress"); + return (Criteria) this; + } + + public Criteria andConsignmentAddressNotEqualTo(String value) { + addCriterion("CONSIGNMENT_ADDRESS <>", value, "consignmentAddress"); + return (Criteria) this; + } + + public Criteria andConsignmentAddressGreaterThan(String value) { + addCriterion("CONSIGNMENT_ADDRESS >", value, "consignmentAddress"); + return (Criteria) this; + } + + public Criteria andConsignmentAddressGreaterThanOrEqualTo(String value) { + addCriterion("CONSIGNMENT_ADDRESS >=", value, "consignmentAddress"); + return (Criteria) this; + } + + public Criteria andConsignmentAddressLessThan(String value) { + addCriterion("CONSIGNMENT_ADDRESS <", value, "consignmentAddress"); + return (Criteria) this; + } + + public Criteria andConsignmentAddressLessThanOrEqualTo(String value) { + addCriterion("CONSIGNMENT_ADDRESS <=", value, "consignmentAddress"); + return (Criteria) this; + } + + public Criteria andConsignmentAddressLike(String value) { + addCriterion("CONSIGNMENT_ADDRESS like", value, "consignmentAddress"); + return (Criteria) this; + } + + public Criteria andConsignmentAddressNotLike(String value) { + addCriterion("CONSIGNMENT_ADDRESS not like", value, "consignmentAddress"); + return (Criteria) this; + } + + public Criteria andConsignmentAddressIn(List values) { + addCriterion("CONSIGNMENT_ADDRESS in", values, "consignmentAddress"); + return (Criteria) this; + } + + public Criteria andConsignmentAddressNotIn(List values) { + addCriterion("CONSIGNMENT_ADDRESS not in", values, "consignmentAddress"); + return (Criteria) this; + } + + public Criteria andConsignmentAddressBetween(String value1, String value2) { + addCriterion("CONSIGNMENT_ADDRESS between", value1, value2, "consignmentAddress"); + return (Criteria) this; + } + + public Criteria andConsignmentAddressNotBetween(String value1, String value2) { + addCriterion("CONSIGNMENT_ADDRESS not between", value1, value2, "consignmentAddress"); + return (Criteria) this; + } + + public Criteria andSendTimeIsNull() { + addCriterion("SEND_TIME is null"); + return (Criteria) this; + } + + public Criteria andSendTimeIsNotNull() { + addCriterion("SEND_TIME is not null"); + return (Criteria) this; + } + + public Criteria andSendTimeEqualTo(Date value) { + addCriterionForJDBCDate("SEND_TIME =", value, "sendTime"); + return (Criteria) this; + } + + public Criteria andSendTimeNotEqualTo(Date value) { + addCriterionForJDBCDate("SEND_TIME <>", value, "sendTime"); + return (Criteria) this; + } + + public Criteria andSendTimeGreaterThan(Date value) { + addCriterionForJDBCDate("SEND_TIME >", value, "sendTime"); + return (Criteria) this; + } + + public Criteria andSendTimeGreaterThanOrEqualTo(Date value) { + addCriterionForJDBCDate("SEND_TIME >=", value, "sendTime"); + return (Criteria) this; + } + + public Criteria andSendTimeLessThan(Date value) { + addCriterionForJDBCDate("SEND_TIME <", value, "sendTime"); + return (Criteria) this; + } + + public Criteria andSendTimeLessThanOrEqualTo(Date value) { + addCriterionForJDBCDate("SEND_TIME <=", value, "sendTime"); + return (Criteria) this; + } + + public Criteria andSendTimeIn(List values) { + addCriterionForJDBCDate("SEND_TIME in", values, "sendTime"); + return (Criteria) this; + } + + public Criteria andSendTimeNotIn(List values) { + addCriterionForJDBCDate("SEND_TIME not in", values, "sendTime"); + return (Criteria) this; + } + + public Criteria andSendTimeBetween(Date value1, Date value2) { + addCriterionForJDBCDate("SEND_TIME between", value1, value2, "sendTime"); + return (Criteria) this; + } + + public Criteria andSendTimeNotBetween(Date value1, Date value2) { + addCriterionForJDBCDate("SEND_TIME not between", value1, value2, "sendTime"); + return (Criteria) this; + } + + public Criteria andSendCountIsNull() { + addCriterion("SEND_COUNT is null"); + return (Criteria) this; + } + + public Criteria andSendCountIsNotNull() { + addCriterion("SEND_COUNT is not null"); + return (Criteria) this; + } + + public Criteria andSendCountEqualTo(Integer value) { + addCriterion("SEND_COUNT =", value, "sendCount"); + return (Criteria) this; + } + + public Criteria andSendCountNotEqualTo(Integer value) { + addCriterion("SEND_COUNT <>", value, "sendCount"); + return (Criteria) this; + } + + public Criteria andSendCountGreaterThan(Integer value) { + addCriterion("SEND_COUNT >", value, "sendCount"); + return (Criteria) this; + } + + public Criteria andSendCountGreaterThanOrEqualTo(Integer value) { + addCriterion("SEND_COUNT >=", value, "sendCount"); + return (Criteria) this; + } + + public Criteria andSendCountLessThan(Integer value) { + addCriterion("SEND_COUNT <", value, "sendCount"); + return (Criteria) this; + } + + public Criteria andSendCountLessThanOrEqualTo(Integer value) { + addCriterion("SEND_COUNT <=", value, "sendCount"); + return (Criteria) this; + } + + public Criteria andSendCountIn(List values) { + addCriterion("SEND_COUNT in", values, "sendCount"); + return (Criteria) this; + } + + public Criteria andSendCountNotIn(List values) { + addCriterion("SEND_COUNT not in", values, "sendCount"); + return (Criteria) this; + } + + public Criteria andSendCountBetween(Integer value1, Integer value2) { + addCriterion("SEND_COUNT between", value1, value2, "sendCount"); + return (Criteria) this; + } + + public Criteria andSendCountNotBetween(Integer value1, Integer value2) { + addCriterion("SEND_COUNT not between", value1, value2, "sendCount"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/entity/CdAttachmentExample.java b/src/main/java/com/xmomen/module/base/entity/CdAttachmentExample.java new file mode 100644 index 0000000..17a9bfd --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/CdAttachmentExample.java @@ -0,0 +1,742 @@ +package com.xmomen.module.base.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisExample; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class CdAttachmentExample extends BaseMybatisExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public CdAttachmentExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Integer value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Integer value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Integer value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Integer value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Integer value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Integer value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Integer value1, Integer value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Integer value1, Integer value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andBusinessIdIsNull() { + addCriterion("business_id is null"); + return (Criteria) this; + } + + public Criteria andBusinessIdIsNotNull() { + addCriterion("business_id is not null"); + return (Criteria) this; + } + + public Criteria andBusinessIdEqualTo(String value) { + addCriterion("business_id =", value, "businessId"); + return (Criteria) this; + } + + public Criteria andBusinessIdNotEqualTo(String value) { + addCriterion("business_id <>", value, "businessId"); + return (Criteria) this; + } + + public Criteria andBusinessIdGreaterThan(String value) { + addCriterion("business_id >", value, "businessId"); + return (Criteria) this; + } + + public Criteria andBusinessIdGreaterThanOrEqualTo(String value) { + addCriterion("business_id >=", value, "businessId"); + return (Criteria) this; + } + + public Criteria andBusinessIdLessThan(String value) { + addCriterion("business_id <", value, "businessId"); + return (Criteria) this; + } + + public Criteria andBusinessIdLessThanOrEqualTo(String value) { + addCriterion("business_id <=", value, "businessId"); + return (Criteria) this; + } + + public Criteria andBusinessIdLike(String value) { + addCriterion("business_id like", value, "businessId"); + return (Criteria) this; + } + + public Criteria andBusinessIdNotLike(String value) { + addCriterion("business_id not like", value, "businessId"); + return (Criteria) this; + } + + public Criteria andBusinessIdIn(List values) { + addCriterion("business_id in", values, "businessId"); + return (Criteria) this; + } + + public Criteria andBusinessIdNotIn(List values) { + addCriterion("business_id not in", values, "businessId"); + return (Criteria) this; + } + + public Criteria andBusinessIdBetween(String value1, String value2) { + addCriterion("business_id between", value1, value2, "businessId"); + return (Criteria) this; + } + + public Criteria andBusinessIdNotBetween(String value1, String value2) { + addCriterion("business_id not between", value1, value2, "businessId"); + return (Criteria) this; + } + + public Criteria andTypeIsNull() { + addCriterion("type is null"); + return (Criteria) this; + } + + public Criteria andTypeIsNotNull() { + addCriterion("type is not null"); + return (Criteria) this; + } + + public Criteria andTypeEqualTo(String value) { + addCriterion("type =", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotEqualTo(String value) { + addCriterion("type <>", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThan(String value) { + addCriterion("type >", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThanOrEqualTo(String value) { + addCriterion("type >=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThan(String value) { + addCriterion("type <", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThanOrEqualTo(String value) { + addCriterion("type <=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLike(String value) { + addCriterion("type like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotLike(String value) { + addCriterion("type not like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeIn(List values) { + addCriterion("type in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotIn(List values) { + addCriterion("type not in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeBetween(String value1, String value2) { + addCriterion("type between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotBetween(String value1, String value2) { + addCriterion("type not between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andFileNameIsNull() { + addCriterion("file_name is null"); + return (Criteria) this; + } + + public Criteria andFileNameIsNotNull() { + addCriterion("file_name is not null"); + return (Criteria) this; + } + + public Criteria andFileNameEqualTo(String value) { + addCriterion("file_name =", value, "fileName"); + return (Criteria) this; + } + + public Criteria andFileNameNotEqualTo(String value) { + addCriterion("file_name <>", value, "fileName"); + return (Criteria) this; + } + + public Criteria andFileNameGreaterThan(String value) { + addCriterion("file_name >", value, "fileName"); + return (Criteria) this; + } + + public Criteria andFileNameGreaterThanOrEqualTo(String value) { + addCriterion("file_name >=", value, "fileName"); + return (Criteria) this; + } + + public Criteria andFileNameLessThan(String value) { + addCriterion("file_name <", value, "fileName"); + return (Criteria) this; + } + + public Criteria andFileNameLessThanOrEqualTo(String value) { + addCriterion("file_name <=", value, "fileName"); + return (Criteria) this; + } + + public Criteria andFileNameLike(String value) { + addCriterion("file_name like", value, "fileName"); + return (Criteria) this; + } + + public Criteria andFileNameNotLike(String value) { + addCriterion("file_name not like", value, "fileName"); + return (Criteria) this; + } + + public Criteria andFileNameIn(List values) { + addCriterion("file_name in", values, "fileName"); + return (Criteria) this; + } + + public Criteria andFileNameNotIn(List values) { + addCriterion("file_name not in", values, "fileName"); + return (Criteria) this; + } + + public Criteria andFileNameBetween(String value1, String value2) { + addCriterion("file_name between", value1, value2, "fileName"); + return (Criteria) this; + } + + public Criteria andFileNameNotBetween(String value1, String value2) { + addCriterion("file_name not between", value1, value2, "fileName"); + return (Criteria) this; + } + + public Criteria andFileExtendIsNull() { + addCriterion("file_extend is null"); + return (Criteria) this; + } + + public Criteria andFileExtendIsNotNull() { + addCriterion("file_extend is not null"); + return (Criteria) this; + } + + public Criteria andFileExtendEqualTo(String value) { + addCriterion("file_extend =", value, "fileExtend"); + return (Criteria) this; + } + + public Criteria andFileExtendNotEqualTo(String value) { + addCriterion("file_extend <>", value, "fileExtend"); + return (Criteria) this; + } + + public Criteria andFileExtendGreaterThan(String value) { + addCriterion("file_extend >", value, "fileExtend"); + return (Criteria) this; + } + + public Criteria andFileExtendGreaterThanOrEqualTo(String value) { + addCriterion("file_extend >=", value, "fileExtend"); + return (Criteria) this; + } + + public Criteria andFileExtendLessThan(String value) { + addCriterion("file_extend <", value, "fileExtend"); + return (Criteria) this; + } + + public Criteria andFileExtendLessThanOrEqualTo(String value) { + addCriterion("file_extend <=", value, "fileExtend"); + return (Criteria) this; + } + + public Criteria andFileExtendLike(String value) { + addCriterion("file_extend like", value, "fileExtend"); + return (Criteria) this; + } + + public Criteria andFileExtendNotLike(String value) { + addCriterion("file_extend not like", value, "fileExtend"); + return (Criteria) this; + } + + public Criteria andFileExtendIn(List values) { + addCriterion("file_extend in", values, "fileExtend"); + return (Criteria) this; + } + + public Criteria andFileExtendNotIn(List values) { + addCriterion("file_extend not in", values, "fileExtend"); + return (Criteria) this; + } + + public Criteria andFileExtendBetween(String value1, String value2) { + addCriterion("file_extend between", value1, value2, "fileExtend"); + return (Criteria) this; + } + + public Criteria andFileExtendNotBetween(String value1, String value2) { + addCriterion("file_extend not between", value1, value2, "fileExtend"); + return (Criteria) this; + } + + public Criteria andFilePathIsNull() { + addCriterion("file_path is null"); + return (Criteria) this; + } + + public Criteria andFilePathIsNotNull() { + addCriterion("file_path is not null"); + return (Criteria) this; + } + + public Criteria andFilePathEqualTo(String value) { + addCriterion("file_path =", value, "filePath"); + return (Criteria) this; + } + + public Criteria andFilePathNotEqualTo(String value) { + addCriterion("file_path <>", value, "filePath"); + return (Criteria) this; + } + + public Criteria andFilePathGreaterThan(String value) { + addCriterion("file_path >", value, "filePath"); + return (Criteria) this; + } + + public Criteria andFilePathGreaterThanOrEqualTo(String value) { + addCriterion("file_path >=", value, "filePath"); + return (Criteria) this; + } + + public Criteria andFilePathLessThan(String value) { + addCriterion("file_path <", value, "filePath"); + return (Criteria) this; + } + + public Criteria andFilePathLessThanOrEqualTo(String value) { + addCriterion("file_path <=", value, "filePath"); + return (Criteria) this; + } + + public Criteria andFilePathLike(String value) { + addCriterion("file_path like", value, "filePath"); + return (Criteria) this; + } + + public Criteria andFilePathNotLike(String value) { + addCriterion("file_path not like", value, "filePath"); + return (Criteria) this; + } + + public Criteria andFilePathIn(List values) { + addCriterion("file_path in", values, "filePath"); + return (Criteria) this; + } + + public Criteria andFilePathNotIn(List values) { + addCriterion("file_path not in", values, "filePath"); + return (Criteria) this; + } + + public Criteria andFilePathBetween(String value1, String value2) { + addCriterion("file_path between", value1, value2, "filePath"); + return (Criteria) this; + } + + public Criteria andFilePathNotBetween(String value1, String value2) { + addCriterion("file_path not between", value1, value2, "filePath"); + return (Criteria) this; + } + + public Criteria andUploadDateIsNull() { + addCriterion("upload_date is null"); + return (Criteria) this; + } + + public Criteria andUploadDateIsNotNull() { + addCriterion("upload_date is not null"); + return (Criteria) this; + } + + public Criteria andUploadDateEqualTo(Date value) { + addCriterion("upload_date =", value, "uploadDate"); + return (Criteria) this; + } + + public Criteria andUploadDateNotEqualTo(Date value) { + addCriterion("upload_date <>", value, "uploadDate"); + return (Criteria) this; + } + + public Criteria andUploadDateGreaterThan(Date value) { + addCriterion("upload_date >", value, "uploadDate"); + return (Criteria) this; + } + + public Criteria andUploadDateGreaterThanOrEqualTo(Date value) { + addCriterion("upload_date >=", value, "uploadDate"); + return (Criteria) this; + } + + public Criteria andUploadDateLessThan(Date value) { + addCriterion("upload_date <", value, "uploadDate"); + return (Criteria) this; + } + + public Criteria andUploadDateLessThanOrEqualTo(Date value) { + addCriterion("upload_date <=", value, "uploadDate"); + return (Criteria) this; + } + + public Criteria andUploadDateIn(List values) { + addCriterion("upload_date in", values, "uploadDate"); + return (Criteria) this; + } + + public Criteria andUploadDateNotIn(List values) { + addCriterion("upload_date not in", values, "uploadDate"); + return (Criteria) this; + } + + public Criteria andUploadDateBetween(Date value1, Date value2) { + addCriterion("upload_date between", value1, value2, "uploadDate"); + return (Criteria) this; + } + + public Criteria andUploadDateNotBetween(Date value1, Date value2) { + addCriterion("upload_date not between", value1, value2, "uploadDate"); + return (Criteria) this; + } + + public Criteria andUploadUserIsNull() { + addCriterion("upload_user is null"); + return (Criteria) this; + } + + public Criteria andUploadUserIsNotNull() { + addCriterion("upload_user is not null"); + return (Criteria) this; + } + + public Criteria andUploadUserEqualTo(String value) { + addCriterion("upload_user =", value, "uploadUser"); + return (Criteria) this; + } + + public Criteria andUploadUserNotEqualTo(String value) { + addCriterion("upload_user <>", value, "uploadUser"); + return (Criteria) this; + } + + public Criteria andUploadUserGreaterThan(String value) { + addCriterion("upload_user >", value, "uploadUser"); + return (Criteria) this; + } + + public Criteria andUploadUserGreaterThanOrEqualTo(String value) { + addCriterion("upload_user >=", value, "uploadUser"); + return (Criteria) this; + } + + public Criteria andUploadUserLessThan(String value) { + addCriterion("upload_user <", value, "uploadUser"); + return (Criteria) this; + } + + public Criteria andUploadUserLessThanOrEqualTo(String value) { + addCriterion("upload_user <=", value, "uploadUser"); + return (Criteria) this; + } + + public Criteria andUploadUserLike(String value) { + addCriterion("upload_user like", value, "uploadUser"); + return (Criteria) this; + } + + public Criteria andUploadUserNotLike(String value) { + addCriterion("upload_user not like", value, "uploadUser"); + return (Criteria) this; + } + + public Criteria andUploadUserIn(List values) { + addCriterion("upload_user in", values, "uploadUser"); + return (Criteria) this; + } + + public Criteria andUploadUserNotIn(List values) { + addCriterion("upload_user not in", values, "uploadUser"); + return (Criteria) this; + } + + public Criteria andUploadUserBetween(String value1, String value2) { + addCriterion("upload_user between", value1, value2, "uploadUser"); + return (Criteria) this; + } + + public Criteria andUploadUserNotBetween(String value1, String value2) { + addCriterion("upload_user not between", value1, value2, "uploadUser"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/entity/CdBind.java b/src/main/java/com/xmomen/module/base/entity/CdBind.java new file mode 100644 index 0000000..9c9015a --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/CdBind.java @@ -0,0 +1,91 @@ +package com.xmomen.module.base.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "cd_bind") +public class CdBind extends BaseMybatisModel { + /** + * 主键 + */ + private Integer id; + + /** + * 如果是客户绑定则存储用户ID,如果是快递员绑定则存储快递员ID + */ + private Integer userId; + + /** + * 手机号码 + */ + private String phone; + + /** + * 微信唯一识别号 + */ + private String openId; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "user_id") + public Integer getUserId() { + return userId; + } + + public void setUserId(Integer userId) { + this.userId = userId; + if(userId == null){ + removeValidField("userId"); + return; + } + addValidField("userId"); + } + + @Column(name = "PHONE") + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + if(phone == null){ + removeValidField("phone"); + return; + } + addValidField("phone"); + } + + @Column(name = "OPEN_ID") + public String getOpenId() { + return openId; + } + + public void setOpenId(String openId) { + this.openId = openId; + if(openId == null){ + removeValidField("openId"); + return; + } + addValidField("openId"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/entity/CdCategoryExample.java b/src/main/java/com/xmomen/module/base/entity/CdCategoryExample.java new file mode 100644 index 0000000..23803f3 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/CdCategoryExample.java @@ -0,0 +1,391 @@ +package com.xmomen.module.base.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisExample; +import java.util.ArrayList; +import java.util.List; + +public class CdCategoryExample extends BaseMybatisExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public CdCategoryExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("ID is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("ID is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Integer value) { + addCriterion("ID =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Integer value) { + addCriterion("ID <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Integer value) { + addCriterion("ID >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Integer value) { + addCriterion("ID >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Integer value) { + addCriterion("ID <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Integer value) { + addCriterion("ID <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("ID in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("ID not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Integer value1, Integer value2) { + addCriterion("ID between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Integer value1, Integer value2) { + addCriterion("ID not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andCategoryNameIsNull() { + addCriterion("CATEGORY_NAME is null"); + return (Criteria) this; + } + + public Criteria andCategoryNameIsNotNull() { + addCriterion("CATEGORY_NAME is not null"); + return (Criteria) this; + } + + public Criteria andCategoryNameEqualTo(String value) { + addCriterion("CATEGORY_NAME =", value, "categoryName"); + return (Criteria) this; + } + + public Criteria andCategoryNameNotEqualTo(String value) { + addCriterion("CATEGORY_NAME <>", value, "categoryName"); + return (Criteria) this; + } + + public Criteria andCategoryNameGreaterThan(String value) { + addCriterion("CATEGORY_NAME >", value, "categoryName"); + return (Criteria) this; + } + + public Criteria andCategoryNameGreaterThanOrEqualTo(String value) { + addCriterion("CATEGORY_NAME >=", value, "categoryName"); + return (Criteria) this; + } + + public Criteria andCategoryNameLessThan(String value) { + addCriterion("CATEGORY_NAME <", value, "categoryName"); + return (Criteria) this; + } + + public Criteria andCategoryNameLessThanOrEqualTo(String value) { + addCriterion("CATEGORY_NAME <=", value, "categoryName"); + return (Criteria) this; + } + + public Criteria andCategoryNameLike(String value) { + addCriterion("CATEGORY_NAME like", value, "categoryName"); + return (Criteria) this; + } + + public Criteria andCategoryNameNotLike(String value) { + addCriterion("CATEGORY_NAME not like", value, "categoryName"); + return (Criteria) this; + } + + public Criteria andCategoryNameIn(List values) { + addCriterion("CATEGORY_NAME in", values, "categoryName"); + return (Criteria) this; + } + + public Criteria andCategoryNameNotIn(List values) { + addCriterion("CATEGORY_NAME not in", values, "categoryName"); + return (Criteria) this; + } + + public Criteria andCategoryNameBetween(String value1, String value2) { + addCriterion("CATEGORY_NAME between", value1, value2, "categoryName"); + return (Criteria) this; + } + + public Criteria andCategoryNameNotBetween(String value1, String value2) { + addCriterion("CATEGORY_NAME not between", value1, value2, "categoryName"); + return (Criteria) this; + } + + public Criteria andParentIdIsNull() { + addCriterion("PARENT_ID is null"); + return (Criteria) this; + } + + public Criteria andParentIdIsNotNull() { + addCriterion("PARENT_ID is not null"); + return (Criteria) this; + } + + public Criteria andParentIdEqualTo(Integer value) { + addCriterion("PARENT_ID =", value, "parentId"); + return (Criteria) this; + } + + public Criteria andParentIdNotEqualTo(Integer value) { + addCriterion("PARENT_ID <>", value, "parentId"); + return (Criteria) this; + } + + public Criteria andParentIdGreaterThan(Integer value) { + addCriterion("PARENT_ID >", value, "parentId"); + return (Criteria) this; + } + + public Criteria andParentIdGreaterThanOrEqualTo(Integer value) { + addCriterion("PARENT_ID >=", value, "parentId"); + return (Criteria) this; + } + + public Criteria andParentIdLessThan(Integer value) { + addCriterion("PARENT_ID <", value, "parentId"); + return (Criteria) this; + } + + public Criteria andParentIdLessThanOrEqualTo(Integer value) { + addCriterion("PARENT_ID <=", value, "parentId"); + return (Criteria) this; + } + + public Criteria andParentIdIn(List values) { + addCriterion("PARENT_ID in", values, "parentId"); + return (Criteria) this; + } + + public Criteria andParentIdNotIn(List values) { + addCriterion("PARENT_ID not in", values, "parentId"); + return (Criteria) this; + } + + public Criteria andParentIdBetween(Integer value1, Integer value2) { + addCriterion("PARENT_ID between", value1, value2, "parentId"); + return (Criteria) this; + } + + public Criteria andParentIdNotBetween(Integer value1, Integer value2) { + addCriterion("PARENT_ID not between", value1, value2, "parentId"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/entity/CdCompany.java b/src/main/java/com/xmomen/module/base/entity/CdCompany.java new file mode 100644 index 0000000..9053a02 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/CdCompany.java @@ -0,0 +1,129 @@ +package com.xmomen.module.base.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "cd_company") +public class CdCompany extends BaseMybatisModel { + /** + * + */ + private Integer id; + + /** + * 单位编号 + */ + private String companyCode; + + /** + * 单位名称 + */ + private String companyName; + + /** + * 单位地址 + */ + private String companyAddress; + + /** + * 单位联系人 + */ + private String companyLeader; + + /** + * 联系人电话 + */ + private String companyLeaderTel; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "COMPANY_CODE") + public String getCompanyCode() { + return companyCode; + } + + public void setCompanyCode(String companyCode) { + this.companyCode = companyCode; + if(companyCode == null){ + removeValidField("companyCode"); + return; + } + addValidField("companyCode"); + } + + @Column(name = "COMPANY_NAME") + public String getCompanyName() { + return companyName; + } + + public void setCompanyName(String companyName) { + this.companyName = companyName; + if(companyName == null){ + removeValidField("companyName"); + return; + } + addValidField("companyName"); + } + + @Column(name = "COMPANY_ADDRESS") + public String getCompanyAddress() { + return companyAddress; + } + + public void setCompanyAddress(String companyAddress) { + this.companyAddress = companyAddress; + if(companyAddress == null){ + removeValidField("companyAddress"); + return; + } + addValidField("companyAddress"); + } + + @Column(name = "COMPANY_LEADER") + public String getCompanyLeader() { + return companyLeader; + } + + public void setCompanyLeader(String companyLeader) { + this.companyLeader = companyLeader; + if(companyLeader == null){ + removeValidField("companyLeader"); + return; + } + addValidField("companyLeader"); + } + + @Column(name = "COMPANY_LEADER_TEL") + public String getCompanyLeaderTel() { + return companyLeaderTel; + } + + public void setCompanyLeaderTel(String companyLeaderTel) { + this.companyLeaderTel = companyLeaderTel; + if(companyLeaderTel == null){ + removeValidField("companyLeaderTel"); + return; + } + addValidField("companyLeaderTel"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/entity/CdContract.java b/src/main/java/com/xmomen/module/base/entity/CdContract.java new file mode 100644 index 0000000..03b865d --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/CdContract.java @@ -0,0 +1,226 @@ +package com.xmomen.module.base.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import java.math.BigDecimal; +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "cd_contract") +public class CdContract extends BaseMybatisModel { + /** + * + */ + private Integer id; + + /** + * 合同编号 + */ + private String contractCode; + + /** + * 合同名称 + */ + private String contractName; + + /** + * 合同价的客户 + */ + private Integer cdMemberId; + + /** + * 合同价的单位 + */ + private Integer cdCompanyId; + + /** + * 1-部分产品,2-全部产品 + */ + private Integer scope; + + /** + * 仅当适用范围为全部产品时适用 + */ + private BigDecimal contractPrice; + + /** + * 合同开始时间 + */ + private Date beginTime; + + /** + * 合同结束时间 + */ + private Date endTime; + + /** + * 0-未作废,1-作废 + */ + private Integer isDel; + + /** + * 0-未审核,1-审核 + */ + private Integer isAuditor; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "CONTRACT_CODE") + public String getContractCode() { + return contractCode; + } + + public void setContractCode(String contractCode) { + this.contractCode = contractCode; + if(contractCode == null){ + removeValidField("contractCode"); + return; + } + addValidField("contractCode"); + } + + @Column(name = "CONTRACT_NAME") + public String getContractName() { + return contractName; + } + + public void setContractName(String contractName) { + this.contractName = contractName; + if(contractName == null){ + removeValidField("contractName"); + return; + } + addValidField("contractName"); + } + + @Column(name = "CD_MEMBER_ID") + public Integer getCdMemberId() { + return cdMemberId; + } + + public void setCdMemberId(Integer cdMemberId) { + this.cdMemberId = cdMemberId; + if(cdMemberId == null){ + removeValidField("cdMemberId"); + return; + } + addValidField("cdMemberId"); + } + + @Column(name = "CD_COMPANY_ID") + public Integer getCdCompanyId() { + return cdCompanyId; + } + + public void setCdCompanyId(Integer cdCompanyId) { + this.cdCompanyId = cdCompanyId; + if(cdCompanyId == null){ + removeValidField("cdCompanyId"); + return; + } + addValidField("cdCompanyId"); + } + + @Column(name = "SCOPE") + public Integer getScope() { + return scope; + } + + public void setScope(Integer scope) { + this.scope = scope; + if(scope == null){ + removeValidField("scope"); + return; + } + addValidField("scope"); + } + + @Column(name = "CONTRACT_PRICE") + public BigDecimal getContractPrice() { + return contractPrice; + } + + public void setContractPrice(BigDecimal contractPrice) { + this.contractPrice = contractPrice; + if(contractPrice == null){ + removeValidField("contractPrice"); + return; + } + addValidField("contractPrice"); + } + + @Column(name = "BEGIN_TIME") + public Date getBeginTime() { + return beginTime; + } + + public void setBeginTime(Date beginTime) { + this.beginTime = beginTime; + if(beginTime == null){ + removeValidField("beginTime"); + return; + } + addValidField("beginTime"); + } + + @Column(name = "END_TIME") + public Date getEndTime() { + return endTime; + } + + public void setEndTime(Date endTime) { + this.endTime = endTime; + if(endTime == null){ + removeValidField("endTime"); + return; + } + addValidField("endTime"); + } + + @Column(name = "IS_DEL") + public Integer getIsDel() { + return isDel; + } + + public void setIsDel(Integer isDel) { + this.isDel = isDel; + if(isDel == null){ + removeValidField("isDel"); + return; + } + addValidField("isDel"); + } + + @Column(name = "IS_AUDITOR") + public Integer getIsAuditor() { + return isAuditor; + } + + public void setIsAuditor(Integer isAuditor) { + this.isAuditor = isAuditor; + if(isAuditor == null){ + removeValidField("isAuditor"); + return; + } + addValidField("isAuditor"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/entity/CdContractItem.java b/src/main/java/com/xmomen/module/base/entity/CdContractItem.java new file mode 100644 index 0000000..e569d8c --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/CdContractItem.java @@ -0,0 +1,130 @@ +package com.xmomen.module.base.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import java.math.BigDecimal; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "cd_contract_item") +public class CdContractItem extends BaseMybatisModel { + /** + * + */ + private Integer id; + + /** + * 产品合同 + */ + private Integer cdContractId; + + /** + * 优惠方式 + */ + private Integer contractType; + + /** + * 当合同适用范围为1的时候,每种产品要设定对应的合同价 + */ + private Integer cdItemId; + + /** + * 折扣 + */ + private BigDecimal discount; + + /** + * 合同价格 + */ + private BigDecimal contractValue; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "CD_CONTRACT_ID") + public Integer getCdContractId() { + return cdContractId; + } + + public void setCdContractId(Integer cdContractId) { + this.cdContractId = cdContractId; + if(cdContractId == null){ + removeValidField("cdContractId"); + return; + } + addValidField("cdContractId"); + } + + @Column(name = "CONTRACT_TYPE") + public Integer getContractType() { + return contractType; + } + + public void setContractType(Integer contractType) { + this.contractType = contractType; + if(contractType == null){ + removeValidField("contractType"); + return; + } + addValidField("contractType"); + } + + @Column(name = "CD_ITEM_ID") + public Integer getCdItemId() { + return cdItemId; + } + + public void setCdItemId(Integer cdItemId) { + this.cdItemId = cdItemId; + if(cdItemId == null){ + removeValidField("cdItemId"); + return; + } + addValidField("cdItemId"); + } + + @Column(name = "DISCOUNT") + public BigDecimal getDiscount() { + return discount; + } + + public void setDiscount(BigDecimal discount) { + this.discount = discount; + if(discount == null){ + removeValidField("discount"); + return; + } + addValidField("discount"); + } + + @Column(name = "CONTRACT_VALUE") + public BigDecimal getContractValue() { + return contractValue; + } + + public void setContractValue(BigDecimal contractValue) { + this.contractValue = contractValue; + if(contractValue == null){ + removeValidField("contractValue"); + return; + } + addValidField("contractValue"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/entity/CdContractItemExample.java b/src/main/java/com/xmomen/module/base/entity/CdContractItemExample.java new file mode 100644 index 0000000..96ed42a --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/CdContractItemExample.java @@ -0,0 +1,562 @@ +package com.xmomen.module.base.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisExample; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +public class CdContractItemExample extends BaseMybatisExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public CdContractItemExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("ID is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("ID is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Integer value) { + addCriterion("ID =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Integer value) { + addCriterion("ID <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Integer value) { + addCriterion("ID >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Integer value) { + addCriterion("ID >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Integer value) { + addCriterion("ID <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Integer value) { + addCriterion("ID <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("ID in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("ID not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Integer value1, Integer value2) { + addCriterion("ID between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Integer value1, Integer value2) { + addCriterion("ID not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andCdContractIdIsNull() { + addCriterion("CD_CONTRACT_ID is null"); + return (Criteria) this; + } + + public Criteria andCdContractIdIsNotNull() { + addCriterion("CD_CONTRACT_ID is not null"); + return (Criteria) this; + } + + public Criteria andCdContractIdEqualTo(Integer value) { + addCriterion("CD_CONTRACT_ID =", value, "cdContractId"); + return (Criteria) this; + } + + public Criteria andCdContractIdNotEqualTo(Integer value) { + addCriterion("CD_CONTRACT_ID <>", value, "cdContractId"); + return (Criteria) this; + } + + public Criteria andCdContractIdGreaterThan(Integer value) { + addCriterion("CD_CONTRACT_ID >", value, "cdContractId"); + return (Criteria) this; + } + + public Criteria andCdContractIdGreaterThanOrEqualTo(Integer value) { + addCriterion("CD_CONTRACT_ID >=", value, "cdContractId"); + return (Criteria) this; + } + + public Criteria andCdContractIdLessThan(Integer value) { + addCriterion("CD_CONTRACT_ID <", value, "cdContractId"); + return (Criteria) this; + } + + public Criteria andCdContractIdLessThanOrEqualTo(Integer value) { + addCriterion("CD_CONTRACT_ID <=", value, "cdContractId"); + return (Criteria) this; + } + + public Criteria andCdContractIdIn(List values) { + addCriterion("CD_CONTRACT_ID in", values, "cdContractId"); + return (Criteria) this; + } + + public Criteria andCdContractIdNotIn(List values) { + addCriterion("CD_CONTRACT_ID not in", values, "cdContractId"); + return (Criteria) this; + } + + public Criteria andCdContractIdBetween(Integer value1, Integer value2) { + addCriterion("CD_CONTRACT_ID between", value1, value2, "cdContractId"); + return (Criteria) this; + } + + public Criteria andCdContractIdNotBetween(Integer value1, Integer value2) { + addCriterion("CD_CONTRACT_ID not between", value1, value2, "cdContractId"); + return (Criteria) this; + } + + public Criteria andContractTypeIsNull() { + addCriterion("CONTRACT_TYPE is null"); + return (Criteria) this; + } + + public Criteria andContractTypeIsNotNull() { + addCriterion("CONTRACT_TYPE is not null"); + return (Criteria) this; + } + + public Criteria andContractTypeEqualTo(Integer value) { + addCriterion("CONTRACT_TYPE =", value, "contractType"); + return (Criteria) this; + } + + public Criteria andContractTypeNotEqualTo(Integer value) { + addCriterion("CONTRACT_TYPE <>", value, "contractType"); + return (Criteria) this; + } + + public Criteria andContractTypeGreaterThan(Integer value) { + addCriterion("CONTRACT_TYPE >", value, "contractType"); + return (Criteria) this; + } + + public Criteria andContractTypeGreaterThanOrEqualTo(Integer value) { + addCriterion("CONTRACT_TYPE >=", value, "contractType"); + return (Criteria) this; + } + + public Criteria andContractTypeLessThan(Integer value) { + addCriterion("CONTRACT_TYPE <", value, "contractType"); + return (Criteria) this; + } + + public Criteria andContractTypeLessThanOrEqualTo(Integer value) { + addCriterion("CONTRACT_TYPE <=", value, "contractType"); + return (Criteria) this; + } + + public Criteria andContractTypeIn(List values) { + addCriterion("CONTRACT_TYPE in", values, "contractType"); + return (Criteria) this; + } + + public Criteria andContractTypeNotIn(List values) { + addCriterion("CONTRACT_TYPE not in", values, "contractType"); + return (Criteria) this; + } + + public Criteria andContractTypeBetween(Integer value1, Integer value2) { + addCriterion("CONTRACT_TYPE between", value1, value2, "contractType"); + return (Criteria) this; + } + + public Criteria andContractTypeNotBetween(Integer value1, Integer value2) { + addCriterion("CONTRACT_TYPE not between", value1, value2, "contractType"); + return (Criteria) this; + } + + public Criteria andCdItemIdIsNull() { + addCriterion("CD_ITEM_ID is null"); + return (Criteria) this; + } + + public Criteria andCdItemIdIsNotNull() { + addCriterion("CD_ITEM_ID is not null"); + return (Criteria) this; + } + + public Criteria andCdItemIdEqualTo(Integer value) { + addCriterion("CD_ITEM_ID =", value, "cdItemId"); + return (Criteria) this; + } + + public Criteria andCdItemIdNotEqualTo(Integer value) { + addCriterion("CD_ITEM_ID <>", value, "cdItemId"); + return (Criteria) this; + } + + public Criteria andCdItemIdGreaterThan(Integer value) { + addCriterion("CD_ITEM_ID >", value, "cdItemId"); + return (Criteria) this; + } + + public Criteria andCdItemIdGreaterThanOrEqualTo(Integer value) { + addCriterion("CD_ITEM_ID >=", value, "cdItemId"); + return (Criteria) this; + } + + public Criteria andCdItemIdLessThan(Integer value) { + addCriterion("CD_ITEM_ID <", value, "cdItemId"); + return (Criteria) this; + } + + public Criteria andCdItemIdLessThanOrEqualTo(Integer value) { + addCriterion("CD_ITEM_ID <=", value, "cdItemId"); + return (Criteria) this; + } + + public Criteria andCdItemIdIn(List values) { + addCriterion("CD_ITEM_ID in", values, "cdItemId"); + return (Criteria) this; + } + + public Criteria andCdItemIdNotIn(List values) { + addCriterion("CD_ITEM_ID not in", values, "cdItemId"); + return (Criteria) this; + } + + public Criteria andCdItemIdBetween(Integer value1, Integer value2) { + addCriterion("CD_ITEM_ID between", value1, value2, "cdItemId"); + return (Criteria) this; + } + + public Criteria andCdItemIdNotBetween(Integer value1, Integer value2) { + addCriterion("CD_ITEM_ID not between", value1, value2, "cdItemId"); + return (Criteria) this; + } + + public Criteria andDiscountIsNull() { + addCriterion("DISCOUNT is null"); + return (Criteria) this; + } + + public Criteria andDiscountIsNotNull() { + addCriterion("DISCOUNT is not null"); + return (Criteria) this; + } + + public Criteria andDiscountEqualTo(BigDecimal value) { + addCriterion("DISCOUNT =", value, "discount"); + return (Criteria) this; + } + + public Criteria andDiscountNotEqualTo(BigDecimal value) { + addCriterion("DISCOUNT <>", value, "discount"); + return (Criteria) this; + } + + public Criteria andDiscountGreaterThan(BigDecimal value) { + addCriterion("DISCOUNT >", value, "discount"); + return (Criteria) this; + } + + public Criteria andDiscountGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("DISCOUNT >=", value, "discount"); + return (Criteria) this; + } + + public Criteria andDiscountLessThan(BigDecimal value) { + addCriterion("DISCOUNT <", value, "discount"); + return (Criteria) this; + } + + public Criteria andDiscountLessThanOrEqualTo(BigDecimal value) { + addCriterion("DISCOUNT <=", value, "discount"); + return (Criteria) this; + } + + public Criteria andDiscountIn(List values) { + addCriterion("DISCOUNT in", values, "discount"); + return (Criteria) this; + } + + public Criteria andDiscountNotIn(List values) { + addCriterion("DISCOUNT not in", values, "discount"); + return (Criteria) this; + } + + public Criteria andDiscountBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("DISCOUNT between", value1, value2, "discount"); + return (Criteria) this; + } + + public Criteria andDiscountNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("DISCOUNT not between", value1, value2, "discount"); + return (Criteria) this; + } + + public Criteria andContractValueIsNull() { + addCriterion("CONTRACT_VALUE is null"); + return (Criteria) this; + } + + public Criteria andContractValueIsNotNull() { + addCriterion("CONTRACT_VALUE is not null"); + return (Criteria) this; + } + + public Criteria andContractValueEqualTo(BigDecimal value) { + addCriterion("CONTRACT_VALUE =", value, "contractValue"); + return (Criteria) this; + } + + public Criteria andContractValueNotEqualTo(BigDecimal value) { + addCriterion("CONTRACT_VALUE <>", value, "contractValue"); + return (Criteria) this; + } + + public Criteria andContractValueGreaterThan(BigDecimal value) { + addCriterion("CONTRACT_VALUE >", value, "contractValue"); + return (Criteria) this; + } + + public Criteria andContractValueGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("CONTRACT_VALUE >=", value, "contractValue"); + return (Criteria) this; + } + + public Criteria andContractValueLessThan(BigDecimal value) { + addCriterion("CONTRACT_VALUE <", value, "contractValue"); + return (Criteria) this; + } + + public Criteria andContractValueLessThanOrEqualTo(BigDecimal value) { + addCriterion("CONTRACT_VALUE <=", value, "contractValue"); + return (Criteria) this; + } + + public Criteria andContractValueIn(List values) { + addCriterion("CONTRACT_VALUE in", values, "contractValue"); + return (Criteria) this; + } + + public Criteria andContractValueNotIn(List values) { + addCriterion("CONTRACT_VALUE not in", values, "contractValue"); + return (Criteria) this; + } + + public Criteria andContractValueBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("CONTRACT_VALUE between", value1, value2, "contractValue"); + return (Criteria) this; + } + + public Criteria andContractValueNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("CONTRACT_VALUE not between", value1, value2, "contractValue"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/entity/CdCoupon.java b/src/main/java/com/xmomen/module/base/entity/CdCoupon.java new file mode 100644 index 0000000..ab31de5 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/CdCoupon.java @@ -0,0 +1,435 @@ +package com.xmomen.module.base.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import java.math.BigDecimal; +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "cd_coupon") +public class CdCoupon extends BaseMybatisModel { + /** + * + */ + private Integer id; + + /** + * 卡或者劵,1-卡,2-劵 + */ + private Integer couponType; + + /** + * 卡/劵类型 + */ + private Integer couponCategory; + + /** + * 卡号 + */ + private String couponNumber; + + /** + * 密码 + */ + private String couponPassword; + + /** + * 固定金额 + */ + private BigDecimal couponValue; + + /** + * 可用余额 + */ + private BigDecimal userPrice; + + /** + * 单位 + */ + private Integer cdCompanyId; + + /** + * 客服经理 + */ + private Integer cdUserId; + + /** + * 描述 + */ + private String couponDesc; + + /** + * 0-未使用,1-已使用 + */ + private Integer isUsed; + + /** + * 0-无效,1-有效 + */ + private Integer isUseful; + + /** + * 是否赠送。0-否,1-是 + */ + private Integer isGift; + + /** + * 是否发卡,0-未发,1-已发 + */ + private Integer isSend; + + /** + * 付款方式 1-预付款,2-后付款 + */ + private Integer paymentType; + + /** + * 有效开始时间 + */ + private Date beginTime; + + /** + * 有效结束时间 + */ + private Date endTime; + + /** + * + */ + private String notes; + + /** + * 0-未完结 1-完结 + */ + private Integer isOver; + + /** + * 审核时间 + */ + private Date auditDate; + + /** + * 发卡批次 + */ + private String batch; + + /** + * 卡激活时间,劵使用时间 + */ + private Date usefulDate; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "COUPON_TYPE") + public Integer getCouponType() { + return couponType; + } + + public void setCouponType(Integer couponType) { + this.couponType = couponType; + if(couponType == null){ + removeValidField("couponType"); + return; + } + addValidField("couponType"); + } + + @Column(name = "COUPON_CATEGORY") + public Integer getCouponCategory() { + return couponCategory; + } + + public void setCouponCategory(Integer couponCategory) { + this.couponCategory = couponCategory; + if(couponCategory == null){ + removeValidField("couponCategory"); + return; + } + addValidField("couponCategory"); + } + + @Column(name = "COUPON_NUMBER") + public String getCouponNumber() { + return couponNumber; + } + + public void setCouponNumber(String couponNumber) { + this.couponNumber = couponNumber; + if(couponNumber == null){ + removeValidField("couponNumber"); + return; + } + addValidField("couponNumber"); + } + + @Column(name = "COUPON_PASSWORD") + public String getCouponPassword() { + return couponPassword; + } + + public void setCouponPassword(String couponPassword) { + this.couponPassword = couponPassword; + if(couponPassword == null){ + removeValidField("couponPassword"); + return; + } + addValidField("couponPassword"); + } + + @Column(name = "COUPON_VALUE") + public BigDecimal getCouponValue() { + return couponValue; + } + + public void setCouponValue(BigDecimal couponValue) { + this.couponValue = couponValue; + if(couponValue == null){ + removeValidField("couponValue"); + return; + } + addValidField("couponValue"); + } + + @Column(name = "USER_PRICE") + public BigDecimal getUserPrice() { + return userPrice; + } + + public void setUserPrice(BigDecimal userPrice) { + this.userPrice = userPrice; + if(userPrice == null){ + removeValidField("userPrice"); + return; + } + addValidField("userPrice"); + } + + @Column(name = "CD_COMPANY_ID") + public Integer getCdCompanyId() { + return cdCompanyId; + } + + public void setCdCompanyId(Integer cdCompanyId) { + this.cdCompanyId = cdCompanyId; + if(cdCompanyId == null){ + removeValidField("cdCompanyId"); + return; + } + addValidField("cdCompanyId"); + } + + @Column(name = "CD_USER_ID") + public Integer getCdUserId() { + return cdUserId; + } + + public void setCdUserId(Integer cdUserId) { + this.cdUserId = cdUserId; + if(cdUserId == null){ + removeValidField("cdUserId"); + return; + } + addValidField("cdUserId"); + } + + @Column(name = "COUPON_DESC") + public String getCouponDesc() { + return couponDesc; + } + + public void setCouponDesc(String couponDesc) { + this.couponDesc = couponDesc; + if(couponDesc == null){ + removeValidField("couponDesc"); + return; + } + addValidField("couponDesc"); + } + + @Column(name = "IS_USED") + public Integer getIsUsed() { + return isUsed; + } + + public void setIsUsed(Integer isUsed) { + this.isUsed = isUsed; + if(isUsed == null){ + removeValidField("isUsed"); + return; + } + addValidField("isUsed"); + } + + @Column(name = "IS_USEFUL") + public Integer getIsUseful() { + return isUseful; + } + + public void setIsUseful(Integer isUseful) { + this.isUseful = isUseful; + if(isUseful == null){ + removeValidField("isUseful"); + return; + } + addValidField("isUseful"); + } + + @Column(name = "IS_GIFT") + public Integer getIsGift() { + return isGift; + } + + public void setIsGift(Integer isGift) { + this.isGift = isGift; + if(isGift == null){ + removeValidField("isGift"); + return; + } + addValidField("isGift"); + } + + @Column(name = "IS_SEND") + public Integer getIsSend() { + return isSend; + } + + public void setIsSend(Integer isSend) { + this.isSend = isSend; + if(isSend == null){ + removeValidField("isSend"); + return; + } + addValidField("isSend"); + } + + @Column(name = "PAYMENT_TYPE") + public Integer getPaymentType() { + return paymentType; + } + + public void setPaymentType(Integer paymentType) { + this.paymentType = paymentType; + if(paymentType == null){ + removeValidField("paymentType"); + return; + } + addValidField("paymentType"); + } + + @Column(name = "BEGIN_TIME") + public Date getBeginTime() { + return beginTime; + } + + public void setBeginTime(Date beginTime) { + this.beginTime = beginTime; + if(beginTime == null){ + removeValidField("beginTime"); + return; + } + addValidField("beginTime"); + } + + @Column(name = "END_TIME") + public Date getEndTime() { + return endTime; + } + + public void setEndTime(Date endTime) { + this.endTime = endTime; + if(endTime == null){ + removeValidField("endTime"); + return; + } + addValidField("endTime"); + } + + @Column(name = "NOTES") + public String getNotes() { + return notes; + } + + public void setNotes(String notes) { + this.notes = notes; + if(notes == null){ + removeValidField("notes"); + return; + } + addValidField("notes"); + } + + @Column(name = "IS_OVER") + public Integer getIsOver() { + return isOver; + } + + public void setIsOver(Integer isOver) { + this.isOver = isOver; + if(isOver == null){ + removeValidField("isOver"); + return; + } + addValidField("isOver"); + } + + @Column(name = "AUDIT_DATE") + public Date getAuditDate() { + return auditDate; + } + + public void setAuditDate(Date auditDate) { + this.auditDate = auditDate; + if(auditDate == null){ + removeValidField("auditDate"); + return; + } + addValidField("auditDate"); + } + + @Column(name = "BATCH") + public String getBatch() { + return batch; + } + + public void setBatch(String batch) { + this.batch = batch; + if(batch == null){ + removeValidField("batch"); + return; + } + addValidField("batch"); + } + + @Column(name = "USEFUL_DATE") + public Date getUsefulDate() { + return usefulDate; + } + + public void setUsefulDate(Date usefulDate) { + this.usefulDate = usefulDate; + if(usefulDate == null){ + removeValidField("usefulDate"); + return; + } + addValidField("usefulDate"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/entity/CdCouponCategory.java b/src/main/java/com/xmomen/module/base/entity/CdCouponCategory.java new file mode 100644 index 0000000..876b411 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/CdCouponCategory.java @@ -0,0 +1,72 @@ +package com.xmomen.module.base.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "cd_coupon_category") +public class CdCouponCategory extends BaseMybatisModel { + /** + * + */ + private Integer id; + + /** + * 类别类型(1-卡,2-劵) + */ + private Integer categoryType; + + /** + * 类别名称 + */ + private String categoryName; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "CATEGORY_TYPE") + public Integer getCategoryType() { + return categoryType; + } + + public void setCategoryType(Integer categoryType) { + this.categoryType = categoryType; + if(categoryType == null){ + removeValidField("categoryType"); + return; + } + addValidField("categoryType"); + } + + @Column(name = "CATEGORY_NAME") + public String getCategoryName() { + return categoryName; + } + + public void setCategoryName(String categoryName) { + this.categoryName = categoryName; + if(categoryName == null){ + removeValidField("categoryName"); + return; + } + addValidField("categoryName"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/entity/CdCouponCategoryRefExample.java b/src/main/java/com/xmomen/module/base/entity/CdCouponCategoryRefExample.java new file mode 100644 index 0000000..91aeff2 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/CdCouponCategoryRefExample.java @@ -0,0 +1,591 @@ +package com.xmomen.module.base.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisExample; +import java.util.ArrayList; +import java.util.List; + +public class CdCouponCategoryRefExample extends BaseMybatisExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public CdCouponCategoryRefExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("ID is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("ID is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Integer value) { + addCriterion("ID =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Integer value) { + addCriterion("ID <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Integer value) { + addCriterion("ID >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Integer value) { + addCriterion("ID >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Integer value) { + addCriterion("ID <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Integer value) { + addCriterion("ID <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("ID in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("ID not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Integer value1, Integer value2) { + addCriterion("ID between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Integer value1, Integer value2) { + addCriterion("ID not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andCdCouponCategoryIdIsNull() { + addCriterion("CD_COUPON_CATEGORY_ID is null"); + return (Criteria) this; + } + + public Criteria andCdCouponCategoryIdIsNotNull() { + addCriterion("CD_COUPON_CATEGORY_ID is not null"); + return (Criteria) this; + } + + public Criteria andCdCouponCategoryIdEqualTo(Integer value) { + addCriterion("CD_COUPON_CATEGORY_ID =", value, "cdCouponCategoryId"); + return (Criteria) this; + } + + public Criteria andCdCouponCategoryIdNotEqualTo(Integer value) { + addCriterion("CD_COUPON_CATEGORY_ID <>", value, "cdCouponCategoryId"); + return (Criteria) this; + } + + public Criteria andCdCouponCategoryIdGreaterThan(Integer value) { + addCriterion("CD_COUPON_CATEGORY_ID >", value, "cdCouponCategoryId"); + return (Criteria) this; + } + + public Criteria andCdCouponCategoryIdGreaterThanOrEqualTo(Integer value) { + addCriterion("CD_COUPON_CATEGORY_ID >=", value, "cdCouponCategoryId"); + return (Criteria) this; + } + + public Criteria andCdCouponCategoryIdLessThan(Integer value) { + addCriterion("CD_COUPON_CATEGORY_ID <", value, "cdCouponCategoryId"); + return (Criteria) this; + } + + public Criteria andCdCouponCategoryIdLessThanOrEqualTo(Integer value) { + addCriterion("CD_COUPON_CATEGORY_ID <=", value, "cdCouponCategoryId"); + return (Criteria) this; + } + + public Criteria andCdCouponCategoryIdIn(List values) { + addCriterion("CD_COUPON_CATEGORY_ID in", values, "cdCouponCategoryId"); + return (Criteria) this; + } + + public Criteria andCdCouponCategoryIdNotIn(List values) { + addCriterion("CD_COUPON_CATEGORY_ID not in", values, "cdCouponCategoryId"); + return (Criteria) this; + } + + public Criteria andCdCouponCategoryIdBetween(Integer value1, Integer value2) { + addCriterion("CD_COUPON_CATEGORY_ID between", value1, value2, "cdCouponCategoryId"); + return (Criteria) this; + } + + public Criteria andCdCouponCategoryIdNotBetween(Integer value1, Integer value2) { + addCriterion("CD_COUPON_CATEGORY_ID not between", value1, value2, "cdCouponCategoryId"); + return (Criteria) this; + } + + public Criteria andRefTypeIsNull() { + addCriterion("REF_TYPE is null"); + return (Criteria) this; + } + + public Criteria andRefTypeIsNotNull() { + addCriterion("REF_TYPE is not null"); + return (Criteria) this; + } + + public Criteria andRefTypeEqualTo(String value) { + addCriterion("REF_TYPE =", value, "refType"); + return (Criteria) this; + } + + public Criteria andRefTypeNotEqualTo(String value) { + addCriterion("REF_TYPE <>", value, "refType"); + return (Criteria) this; + } + + public Criteria andRefTypeGreaterThan(String value) { + addCriterion("REF_TYPE >", value, "refType"); + return (Criteria) this; + } + + public Criteria andRefTypeGreaterThanOrEqualTo(String value) { + addCriterion("REF_TYPE >=", value, "refType"); + return (Criteria) this; + } + + public Criteria andRefTypeLessThan(String value) { + addCriterion("REF_TYPE <", value, "refType"); + return (Criteria) this; + } + + public Criteria andRefTypeLessThanOrEqualTo(String value) { + addCriterion("REF_TYPE <=", value, "refType"); + return (Criteria) this; + } + + public Criteria andRefTypeLike(String value) { + addCriterion("REF_TYPE like", value, "refType"); + return (Criteria) this; + } + + public Criteria andRefTypeNotLike(String value) { + addCriterion("REF_TYPE not like", value, "refType"); + return (Criteria) this; + } + + public Criteria andRefTypeIn(List values) { + addCriterion("REF_TYPE in", values, "refType"); + return (Criteria) this; + } + + public Criteria andRefTypeNotIn(List values) { + addCriterion("REF_TYPE not in", values, "refType"); + return (Criteria) this; + } + + public Criteria andRefTypeBetween(String value1, String value2) { + addCriterion("REF_TYPE between", value1, value2, "refType"); + return (Criteria) this; + } + + public Criteria andRefTypeNotBetween(String value1, String value2) { + addCriterion("REF_TYPE not between", value1, value2, "refType"); + return (Criteria) this; + } + + public Criteria andRefNameIsNull() { + addCriterion("REF_NAME is null"); + return (Criteria) this; + } + + public Criteria andRefNameIsNotNull() { + addCriterion("REF_NAME is not null"); + return (Criteria) this; + } + + public Criteria andRefNameEqualTo(String value) { + addCriterion("REF_NAME =", value, "refName"); + return (Criteria) this; + } + + public Criteria andRefNameNotEqualTo(String value) { + addCriterion("REF_NAME <>", value, "refName"); + return (Criteria) this; + } + + public Criteria andRefNameGreaterThan(String value) { + addCriterion("REF_NAME >", value, "refName"); + return (Criteria) this; + } + + public Criteria andRefNameGreaterThanOrEqualTo(String value) { + addCriterion("REF_NAME >=", value, "refName"); + return (Criteria) this; + } + + public Criteria andRefNameLessThan(String value) { + addCriterion("REF_NAME <", value, "refName"); + return (Criteria) this; + } + + public Criteria andRefNameLessThanOrEqualTo(String value) { + addCriterion("REF_NAME <=", value, "refName"); + return (Criteria) this; + } + + public Criteria andRefNameLike(String value) { + addCriterion("REF_NAME like", value, "refName"); + return (Criteria) this; + } + + public Criteria andRefNameNotLike(String value) { + addCriterion("REF_NAME not like", value, "refName"); + return (Criteria) this; + } + + public Criteria andRefNameIn(List values) { + addCriterion("REF_NAME in", values, "refName"); + return (Criteria) this; + } + + public Criteria andRefNameNotIn(List values) { + addCriterion("REF_NAME not in", values, "refName"); + return (Criteria) this; + } + + public Criteria andRefNameBetween(String value1, String value2) { + addCriterion("REF_NAME between", value1, value2, "refName"); + return (Criteria) this; + } + + public Criteria andRefNameNotBetween(String value1, String value2) { + addCriterion("REF_NAME not between", value1, value2, "refName"); + return (Criteria) this; + } + + public Criteria andRefValueIsNull() { + addCriterion("REF_VALUE is null"); + return (Criteria) this; + } + + public Criteria andRefValueIsNotNull() { + addCriterion("REF_VALUE is not null"); + return (Criteria) this; + } + + public Criteria andRefValueEqualTo(String value) { + addCriterion("REF_VALUE =", value, "refValue"); + return (Criteria) this; + } + + public Criteria andRefValueNotEqualTo(String value) { + addCriterion("REF_VALUE <>", value, "refValue"); + return (Criteria) this; + } + + public Criteria andRefValueGreaterThan(String value) { + addCriterion("REF_VALUE >", value, "refValue"); + return (Criteria) this; + } + + public Criteria andRefValueGreaterThanOrEqualTo(String value) { + addCriterion("REF_VALUE >=", value, "refValue"); + return (Criteria) this; + } + + public Criteria andRefValueLessThan(String value) { + addCriterion("REF_VALUE <", value, "refValue"); + return (Criteria) this; + } + + public Criteria andRefValueLessThanOrEqualTo(String value) { + addCriterion("REF_VALUE <=", value, "refValue"); + return (Criteria) this; + } + + public Criteria andRefValueLike(String value) { + addCriterion("REF_VALUE like", value, "refValue"); + return (Criteria) this; + } + + public Criteria andRefValueNotLike(String value) { + addCriterion("REF_VALUE not like", value, "refValue"); + return (Criteria) this; + } + + public Criteria andRefValueIn(List values) { + addCriterion("REF_VALUE in", values, "refValue"); + return (Criteria) this; + } + + public Criteria andRefValueNotIn(List values) { + addCriterion("REF_VALUE not in", values, "refValue"); + return (Criteria) this; + } + + public Criteria andRefValueBetween(String value1, String value2) { + addCriterion("REF_VALUE between", value1, value2, "refValue"); + return (Criteria) this; + } + + public Criteria andRefValueNotBetween(String value1, String value2) { + addCriterion("REF_VALUE not between", value1, value2, "refValue"); + return (Criteria) this; + } + + public Criteria andRefCountIsNull() { + addCriterion("REF_COUNT is null"); + return (Criteria) this; + } + + public Criteria andRefCountIsNotNull() { + addCriterion("REF_COUNT is not null"); + return (Criteria) this; + } + + public Criteria andRefCountEqualTo(Integer value) { + addCriterion("REF_COUNT =", value, "refCount"); + return (Criteria) this; + } + + public Criteria andRefCountNotEqualTo(Integer value) { + addCriterion("REF_COUNT <>", value, "refCount"); + return (Criteria) this; + } + + public Criteria andRefCountGreaterThan(Integer value) { + addCriterion("REF_COUNT >", value, "refCount"); + return (Criteria) this; + } + + public Criteria andRefCountGreaterThanOrEqualTo(Integer value) { + addCriterion("REF_COUNT >=", value, "refCount"); + return (Criteria) this; + } + + public Criteria andRefCountLessThan(Integer value) { + addCriterion("REF_COUNT <", value, "refCount"); + return (Criteria) this; + } + + public Criteria andRefCountLessThanOrEqualTo(Integer value) { + addCriterion("REF_COUNT <=", value, "refCount"); + return (Criteria) this; + } + + public Criteria andRefCountIn(List values) { + addCriterion("REF_COUNT in", values, "refCount"); + return (Criteria) this; + } + + public Criteria andRefCountNotIn(List values) { + addCriterion("REF_COUNT not in", values, "refCount"); + return (Criteria) this; + } + + public Criteria andRefCountBetween(Integer value1, Integer value2) { + addCriterion("REF_COUNT between", value1, value2, "refCount"); + return (Criteria) this; + } + + public Criteria andRefCountNotBetween(Integer value1, Integer value2) { + addCriterion("REF_COUNT not between", value1, value2, "refCount"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/entity/CdCouponExample.java b/src/main/java/com/xmomen/module/base/entity/CdCouponExample.java new file mode 100644 index 0000000..02fec09 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/CdCouponExample.java @@ -0,0 +1,1573 @@ +package com.xmomen.module.base.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisExample; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class CdCouponExample extends BaseMybatisExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public CdCouponExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("ID is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("ID is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Integer value) { + addCriterion("ID =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Integer value) { + addCriterion("ID <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Integer value) { + addCriterion("ID >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Integer value) { + addCriterion("ID >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Integer value) { + addCriterion("ID <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Integer value) { + addCriterion("ID <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("ID in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("ID not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Integer value1, Integer value2) { + addCriterion("ID between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Integer value1, Integer value2) { + addCriterion("ID not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andCouponTypeIsNull() { + addCriterion("COUPON_TYPE is null"); + return (Criteria) this; + } + + public Criteria andCouponTypeIsNotNull() { + addCriterion("COUPON_TYPE is not null"); + return (Criteria) this; + } + + public Criteria andCouponTypeEqualTo(Integer value) { + addCriterion("COUPON_TYPE =", value, "couponType"); + return (Criteria) this; + } + + public Criteria andCouponTypeNotEqualTo(Integer value) { + addCriterion("COUPON_TYPE <>", value, "couponType"); + return (Criteria) this; + } + + public Criteria andCouponTypeGreaterThan(Integer value) { + addCriterion("COUPON_TYPE >", value, "couponType"); + return (Criteria) this; + } + + public Criteria andCouponTypeGreaterThanOrEqualTo(Integer value) { + addCriterion("COUPON_TYPE >=", value, "couponType"); + return (Criteria) this; + } + + public Criteria andCouponTypeLessThan(Integer value) { + addCriterion("COUPON_TYPE <", value, "couponType"); + return (Criteria) this; + } + + public Criteria andCouponTypeLessThanOrEqualTo(Integer value) { + addCriterion("COUPON_TYPE <=", value, "couponType"); + return (Criteria) this; + } + + public Criteria andCouponTypeIn(List values) { + addCriterion("COUPON_TYPE in", values, "couponType"); + return (Criteria) this; + } + + public Criteria andCouponTypeNotIn(List values) { + addCriterion("COUPON_TYPE not in", values, "couponType"); + return (Criteria) this; + } + + public Criteria andCouponTypeBetween(Integer value1, Integer value2) { + addCriterion("COUPON_TYPE between", value1, value2, "couponType"); + return (Criteria) this; + } + + public Criteria andCouponTypeNotBetween(Integer value1, Integer value2) { + addCriterion("COUPON_TYPE not between", value1, value2, "couponType"); + return (Criteria) this; + } + + public Criteria andCouponCategoryIsNull() { + addCriterion("COUPON_CATEGORY is null"); + return (Criteria) this; + } + + public Criteria andCouponCategoryIsNotNull() { + addCriterion("COUPON_CATEGORY is not null"); + return (Criteria) this; + } + + public Criteria andCouponCategoryEqualTo(Integer value) { + addCriterion("COUPON_CATEGORY =", value, "couponCategory"); + return (Criteria) this; + } + + public Criteria andCouponCategoryNotEqualTo(Integer value) { + addCriterion("COUPON_CATEGORY <>", value, "couponCategory"); + return (Criteria) this; + } + + public Criteria andCouponCategoryGreaterThan(Integer value) { + addCriterion("COUPON_CATEGORY >", value, "couponCategory"); + return (Criteria) this; + } + + public Criteria andCouponCategoryGreaterThanOrEqualTo(Integer value) { + addCriterion("COUPON_CATEGORY >=", value, "couponCategory"); + return (Criteria) this; + } + + public Criteria andCouponCategoryLessThan(Integer value) { + addCriterion("COUPON_CATEGORY <", value, "couponCategory"); + return (Criteria) this; + } + + public Criteria andCouponCategoryLessThanOrEqualTo(Integer value) { + addCriterion("COUPON_CATEGORY <=", value, "couponCategory"); + return (Criteria) this; + } + + public Criteria andCouponCategoryIn(List values) { + addCriterion("COUPON_CATEGORY in", values, "couponCategory"); + return (Criteria) this; + } + + public Criteria andCouponCategoryNotIn(List values) { + addCriterion("COUPON_CATEGORY not in", values, "couponCategory"); + return (Criteria) this; + } + + public Criteria andCouponCategoryBetween(Integer value1, Integer value2) { + addCriterion("COUPON_CATEGORY between", value1, value2, "couponCategory"); + return (Criteria) this; + } + + public Criteria andCouponCategoryNotBetween(Integer value1, Integer value2) { + addCriterion("COUPON_CATEGORY not between", value1, value2, "couponCategory"); + return (Criteria) this; + } + + public Criteria andCouponNumberIsNull() { + addCriterion("COUPON_NUMBER is null"); + return (Criteria) this; + } + + public Criteria andCouponNumberIsNotNull() { + addCriterion("COUPON_NUMBER is not null"); + return (Criteria) this; + } + + public Criteria andCouponNumberEqualTo(String value) { + addCriterion("COUPON_NUMBER =", value, "couponNumber"); + return (Criteria) this; + } + + public Criteria andCouponNumberNotEqualTo(String value) { + addCriterion("COUPON_NUMBER <>", value, "couponNumber"); + return (Criteria) this; + } + + public Criteria andCouponNumberGreaterThan(String value) { + addCriterion("COUPON_NUMBER >", value, "couponNumber"); + return (Criteria) this; + } + + public Criteria andCouponNumberGreaterThanOrEqualTo(String value) { + addCriterion("COUPON_NUMBER >=", value, "couponNumber"); + return (Criteria) this; + } + + public Criteria andCouponNumberLessThan(String value) { + addCriterion("COUPON_NUMBER <", value, "couponNumber"); + return (Criteria) this; + } + + public Criteria andCouponNumberLessThanOrEqualTo(String value) { + addCriterion("COUPON_NUMBER <=", value, "couponNumber"); + return (Criteria) this; + } + + public Criteria andCouponNumberLike(String value) { + addCriterion("COUPON_NUMBER like", value, "couponNumber"); + return (Criteria) this; + } + + public Criteria andCouponNumberNotLike(String value) { + addCriterion("COUPON_NUMBER not like", value, "couponNumber"); + return (Criteria) this; + } + + public Criteria andCouponNumberIn(List values) { + addCriterion("COUPON_NUMBER in", values, "couponNumber"); + return (Criteria) this; + } + + public Criteria andCouponNumberNotIn(List values) { + addCriterion("COUPON_NUMBER not in", values, "couponNumber"); + return (Criteria) this; + } + + public Criteria andCouponNumberBetween(String value1, String value2) { + addCriterion("COUPON_NUMBER between", value1, value2, "couponNumber"); + return (Criteria) this; + } + + public Criteria andCouponNumberNotBetween(String value1, String value2) { + addCriterion("COUPON_NUMBER not between", value1, value2, "couponNumber"); + return (Criteria) this; + } + + public Criteria andCouponPasswordIsNull() { + addCriterion("COUPON_PASSWORD is null"); + return (Criteria) this; + } + + public Criteria andCouponPasswordIsNotNull() { + addCriterion("COUPON_PASSWORD is not null"); + return (Criteria) this; + } + + public Criteria andCouponPasswordEqualTo(String value) { + addCriterion("COUPON_PASSWORD =", value, "couponPassword"); + return (Criteria) this; + } + + public Criteria andCouponPasswordNotEqualTo(String value) { + addCriterion("COUPON_PASSWORD <>", value, "couponPassword"); + return (Criteria) this; + } + + public Criteria andCouponPasswordGreaterThan(String value) { + addCriterion("COUPON_PASSWORD >", value, "couponPassword"); + return (Criteria) this; + } + + public Criteria andCouponPasswordGreaterThanOrEqualTo(String value) { + addCriterion("COUPON_PASSWORD >=", value, "couponPassword"); + return (Criteria) this; + } + + public Criteria andCouponPasswordLessThan(String value) { + addCriterion("COUPON_PASSWORD <", value, "couponPassword"); + return (Criteria) this; + } + + public Criteria andCouponPasswordLessThanOrEqualTo(String value) { + addCriterion("COUPON_PASSWORD <=", value, "couponPassword"); + return (Criteria) this; + } + + public Criteria andCouponPasswordLike(String value) { + addCriterion("COUPON_PASSWORD like", value, "couponPassword"); + return (Criteria) this; + } + + public Criteria andCouponPasswordNotLike(String value) { + addCriterion("COUPON_PASSWORD not like", value, "couponPassword"); + return (Criteria) this; + } + + public Criteria andCouponPasswordIn(List values) { + addCriterion("COUPON_PASSWORD in", values, "couponPassword"); + return (Criteria) this; + } + + public Criteria andCouponPasswordNotIn(List values) { + addCriterion("COUPON_PASSWORD not in", values, "couponPassword"); + return (Criteria) this; + } + + public Criteria andCouponPasswordBetween(String value1, String value2) { + addCriterion("COUPON_PASSWORD between", value1, value2, "couponPassword"); + return (Criteria) this; + } + + public Criteria andCouponPasswordNotBetween(String value1, String value2) { + addCriterion("COUPON_PASSWORD not between", value1, value2, "couponPassword"); + return (Criteria) this; + } + + public Criteria andCouponValueIsNull() { + addCriterion("COUPON_VALUE is null"); + return (Criteria) this; + } + + public Criteria andCouponValueIsNotNull() { + addCriterion("COUPON_VALUE is not null"); + return (Criteria) this; + } + + public Criteria andCouponValueEqualTo(BigDecimal value) { + addCriterion("COUPON_VALUE =", value, "couponValue"); + return (Criteria) this; + } + + public Criteria andCouponValueNotEqualTo(BigDecimal value) { + addCriterion("COUPON_VALUE <>", value, "couponValue"); + return (Criteria) this; + } + + public Criteria andCouponValueGreaterThan(BigDecimal value) { + addCriterion("COUPON_VALUE >", value, "couponValue"); + return (Criteria) this; + } + + public Criteria andCouponValueGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("COUPON_VALUE >=", value, "couponValue"); + return (Criteria) this; + } + + public Criteria andCouponValueLessThan(BigDecimal value) { + addCriterion("COUPON_VALUE <", value, "couponValue"); + return (Criteria) this; + } + + public Criteria andCouponValueLessThanOrEqualTo(BigDecimal value) { + addCriterion("COUPON_VALUE <=", value, "couponValue"); + return (Criteria) this; + } + + public Criteria andCouponValueIn(List values) { + addCriterion("COUPON_VALUE in", values, "couponValue"); + return (Criteria) this; + } + + public Criteria andCouponValueNotIn(List values) { + addCriterion("COUPON_VALUE not in", values, "couponValue"); + return (Criteria) this; + } + + public Criteria andCouponValueBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("COUPON_VALUE between", value1, value2, "couponValue"); + return (Criteria) this; + } + + public Criteria andCouponValueNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("COUPON_VALUE not between", value1, value2, "couponValue"); + return (Criteria) this; + } + + public Criteria andUserPriceIsNull() { + addCriterion("USER_PRICE is null"); + return (Criteria) this; + } + + public Criteria andUserPriceIsNotNull() { + addCriterion("USER_PRICE is not null"); + return (Criteria) this; + } + + public Criteria andUserPriceEqualTo(BigDecimal value) { + addCriterion("USER_PRICE =", value, "userPrice"); + return (Criteria) this; + } + + public Criteria andUserPriceNotEqualTo(BigDecimal value) { + addCriterion("USER_PRICE <>", value, "userPrice"); + return (Criteria) this; + } + + public Criteria andUserPriceGreaterThan(BigDecimal value) { + addCriterion("USER_PRICE >", value, "userPrice"); + return (Criteria) this; + } + + public Criteria andUserPriceGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("USER_PRICE >=", value, "userPrice"); + return (Criteria) this; + } + + public Criteria andUserPriceLessThan(BigDecimal value) { + addCriterion("USER_PRICE <", value, "userPrice"); + return (Criteria) this; + } + + public Criteria andUserPriceLessThanOrEqualTo(BigDecimal value) { + addCriterion("USER_PRICE <=", value, "userPrice"); + return (Criteria) this; + } + + public Criteria andUserPriceIn(List values) { + addCriterion("USER_PRICE in", values, "userPrice"); + return (Criteria) this; + } + + public Criteria andUserPriceNotIn(List values) { + addCriterion("USER_PRICE not in", values, "userPrice"); + return (Criteria) this; + } + + public Criteria andUserPriceBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("USER_PRICE between", value1, value2, "userPrice"); + return (Criteria) this; + } + + public Criteria andUserPriceNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("USER_PRICE not between", value1, value2, "userPrice"); + return (Criteria) this; + } + + public Criteria andCdCompanyIdIsNull() { + addCriterion("CD_COMPANY_ID is null"); + return (Criteria) this; + } + + public Criteria andCdCompanyIdIsNotNull() { + addCriterion("CD_COMPANY_ID is not null"); + return (Criteria) this; + } + + public Criteria andCdCompanyIdEqualTo(Integer value) { + addCriterion("CD_COMPANY_ID =", value, "cdCompanyId"); + return (Criteria) this; + } + + public Criteria andCdCompanyIdNotEqualTo(Integer value) { + addCriterion("CD_COMPANY_ID <>", value, "cdCompanyId"); + return (Criteria) this; + } + + public Criteria andCdCompanyIdGreaterThan(Integer value) { + addCriterion("CD_COMPANY_ID >", value, "cdCompanyId"); + return (Criteria) this; + } + + public Criteria andCdCompanyIdGreaterThanOrEqualTo(Integer value) { + addCriterion("CD_COMPANY_ID >=", value, "cdCompanyId"); + return (Criteria) this; + } + + public Criteria andCdCompanyIdLessThan(Integer value) { + addCriterion("CD_COMPANY_ID <", value, "cdCompanyId"); + return (Criteria) this; + } + + public Criteria andCdCompanyIdLessThanOrEqualTo(Integer value) { + addCriterion("CD_COMPANY_ID <=", value, "cdCompanyId"); + return (Criteria) this; + } + + public Criteria andCdCompanyIdIn(List values) { + addCriterion("CD_COMPANY_ID in", values, "cdCompanyId"); + return (Criteria) this; + } + + public Criteria andCdCompanyIdNotIn(List values) { + addCriterion("CD_COMPANY_ID not in", values, "cdCompanyId"); + return (Criteria) this; + } + + public Criteria andCdCompanyIdBetween(Integer value1, Integer value2) { + addCriterion("CD_COMPANY_ID between", value1, value2, "cdCompanyId"); + return (Criteria) this; + } + + public Criteria andCdCompanyIdNotBetween(Integer value1, Integer value2) { + addCriterion("CD_COMPANY_ID not between", value1, value2, "cdCompanyId"); + return (Criteria) this; + } + + public Criteria andCdUserIdIsNull() { + addCriterion("CD_USER_ID is null"); + return (Criteria) this; + } + + public Criteria andCdUserIdIsNotNull() { + addCriterion("CD_USER_ID is not null"); + return (Criteria) this; + } + + public Criteria andCdUserIdEqualTo(Integer value) { + addCriterion("CD_USER_ID =", value, "cdUserId"); + return (Criteria) this; + } + + public Criteria andCdUserIdNotEqualTo(Integer value) { + addCriterion("CD_USER_ID <>", value, "cdUserId"); + return (Criteria) this; + } + + public Criteria andCdUserIdGreaterThan(Integer value) { + addCriterion("CD_USER_ID >", value, "cdUserId"); + return (Criteria) this; + } + + public Criteria andCdUserIdGreaterThanOrEqualTo(Integer value) { + addCriterion("CD_USER_ID >=", value, "cdUserId"); + return (Criteria) this; + } + + public Criteria andCdUserIdLessThan(Integer value) { + addCriterion("CD_USER_ID <", value, "cdUserId"); + return (Criteria) this; + } + + public Criteria andCdUserIdLessThanOrEqualTo(Integer value) { + addCriterion("CD_USER_ID <=", value, "cdUserId"); + return (Criteria) this; + } + + public Criteria andCdUserIdIn(List values) { + addCriterion("CD_USER_ID in", values, "cdUserId"); + return (Criteria) this; + } + + public Criteria andCdUserIdNotIn(List values) { + addCriterion("CD_USER_ID not in", values, "cdUserId"); + return (Criteria) this; + } + + public Criteria andCdUserIdBetween(Integer value1, Integer value2) { + addCriterion("CD_USER_ID between", value1, value2, "cdUserId"); + return (Criteria) this; + } + + public Criteria andCdUserIdNotBetween(Integer value1, Integer value2) { + addCriterion("CD_USER_ID not between", value1, value2, "cdUserId"); + return (Criteria) this; + } + + public Criteria andCouponDescIsNull() { + addCriterion("COUPON_DESC is null"); + return (Criteria) this; + } + + public Criteria andCouponDescIsNotNull() { + addCriterion("COUPON_DESC is not null"); + return (Criteria) this; + } + + public Criteria andCouponDescEqualTo(String value) { + addCriterion("COUPON_DESC =", value, "couponDesc"); + return (Criteria) this; + } + + public Criteria andCouponDescNotEqualTo(String value) { + addCriterion("COUPON_DESC <>", value, "couponDesc"); + return (Criteria) this; + } + + public Criteria andCouponDescGreaterThan(String value) { + addCriterion("COUPON_DESC >", value, "couponDesc"); + return (Criteria) this; + } + + public Criteria andCouponDescGreaterThanOrEqualTo(String value) { + addCriterion("COUPON_DESC >=", value, "couponDesc"); + return (Criteria) this; + } + + public Criteria andCouponDescLessThan(String value) { + addCriterion("COUPON_DESC <", value, "couponDesc"); + return (Criteria) this; + } + + public Criteria andCouponDescLessThanOrEqualTo(String value) { + addCriterion("COUPON_DESC <=", value, "couponDesc"); + return (Criteria) this; + } + + public Criteria andCouponDescLike(String value) { + addCriterion("COUPON_DESC like", value, "couponDesc"); + return (Criteria) this; + } + + public Criteria andCouponDescNotLike(String value) { + addCriterion("COUPON_DESC not like", value, "couponDesc"); + return (Criteria) this; + } + + public Criteria andCouponDescIn(List values) { + addCriterion("COUPON_DESC in", values, "couponDesc"); + return (Criteria) this; + } + + public Criteria andCouponDescNotIn(List values) { + addCriterion("COUPON_DESC not in", values, "couponDesc"); + return (Criteria) this; + } + + public Criteria andCouponDescBetween(String value1, String value2) { + addCriterion("COUPON_DESC between", value1, value2, "couponDesc"); + return (Criteria) this; + } + + public Criteria andCouponDescNotBetween(String value1, String value2) { + addCriterion("COUPON_DESC not between", value1, value2, "couponDesc"); + return (Criteria) this; + } + + public Criteria andIsUsedIsNull() { + addCriterion("IS_USED is null"); + return (Criteria) this; + } + + public Criteria andIsUsedIsNotNull() { + addCriterion("IS_USED is not null"); + return (Criteria) this; + } + + public Criteria andIsUsedEqualTo(Integer value) { + addCriterion("IS_USED =", value, "isUsed"); + return (Criteria) this; + } + + public Criteria andIsUsedNotEqualTo(Integer value) { + addCriterion("IS_USED <>", value, "isUsed"); + return (Criteria) this; + } + + public Criteria andIsUsedGreaterThan(Integer value) { + addCriterion("IS_USED >", value, "isUsed"); + return (Criteria) this; + } + + public Criteria andIsUsedGreaterThanOrEqualTo(Integer value) { + addCriterion("IS_USED >=", value, "isUsed"); + return (Criteria) this; + } + + public Criteria andIsUsedLessThan(Integer value) { + addCriterion("IS_USED <", value, "isUsed"); + return (Criteria) this; + } + + public Criteria andIsUsedLessThanOrEqualTo(Integer value) { + addCriterion("IS_USED <=", value, "isUsed"); + return (Criteria) this; + } + + public Criteria andIsUsedIn(List values) { + addCriterion("IS_USED in", values, "isUsed"); + return (Criteria) this; + } + + public Criteria andIsUsedNotIn(List values) { + addCriterion("IS_USED not in", values, "isUsed"); + return (Criteria) this; + } + + public Criteria andIsUsedBetween(Integer value1, Integer value2) { + addCriterion("IS_USED between", value1, value2, "isUsed"); + return (Criteria) this; + } + + public Criteria andIsUsedNotBetween(Integer value1, Integer value2) { + addCriterion("IS_USED not between", value1, value2, "isUsed"); + return (Criteria) this; + } + + public Criteria andIsUsefulIsNull() { + addCriterion("IS_USEFUL is null"); + return (Criteria) this; + } + + public Criteria andIsUsefulIsNotNull() { + addCriterion("IS_USEFUL is not null"); + return (Criteria) this; + } + + public Criteria andIsUsefulEqualTo(Integer value) { + addCriterion("IS_USEFUL =", value, "isUseful"); + return (Criteria) this; + } + + public Criteria andIsUsefulNotEqualTo(Integer value) { + addCriterion("IS_USEFUL <>", value, "isUseful"); + return (Criteria) this; + } + + public Criteria andIsUsefulGreaterThan(Integer value) { + addCriterion("IS_USEFUL >", value, "isUseful"); + return (Criteria) this; + } + + public Criteria andIsUsefulGreaterThanOrEqualTo(Integer value) { + addCriterion("IS_USEFUL >=", value, "isUseful"); + return (Criteria) this; + } + + public Criteria andIsUsefulLessThan(Integer value) { + addCriterion("IS_USEFUL <", value, "isUseful"); + return (Criteria) this; + } + + public Criteria andIsUsefulLessThanOrEqualTo(Integer value) { + addCriterion("IS_USEFUL <=", value, "isUseful"); + return (Criteria) this; + } + + public Criteria andIsUsefulIn(List values) { + addCriterion("IS_USEFUL in", values, "isUseful"); + return (Criteria) this; + } + + public Criteria andIsUsefulNotIn(List values) { + addCriterion("IS_USEFUL not in", values, "isUseful"); + return (Criteria) this; + } + + public Criteria andIsUsefulBetween(Integer value1, Integer value2) { + addCriterion("IS_USEFUL between", value1, value2, "isUseful"); + return (Criteria) this; + } + + public Criteria andIsUsefulNotBetween(Integer value1, Integer value2) { + addCriterion("IS_USEFUL not between", value1, value2, "isUseful"); + return (Criteria) this; + } + + public Criteria andIsGiftIsNull() { + addCriterion("IS_GIFT is null"); + return (Criteria) this; + } + + public Criteria andIsGiftIsNotNull() { + addCriterion("IS_GIFT is not null"); + return (Criteria) this; + } + + public Criteria andIsGiftEqualTo(Integer value) { + addCriterion("IS_GIFT =", value, "isGift"); + return (Criteria) this; + } + + public Criteria andIsGiftNotEqualTo(Integer value) { + addCriterion("IS_GIFT <>", value, "isGift"); + return (Criteria) this; + } + + public Criteria andIsGiftGreaterThan(Integer value) { + addCriterion("IS_GIFT >", value, "isGift"); + return (Criteria) this; + } + + public Criteria andIsGiftGreaterThanOrEqualTo(Integer value) { + addCriterion("IS_GIFT >=", value, "isGift"); + return (Criteria) this; + } + + public Criteria andIsGiftLessThan(Integer value) { + addCriterion("IS_GIFT <", value, "isGift"); + return (Criteria) this; + } + + public Criteria andIsGiftLessThanOrEqualTo(Integer value) { + addCriterion("IS_GIFT <=", value, "isGift"); + return (Criteria) this; + } + + public Criteria andIsGiftIn(List values) { + addCriterion("IS_GIFT in", values, "isGift"); + return (Criteria) this; + } + + public Criteria andIsGiftNotIn(List values) { + addCriterion("IS_GIFT not in", values, "isGift"); + return (Criteria) this; + } + + public Criteria andIsGiftBetween(Integer value1, Integer value2) { + addCriterion("IS_GIFT between", value1, value2, "isGift"); + return (Criteria) this; + } + + public Criteria andIsGiftNotBetween(Integer value1, Integer value2) { + addCriterion("IS_GIFT not between", value1, value2, "isGift"); + return (Criteria) this; + } + + public Criteria andIsSendIsNull() { + addCriterion("IS_SEND is null"); + return (Criteria) this; + } + + public Criteria andIsSendIsNotNull() { + addCriterion("IS_SEND is not null"); + return (Criteria) this; + } + + public Criteria andIsSendEqualTo(Integer value) { + addCriterion("IS_SEND =", value, "isSend"); + return (Criteria) this; + } + + public Criteria andIsSendNotEqualTo(Integer value) { + addCriterion("IS_SEND <>", value, "isSend"); + return (Criteria) this; + } + + public Criteria andIsSendGreaterThan(Integer value) { + addCriterion("IS_SEND >", value, "isSend"); + return (Criteria) this; + } + + public Criteria andIsSendGreaterThanOrEqualTo(Integer value) { + addCriterion("IS_SEND >=", value, "isSend"); + return (Criteria) this; + } + + public Criteria andIsSendLessThan(Integer value) { + addCriterion("IS_SEND <", value, "isSend"); + return (Criteria) this; + } + + public Criteria andIsSendLessThanOrEqualTo(Integer value) { + addCriterion("IS_SEND <=", value, "isSend"); + return (Criteria) this; + } + + public Criteria andIsSendIn(List values) { + addCriterion("IS_SEND in", values, "isSend"); + return (Criteria) this; + } + + public Criteria andIsSendNotIn(List values) { + addCriterion("IS_SEND not in", values, "isSend"); + return (Criteria) this; + } + + public Criteria andIsSendBetween(Integer value1, Integer value2) { + addCriterion("IS_SEND between", value1, value2, "isSend"); + return (Criteria) this; + } + + public Criteria andIsSendNotBetween(Integer value1, Integer value2) { + addCriterion("IS_SEND not between", value1, value2, "isSend"); + return (Criteria) this; + } + + public Criteria andPaymentTypeIsNull() { + addCriterion("PAYMENT_TYPE is null"); + return (Criteria) this; + } + + public Criteria andPaymentTypeIsNotNull() { + addCriterion("PAYMENT_TYPE is not null"); + return (Criteria) this; + } + + public Criteria andPaymentTypeEqualTo(Integer value) { + addCriterion("PAYMENT_TYPE =", value, "paymentType"); + return (Criteria) this; + } + + public Criteria andPaymentTypeNotEqualTo(Integer value) { + addCriterion("PAYMENT_TYPE <>", value, "paymentType"); + return (Criteria) this; + } + + public Criteria andPaymentTypeGreaterThan(Integer value) { + addCriterion("PAYMENT_TYPE >", value, "paymentType"); + return (Criteria) this; + } + + public Criteria andPaymentTypeGreaterThanOrEqualTo(Integer value) { + addCriterion("PAYMENT_TYPE >=", value, "paymentType"); + return (Criteria) this; + } + + public Criteria andPaymentTypeLessThan(Integer value) { + addCriterion("PAYMENT_TYPE <", value, "paymentType"); + return (Criteria) this; + } + + public Criteria andPaymentTypeLessThanOrEqualTo(Integer value) { + addCriterion("PAYMENT_TYPE <=", value, "paymentType"); + return (Criteria) this; + } + + public Criteria andPaymentTypeIn(List values) { + addCriterion("PAYMENT_TYPE in", values, "paymentType"); + return (Criteria) this; + } + + public Criteria andPaymentTypeNotIn(List values) { + addCriterion("PAYMENT_TYPE not in", values, "paymentType"); + return (Criteria) this; + } + + public Criteria andPaymentTypeBetween(Integer value1, Integer value2) { + addCriterion("PAYMENT_TYPE between", value1, value2, "paymentType"); + return (Criteria) this; + } + + public Criteria andPaymentTypeNotBetween(Integer value1, Integer value2) { + addCriterion("PAYMENT_TYPE not between", value1, value2, "paymentType"); + return (Criteria) this; + } + + public Criteria andBeginTimeIsNull() { + addCriterion("BEGIN_TIME is null"); + return (Criteria) this; + } + + public Criteria andBeginTimeIsNotNull() { + addCriterion("BEGIN_TIME is not null"); + return (Criteria) this; + } + + public Criteria andBeginTimeEqualTo(Date value) { + addCriterion("BEGIN_TIME =", value, "beginTime"); + return (Criteria) this; + } + + public Criteria andBeginTimeNotEqualTo(Date value) { + addCriterion("BEGIN_TIME <>", value, "beginTime"); + return (Criteria) this; + } + + public Criteria andBeginTimeGreaterThan(Date value) { + addCriterion("BEGIN_TIME >", value, "beginTime"); + return (Criteria) this; + } + + public Criteria andBeginTimeGreaterThanOrEqualTo(Date value) { + addCriterion("BEGIN_TIME >=", value, "beginTime"); + return (Criteria) this; + } + + public Criteria andBeginTimeLessThan(Date value) { + addCriterion("BEGIN_TIME <", value, "beginTime"); + return (Criteria) this; + } + + public Criteria andBeginTimeLessThanOrEqualTo(Date value) { + addCriterion("BEGIN_TIME <=", value, "beginTime"); + return (Criteria) this; + } + + public Criteria andBeginTimeIn(List values) { + addCriterion("BEGIN_TIME in", values, "beginTime"); + return (Criteria) this; + } + + public Criteria andBeginTimeNotIn(List values) { + addCriterion("BEGIN_TIME not in", values, "beginTime"); + return (Criteria) this; + } + + public Criteria andBeginTimeBetween(Date value1, Date value2) { + addCriterion("BEGIN_TIME between", value1, value2, "beginTime"); + return (Criteria) this; + } + + public Criteria andBeginTimeNotBetween(Date value1, Date value2) { + addCriterion("BEGIN_TIME not between", value1, value2, "beginTime"); + return (Criteria) this; + } + + public Criteria andEndTimeIsNull() { + addCriterion("END_TIME is null"); + return (Criteria) this; + } + + public Criteria andEndTimeIsNotNull() { + addCriterion("END_TIME is not null"); + return (Criteria) this; + } + + public Criteria andEndTimeEqualTo(Date value) { + addCriterion("END_TIME =", value, "endTime"); + return (Criteria) this; + } + + public Criteria andEndTimeNotEqualTo(Date value) { + addCriterion("END_TIME <>", value, "endTime"); + return (Criteria) this; + } + + public Criteria andEndTimeGreaterThan(Date value) { + addCriterion("END_TIME >", value, "endTime"); + return (Criteria) this; + } + + public Criteria andEndTimeGreaterThanOrEqualTo(Date value) { + addCriterion("END_TIME >=", value, "endTime"); + return (Criteria) this; + } + + public Criteria andEndTimeLessThan(Date value) { + addCriterion("END_TIME <", value, "endTime"); + return (Criteria) this; + } + + public Criteria andEndTimeLessThanOrEqualTo(Date value) { + addCriterion("END_TIME <=", value, "endTime"); + return (Criteria) this; + } + + public Criteria andEndTimeIn(List values) { + addCriterion("END_TIME in", values, "endTime"); + return (Criteria) this; + } + + public Criteria andEndTimeNotIn(List values) { + addCriterion("END_TIME not in", values, "endTime"); + return (Criteria) this; + } + + public Criteria andEndTimeBetween(Date value1, Date value2) { + addCriterion("END_TIME between", value1, value2, "endTime"); + return (Criteria) this; + } + + public Criteria andEndTimeNotBetween(Date value1, Date value2) { + addCriterion("END_TIME not between", value1, value2, "endTime"); + return (Criteria) this; + } + + public Criteria andNotesIsNull() { + addCriterion("NOTES is null"); + return (Criteria) this; + } + + public Criteria andNotesIsNotNull() { + addCriterion("NOTES is not null"); + return (Criteria) this; + } + + public Criteria andNotesEqualTo(String value) { + addCriterion("NOTES =", value, "notes"); + return (Criteria) this; + } + + public Criteria andNotesNotEqualTo(String value) { + addCriterion("NOTES <>", value, "notes"); + return (Criteria) this; + } + + public Criteria andNotesGreaterThan(String value) { + addCriterion("NOTES >", value, "notes"); + return (Criteria) this; + } + + public Criteria andNotesGreaterThanOrEqualTo(String value) { + addCriterion("NOTES >=", value, "notes"); + return (Criteria) this; + } + + public Criteria andNotesLessThan(String value) { + addCriterion("NOTES <", value, "notes"); + return (Criteria) this; + } + + public Criteria andNotesLessThanOrEqualTo(String value) { + addCriterion("NOTES <=", value, "notes"); + return (Criteria) this; + } + + public Criteria andNotesLike(String value) { + addCriterion("NOTES like", value, "notes"); + return (Criteria) this; + } + + public Criteria andNotesNotLike(String value) { + addCriterion("NOTES not like", value, "notes"); + return (Criteria) this; + } + + public Criteria andNotesIn(List values) { + addCriterion("NOTES in", values, "notes"); + return (Criteria) this; + } + + public Criteria andNotesNotIn(List values) { + addCriterion("NOTES not in", values, "notes"); + return (Criteria) this; + } + + public Criteria andNotesBetween(String value1, String value2) { + addCriterion("NOTES between", value1, value2, "notes"); + return (Criteria) this; + } + + public Criteria andNotesNotBetween(String value1, String value2) { + addCriterion("NOTES not between", value1, value2, "notes"); + return (Criteria) this; + } + + public Criteria andIsOverIsNull() { + addCriterion("IS_OVER is null"); + return (Criteria) this; + } + + public Criteria andIsOverIsNotNull() { + addCriterion("IS_OVER is not null"); + return (Criteria) this; + } + + public Criteria andIsOverEqualTo(Integer value) { + addCriterion("IS_OVER =", value, "isOver"); + return (Criteria) this; + } + + public Criteria andIsOverNotEqualTo(Integer value) { + addCriterion("IS_OVER <>", value, "isOver"); + return (Criteria) this; + } + + public Criteria andIsOverGreaterThan(Integer value) { + addCriterion("IS_OVER >", value, "isOver"); + return (Criteria) this; + } + + public Criteria andIsOverGreaterThanOrEqualTo(Integer value) { + addCriterion("IS_OVER >=", value, "isOver"); + return (Criteria) this; + } + + public Criteria andIsOverLessThan(Integer value) { + addCriterion("IS_OVER <", value, "isOver"); + return (Criteria) this; + } + + public Criteria andIsOverLessThanOrEqualTo(Integer value) { + addCriterion("IS_OVER <=", value, "isOver"); + return (Criteria) this; + } + + public Criteria andIsOverIn(List values) { + addCriterion("IS_OVER in", values, "isOver"); + return (Criteria) this; + } + + public Criteria andIsOverNotIn(List values) { + addCriterion("IS_OVER not in", values, "isOver"); + return (Criteria) this; + } + + public Criteria andIsOverBetween(Integer value1, Integer value2) { + addCriterion("IS_OVER between", value1, value2, "isOver"); + return (Criteria) this; + } + + public Criteria andIsOverNotBetween(Integer value1, Integer value2) { + addCriterion("IS_OVER not between", value1, value2, "isOver"); + return (Criteria) this; + } + + public Criteria andAuditDateIsNull() { + addCriterion("AUDIT_DATE is null"); + return (Criteria) this; + } + + public Criteria andAuditDateIsNotNull() { + addCriterion("AUDIT_DATE is not null"); + return (Criteria) this; + } + + public Criteria andAuditDateEqualTo(Date value) { + addCriterion("AUDIT_DATE =", value, "auditDate"); + return (Criteria) this; + } + + public Criteria andAuditDateNotEqualTo(Date value) { + addCriterion("AUDIT_DATE <>", value, "auditDate"); + return (Criteria) this; + } + + public Criteria andAuditDateGreaterThan(Date value) { + addCriterion("AUDIT_DATE >", value, "auditDate"); + return (Criteria) this; + } + + public Criteria andAuditDateGreaterThanOrEqualTo(Date value) { + addCriterion("AUDIT_DATE >=", value, "auditDate"); + return (Criteria) this; + } + + public Criteria andAuditDateLessThan(Date value) { + addCriterion("AUDIT_DATE <", value, "auditDate"); + return (Criteria) this; + } + + public Criteria andAuditDateLessThanOrEqualTo(Date value) { + addCriterion("AUDIT_DATE <=", value, "auditDate"); + return (Criteria) this; + } + + public Criteria andAuditDateIn(List values) { + addCriterion("AUDIT_DATE in", values, "auditDate"); + return (Criteria) this; + } + + public Criteria andAuditDateNotIn(List values) { + addCriterion("AUDIT_DATE not in", values, "auditDate"); + return (Criteria) this; + } + + public Criteria andAuditDateBetween(Date value1, Date value2) { + addCriterion("AUDIT_DATE between", value1, value2, "auditDate"); + return (Criteria) this; + } + + public Criteria andAuditDateNotBetween(Date value1, Date value2) { + addCriterion("AUDIT_DATE not between", value1, value2, "auditDate"); + return (Criteria) this; + } + + public Criteria andBatchIsNull() { + addCriterion("BATCH is null"); + return (Criteria) this; + } + + public Criteria andBatchIsNotNull() { + addCriterion("BATCH is not null"); + return (Criteria) this; + } + + public Criteria andBatchEqualTo(String value) { + addCriterion("BATCH =", value, "batch"); + return (Criteria) this; + } + + public Criteria andBatchNotEqualTo(String value) { + addCriterion("BATCH <>", value, "batch"); + return (Criteria) this; + } + + public Criteria andBatchGreaterThan(String value) { + addCriterion("BATCH >", value, "batch"); + return (Criteria) this; + } + + public Criteria andBatchGreaterThanOrEqualTo(String value) { + addCriterion("BATCH >=", value, "batch"); + return (Criteria) this; + } + + public Criteria andBatchLessThan(String value) { + addCriterion("BATCH <", value, "batch"); + return (Criteria) this; + } + + public Criteria andBatchLessThanOrEqualTo(String value) { + addCriterion("BATCH <=", value, "batch"); + return (Criteria) this; + } + + public Criteria andBatchLike(String value) { + addCriterion("BATCH like", value, "batch"); + return (Criteria) this; + } + + public Criteria andBatchNotLike(String value) { + addCriterion("BATCH not like", value, "batch"); + return (Criteria) this; + } + + public Criteria andBatchIn(List values) { + addCriterion("BATCH in", values, "batch"); + return (Criteria) this; + } + + public Criteria andBatchNotIn(List values) { + addCriterion("BATCH not in", values, "batch"); + return (Criteria) this; + } + + public Criteria andBatchBetween(String value1, String value2) { + addCriterion("BATCH between", value1, value2, "batch"); + return (Criteria) this; + } + + public Criteria andBatchNotBetween(String value1, String value2) { + addCriterion("BATCH not between", value1, value2, "batch"); + return (Criteria) this; + } + + public Criteria andUsefulDateIsNull() { + addCriterion("USEFUL_DATE is null"); + return (Criteria) this; + } + + public Criteria andUsefulDateIsNotNull() { + addCriterion("USEFUL_DATE is not null"); + return (Criteria) this; + } + + public Criteria andUsefulDateEqualTo(Date value) { + addCriterion("USEFUL_DATE =", value, "usefulDate"); + return (Criteria) this; + } + + public Criteria andUsefulDateNotEqualTo(Date value) { + addCriterion("USEFUL_DATE <>", value, "usefulDate"); + return (Criteria) this; + } + + public Criteria andUsefulDateGreaterThan(Date value) { + addCriterion("USEFUL_DATE >", value, "usefulDate"); + return (Criteria) this; + } + + public Criteria andUsefulDateGreaterThanOrEqualTo(Date value) { + addCriterion("USEFUL_DATE >=", value, "usefulDate"); + return (Criteria) this; + } + + public Criteria andUsefulDateLessThan(Date value) { + addCriterion("USEFUL_DATE <", value, "usefulDate"); + return (Criteria) this; + } + + public Criteria andUsefulDateLessThanOrEqualTo(Date value) { + addCriterion("USEFUL_DATE <=", value, "usefulDate"); + return (Criteria) this; + } + + public Criteria andUsefulDateIn(List values) { + addCriterion("USEFUL_DATE in", values, "usefulDate"); + return (Criteria) this; + } + + public Criteria andUsefulDateNotIn(List values) { + addCriterion("USEFUL_DATE not in", values, "usefulDate"); + return (Criteria) this; + } + + public Criteria andUsefulDateBetween(Date value1, Date value2) { + addCriterion("USEFUL_DATE between", value1, value2, "usefulDate"); + return (Criteria) this; + } + + public Criteria andUsefulDateNotBetween(Date value1, Date value2) { + addCriterion("USEFUL_DATE not between", value1, value2, "usefulDate"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/entity/CdCouponRef.java b/src/main/java/com/xmomen/module/base/entity/CdCouponRef.java new file mode 100644 index 0000000..8d0e05d --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/CdCouponRef.java @@ -0,0 +1,129 @@ +package com.xmomen.module.base.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "cd_coupon_ref") +public class CdCouponRef extends BaseMybatisModel { + /** + * + */ + private Integer id; + + /** + * 卡劵 + */ + private Integer cdCouponId; + + /** + * 卡号 + */ + private String couponNumber; + + /** + * 拓展类型 + */ + private String refType; + + /** + * 拓展描述 + */ + private String refName; + + /** + * 拓展值 + */ + private String refValue; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "CD_COUPON_ID") + public Integer getCdCouponId() { + return cdCouponId; + } + + public void setCdCouponId(Integer cdCouponId) { + this.cdCouponId = cdCouponId; + if(cdCouponId == null){ + removeValidField("cdCouponId"); + return; + } + addValidField("cdCouponId"); + } + + @Column(name = "COUPON_NUMBER") + public String getCouponNumber() { + return couponNumber; + } + + public void setCouponNumber(String couponNumber) { + this.couponNumber = couponNumber; + if(couponNumber == null){ + removeValidField("couponNumber"); + return; + } + addValidField("couponNumber"); + } + + @Column(name = "REF_TYPE") + public String getRefType() { + return refType; + } + + public void setRefType(String refType) { + this.refType = refType; + if(refType == null){ + removeValidField("refType"); + return; + } + addValidField("refType"); + } + + @Column(name = "REF_NAME") + public String getRefName() { + return refName; + } + + public void setRefName(String refName) { + this.refName = refName; + if(refName == null){ + removeValidField("refName"); + return; + } + addValidField("refName"); + } + + @Column(name = "REF_VALUE") + public String getRefValue() { + return refValue; + } + + public void setRefValue(String refValue) { + this.refValue = refValue; + if(refValue == null){ + removeValidField("refValue"); + return; + } + addValidField("refValue"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/entity/CdItem.java b/src/main/java/com/xmomen/module/base/entity/CdItem.java new file mode 100644 index 0000000..c1eb880 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/CdItem.java @@ -0,0 +1,511 @@ +package com.xmomen.module.base.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import java.math.BigDecimal; +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "cd_item") +public class CdItem extends BaseMybatisModel { + /** + * + */ + private Integer id; + + /** + * 产品编号 + */ + private String itemCode; + + /** + * 产品归属的类别 + */ + private Integer cdCategoryId; + + /** + * 产品名称 + */ + private String itemName; + + /** + * 产品描述 + */ + private String itemDescribe; + + /** + * 产品类型(1-常规商品,2-组合商品) + */ + private Integer itemType; + + /** + * 生产地 + */ + private String yieldly; + + /** + * 产品规格 + */ + private String spec; + + /** + * 基础价格 + */ + private BigDecimal basePrice; + + /** + * 会员价格 + */ + private BigDecimal memberPrice; + + /** + * 计价方式 + */ + private String pricingManner; + + /** + * 0-下架 1-上架 + */ + private Integer sellStatus; + + /** + * 销售单位 + */ + private String sellUnit; + + /** + * 销售金额 + */ + private BigDecimal sellPrice; + + /** + * 0-未审核,1-审核 + */ + private Integer isAudit; + + /** + * 录入时间 + */ + private Date createDateTime; + + /** + * 录入人 + */ + private String createUserCode; + + /** + * 采摘人 + */ + private String caizaiUser; + + /** + * 检测人 + */ + private String jianceUser; + + /** + * 农残率 + */ + private String nongCanLv; + + /** + * 营养成分 + */ + private String yiYangChenFen; + + /** + * 保质期 + */ + private Integer baoZhiQi; + + /** + * 适应人群 + */ + private String shiYiRenQun; + + /** + * 限时抢购 + */ + private Integer xianShiQiangGou; + + /** + * 新品尝鲜 + */ + private Integer xinPinChangXian; + + /** + * 热卖推荐 + */ + private Integer reMaiTuiJian; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "ITEM_CODE") + public String getItemCode() { + return itemCode; + } + + public void setItemCode(String itemCode) { + this.itemCode = itemCode; + if(itemCode == null){ + removeValidField("itemCode"); + return; + } + addValidField("itemCode"); + } + + @Column(name = "CD_CATEGORY_ID") + public Integer getCdCategoryId() { + return cdCategoryId; + } + + public void setCdCategoryId(Integer cdCategoryId) { + this.cdCategoryId = cdCategoryId; + if(cdCategoryId == null){ + removeValidField("cdCategoryId"); + return; + } + addValidField("cdCategoryId"); + } + + @Column(name = "ITEM_NAME") + public String getItemName() { + return itemName; + } + + public void setItemName(String itemName) { + this.itemName = itemName; + if(itemName == null){ + removeValidField("itemName"); + return; + } + addValidField("itemName"); + } + + @Column(name = "ITEM_DESCRIBE") + public String getItemDescribe() { + return itemDescribe; + } + + public void setItemDescribe(String itemDescribe) { + this.itemDescribe = itemDescribe; + if(itemDescribe == null){ + removeValidField("itemDescribe"); + return; + } + addValidField("itemDescribe"); + } + + @Column(name = "ITEM_TYPE") + public Integer getItemType() { + return itemType; + } + + public void setItemType(Integer itemType) { + this.itemType = itemType; + if(itemType == null){ + removeValidField("itemType"); + return; + } + addValidField("itemType"); + } + + @Column(name = "YIELDLY") + public String getYieldly() { + return yieldly; + } + + public void setYieldly(String yieldly) { + this.yieldly = yieldly; + if(yieldly == null){ + removeValidField("yieldly"); + return; + } + addValidField("yieldly"); + } + + @Column(name = "SPEC") + public String getSpec() { + return spec; + } + + public void setSpec(String spec) { + this.spec = spec; + if(spec == null){ + removeValidField("spec"); + return; + } + addValidField("spec"); + } + + @Column(name = "BASE_PRICE") + public BigDecimal getBasePrice() { + return basePrice; + } + + public void setBasePrice(BigDecimal basePrice) { + this.basePrice = basePrice; + if(basePrice == null){ + removeValidField("basePrice"); + return; + } + addValidField("basePrice"); + } + + @Column(name = "MEMBER_PRICE") + public BigDecimal getMemberPrice() { + return memberPrice; + } + + public void setMemberPrice(BigDecimal memberPrice) { + this.memberPrice = memberPrice; + if(memberPrice == null){ + removeValidField("memberPrice"); + return; + } + addValidField("memberPrice"); + } + + @Column(name = "PRICING_MANNER") + public String getPricingManner() { + return pricingManner; + } + + public void setPricingManner(String pricingManner) { + this.pricingManner = pricingManner; + if(pricingManner == null){ + removeValidField("pricingManner"); + return; + } + addValidField("pricingManner"); + } + + @Column(name = "SELL_STATUS") + public Integer getSellStatus() { + return sellStatus; + } + + public void setSellStatus(Integer sellStatus) { + this.sellStatus = sellStatus; + if(sellStatus == null){ + removeValidField("sellStatus"); + return; + } + addValidField("sellStatus"); + } + + @Column(name = "SELL_UNIT") + public String getSellUnit() { + return sellUnit; + } + + public void setSellUnit(String sellUnit) { + this.sellUnit = sellUnit; + if(sellUnit == null){ + removeValidField("sellUnit"); + return; + } + addValidField("sellUnit"); + } + + @Column(name = "SELL_PRICE") + public BigDecimal getSellPrice() { + return sellPrice; + } + + public void setSellPrice(BigDecimal sellPrice) { + this.sellPrice = sellPrice; + if(sellPrice == null){ + removeValidField("sellPrice"); + return; + } + addValidField("sellPrice"); + } + + @Column(name = "IS_AUDIT") + public Integer getIsAudit() { + return isAudit; + } + + public void setIsAudit(Integer isAudit) { + this.isAudit = isAudit; + if(isAudit == null){ + removeValidField("isAudit"); + return; + } + addValidField("isAudit"); + } + + @Column(name = "CREATE_DATE_TIME") + public Date getCreateDateTime() { + return createDateTime; + } + + public void setCreateDateTime(Date createDateTime) { + this.createDateTime = createDateTime; + if(createDateTime == null){ + removeValidField("createDateTime"); + return; + } + addValidField("createDateTime"); + } + + @Column(name = "CREATE_USER_CODE") + public String getCreateUserCode() { + return createUserCode; + } + + public void setCreateUserCode(String createUserCode) { + this.createUserCode = createUserCode; + if(createUserCode == null){ + removeValidField("createUserCode"); + return; + } + addValidField("createUserCode"); + } + + @Column(name = "CAIZAI_USER") + public String getCaizaiUser() { + return caizaiUser; + } + + public void setCaizaiUser(String caizaiUser) { + this.caizaiUser = caizaiUser; + if(caizaiUser == null){ + removeValidField("caizaiUser"); + return; + } + addValidField("caizaiUser"); + } + + @Column(name = "JIANCE_USER") + public String getJianceUser() { + return jianceUser; + } + + public void setJianceUser(String jianceUser) { + this.jianceUser = jianceUser; + if(jianceUser == null){ + removeValidField("jianceUser"); + return; + } + addValidField("jianceUser"); + } + + @Column(name = "NONG_CAN_LV") + public String getNongCanLv() { + return nongCanLv; + } + + public void setNongCanLv(String nongCanLv) { + this.nongCanLv = nongCanLv; + if(nongCanLv == null){ + removeValidField("nongCanLv"); + return; + } + addValidField("nongCanLv"); + } + + @Column(name = "YI_YANG_CHEN_FEN") + public String getYiYangChenFen() { + return yiYangChenFen; + } + + public void setYiYangChenFen(String yiYangChenFen) { + this.yiYangChenFen = yiYangChenFen; + if(yiYangChenFen == null){ + removeValidField("yiYangChenFen"); + return; + } + addValidField("yiYangChenFen"); + } + + @Column(name = "BAO_ZHI_QI") + public Integer getBaoZhiQi() { + return baoZhiQi; + } + + public void setBaoZhiQi(Integer baoZhiQi) { + this.baoZhiQi = baoZhiQi; + if(baoZhiQi == null){ + removeValidField("baoZhiQi"); + return; + } + addValidField("baoZhiQi"); + } + + @Column(name = "SHI_YI_REN_QUN") + public String getShiYiRenQun() { + return shiYiRenQun; + } + + public void setShiYiRenQun(String shiYiRenQun) { + this.shiYiRenQun = shiYiRenQun; + if(shiYiRenQun == null){ + removeValidField("shiYiRenQun"); + return; + } + addValidField("shiYiRenQun"); + } + + @Column(name = "XIAN_SHI_QIANG_GOU") + public Integer getXianShiQiangGou() { + return xianShiQiangGou; + } + + public void setXianShiQiangGou(Integer xianShiQiangGou) { + this.xianShiQiangGou = xianShiQiangGou; + if(xianShiQiangGou == null){ + removeValidField("xianShiQiangGou"); + return; + } + addValidField("xianShiQiangGou"); + } + + @Column(name = "XIN_PIN_CHANG_XIAN") + public Integer getXinPinChangXian() { + return xinPinChangXian; + } + + public void setXinPinChangXian(Integer xinPinChangXian) { + this.xinPinChangXian = xinPinChangXian; + if(xinPinChangXian == null){ + removeValidField("xinPinChangXian"); + return; + } + addValidField("xinPinChangXian"); + } + + @Column(name = "RE_MAI_TUI_JIAN") + public Integer getReMaiTuiJian() { + return reMaiTuiJian; + } + + public void setReMaiTuiJian(Integer reMaiTuiJian) { + this.reMaiTuiJian = reMaiTuiJian; + if(reMaiTuiJian == null){ + removeValidField("reMaiTuiJian"); + return; + } + addValidField("reMaiTuiJian"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/entity/CdItemDetail.java b/src/main/java/com/xmomen/module/base/entity/CdItemDetail.java new file mode 100644 index 0000000..4dd44be --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/CdItemDetail.java @@ -0,0 +1,72 @@ +package com.xmomen.module.base.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "cd_item_detail") +public class CdItemDetail extends BaseMybatisModel { + /** + * 主键 + */ + private Integer id; + + /** + * 商品ID + */ + private Integer cdItemId; + + /** + * 商品的详细内容 + */ + private String itemDetailContent; + + @Column(name = "id") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "cd_item_id") + public Integer getCdItemId() { + return cdItemId; + } + + public void setCdItemId(Integer cdItemId) { + this.cdItemId = cdItemId; + if(cdItemId == null){ + removeValidField("cdItemId"); + return; + } + addValidField("cdItemId"); + } + + @Column(name = "item_detail_content") + public String getItemDetailContent() { + return itemDetailContent; + } + + public void setItemDetailContent(String itemDetailContent) { + this.itemDetailContent = itemDetailContent; + if(itemDetailContent == null){ + removeValidField("itemDetailContent"); + return; + } + addValidField("itemDetailContent"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/entity/CdItemExample.java b/src/main/java/com/xmomen/module/base/entity/CdItemExample.java new file mode 100644 index 0000000..bcbc64a --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/CdItemExample.java @@ -0,0 +1,1893 @@ +package com.xmomen.module.base.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisExample; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class CdItemExample extends BaseMybatisExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public CdItemExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("ID is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("ID is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Integer value) { + addCriterion("ID =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Integer value) { + addCriterion("ID <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Integer value) { + addCriterion("ID >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Integer value) { + addCriterion("ID >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Integer value) { + addCriterion("ID <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Integer value) { + addCriterion("ID <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("ID in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("ID not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Integer value1, Integer value2) { + addCriterion("ID between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Integer value1, Integer value2) { + addCriterion("ID not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andItemCodeIsNull() { + addCriterion("ITEM_CODE is null"); + return (Criteria) this; + } + + public Criteria andItemCodeIsNotNull() { + addCriterion("ITEM_CODE is not null"); + return (Criteria) this; + } + + public Criteria andItemCodeEqualTo(String value) { + addCriterion("ITEM_CODE =", value, "itemCode"); + return (Criteria) this; + } + + public Criteria andItemCodeNotEqualTo(String value) { + addCriterion("ITEM_CODE <>", value, "itemCode"); + return (Criteria) this; + } + + public Criteria andItemCodeGreaterThan(String value) { + addCriterion("ITEM_CODE >", value, "itemCode"); + return (Criteria) this; + } + + public Criteria andItemCodeGreaterThanOrEqualTo(String value) { + addCriterion("ITEM_CODE >=", value, "itemCode"); + return (Criteria) this; + } + + public Criteria andItemCodeLessThan(String value) { + addCriterion("ITEM_CODE <", value, "itemCode"); + return (Criteria) this; + } + + public Criteria andItemCodeLessThanOrEqualTo(String value) { + addCriterion("ITEM_CODE <=", value, "itemCode"); + return (Criteria) this; + } + + public Criteria andItemCodeLike(String value) { + addCriterion("ITEM_CODE like", value, "itemCode"); + return (Criteria) this; + } + + public Criteria andItemCodeNotLike(String value) { + addCriterion("ITEM_CODE not like", value, "itemCode"); + return (Criteria) this; + } + + public Criteria andItemCodeIn(List values) { + addCriterion("ITEM_CODE in", values, "itemCode"); + return (Criteria) this; + } + + public Criteria andItemCodeNotIn(List values) { + addCriterion("ITEM_CODE not in", values, "itemCode"); + return (Criteria) this; + } + + public Criteria andItemCodeBetween(String value1, String value2) { + addCriterion("ITEM_CODE between", value1, value2, "itemCode"); + return (Criteria) this; + } + + public Criteria andItemCodeNotBetween(String value1, String value2) { + addCriterion("ITEM_CODE not between", value1, value2, "itemCode"); + return (Criteria) this; + } + + public Criteria andCdCategoryIdIsNull() { + addCriterion("CD_CATEGORY_ID is null"); + return (Criteria) this; + } + + public Criteria andCdCategoryIdIsNotNull() { + addCriterion("CD_CATEGORY_ID is not null"); + return (Criteria) this; + } + + public Criteria andCdCategoryIdEqualTo(Integer value) { + addCriterion("CD_CATEGORY_ID =", value, "cdCategoryId"); + return (Criteria) this; + } + + public Criteria andCdCategoryIdNotEqualTo(Integer value) { + addCriterion("CD_CATEGORY_ID <>", value, "cdCategoryId"); + return (Criteria) this; + } + + public Criteria andCdCategoryIdGreaterThan(Integer value) { + addCriterion("CD_CATEGORY_ID >", value, "cdCategoryId"); + return (Criteria) this; + } + + public Criteria andCdCategoryIdGreaterThanOrEqualTo(Integer value) { + addCriterion("CD_CATEGORY_ID >=", value, "cdCategoryId"); + return (Criteria) this; + } + + public Criteria andCdCategoryIdLessThan(Integer value) { + addCriterion("CD_CATEGORY_ID <", value, "cdCategoryId"); + return (Criteria) this; + } + + public Criteria andCdCategoryIdLessThanOrEqualTo(Integer value) { + addCriterion("CD_CATEGORY_ID <=", value, "cdCategoryId"); + return (Criteria) this; + } + + public Criteria andCdCategoryIdIn(List values) { + addCriterion("CD_CATEGORY_ID in", values, "cdCategoryId"); + return (Criteria) this; + } + + public Criteria andCdCategoryIdNotIn(List values) { + addCriterion("CD_CATEGORY_ID not in", values, "cdCategoryId"); + return (Criteria) this; + } + + public Criteria andCdCategoryIdBetween(Integer value1, Integer value2) { + addCriterion("CD_CATEGORY_ID between", value1, value2, "cdCategoryId"); + return (Criteria) this; + } + + public Criteria andCdCategoryIdNotBetween(Integer value1, Integer value2) { + addCriterion("CD_CATEGORY_ID not between", value1, value2, "cdCategoryId"); + return (Criteria) this; + } + + public Criteria andItemNameIsNull() { + addCriterion("ITEM_NAME is null"); + return (Criteria) this; + } + + public Criteria andItemNameIsNotNull() { + addCriterion("ITEM_NAME is not null"); + return (Criteria) this; + } + + public Criteria andItemNameEqualTo(String value) { + addCriterion("ITEM_NAME =", value, "itemName"); + return (Criteria) this; + } + + public Criteria andItemNameNotEqualTo(String value) { + addCriterion("ITEM_NAME <>", value, "itemName"); + return (Criteria) this; + } + + public Criteria andItemNameGreaterThan(String value) { + addCriterion("ITEM_NAME >", value, "itemName"); + return (Criteria) this; + } + + public Criteria andItemNameGreaterThanOrEqualTo(String value) { + addCriterion("ITEM_NAME >=", value, "itemName"); + return (Criteria) this; + } + + public Criteria andItemNameLessThan(String value) { + addCriterion("ITEM_NAME <", value, "itemName"); + return (Criteria) this; + } + + public Criteria andItemNameLessThanOrEqualTo(String value) { + addCriterion("ITEM_NAME <=", value, "itemName"); + return (Criteria) this; + } + + public Criteria andItemNameLike(String value) { + addCriterion("ITEM_NAME like", value, "itemName"); + return (Criteria) this; + } + + public Criteria andItemNameNotLike(String value) { + addCriterion("ITEM_NAME not like", value, "itemName"); + return (Criteria) this; + } + + public Criteria andItemNameIn(List values) { + addCriterion("ITEM_NAME in", values, "itemName"); + return (Criteria) this; + } + + public Criteria andItemNameNotIn(List values) { + addCriterion("ITEM_NAME not in", values, "itemName"); + return (Criteria) this; + } + + public Criteria andItemNameBetween(String value1, String value2) { + addCriterion("ITEM_NAME between", value1, value2, "itemName"); + return (Criteria) this; + } + + public Criteria andItemNameNotBetween(String value1, String value2) { + addCriterion("ITEM_NAME not between", value1, value2, "itemName"); + return (Criteria) this; + } + + public Criteria andItemDescribeIsNull() { + addCriterion("ITEM_DESCRIBE is null"); + return (Criteria) this; + } + + public Criteria andItemDescribeIsNotNull() { + addCriterion("ITEM_DESCRIBE is not null"); + return (Criteria) this; + } + + public Criteria andItemDescribeEqualTo(String value) { + addCriterion("ITEM_DESCRIBE =", value, "itemDescribe"); + return (Criteria) this; + } + + public Criteria andItemDescribeNotEqualTo(String value) { + addCriterion("ITEM_DESCRIBE <>", value, "itemDescribe"); + return (Criteria) this; + } + + public Criteria andItemDescribeGreaterThan(String value) { + addCriterion("ITEM_DESCRIBE >", value, "itemDescribe"); + return (Criteria) this; + } + + public Criteria andItemDescribeGreaterThanOrEqualTo(String value) { + addCriterion("ITEM_DESCRIBE >=", value, "itemDescribe"); + return (Criteria) this; + } + + public Criteria andItemDescribeLessThan(String value) { + addCriterion("ITEM_DESCRIBE <", value, "itemDescribe"); + return (Criteria) this; + } + + public Criteria andItemDescribeLessThanOrEqualTo(String value) { + addCriterion("ITEM_DESCRIBE <=", value, "itemDescribe"); + return (Criteria) this; + } + + public Criteria andItemDescribeLike(String value) { + addCriterion("ITEM_DESCRIBE like", value, "itemDescribe"); + return (Criteria) this; + } + + public Criteria andItemDescribeNotLike(String value) { + addCriterion("ITEM_DESCRIBE not like", value, "itemDescribe"); + return (Criteria) this; + } + + public Criteria andItemDescribeIn(List values) { + addCriterion("ITEM_DESCRIBE in", values, "itemDescribe"); + return (Criteria) this; + } + + public Criteria andItemDescribeNotIn(List values) { + addCriterion("ITEM_DESCRIBE not in", values, "itemDescribe"); + return (Criteria) this; + } + + public Criteria andItemDescribeBetween(String value1, String value2) { + addCriterion("ITEM_DESCRIBE between", value1, value2, "itemDescribe"); + return (Criteria) this; + } + + public Criteria andItemDescribeNotBetween(String value1, String value2) { + addCriterion("ITEM_DESCRIBE not between", value1, value2, "itemDescribe"); + return (Criteria) this; + } + + public Criteria andItemTypeIsNull() { + addCriterion("ITEM_TYPE is null"); + return (Criteria) this; + } + + public Criteria andItemTypeIsNotNull() { + addCriterion("ITEM_TYPE is not null"); + return (Criteria) this; + } + + public Criteria andItemTypeEqualTo(Integer value) { + addCriterion("ITEM_TYPE =", value, "itemType"); + return (Criteria) this; + } + + public Criteria andItemTypeNotEqualTo(Integer value) { + addCriterion("ITEM_TYPE <>", value, "itemType"); + return (Criteria) this; + } + + public Criteria andItemTypeGreaterThan(Integer value) { + addCriterion("ITEM_TYPE >", value, "itemType"); + return (Criteria) this; + } + + public Criteria andItemTypeGreaterThanOrEqualTo(Integer value) { + addCriterion("ITEM_TYPE >=", value, "itemType"); + return (Criteria) this; + } + + public Criteria andItemTypeLessThan(Integer value) { + addCriterion("ITEM_TYPE <", value, "itemType"); + return (Criteria) this; + } + + public Criteria andItemTypeLessThanOrEqualTo(Integer value) { + addCriterion("ITEM_TYPE <=", value, "itemType"); + return (Criteria) this; + } + + public Criteria andItemTypeIn(List values) { + addCriterion("ITEM_TYPE in", values, "itemType"); + return (Criteria) this; + } + + public Criteria andItemTypeNotIn(List values) { + addCriterion("ITEM_TYPE not in", values, "itemType"); + return (Criteria) this; + } + + public Criteria andItemTypeBetween(Integer value1, Integer value2) { + addCriterion("ITEM_TYPE between", value1, value2, "itemType"); + return (Criteria) this; + } + + public Criteria andItemTypeNotBetween(Integer value1, Integer value2) { + addCriterion("ITEM_TYPE not between", value1, value2, "itemType"); + return (Criteria) this; + } + + public Criteria andYieldlyIsNull() { + addCriterion("YIELDLY is null"); + return (Criteria) this; + } + + public Criteria andYieldlyIsNotNull() { + addCriterion("YIELDLY is not null"); + return (Criteria) this; + } + + public Criteria andYieldlyEqualTo(String value) { + addCriterion("YIELDLY =", value, "yieldly"); + return (Criteria) this; + } + + public Criteria andYieldlyNotEqualTo(String value) { + addCriterion("YIELDLY <>", value, "yieldly"); + return (Criteria) this; + } + + public Criteria andYieldlyGreaterThan(String value) { + addCriterion("YIELDLY >", value, "yieldly"); + return (Criteria) this; + } + + public Criteria andYieldlyGreaterThanOrEqualTo(String value) { + addCriterion("YIELDLY >=", value, "yieldly"); + return (Criteria) this; + } + + public Criteria andYieldlyLessThan(String value) { + addCriterion("YIELDLY <", value, "yieldly"); + return (Criteria) this; + } + + public Criteria andYieldlyLessThanOrEqualTo(String value) { + addCriterion("YIELDLY <=", value, "yieldly"); + return (Criteria) this; + } + + public Criteria andYieldlyLike(String value) { + addCriterion("YIELDLY like", value, "yieldly"); + return (Criteria) this; + } + + public Criteria andYieldlyNotLike(String value) { + addCriterion("YIELDLY not like", value, "yieldly"); + return (Criteria) this; + } + + public Criteria andYieldlyIn(List values) { + addCriterion("YIELDLY in", values, "yieldly"); + return (Criteria) this; + } + + public Criteria andYieldlyNotIn(List values) { + addCriterion("YIELDLY not in", values, "yieldly"); + return (Criteria) this; + } + + public Criteria andYieldlyBetween(String value1, String value2) { + addCriterion("YIELDLY between", value1, value2, "yieldly"); + return (Criteria) this; + } + + public Criteria andYieldlyNotBetween(String value1, String value2) { + addCriterion("YIELDLY not between", value1, value2, "yieldly"); + return (Criteria) this; + } + + public Criteria andSpecIsNull() { + addCriterion("SPEC is null"); + return (Criteria) this; + } + + public Criteria andSpecIsNotNull() { + addCriterion("SPEC is not null"); + return (Criteria) this; + } + + public Criteria andSpecEqualTo(String value) { + addCriterion("SPEC =", value, "spec"); + return (Criteria) this; + } + + public Criteria andSpecNotEqualTo(String value) { + addCriterion("SPEC <>", value, "spec"); + return (Criteria) this; + } + + public Criteria andSpecGreaterThan(String value) { + addCriterion("SPEC >", value, "spec"); + return (Criteria) this; + } + + public Criteria andSpecGreaterThanOrEqualTo(String value) { + addCriterion("SPEC >=", value, "spec"); + return (Criteria) this; + } + + public Criteria andSpecLessThan(String value) { + addCriterion("SPEC <", value, "spec"); + return (Criteria) this; + } + + public Criteria andSpecLessThanOrEqualTo(String value) { + addCriterion("SPEC <=", value, "spec"); + return (Criteria) this; + } + + public Criteria andSpecLike(String value) { + addCriterion("SPEC like", value, "spec"); + return (Criteria) this; + } + + public Criteria andSpecNotLike(String value) { + addCriterion("SPEC not like", value, "spec"); + return (Criteria) this; + } + + public Criteria andSpecIn(List values) { + addCriterion("SPEC in", values, "spec"); + return (Criteria) this; + } + + public Criteria andSpecNotIn(List values) { + addCriterion("SPEC not in", values, "spec"); + return (Criteria) this; + } + + public Criteria andSpecBetween(String value1, String value2) { + addCriterion("SPEC between", value1, value2, "spec"); + return (Criteria) this; + } + + public Criteria andSpecNotBetween(String value1, String value2) { + addCriterion("SPEC not between", value1, value2, "spec"); + return (Criteria) this; + } + + public Criteria andBasePriceIsNull() { + addCriterion("BASE_PRICE is null"); + return (Criteria) this; + } + + public Criteria andBasePriceIsNotNull() { + addCriterion("BASE_PRICE is not null"); + return (Criteria) this; + } + + public Criteria andBasePriceEqualTo(BigDecimal value) { + addCriterion("BASE_PRICE =", value, "basePrice"); + return (Criteria) this; + } + + public Criteria andBasePriceNotEqualTo(BigDecimal value) { + addCriterion("BASE_PRICE <>", value, "basePrice"); + return (Criteria) this; + } + + public Criteria andBasePriceGreaterThan(BigDecimal value) { + addCriterion("BASE_PRICE >", value, "basePrice"); + return (Criteria) this; + } + + public Criteria andBasePriceGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("BASE_PRICE >=", value, "basePrice"); + return (Criteria) this; + } + + public Criteria andBasePriceLessThan(BigDecimal value) { + addCriterion("BASE_PRICE <", value, "basePrice"); + return (Criteria) this; + } + + public Criteria andBasePriceLessThanOrEqualTo(BigDecimal value) { + addCriterion("BASE_PRICE <=", value, "basePrice"); + return (Criteria) this; + } + + public Criteria andBasePriceIn(List values) { + addCriterion("BASE_PRICE in", values, "basePrice"); + return (Criteria) this; + } + + public Criteria andBasePriceNotIn(List values) { + addCriterion("BASE_PRICE not in", values, "basePrice"); + return (Criteria) this; + } + + public Criteria andBasePriceBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("BASE_PRICE between", value1, value2, "basePrice"); + return (Criteria) this; + } + + public Criteria andBasePriceNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("BASE_PRICE not between", value1, value2, "basePrice"); + return (Criteria) this; + } + + public Criteria andMemberPriceIsNull() { + addCriterion("MEMBER_PRICE is null"); + return (Criteria) this; + } + + public Criteria andMemberPriceIsNotNull() { + addCriterion("MEMBER_PRICE is not null"); + return (Criteria) this; + } + + public Criteria andMemberPriceEqualTo(BigDecimal value) { + addCriterion("MEMBER_PRICE =", value, "memberPrice"); + return (Criteria) this; + } + + public Criteria andMemberPriceNotEqualTo(BigDecimal value) { + addCriterion("MEMBER_PRICE <>", value, "memberPrice"); + return (Criteria) this; + } + + public Criteria andMemberPriceGreaterThan(BigDecimal value) { + addCriterion("MEMBER_PRICE >", value, "memberPrice"); + return (Criteria) this; + } + + public Criteria andMemberPriceGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("MEMBER_PRICE >=", value, "memberPrice"); + return (Criteria) this; + } + + public Criteria andMemberPriceLessThan(BigDecimal value) { + addCriterion("MEMBER_PRICE <", value, "memberPrice"); + return (Criteria) this; + } + + public Criteria andMemberPriceLessThanOrEqualTo(BigDecimal value) { + addCriterion("MEMBER_PRICE <=", value, "memberPrice"); + return (Criteria) this; + } + + public Criteria andMemberPriceIn(List values) { + addCriterion("MEMBER_PRICE in", values, "memberPrice"); + return (Criteria) this; + } + + public Criteria andMemberPriceNotIn(List values) { + addCriterion("MEMBER_PRICE not in", values, "memberPrice"); + return (Criteria) this; + } + + public Criteria andMemberPriceBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("MEMBER_PRICE between", value1, value2, "memberPrice"); + return (Criteria) this; + } + + public Criteria andMemberPriceNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("MEMBER_PRICE not between", value1, value2, "memberPrice"); + return (Criteria) this; + } + + public Criteria andPricingMannerIsNull() { + addCriterion("PRICING_MANNER is null"); + return (Criteria) this; + } + + public Criteria andPricingMannerIsNotNull() { + addCriterion("PRICING_MANNER is not null"); + return (Criteria) this; + } + + public Criteria andPricingMannerEqualTo(String value) { + addCriterion("PRICING_MANNER =", value, "pricingManner"); + return (Criteria) this; + } + + public Criteria andPricingMannerNotEqualTo(String value) { + addCriterion("PRICING_MANNER <>", value, "pricingManner"); + return (Criteria) this; + } + + public Criteria andPricingMannerGreaterThan(String value) { + addCriterion("PRICING_MANNER >", value, "pricingManner"); + return (Criteria) this; + } + + public Criteria andPricingMannerGreaterThanOrEqualTo(String value) { + addCriterion("PRICING_MANNER >=", value, "pricingManner"); + return (Criteria) this; + } + + public Criteria andPricingMannerLessThan(String value) { + addCriterion("PRICING_MANNER <", value, "pricingManner"); + return (Criteria) this; + } + + public Criteria andPricingMannerLessThanOrEqualTo(String value) { + addCriterion("PRICING_MANNER <=", value, "pricingManner"); + return (Criteria) this; + } + + public Criteria andPricingMannerLike(String value) { + addCriterion("PRICING_MANNER like", value, "pricingManner"); + return (Criteria) this; + } + + public Criteria andPricingMannerNotLike(String value) { + addCriterion("PRICING_MANNER not like", value, "pricingManner"); + return (Criteria) this; + } + + public Criteria andPricingMannerIn(List values) { + addCriterion("PRICING_MANNER in", values, "pricingManner"); + return (Criteria) this; + } + + public Criteria andPricingMannerNotIn(List values) { + addCriterion("PRICING_MANNER not in", values, "pricingManner"); + return (Criteria) this; + } + + public Criteria andPricingMannerBetween(String value1, String value2) { + addCriterion("PRICING_MANNER between", value1, value2, "pricingManner"); + return (Criteria) this; + } + + public Criteria andPricingMannerNotBetween(String value1, String value2) { + addCriterion("PRICING_MANNER not between", value1, value2, "pricingManner"); + return (Criteria) this; + } + + public Criteria andSellStatusIsNull() { + addCriterion("SELL_STATUS is null"); + return (Criteria) this; + } + + public Criteria andSellStatusIsNotNull() { + addCriterion("SELL_STATUS is not null"); + return (Criteria) this; + } + + public Criteria andSellStatusEqualTo(Integer value) { + addCriterion("SELL_STATUS =", value, "sellStatus"); + return (Criteria) this; + } + + public Criteria andSellStatusNotEqualTo(Integer value) { + addCriterion("SELL_STATUS <>", value, "sellStatus"); + return (Criteria) this; + } + + public Criteria andSellStatusGreaterThan(Integer value) { + addCriterion("SELL_STATUS >", value, "sellStatus"); + return (Criteria) this; + } + + public Criteria andSellStatusGreaterThanOrEqualTo(Integer value) { + addCriterion("SELL_STATUS >=", value, "sellStatus"); + return (Criteria) this; + } + + public Criteria andSellStatusLessThan(Integer value) { + addCriterion("SELL_STATUS <", value, "sellStatus"); + return (Criteria) this; + } + + public Criteria andSellStatusLessThanOrEqualTo(Integer value) { + addCriterion("SELL_STATUS <=", value, "sellStatus"); + return (Criteria) this; + } + + public Criteria andSellStatusIn(List values) { + addCriterion("SELL_STATUS in", values, "sellStatus"); + return (Criteria) this; + } + + public Criteria andSellStatusNotIn(List values) { + addCriterion("SELL_STATUS not in", values, "sellStatus"); + return (Criteria) this; + } + + public Criteria andSellStatusBetween(Integer value1, Integer value2) { + addCriterion("SELL_STATUS between", value1, value2, "sellStatus"); + return (Criteria) this; + } + + public Criteria andSellStatusNotBetween(Integer value1, Integer value2) { + addCriterion("SELL_STATUS not between", value1, value2, "sellStatus"); + return (Criteria) this; + } + + public Criteria andSellUnitIsNull() { + addCriterion("SELL_UNIT is null"); + return (Criteria) this; + } + + public Criteria andSellUnitIsNotNull() { + addCriterion("SELL_UNIT is not null"); + return (Criteria) this; + } + + public Criteria andSellUnitEqualTo(String value) { + addCriterion("SELL_UNIT =", value, "sellUnit"); + return (Criteria) this; + } + + public Criteria andSellUnitNotEqualTo(String value) { + addCriterion("SELL_UNIT <>", value, "sellUnit"); + return (Criteria) this; + } + + public Criteria andSellUnitGreaterThan(String value) { + addCriterion("SELL_UNIT >", value, "sellUnit"); + return (Criteria) this; + } + + public Criteria andSellUnitGreaterThanOrEqualTo(String value) { + addCriterion("SELL_UNIT >=", value, "sellUnit"); + return (Criteria) this; + } + + public Criteria andSellUnitLessThan(String value) { + addCriterion("SELL_UNIT <", value, "sellUnit"); + return (Criteria) this; + } + + public Criteria andSellUnitLessThanOrEqualTo(String value) { + addCriterion("SELL_UNIT <=", value, "sellUnit"); + return (Criteria) this; + } + + public Criteria andSellUnitLike(String value) { + addCriterion("SELL_UNIT like", value, "sellUnit"); + return (Criteria) this; + } + + public Criteria andSellUnitNotLike(String value) { + addCriterion("SELL_UNIT not like", value, "sellUnit"); + return (Criteria) this; + } + + public Criteria andSellUnitIn(List values) { + addCriterion("SELL_UNIT in", values, "sellUnit"); + return (Criteria) this; + } + + public Criteria andSellUnitNotIn(List values) { + addCriterion("SELL_UNIT not in", values, "sellUnit"); + return (Criteria) this; + } + + public Criteria andSellUnitBetween(String value1, String value2) { + addCriterion("SELL_UNIT between", value1, value2, "sellUnit"); + return (Criteria) this; + } + + public Criteria andSellUnitNotBetween(String value1, String value2) { + addCriterion("SELL_UNIT not between", value1, value2, "sellUnit"); + return (Criteria) this; + } + + public Criteria andSellPriceIsNull() { + addCriterion("SELL_PRICE is null"); + return (Criteria) this; + } + + public Criteria andSellPriceIsNotNull() { + addCriterion("SELL_PRICE is not null"); + return (Criteria) this; + } + + public Criteria andSellPriceEqualTo(BigDecimal value) { + addCriterion("SELL_PRICE =", value, "sellPrice"); + return (Criteria) this; + } + + public Criteria andSellPriceNotEqualTo(BigDecimal value) { + addCriterion("SELL_PRICE <>", value, "sellPrice"); + return (Criteria) this; + } + + public Criteria andSellPriceGreaterThan(BigDecimal value) { + addCriterion("SELL_PRICE >", value, "sellPrice"); + return (Criteria) this; + } + + public Criteria andSellPriceGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("SELL_PRICE >=", value, "sellPrice"); + return (Criteria) this; + } + + public Criteria andSellPriceLessThan(BigDecimal value) { + addCriterion("SELL_PRICE <", value, "sellPrice"); + return (Criteria) this; + } + + public Criteria andSellPriceLessThanOrEqualTo(BigDecimal value) { + addCriterion("SELL_PRICE <=", value, "sellPrice"); + return (Criteria) this; + } + + public Criteria andSellPriceIn(List values) { + addCriterion("SELL_PRICE in", values, "sellPrice"); + return (Criteria) this; + } + + public Criteria andSellPriceNotIn(List values) { + addCriterion("SELL_PRICE not in", values, "sellPrice"); + return (Criteria) this; + } + + public Criteria andSellPriceBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("SELL_PRICE between", value1, value2, "sellPrice"); + return (Criteria) this; + } + + public Criteria andSellPriceNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("SELL_PRICE not between", value1, value2, "sellPrice"); + return (Criteria) this; + } + + public Criteria andIsAuditIsNull() { + addCriterion("IS_AUDIT is null"); + return (Criteria) this; + } + + public Criteria andIsAuditIsNotNull() { + addCriterion("IS_AUDIT is not null"); + return (Criteria) this; + } + + public Criteria andIsAuditEqualTo(Integer value) { + addCriterion("IS_AUDIT =", value, "isAudit"); + return (Criteria) this; + } + + public Criteria andIsAuditNotEqualTo(Integer value) { + addCriterion("IS_AUDIT <>", value, "isAudit"); + return (Criteria) this; + } + + public Criteria andIsAuditGreaterThan(Integer value) { + addCriterion("IS_AUDIT >", value, "isAudit"); + return (Criteria) this; + } + + public Criteria andIsAuditGreaterThanOrEqualTo(Integer value) { + addCriterion("IS_AUDIT >=", value, "isAudit"); + return (Criteria) this; + } + + public Criteria andIsAuditLessThan(Integer value) { + addCriterion("IS_AUDIT <", value, "isAudit"); + return (Criteria) this; + } + + public Criteria andIsAuditLessThanOrEqualTo(Integer value) { + addCriterion("IS_AUDIT <=", value, "isAudit"); + return (Criteria) this; + } + + public Criteria andIsAuditIn(List values) { + addCriterion("IS_AUDIT in", values, "isAudit"); + return (Criteria) this; + } + + public Criteria andIsAuditNotIn(List values) { + addCriterion("IS_AUDIT not in", values, "isAudit"); + return (Criteria) this; + } + + public Criteria andIsAuditBetween(Integer value1, Integer value2) { + addCriterion("IS_AUDIT between", value1, value2, "isAudit"); + return (Criteria) this; + } + + public Criteria andIsAuditNotBetween(Integer value1, Integer value2) { + addCriterion("IS_AUDIT not between", value1, value2, "isAudit"); + return (Criteria) this; + } + + public Criteria andCreateDateTimeIsNull() { + addCriterion("CREATE_DATE_TIME is null"); + return (Criteria) this; + } + + public Criteria andCreateDateTimeIsNotNull() { + addCriterion("CREATE_DATE_TIME is not null"); + return (Criteria) this; + } + + public Criteria andCreateDateTimeEqualTo(Date value) { + addCriterion("CREATE_DATE_TIME =", value, "createDateTime"); + return (Criteria) this; + } + + public Criteria andCreateDateTimeNotEqualTo(Date value) { + addCriterion("CREATE_DATE_TIME <>", value, "createDateTime"); + return (Criteria) this; + } + + public Criteria andCreateDateTimeGreaterThan(Date value) { + addCriterion("CREATE_DATE_TIME >", value, "createDateTime"); + return (Criteria) this; + } + + public Criteria andCreateDateTimeGreaterThanOrEqualTo(Date value) { + addCriterion("CREATE_DATE_TIME >=", value, "createDateTime"); + return (Criteria) this; + } + + public Criteria andCreateDateTimeLessThan(Date value) { + addCriterion("CREATE_DATE_TIME <", value, "createDateTime"); + return (Criteria) this; + } + + public Criteria andCreateDateTimeLessThanOrEqualTo(Date value) { + addCriterion("CREATE_DATE_TIME <=", value, "createDateTime"); + return (Criteria) this; + } + + public Criteria andCreateDateTimeIn(List values) { + addCriterion("CREATE_DATE_TIME in", values, "createDateTime"); + return (Criteria) this; + } + + public Criteria andCreateDateTimeNotIn(List values) { + addCriterion("CREATE_DATE_TIME not in", values, "createDateTime"); + return (Criteria) this; + } + + public Criteria andCreateDateTimeBetween(Date value1, Date value2) { + addCriterion("CREATE_DATE_TIME between", value1, value2, "createDateTime"); + return (Criteria) this; + } + + public Criteria andCreateDateTimeNotBetween(Date value1, Date value2) { + addCriterion("CREATE_DATE_TIME not between", value1, value2, "createDateTime"); + return (Criteria) this; + } + + public Criteria andCreateUserCodeIsNull() { + addCriterion("CREATE_USER_CODE is null"); + return (Criteria) this; + } + + public Criteria andCreateUserCodeIsNotNull() { + addCriterion("CREATE_USER_CODE is not null"); + return (Criteria) this; + } + + public Criteria andCreateUserCodeEqualTo(String value) { + addCriterion("CREATE_USER_CODE =", value, "createUserCode"); + return (Criteria) this; + } + + public Criteria andCreateUserCodeNotEqualTo(String value) { + addCriterion("CREATE_USER_CODE <>", value, "createUserCode"); + return (Criteria) this; + } + + public Criteria andCreateUserCodeGreaterThan(String value) { + addCriterion("CREATE_USER_CODE >", value, "createUserCode"); + return (Criteria) this; + } + + public Criteria andCreateUserCodeGreaterThanOrEqualTo(String value) { + addCriterion("CREATE_USER_CODE >=", value, "createUserCode"); + return (Criteria) this; + } + + public Criteria andCreateUserCodeLessThan(String value) { + addCriterion("CREATE_USER_CODE <", value, "createUserCode"); + return (Criteria) this; + } + + public Criteria andCreateUserCodeLessThanOrEqualTo(String value) { + addCriterion("CREATE_USER_CODE <=", value, "createUserCode"); + return (Criteria) this; + } + + public Criteria andCreateUserCodeLike(String value) { + addCriterion("CREATE_USER_CODE like", value, "createUserCode"); + return (Criteria) this; + } + + public Criteria andCreateUserCodeNotLike(String value) { + addCriterion("CREATE_USER_CODE not like", value, "createUserCode"); + return (Criteria) this; + } + + public Criteria andCreateUserCodeIn(List values) { + addCriterion("CREATE_USER_CODE in", values, "createUserCode"); + return (Criteria) this; + } + + public Criteria andCreateUserCodeNotIn(List values) { + addCriterion("CREATE_USER_CODE not in", values, "createUserCode"); + return (Criteria) this; + } + + public Criteria andCreateUserCodeBetween(String value1, String value2) { + addCriterion("CREATE_USER_CODE between", value1, value2, "createUserCode"); + return (Criteria) this; + } + + public Criteria andCreateUserCodeNotBetween(String value1, String value2) { + addCriterion("CREATE_USER_CODE not between", value1, value2, "createUserCode"); + return (Criteria) this; + } + + public Criteria andCaizaiUserIsNull() { + addCriterion("CAIZAI_USER is null"); + return (Criteria) this; + } + + public Criteria andCaizaiUserIsNotNull() { + addCriterion("CAIZAI_USER is not null"); + return (Criteria) this; + } + + public Criteria andCaizaiUserEqualTo(String value) { + addCriterion("CAIZAI_USER =", value, "caizaiUser"); + return (Criteria) this; + } + + public Criteria andCaizaiUserNotEqualTo(String value) { + addCriterion("CAIZAI_USER <>", value, "caizaiUser"); + return (Criteria) this; + } + + public Criteria andCaizaiUserGreaterThan(String value) { + addCriterion("CAIZAI_USER >", value, "caizaiUser"); + return (Criteria) this; + } + + public Criteria andCaizaiUserGreaterThanOrEqualTo(String value) { + addCriterion("CAIZAI_USER >=", value, "caizaiUser"); + return (Criteria) this; + } + + public Criteria andCaizaiUserLessThan(String value) { + addCriterion("CAIZAI_USER <", value, "caizaiUser"); + return (Criteria) this; + } + + public Criteria andCaizaiUserLessThanOrEqualTo(String value) { + addCriterion("CAIZAI_USER <=", value, "caizaiUser"); + return (Criteria) this; + } + + public Criteria andCaizaiUserLike(String value) { + addCriterion("CAIZAI_USER like", value, "caizaiUser"); + return (Criteria) this; + } + + public Criteria andCaizaiUserNotLike(String value) { + addCriterion("CAIZAI_USER not like", value, "caizaiUser"); + return (Criteria) this; + } + + public Criteria andCaizaiUserIn(List values) { + addCriterion("CAIZAI_USER in", values, "caizaiUser"); + return (Criteria) this; + } + + public Criteria andCaizaiUserNotIn(List values) { + addCriterion("CAIZAI_USER not in", values, "caizaiUser"); + return (Criteria) this; + } + + public Criteria andCaizaiUserBetween(String value1, String value2) { + addCriterion("CAIZAI_USER between", value1, value2, "caizaiUser"); + return (Criteria) this; + } + + public Criteria andCaizaiUserNotBetween(String value1, String value2) { + addCriterion("CAIZAI_USER not between", value1, value2, "caizaiUser"); + return (Criteria) this; + } + + public Criteria andJianceUserIsNull() { + addCriterion("JIANCE_USER is null"); + return (Criteria) this; + } + + public Criteria andJianceUserIsNotNull() { + addCriterion("JIANCE_USER is not null"); + return (Criteria) this; + } + + public Criteria andJianceUserEqualTo(String value) { + addCriterion("JIANCE_USER =", value, "jianceUser"); + return (Criteria) this; + } + + public Criteria andJianceUserNotEqualTo(String value) { + addCriterion("JIANCE_USER <>", value, "jianceUser"); + return (Criteria) this; + } + + public Criteria andJianceUserGreaterThan(String value) { + addCriterion("JIANCE_USER >", value, "jianceUser"); + return (Criteria) this; + } + + public Criteria andJianceUserGreaterThanOrEqualTo(String value) { + addCriterion("JIANCE_USER >=", value, "jianceUser"); + return (Criteria) this; + } + + public Criteria andJianceUserLessThan(String value) { + addCriterion("JIANCE_USER <", value, "jianceUser"); + return (Criteria) this; + } + + public Criteria andJianceUserLessThanOrEqualTo(String value) { + addCriterion("JIANCE_USER <=", value, "jianceUser"); + return (Criteria) this; + } + + public Criteria andJianceUserLike(String value) { + addCriterion("JIANCE_USER like", value, "jianceUser"); + return (Criteria) this; + } + + public Criteria andJianceUserNotLike(String value) { + addCriterion("JIANCE_USER not like", value, "jianceUser"); + return (Criteria) this; + } + + public Criteria andJianceUserIn(List values) { + addCriterion("JIANCE_USER in", values, "jianceUser"); + return (Criteria) this; + } + + public Criteria andJianceUserNotIn(List values) { + addCriterion("JIANCE_USER not in", values, "jianceUser"); + return (Criteria) this; + } + + public Criteria andJianceUserBetween(String value1, String value2) { + addCriterion("JIANCE_USER between", value1, value2, "jianceUser"); + return (Criteria) this; + } + + public Criteria andJianceUserNotBetween(String value1, String value2) { + addCriterion("JIANCE_USER not between", value1, value2, "jianceUser"); + return (Criteria) this; + } + + public Criteria andNongCanLvIsNull() { + addCriterion("NONG_CAN_LV is null"); + return (Criteria) this; + } + + public Criteria andNongCanLvIsNotNull() { + addCriterion("NONG_CAN_LV is not null"); + return (Criteria) this; + } + + public Criteria andNongCanLvEqualTo(String value) { + addCriterion("NONG_CAN_LV =", value, "nongCanLv"); + return (Criteria) this; + } + + public Criteria andNongCanLvNotEqualTo(String value) { + addCriterion("NONG_CAN_LV <>", value, "nongCanLv"); + return (Criteria) this; + } + + public Criteria andNongCanLvGreaterThan(String value) { + addCriterion("NONG_CAN_LV >", value, "nongCanLv"); + return (Criteria) this; + } + + public Criteria andNongCanLvGreaterThanOrEqualTo(String value) { + addCriterion("NONG_CAN_LV >=", value, "nongCanLv"); + return (Criteria) this; + } + + public Criteria andNongCanLvLessThan(String value) { + addCriterion("NONG_CAN_LV <", value, "nongCanLv"); + return (Criteria) this; + } + + public Criteria andNongCanLvLessThanOrEqualTo(String value) { + addCriterion("NONG_CAN_LV <=", value, "nongCanLv"); + return (Criteria) this; + } + + public Criteria andNongCanLvLike(String value) { + addCriterion("NONG_CAN_LV like", value, "nongCanLv"); + return (Criteria) this; + } + + public Criteria andNongCanLvNotLike(String value) { + addCriterion("NONG_CAN_LV not like", value, "nongCanLv"); + return (Criteria) this; + } + + public Criteria andNongCanLvIn(List values) { + addCriterion("NONG_CAN_LV in", values, "nongCanLv"); + return (Criteria) this; + } + + public Criteria andNongCanLvNotIn(List values) { + addCriterion("NONG_CAN_LV not in", values, "nongCanLv"); + return (Criteria) this; + } + + public Criteria andNongCanLvBetween(String value1, String value2) { + addCriterion("NONG_CAN_LV between", value1, value2, "nongCanLv"); + return (Criteria) this; + } + + public Criteria andNongCanLvNotBetween(String value1, String value2) { + addCriterion("NONG_CAN_LV not between", value1, value2, "nongCanLv"); + return (Criteria) this; + } + + public Criteria andYiYangChenFenIsNull() { + addCriterion("YI_YANG_CHEN_FEN is null"); + return (Criteria) this; + } + + public Criteria andYiYangChenFenIsNotNull() { + addCriterion("YI_YANG_CHEN_FEN is not null"); + return (Criteria) this; + } + + public Criteria andYiYangChenFenEqualTo(String value) { + addCriterion("YI_YANG_CHEN_FEN =", value, "yiYangChenFen"); + return (Criteria) this; + } + + public Criteria andYiYangChenFenNotEqualTo(String value) { + addCriterion("YI_YANG_CHEN_FEN <>", value, "yiYangChenFen"); + return (Criteria) this; + } + + public Criteria andYiYangChenFenGreaterThan(String value) { + addCriterion("YI_YANG_CHEN_FEN >", value, "yiYangChenFen"); + return (Criteria) this; + } + + public Criteria andYiYangChenFenGreaterThanOrEqualTo(String value) { + addCriterion("YI_YANG_CHEN_FEN >=", value, "yiYangChenFen"); + return (Criteria) this; + } + + public Criteria andYiYangChenFenLessThan(String value) { + addCriterion("YI_YANG_CHEN_FEN <", value, "yiYangChenFen"); + return (Criteria) this; + } + + public Criteria andYiYangChenFenLessThanOrEqualTo(String value) { + addCriterion("YI_YANG_CHEN_FEN <=", value, "yiYangChenFen"); + return (Criteria) this; + } + + public Criteria andYiYangChenFenLike(String value) { + addCriterion("YI_YANG_CHEN_FEN like", value, "yiYangChenFen"); + return (Criteria) this; + } + + public Criteria andYiYangChenFenNotLike(String value) { + addCriterion("YI_YANG_CHEN_FEN not like", value, "yiYangChenFen"); + return (Criteria) this; + } + + public Criteria andYiYangChenFenIn(List values) { + addCriterion("YI_YANG_CHEN_FEN in", values, "yiYangChenFen"); + return (Criteria) this; + } + + public Criteria andYiYangChenFenNotIn(List values) { + addCriterion("YI_YANG_CHEN_FEN not in", values, "yiYangChenFen"); + return (Criteria) this; + } + + public Criteria andYiYangChenFenBetween(String value1, String value2) { + addCriterion("YI_YANG_CHEN_FEN between", value1, value2, "yiYangChenFen"); + return (Criteria) this; + } + + public Criteria andYiYangChenFenNotBetween(String value1, String value2) { + addCriterion("YI_YANG_CHEN_FEN not between", value1, value2, "yiYangChenFen"); + return (Criteria) this; + } + + public Criteria andBaoZhiQiIsNull() { + addCriterion("BAO_ZHI_QI is null"); + return (Criteria) this; + } + + public Criteria andBaoZhiQiIsNotNull() { + addCriterion("BAO_ZHI_QI is not null"); + return (Criteria) this; + } + + public Criteria andBaoZhiQiEqualTo(Integer value) { + addCriterion("BAO_ZHI_QI =", value, "baoZhiQi"); + return (Criteria) this; + } + + public Criteria andBaoZhiQiNotEqualTo(Integer value) { + addCriterion("BAO_ZHI_QI <>", value, "baoZhiQi"); + return (Criteria) this; + } + + public Criteria andBaoZhiQiGreaterThan(Integer value) { + addCriterion("BAO_ZHI_QI >", value, "baoZhiQi"); + return (Criteria) this; + } + + public Criteria andBaoZhiQiGreaterThanOrEqualTo(Integer value) { + addCriterion("BAO_ZHI_QI >=", value, "baoZhiQi"); + return (Criteria) this; + } + + public Criteria andBaoZhiQiLessThan(Integer value) { + addCriterion("BAO_ZHI_QI <", value, "baoZhiQi"); + return (Criteria) this; + } + + public Criteria andBaoZhiQiLessThanOrEqualTo(Integer value) { + addCriterion("BAO_ZHI_QI <=", value, "baoZhiQi"); + return (Criteria) this; + } + + public Criteria andBaoZhiQiIn(List values) { + addCriterion("BAO_ZHI_QI in", values, "baoZhiQi"); + return (Criteria) this; + } + + public Criteria andBaoZhiQiNotIn(List values) { + addCriterion("BAO_ZHI_QI not in", values, "baoZhiQi"); + return (Criteria) this; + } + + public Criteria andBaoZhiQiBetween(Integer value1, Integer value2) { + addCriterion("BAO_ZHI_QI between", value1, value2, "baoZhiQi"); + return (Criteria) this; + } + + public Criteria andBaoZhiQiNotBetween(Integer value1, Integer value2) { + addCriterion("BAO_ZHI_QI not between", value1, value2, "baoZhiQi"); + return (Criteria) this; + } + + public Criteria andShiYiRenQunIsNull() { + addCriterion("SHI_YI_REN_QUN is null"); + return (Criteria) this; + } + + public Criteria andShiYiRenQunIsNotNull() { + addCriterion("SHI_YI_REN_QUN is not null"); + return (Criteria) this; + } + + public Criteria andShiYiRenQunEqualTo(String value) { + addCriterion("SHI_YI_REN_QUN =", value, "shiYiRenQun"); + return (Criteria) this; + } + + public Criteria andShiYiRenQunNotEqualTo(String value) { + addCriterion("SHI_YI_REN_QUN <>", value, "shiYiRenQun"); + return (Criteria) this; + } + + public Criteria andShiYiRenQunGreaterThan(String value) { + addCriterion("SHI_YI_REN_QUN >", value, "shiYiRenQun"); + return (Criteria) this; + } + + public Criteria andShiYiRenQunGreaterThanOrEqualTo(String value) { + addCriterion("SHI_YI_REN_QUN >=", value, "shiYiRenQun"); + return (Criteria) this; + } + + public Criteria andShiYiRenQunLessThan(String value) { + addCriterion("SHI_YI_REN_QUN <", value, "shiYiRenQun"); + return (Criteria) this; + } + + public Criteria andShiYiRenQunLessThanOrEqualTo(String value) { + addCriterion("SHI_YI_REN_QUN <=", value, "shiYiRenQun"); + return (Criteria) this; + } + + public Criteria andShiYiRenQunLike(String value) { + addCriterion("SHI_YI_REN_QUN like", value, "shiYiRenQun"); + return (Criteria) this; + } + + public Criteria andShiYiRenQunNotLike(String value) { + addCriterion("SHI_YI_REN_QUN not like", value, "shiYiRenQun"); + return (Criteria) this; + } + + public Criteria andShiYiRenQunIn(List values) { + addCriterion("SHI_YI_REN_QUN in", values, "shiYiRenQun"); + return (Criteria) this; + } + + public Criteria andShiYiRenQunNotIn(List values) { + addCriterion("SHI_YI_REN_QUN not in", values, "shiYiRenQun"); + return (Criteria) this; + } + + public Criteria andShiYiRenQunBetween(String value1, String value2) { + addCriterion("SHI_YI_REN_QUN between", value1, value2, "shiYiRenQun"); + return (Criteria) this; + } + + public Criteria andShiYiRenQunNotBetween(String value1, String value2) { + addCriterion("SHI_YI_REN_QUN not between", value1, value2, "shiYiRenQun"); + return (Criteria) this; + } + + public Criteria andXianShiQiangGouIsNull() { + addCriterion("XIAN_SHI_QIANG_GOU is null"); + return (Criteria) this; + } + + public Criteria andXianShiQiangGouIsNotNull() { + addCriterion("XIAN_SHI_QIANG_GOU is not null"); + return (Criteria) this; + } + + public Criteria andXianShiQiangGouEqualTo(Integer value) { + addCriterion("XIAN_SHI_QIANG_GOU =", value, "xianShiQiangGou"); + return (Criteria) this; + } + + public Criteria andXianShiQiangGouNotEqualTo(Integer value) { + addCriterion("XIAN_SHI_QIANG_GOU <>", value, "xianShiQiangGou"); + return (Criteria) this; + } + + public Criteria andXianShiQiangGouGreaterThan(Integer value) { + addCriterion("XIAN_SHI_QIANG_GOU >", value, "xianShiQiangGou"); + return (Criteria) this; + } + + public Criteria andXianShiQiangGouGreaterThanOrEqualTo(Integer value) { + addCriterion("XIAN_SHI_QIANG_GOU >=", value, "xianShiQiangGou"); + return (Criteria) this; + } + + public Criteria andXianShiQiangGouLessThan(Integer value) { + addCriterion("XIAN_SHI_QIANG_GOU <", value, "xianShiQiangGou"); + return (Criteria) this; + } + + public Criteria andXianShiQiangGouLessThanOrEqualTo(Integer value) { + addCriterion("XIAN_SHI_QIANG_GOU <=", value, "xianShiQiangGou"); + return (Criteria) this; + } + + public Criteria andXianShiQiangGouIn(List values) { + addCriterion("XIAN_SHI_QIANG_GOU in", values, "xianShiQiangGou"); + return (Criteria) this; + } + + public Criteria andXianShiQiangGouNotIn(List values) { + addCriterion("XIAN_SHI_QIANG_GOU not in", values, "xianShiQiangGou"); + return (Criteria) this; + } + + public Criteria andXianShiQiangGouBetween(Integer value1, Integer value2) { + addCriterion("XIAN_SHI_QIANG_GOU between", value1, value2, "xianShiQiangGou"); + return (Criteria) this; + } + + public Criteria andXianShiQiangGouNotBetween(Integer value1, Integer value2) { + addCriterion("XIAN_SHI_QIANG_GOU not between", value1, value2, "xianShiQiangGou"); + return (Criteria) this; + } + + public Criteria andXinPinChangXianIsNull() { + addCriterion("XIN_PIN_CHANG_XIAN is null"); + return (Criteria) this; + } + + public Criteria andXinPinChangXianIsNotNull() { + addCriterion("XIN_PIN_CHANG_XIAN is not null"); + return (Criteria) this; + } + + public Criteria andXinPinChangXianEqualTo(Integer value) { + addCriterion("XIN_PIN_CHANG_XIAN =", value, "xinPinChangXian"); + return (Criteria) this; + } + + public Criteria andXinPinChangXianNotEqualTo(Integer value) { + addCriterion("XIN_PIN_CHANG_XIAN <>", value, "xinPinChangXian"); + return (Criteria) this; + } + + public Criteria andXinPinChangXianGreaterThan(Integer value) { + addCriterion("XIN_PIN_CHANG_XIAN >", value, "xinPinChangXian"); + return (Criteria) this; + } + + public Criteria andXinPinChangXianGreaterThanOrEqualTo(Integer value) { + addCriterion("XIN_PIN_CHANG_XIAN >=", value, "xinPinChangXian"); + return (Criteria) this; + } + + public Criteria andXinPinChangXianLessThan(Integer value) { + addCriterion("XIN_PIN_CHANG_XIAN <", value, "xinPinChangXian"); + return (Criteria) this; + } + + public Criteria andXinPinChangXianLessThanOrEqualTo(Integer value) { + addCriterion("XIN_PIN_CHANG_XIAN <=", value, "xinPinChangXian"); + return (Criteria) this; + } + + public Criteria andXinPinChangXianIn(List values) { + addCriterion("XIN_PIN_CHANG_XIAN in", values, "xinPinChangXian"); + return (Criteria) this; + } + + public Criteria andXinPinChangXianNotIn(List values) { + addCriterion("XIN_PIN_CHANG_XIAN not in", values, "xinPinChangXian"); + return (Criteria) this; + } + + public Criteria andXinPinChangXianBetween(Integer value1, Integer value2) { + addCriterion("XIN_PIN_CHANG_XIAN between", value1, value2, "xinPinChangXian"); + return (Criteria) this; + } + + public Criteria andXinPinChangXianNotBetween(Integer value1, Integer value2) { + addCriterion("XIN_PIN_CHANG_XIAN not between", value1, value2, "xinPinChangXian"); + return (Criteria) this; + } + + public Criteria andReMaiTuiJianIsNull() { + addCriterion("RE_MAI_TUI_JIAN is null"); + return (Criteria) this; + } + + public Criteria andReMaiTuiJianIsNotNull() { + addCriterion("RE_MAI_TUI_JIAN is not null"); + return (Criteria) this; + } + + public Criteria andReMaiTuiJianEqualTo(Integer value) { + addCriterion("RE_MAI_TUI_JIAN =", value, "reMaiTuiJian"); + return (Criteria) this; + } + + public Criteria andReMaiTuiJianNotEqualTo(Integer value) { + addCriterion("RE_MAI_TUI_JIAN <>", value, "reMaiTuiJian"); + return (Criteria) this; + } + + public Criteria andReMaiTuiJianGreaterThan(Integer value) { + addCriterion("RE_MAI_TUI_JIAN >", value, "reMaiTuiJian"); + return (Criteria) this; + } + + public Criteria andReMaiTuiJianGreaterThanOrEqualTo(Integer value) { + addCriterion("RE_MAI_TUI_JIAN >=", value, "reMaiTuiJian"); + return (Criteria) this; + } + + public Criteria andReMaiTuiJianLessThan(Integer value) { + addCriterion("RE_MAI_TUI_JIAN <", value, "reMaiTuiJian"); + return (Criteria) this; + } + + public Criteria andReMaiTuiJianLessThanOrEqualTo(Integer value) { + addCriterion("RE_MAI_TUI_JIAN <=", value, "reMaiTuiJian"); + return (Criteria) this; + } + + public Criteria andReMaiTuiJianIn(List values) { + addCriterion("RE_MAI_TUI_JIAN in", values, "reMaiTuiJian"); + return (Criteria) this; + } + + public Criteria andReMaiTuiJianNotIn(List values) { + addCriterion("RE_MAI_TUI_JIAN not in", values, "reMaiTuiJian"); + return (Criteria) this; + } + + public Criteria andReMaiTuiJianBetween(Integer value1, Integer value2) { + addCriterion("RE_MAI_TUI_JIAN between", value1, value2, "reMaiTuiJian"); + return (Criteria) this; + } + + public Criteria andReMaiTuiJianNotBetween(Integer value1, Integer value2) { + addCriterion("RE_MAI_TUI_JIAN not between", value1, value2, "reMaiTuiJian"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/entity/CdMember.java b/src/main/java/com/xmomen/module/base/entity/CdMember.java new file mode 100644 index 0000000..8b3e5cb --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/CdMember.java @@ -0,0 +1,360 @@ +package com.xmomen.module.base.entity; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.xmomen.framework.mybatis.model.BaseMybatisModel; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "cd_member") +public class CdMember extends BaseMybatisModel { + /** + * + */ + private Integer id; + + /** + * 姓名 + */ + private String name; + + /** + * 密码 + */ + private String password; + + /** + * 手机号 + */ + private String phoneNumber; + + /** + * 收货地址 + */ + private String address; + + /** + * 所属单位 + */ + private Integer cdCompanyId; + + /** + * 所属客服经理 + */ + private Integer cdUserId; + + /** + * 备用收货人 + */ + private String spareName; + + /** + * 备用收货人2 + */ + private String spareName2; + + /** + * 备用手机号1 + */ + private String spareTel; + + /** + * 备用手机号2 + */ + private String spareTel2; + + /** + * 家庭固话 + */ + private String telNumber; + + /** + * 办公室电话 + */ + private String officeTel; + + /** + * 备用地址1 + */ + private String spareAddress; + + /** + * 备用地址2 + */ + private String spareAddress2; + + /** + * 说明 + */ + private String flag; + + /** + * 1-潜在客户,2-普通客户,3-优质客户 + */ + private Integer memberType; + + /** + * 邮箱 + */ + private String email; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if (id == null) { + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "NAME") + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + if (name == null) { + removeValidField("name"); + return; + } + addValidField("name"); + } + + @JsonIgnore + @Column(name = "PASSWORD") + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + if (password == null) { + removeValidField("password"); + return; + } + addValidField("password"); + } + + @Column(name = "PHONE_NUMBER") + public String getPhoneNumber() { + return phoneNumber; + } + + public void setPhoneNumber(String phoneNumber) { + this.phoneNumber = phoneNumber; + if (phoneNumber == null) { + removeValidField("phoneNumber"); + return; + } + addValidField("phoneNumber"); + } + + @Column(name = "ADDRESS") + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + if (address == null) { + removeValidField("address"); + return; + } + addValidField("address"); + } + + @Column(name = "CD_COMPANY_ID") + public Integer getCdCompanyId() { + return cdCompanyId; + } + + public void setCdCompanyId(Integer cdCompanyId) { + this.cdCompanyId = cdCompanyId; + if (cdCompanyId == null) { + removeValidField("cdCompanyId"); + return; + } + addValidField("cdCompanyId"); + } + + @Column(name = "CD_USER_ID") + public Integer getCdUserId() { + return cdUserId; + } + + public void setCdUserId(Integer cdUserId) { + this.cdUserId = cdUserId; + if (cdUserId == null) { + removeValidField("cdUserId"); + return; + } + addValidField("cdUserId"); + } + + @Column(name = "SPARE_NAME") + public String getSpareName() { + return spareName; + } + + public void setSpareName(String spareName) { + this.spareName = spareName; + if (spareName == null) { + removeValidField("spareName"); + return; + } + addValidField("spareName"); + } + + @Column(name = "SPARE_NAME2") + public String getSpareName2() { + return spareName2; + } + + public void setSpareName2(String spareName2) { + this.spareName2 = spareName2; + if (spareName2 == null) { + removeValidField("spareName2"); + return; + } + addValidField("spareName2"); + } + + @Column(name = "SPARE_TEL") + public String getSpareTel() { + return spareTel; + } + + public void setSpareTel(String spareTel) { + this.spareTel = spareTel; + if (spareTel == null) { + removeValidField("spareTel"); + return; + } + addValidField("spareTel"); + } + + @Column(name = "SPARE_TEL2") + public String getSpareTel2() { + return spareTel2; + } + + public void setSpareTel2(String spareTel2) { + this.spareTel2 = spareTel2; + if (spareTel2 == null) { + removeValidField("spareTel2"); + return; + } + addValidField("spareTel2"); + } + + @Column(name = "TEL_NUMBER") + public String getTelNumber() { + return telNumber; + } + + public void setTelNumber(String telNumber) { + this.telNumber = telNumber; + if (telNumber == null) { + removeValidField("telNumber"); + return; + } + addValidField("telNumber"); + } + + @Column(name = "OFFICE_TEL") + public String getOfficeTel() { + return officeTel; + } + + public void setOfficeTel(String officeTel) { + this.officeTel = officeTel; + if (officeTel == null) { + removeValidField("officeTel"); + return; + } + addValidField("officeTel"); + } + + @Column(name = "SPARE_ADDRESS") + public String getSpareAddress() { + return spareAddress; + } + + public void setSpareAddress(String spareAddress) { + this.spareAddress = spareAddress; + if (spareAddress == null) { + removeValidField("spareAddress"); + return; + } + addValidField("spareAddress"); + } + + @Column(name = "SPARE_ADDRESS2") + public String getSpareAddress2() { + return spareAddress2; + } + + public void setSpareAddress2(String spareAddress2) { + this.spareAddress2 = spareAddress2; + if (spareAddress2 == null) { + removeValidField("spareAddress2"); + return; + } + addValidField("spareAddress2"); + } + + @Column(name = "FLAG") + public String getFlag() { + return flag; + } + + public void setFlag(String flag) { + this.flag = flag; + if (flag == null) { + removeValidField("flag"); + return; + } + addValidField("flag"); + } + + @Column(name = "MEMBER_TYPE") + public Integer getMemberType() { + return memberType; + } + + public void setMemberType(Integer memberType) { + this.memberType = memberType; + if (memberType == null) { + removeValidField("memberType"); + return; + } + addValidField("memberType"); + } + + @Column(name = "email") + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + if (email == null) { + removeValidField("email"); + return; + } + addValidField("email"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/entity/CdMemberCouponRelation.java b/src/main/java/com/xmomen/module/base/entity/CdMemberCouponRelation.java new file mode 100644 index 0000000..aa0c21b --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/CdMemberCouponRelation.java @@ -0,0 +1,72 @@ +package com.xmomen.module.base.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "cd_member_coupon_relation") +public class CdMemberCouponRelation extends BaseMybatisModel { + /** + * 主键 + */ + private Integer id; + + /** + * 客户代码 + */ + private Integer cdMemberId; + + /** + * 卡号 + */ + private String couponNumber; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "CD_MEMBER_ID") + public Integer getCdMemberId() { + return cdMemberId; + } + + public void setCdMemberId(Integer cdMemberId) { + this.cdMemberId = cdMemberId; + if(cdMemberId == null){ + removeValidField("cdMemberId"); + return; + } + addValidField("cdMemberId"); + } + + @Column(name = "COUPON_NUMBER") + public String getCouponNumber() { + return couponNumber; + } + + public void setCouponNumber(String couponNumber) { + this.couponNumber = couponNumber; + if(couponNumber == null){ + removeValidField("couponNumber"); + return; + } + addValidField("couponNumber"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/entity/CdMemberExample.java b/src/main/java/com/xmomen/module/base/entity/CdMemberExample.java new file mode 100644 index 0000000..1e8c17f --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/CdMemberExample.java @@ -0,0 +1,1421 @@ +package com.xmomen.module.base.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisExample; +import java.util.ArrayList; +import java.util.List; + +public class CdMemberExample extends BaseMybatisExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public CdMemberExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("ID is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("ID is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Integer value) { + addCriterion("ID =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Integer value) { + addCriterion("ID <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Integer value) { + addCriterion("ID >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Integer value) { + addCriterion("ID >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Integer value) { + addCriterion("ID <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Integer value) { + addCriterion("ID <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("ID in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("ID not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Integer value1, Integer value2) { + addCriterion("ID between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Integer value1, Integer value2) { + addCriterion("ID not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andNameIsNull() { + addCriterion("NAME is null"); + return (Criteria) this; + } + + public Criteria andNameIsNotNull() { + addCriterion("NAME is not null"); + return (Criteria) this; + } + + public Criteria andNameEqualTo(String value) { + addCriterion("NAME =", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotEqualTo(String value) { + addCriterion("NAME <>", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThan(String value) { + addCriterion("NAME >", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThanOrEqualTo(String value) { + addCriterion("NAME >=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThan(String value) { + addCriterion("NAME <", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThanOrEqualTo(String value) { + addCriterion("NAME <=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLike(String value) { + addCriterion("NAME like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotLike(String value) { + addCriterion("NAME not like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameIn(List values) { + addCriterion("NAME in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameNotIn(List values) { + addCriterion("NAME not in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameBetween(String value1, String value2) { + addCriterion("NAME between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andNameNotBetween(String value1, String value2) { + addCriterion("NAME not between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andPasswordIsNull() { + addCriterion("PASSWORD is null"); + return (Criteria) this; + } + + public Criteria andPasswordIsNotNull() { + addCriterion("PASSWORD is not null"); + return (Criteria) this; + } + + public Criteria andPasswordEqualTo(String value) { + addCriterion("PASSWORD =", value, "password"); + return (Criteria) this; + } + + public Criteria andPasswordNotEqualTo(String value) { + addCriterion("PASSWORD <>", value, "password"); + return (Criteria) this; + } + + public Criteria andPasswordGreaterThan(String value) { + addCriterion("PASSWORD >", value, "password"); + return (Criteria) this; + } + + public Criteria andPasswordGreaterThanOrEqualTo(String value) { + addCriterion("PASSWORD >=", value, "password"); + return (Criteria) this; + } + + public Criteria andPasswordLessThan(String value) { + addCriterion("PASSWORD <", value, "password"); + return (Criteria) this; + } + + public Criteria andPasswordLessThanOrEqualTo(String value) { + addCriterion("PASSWORD <=", value, "password"); + return (Criteria) this; + } + + public Criteria andPasswordLike(String value) { + addCriterion("PASSWORD like", value, "password"); + return (Criteria) this; + } + + public Criteria andPasswordNotLike(String value) { + addCriterion("PASSWORD not like", value, "password"); + return (Criteria) this; + } + + public Criteria andPasswordIn(List values) { + addCriterion("PASSWORD in", values, "password"); + return (Criteria) this; + } + + public Criteria andPasswordNotIn(List values) { + addCriterion("PASSWORD not in", values, "password"); + return (Criteria) this; + } + + public Criteria andPasswordBetween(String value1, String value2) { + addCriterion("PASSWORD between", value1, value2, "password"); + return (Criteria) this; + } + + public Criteria andPasswordNotBetween(String value1, String value2) { + addCriterion("PASSWORD not between", value1, value2, "password"); + return (Criteria) this; + } + + public Criteria andPhoneNumberIsNull() { + addCriterion("PHONE_NUMBER is null"); + return (Criteria) this; + } + + public Criteria andPhoneNumberIsNotNull() { + addCriterion("PHONE_NUMBER is not null"); + return (Criteria) this; + } + + public Criteria andPhoneNumberEqualTo(String value) { + addCriterion("PHONE_NUMBER =", value, "phoneNumber"); + return (Criteria) this; + } + + public Criteria andPhoneNumberNotEqualTo(String value) { + addCriterion("PHONE_NUMBER <>", value, "phoneNumber"); + return (Criteria) this; + } + + public Criteria andPhoneNumberGreaterThan(String value) { + addCriterion("PHONE_NUMBER >", value, "phoneNumber"); + return (Criteria) this; + } + + public Criteria andPhoneNumberGreaterThanOrEqualTo(String value) { + addCriterion("PHONE_NUMBER >=", value, "phoneNumber"); + return (Criteria) this; + } + + public Criteria andPhoneNumberLessThan(String value) { + addCriterion("PHONE_NUMBER <", value, "phoneNumber"); + return (Criteria) this; + } + + public Criteria andPhoneNumberLessThanOrEqualTo(String value) { + addCriterion("PHONE_NUMBER <=", value, "phoneNumber"); + return (Criteria) this; + } + + public Criteria andPhoneNumberLike(String value) { + addCriterion("PHONE_NUMBER like", value, "phoneNumber"); + return (Criteria) this; + } + + public Criteria andPhoneNumberNotLike(String value) { + addCriterion("PHONE_NUMBER not like", value, "phoneNumber"); + return (Criteria) this; + } + + public Criteria andPhoneNumberIn(List values) { + addCriterion("PHONE_NUMBER in", values, "phoneNumber"); + return (Criteria) this; + } + + public Criteria andPhoneNumberNotIn(List values) { + addCriterion("PHONE_NUMBER not in", values, "phoneNumber"); + return (Criteria) this; + } + + public Criteria andPhoneNumberBetween(String value1, String value2) { + addCriterion("PHONE_NUMBER between", value1, value2, "phoneNumber"); + return (Criteria) this; + } + + public Criteria andPhoneNumberNotBetween(String value1, String value2) { + addCriterion("PHONE_NUMBER not between", value1, value2, "phoneNumber"); + return (Criteria) this; + } + + public Criteria andAddressIsNull() { + addCriterion("ADDRESS is null"); + return (Criteria) this; + } + + public Criteria andAddressIsNotNull() { + addCriterion("ADDRESS is not null"); + return (Criteria) this; + } + + public Criteria andAddressEqualTo(String value) { + addCriterion("ADDRESS =", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressNotEqualTo(String value) { + addCriterion("ADDRESS <>", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressGreaterThan(String value) { + addCriterion("ADDRESS >", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressGreaterThanOrEqualTo(String value) { + addCriterion("ADDRESS >=", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressLessThan(String value) { + addCriterion("ADDRESS <", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressLessThanOrEqualTo(String value) { + addCriterion("ADDRESS <=", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressLike(String value) { + addCriterion("ADDRESS like", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressNotLike(String value) { + addCriterion("ADDRESS not like", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressIn(List values) { + addCriterion("ADDRESS in", values, "address"); + return (Criteria) this; + } + + public Criteria andAddressNotIn(List values) { + addCriterion("ADDRESS not in", values, "address"); + return (Criteria) this; + } + + public Criteria andAddressBetween(String value1, String value2) { + addCriterion("ADDRESS between", value1, value2, "address"); + return (Criteria) this; + } + + public Criteria andAddressNotBetween(String value1, String value2) { + addCriterion("ADDRESS not between", value1, value2, "address"); + return (Criteria) this; + } + + public Criteria andCdCompanyIdIsNull() { + addCriterion("CD_COMPANY_ID is null"); + return (Criteria) this; + } + + public Criteria andCdCompanyIdIsNotNull() { + addCriterion("CD_COMPANY_ID is not null"); + return (Criteria) this; + } + + public Criteria andCdCompanyIdEqualTo(Integer value) { + addCriterion("CD_COMPANY_ID =", value, "cdCompanyId"); + return (Criteria) this; + } + + public Criteria andCdCompanyIdNotEqualTo(Integer value) { + addCriterion("CD_COMPANY_ID <>", value, "cdCompanyId"); + return (Criteria) this; + } + + public Criteria andCdCompanyIdGreaterThan(Integer value) { + addCriterion("CD_COMPANY_ID >", value, "cdCompanyId"); + return (Criteria) this; + } + + public Criteria andCdCompanyIdGreaterThanOrEqualTo(Integer value) { + addCriterion("CD_COMPANY_ID >=", value, "cdCompanyId"); + return (Criteria) this; + } + + public Criteria andCdCompanyIdLessThan(Integer value) { + addCriterion("CD_COMPANY_ID <", value, "cdCompanyId"); + return (Criteria) this; + } + + public Criteria andCdCompanyIdLessThanOrEqualTo(Integer value) { + addCriterion("CD_COMPANY_ID <=", value, "cdCompanyId"); + return (Criteria) this; + } + + public Criteria andCdCompanyIdIn(List values) { + addCriterion("CD_COMPANY_ID in", values, "cdCompanyId"); + return (Criteria) this; + } + + public Criteria andCdCompanyIdNotIn(List values) { + addCriterion("CD_COMPANY_ID not in", values, "cdCompanyId"); + return (Criteria) this; + } + + public Criteria andCdCompanyIdBetween(Integer value1, Integer value2) { + addCriterion("CD_COMPANY_ID between", value1, value2, "cdCompanyId"); + return (Criteria) this; + } + + public Criteria andCdCompanyIdNotBetween(Integer value1, Integer value2) { + addCriterion("CD_COMPANY_ID not between", value1, value2, "cdCompanyId"); + return (Criteria) this; + } + + public Criteria andCdUserIdIsNull() { + addCriterion("CD_USER_ID is null"); + return (Criteria) this; + } + + public Criteria andCdUserIdIsNotNull() { + addCriterion("CD_USER_ID is not null"); + return (Criteria) this; + } + + public Criteria andCdUserIdEqualTo(Integer value) { + addCriterion("CD_USER_ID =", value, "cdUserId"); + return (Criteria) this; + } + + public Criteria andCdUserIdNotEqualTo(Integer value) { + addCriterion("CD_USER_ID <>", value, "cdUserId"); + return (Criteria) this; + } + + public Criteria andCdUserIdGreaterThan(Integer value) { + addCriterion("CD_USER_ID >", value, "cdUserId"); + return (Criteria) this; + } + + public Criteria andCdUserIdGreaterThanOrEqualTo(Integer value) { + addCriterion("CD_USER_ID >=", value, "cdUserId"); + return (Criteria) this; + } + + public Criteria andCdUserIdLessThan(Integer value) { + addCriterion("CD_USER_ID <", value, "cdUserId"); + return (Criteria) this; + } + + public Criteria andCdUserIdLessThanOrEqualTo(Integer value) { + addCriterion("CD_USER_ID <=", value, "cdUserId"); + return (Criteria) this; + } + + public Criteria andCdUserIdIn(List values) { + addCriterion("CD_USER_ID in", values, "cdUserId"); + return (Criteria) this; + } + + public Criteria andCdUserIdNotIn(List values) { + addCriterion("CD_USER_ID not in", values, "cdUserId"); + return (Criteria) this; + } + + public Criteria andCdUserIdBetween(Integer value1, Integer value2) { + addCriterion("CD_USER_ID between", value1, value2, "cdUserId"); + return (Criteria) this; + } + + public Criteria andCdUserIdNotBetween(Integer value1, Integer value2) { + addCriterion("CD_USER_ID not between", value1, value2, "cdUserId"); + return (Criteria) this; + } + + public Criteria andSpareNameIsNull() { + addCriterion("SPARE_NAME is null"); + return (Criteria) this; + } + + public Criteria andSpareNameIsNotNull() { + addCriterion("SPARE_NAME is not null"); + return (Criteria) this; + } + + public Criteria andSpareNameEqualTo(String value) { + addCriterion("SPARE_NAME =", value, "spareName"); + return (Criteria) this; + } + + public Criteria andSpareNameNotEqualTo(String value) { + addCriterion("SPARE_NAME <>", value, "spareName"); + return (Criteria) this; + } + + public Criteria andSpareNameGreaterThan(String value) { + addCriterion("SPARE_NAME >", value, "spareName"); + return (Criteria) this; + } + + public Criteria andSpareNameGreaterThanOrEqualTo(String value) { + addCriterion("SPARE_NAME >=", value, "spareName"); + return (Criteria) this; + } + + public Criteria andSpareNameLessThan(String value) { + addCriterion("SPARE_NAME <", value, "spareName"); + return (Criteria) this; + } + + public Criteria andSpareNameLessThanOrEqualTo(String value) { + addCriterion("SPARE_NAME <=", value, "spareName"); + return (Criteria) this; + } + + public Criteria andSpareNameLike(String value) { + addCriterion("SPARE_NAME like", value, "spareName"); + return (Criteria) this; + } + + public Criteria andSpareNameNotLike(String value) { + addCriterion("SPARE_NAME not like", value, "spareName"); + return (Criteria) this; + } + + public Criteria andSpareNameIn(List values) { + addCriterion("SPARE_NAME in", values, "spareName"); + return (Criteria) this; + } + + public Criteria andSpareNameNotIn(List values) { + addCriterion("SPARE_NAME not in", values, "spareName"); + return (Criteria) this; + } + + public Criteria andSpareNameBetween(String value1, String value2) { + addCriterion("SPARE_NAME between", value1, value2, "spareName"); + return (Criteria) this; + } + + public Criteria andSpareNameNotBetween(String value1, String value2) { + addCriterion("SPARE_NAME not between", value1, value2, "spareName"); + return (Criteria) this; + } + + public Criteria andSpareName2IsNull() { + addCriterion("SPARE_NAME2 is null"); + return (Criteria) this; + } + + public Criteria andSpareName2IsNotNull() { + addCriterion("SPARE_NAME2 is not null"); + return (Criteria) this; + } + + public Criteria andSpareName2EqualTo(String value) { + addCriterion("SPARE_NAME2 =", value, "spareName2"); + return (Criteria) this; + } + + public Criteria andSpareName2NotEqualTo(String value) { + addCriterion("SPARE_NAME2 <>", value, "spareName2"); + return (Criteria) this; + } + + public Criteria andSpareName2GreaterThan(String value) { + addCriterion("SPARE_NAME2 >", value, "spareName2"); + return (Criteria) this; + } + + public Criteria andSpareName2GreaterThanOrEqualTo(String value) { + addCriterion("SPARE_NAME2 >=", value, "spareName2"); + return (Criteria) this; + } + + public Criteria andSpareName2LessThan(String value) { + addCriterion("SPARE_NAME2 <", value, "spareName2"); + return (Criteria) this; + } + + public Criteria andSpareName2LessThanOrEqualTo(String value) { + addCriterion("SPARE_NAME2 <=", value, "spareName2"); + return (Criteria) this; + } + + public Criteria andSpareName2Like(String value) { + addCriterion("SPARE_NAME2 like", value, "spareName2"); + return (Criteria) this; + } + + public Criteria andSpareName2NotLike(String value) { + addCriterion("SPARE_NAME2 not like", value, "spareName2"); + return (Criteria) this; + } + + public Criteria andSpareName2In(List values) { + addCriterion("SPARE_NAME2 in", values, "spareName2"); + return (Criteria) this; + } + + public Criteria andSpareName2NotIn(List values) { + addCriterion("SPARE_NAME2 not in", values, "spareName2"); + return (Criteria) this; + } + + public Criteria andSpareName2Between(String value1, String value2) { + addCriterion("SPARE_NAME2 between", value1, value2, "spareName2"); + return (Criteria) this; + } + + public Criteria andSpareName2NotBetween(String value1, String value2) { + addCriterion("SPARE_NAME2 not between", value1, value2, "spareName2"); + return (Criteria) this; + } + + public Criteria andSpareTelIsNull() { + addCriterion("SPARE_TEL is null"); + return (Criteria) this; + } + + public Criteria andSpareTelIsNotNull() { + addCriterion("SPARE_TEL is not null"); + return (Criteria) this; + } + + public Criteria andSpareTelEqualTo(String value) { + addCriterion("SPARE_TEL =", value, "spareTel"); + return (Criteria) this; + } + + public Criteria andSpareTelNotEqualTo(String value) { + addCriterion("SPARE_TEL <>", value, "spareTel"); + return (Criteria) this; + } + + public Criteria andSpareTelGreaterThan(String value) { + addCriterion("SPARE_TEL >", value, "spareTel"); + return (Criteria) this; + } + + public Criteria andSpareTelGreaterThanOrEqualTo(String value) { + addCriterion("SPARE_TEL >=", value, "spareTel"); + return (Criteria) this; + } + + public Criteria andSpareTelLessThan(String value) { + addCriterion("SPARE_TEL <", value, "spareTel"); + return (Criteria) this; + } + + public Criteria andSpareTelLessThanOrEqualTo(String value) { + addCriterion("SPARE_TEL <=", value, "spareTel"); + return (Criteria) this; + } + + public Criteria andSpareTelLike(String value) { + addCriterion("SPARE_TEL like", value, "spareTel"); + return (Criteria) this; + } + + public Criteria andSpareTelNotLike(String value) { + addCriterion("SPARE_TEL not like", value, "spareTel"); + return (Criteria) this; + } + + public Criteria andSpareTelIn(List values) { + addCriterion("SPARE_TEL in", values, "spareTel"); + return (Criteria) this; + } + + public Criteria andSpareTelNotIn(List values) { + addCriterion("SPARE_TEL not in", values, "spareTel"); + return (Criteria) this; + } + + public Criteria andSpareTelBetween(String value1, String value2) { + addCriterion("SPARE_TEL between", value1, value2, "spareTel"); + return (Criteria) this; + } + + public Criteria andSpareTelNotBetween(String value1, String value2) { + addCriterion("SPARE_TEL not between", value1, value2, "spareTel"); + return (Criteria) this; + } + + public Criteria andSpareTel2IsNull() { + addCriterion("SPARE_TEL2 is null"); + return (Criteria) this; + } + + public Criteria andSpareTel2IsNotNull() { + addCriterion("SPARE_TEL2 is not null"); + return (Criteria) this; + } + + public Criteria andSpareTel2EqualTo(String value) { + addCriterion("SPARE_TEL2 =", value, "spareTel2"); + return (Criteria) this; + } + + public Criteria andSpareTel2NotEqualTo(String value) { + addCriterion("SPARE_TEL2 <>", value, "spareTel2"); + return (Criteria) this; + } + + public Criteria andSpareTel2GreaterThan(String value) { + addCriterion("SPARE_TEL2 >", value, "spareTel2"); + return (Criteria) this; + } + + public Criteria andSpareTel2GreaterThanOrEqualTo(String value) { + addCriterion("SPARE_TEL2 >=", value, "spareTel2"); + return (Criteria) this; + } + + public Criteria andSpareTel2LessThan(String value) { + addCriterion("SPARE_TEL2 <", value, "spareTel2"); + return (Criteria) this; + } + + public Criteria andSpareTel2LessThanOrEqualTo(String value) { + addCriterion("SPARE_TEL2 <=", value, "spareTel2"); + return (Criteria) this; + } + + public Criteria andSpareTel2Like(String value) { + addCriterion("SPARE_TEL2 like", value, "spareTel2"); + return (Criteria) this; + } + + public Criteria andSpareTel2NotLike(String value) { + addCriterion("SPARE_TEL2 not like", value, "spareTel2"); + return (Criteria) this; + } + + public Criteria andSpareTel2In(List values) { + addCriterion("SPARE_TEL2 in", values, "spareTel2"); + return (Criteria) this; + } + + public Criteria andSpareTel2NotIn(List values) { + addCriterion("SPARE_TEL2 not in", values, "spareTel2"); + return (Criteria) this; + } + + public Criteria andSpareTel2Between(String value1, String value2) { + addCriterion("SPARE_TEL2 between", value1, value2, "spareTel2"); + return (Criteria) this; + } + + public Criteria andSpareTel2NotBetween(String value1, String value2) { + addCriterion("SPARE_TEL2 not between", value1, value2, "spareTel2"); + return (Criteria) this; + } + + public Criteria andTelNumberIsNull() { + addCriterion("TEL_NUMBER is null"); + return (Criteria) this; + } + + public Criteria andTelNumberIsNotNull() { + addCriterion("TEL_NUMBER is not null"); + return (Criteria) this; + } + + public Criteria andTelNumberEqualTo(String value) { + addCriterion("TEL_NUMBER =", value, "telNumber"); + return (Criteria) this; + } + + public Criteria andTelNumberNotEqualTo(String value) { + addCriterion("TEL_NUMBER <>", value, "telNumber"); + return (Criteria) this; + } + + public Criteria andTelNumberGreaterThan(String value) { + addCriterion("TEL_NUMBER >", value, "telNumber"); + return (Criteria) this; + } + + public Criteria andTelNumberGreaterThanOrEqualTo(String value) { + addCriterion("TEL_NUMBER >=", value, "telNumber"); + return (Criteria) this; + } + + public Criteria andTelNumberLessThan(String value) { + addCriterion("TEL_NUMBER <", value, "telNumber"); + return (Criteria) this; + } + + public Criteria andTelNumberLessThanOrEqualTo(String value) { + addCriterion("TEL_NUMBER <=", value, "telNumber"); + return (Criteria) this; + } + + public Criteria andTelNumberLike(String value) { + addCriterion("TEL_NUMBER like", value, "telNumber"); + return (Criteria) this; + } + + public Criteria andTelNumberNotLike(String value) { + addCriterion("TEL_NUMBER not like", value, "telNumber"); + return (Criteria) this; + } + + public Criteria andTelNumberIn(List values) { + addCriterion("TEL_NUMBER in", values, "telNumber"); + return (Criteria) this; + } + + public Criteria andTelNumberNotIn(List values) { + addCriterion("TEL_NUMBER not in", values, "telNumber"); + return (Criteria) this; + } + + public Criteria andTelNumberBetween(String value1, String value2) { + addCriterion("TEL_NUMBER between", value1, value2, "telNumber"); + return (Criteria) this; + } + + public Criteria andTelNumberNotBetween(String value1, String value2) { + addCriterion("TEL_NUMBER not between", value1, value2, "telNumber"); + return (Criteria) this; + } + + public Criteria andOfficeTelIsNull() { + addCriterion("OFFICE_TEL is null"); + return (Criteria) this; + } + + public Criteria andOfficeTelIsNotNull() { + addCriterion("OFFICE_TEL is not null"); + return (Criteria) this; + } + + public Criteria andOfficeTelEqualTo(String value) { + addCriterion("OFFICE_TEL =", value, "officeTel"); + return (Criteria) this; + } + + public Criteria andOfficeTelNotEqualTo(String value) { + addCriterion("OFFICE_TEL <>", value, "officeTel"); + return (Criteria) this; + } + + public Criteria andOfficeTelGreaterThan(String value) { + addCriterion("OFFICE_TEL >", value, "officeTel"); + return (Criteria) this; + } + + public Criteria andOfficeTelGreaterThanOrEqualTo(String value) { + addCriterion("OFFICE_TEL >=", value, "officeTel"); + return (Criteria) this; + } + + public Criteria andOfficeTelLessThan(String value) { + addCriterion("OFFICE_TEL <", value, "officeTel"); + return (Criteria) this; + } + + public Criteria andOfficeTelLessThanOrEqualTo(String value) { + addCriterion("OFFICE_TEL <=", value, "officeTel"); + return (Criteria) this; + } + + public Criteria andOfficeTelLike(String value) { + addCriterion("OFFICE_TEL like", value, "officeTel"); + return (Criteria) this; + } + + public Criteria andOfficeTelNotLike(String value) { + addCriterion("OFFICE_TEL not like", value, "officeTel"); + return (Criteria) this; + } + + public Criteria andOfficeTelIn(List values) { + addCriterion("OFFICE_TEL in", values, "officeTel"); + return (Criteria) this; + } + + public Criteria andOfficeTelNotIn(List values) { + addCriterion("OFFICE_TEL not in", values, "officeTel"); + return (Criteria) this; + } + + public Criteria andOfficeTelBetween(String value1, String value2) { + addCriterion("OFFICE_TEL between", value1, value2, "officeTel"); + return (Criteria) this; + } + + public Criteria andOfficeTelNotBetween(String value1, String value2) { + addCriterion("OFFICE_TEL not between", value1, value2, "officeTel"); + return (Criteria) this; + } + + public Criteria andSpareAddressIsNull() { + addCriterion("SPARE_ADDRESS is null"); + return (Criteria) this; + } + + public Criteria andSpareAddressIsNotNull() { + addCriterion("SPARE_ADDRESS is not null"); + return (Criteria) this; + } + + public Criteria andSpareAddressEqualTo(String value) { + addCriterion("SPARE_ADDRESS =", value, "spareAddress"); + return (Criteria) this; + } + + public Criteria andSpareAddressNotEqualTo(String value) { + addCriterion("SPARE_ADDRESS <>", value, "spareAddress"); + return (Criteria) this; + } + + public Criteria andSpareAddressGreaterThan(String value) { + addCriterion("SPARE_ADDRESS >", value, "spareAddress"); + return (Criteria) this; + } + + public Criteria andSpareAddressGreaterThanOrEqualTo(String value) { + addCriterion("SPARE_ADDRESS >=", value, "spareAddress"); + return (Criteria) this; + } + + public Criteria andSpareAddressLessThan(String value) { + addCriterion("SPARE_ADDRESS <", value, "spareAddress"); + return (Criteria) this; + } + + public Criteria andSpareAddressLessThanOrEqualTo(String value) { + addCriterion("SPARE_ADDRESS <=", value, "spareAddress"); + return (Criteria) this; + } + + public Criteria andSpareAddressLike(String value) { + addCriterion("SPARE_ADDRESS like", value, "spareAddress"); + return (Criteria) this; + } + + public Criteria andSpareAddressNotLike(String value) { + addCriterion("SPARE_ADDRESS not like", value, "spareAddress"); + return (Criteria) this; + } + + public Criteria andSpareAddressIn(List values) { + addCriterion("SPARE_ADDRESS in", values, "spareAddress"); + return (Criteria) this; + } + + public Criteria andSpareAddressNotIn(List values) { + addCriterion("SPARE_ADDRESS not in", values, "spareAddress"); + return (Criteria) this; + } + + public Criteria andSpareAddressBetween(String value1, String value2) { + addCriterion("SPARE_ADDRESS between", value1, value2, "spareAddress"); + return (Criteria) this; + } + + public Criteria andSpareAddressNotBetween(String value1, String value2) { + addCriterion("SPARE_ADDRESS not between", value1, value2, "spareAddress"); + return (Criteria) this; + } + + public Criteria andSpareAddress2IsNull() { + addCriterion("SPARE_ADDRESS2 is null"); + return (Criteria) this; + } + + public Criteria andSpareAddress2IsNotNull() { + addCriterion("SPARE_ADDRESS2 is not null"); + return (Criteria) this; + } + + public Criteria andSpareAddress2EqualTo(String value) { + addCriterion("SPARE_ADDRESS2 =", value, "spareAddress2"); + return (Criteria) this; + } + + public Criteria andSpareAddress2NotEqualTo(String value) { + addCriterion("SPARE_ADDRESS2 <>", value, "spareAddress2"); + return (Criteria) this; + } + + public Criteria andSpareAddress2GreaterThan(String value) { + addCriterion("SPARE_ADDRESS2 >", value, "spareAddress2"); + return (Criteria) this; + } + + public Criteria andSpareAddress2GreaterThanOrEqualTo(String value) { + addCriterion("SPARE_ADDRESS2 >=", value, "spareAddress2"); + return (Criteria) this; + } + + public Criteria andSpareAddress2LessThan(String value) { + addCriterion("SPARE_ADDRESS2 <", value, "spareAddress2"); + return (Criteria) this; + } + + public Criteria andSpareAddress2LessThanOrEqualTo(String value) { + addCriterion("SPARE_ADDRESS2 <=", value, "spareAddress2"); + return (Criteria) this; + } + + public Criteria andSpareAddress2Like(String value) { + addCriterion("SPARE_ADDRESS2 like", value, "spareAddress2"); + return (Criteria) this; + } + + public Criteria andSpareAddress2NotLike(String value) { + addCriterion("SPARE_ADDRESS2 not like", value, "spareAddress2"); + return (Criteria) this; + } + + public Criteria andSpareAddress2In(List values) { + addCriterion("SPARE_ADDRESS2 in", values, "spareAddress2"); + return (Criteria) this; + } + + public Criteria andSpareAddress2NotIn(List values) { + addCriterion("SPARE_ADDRESS2 not in", values, "spareAddress2"); + return (Criteria) this; + } + + public Criteria andSpareAddress2Between(String value1, String value2) { + addCriterion("SPARE_ADDRESS2 between", value1, value2, "spareAddress2"); + return (Criteria) this; + } + + public Criteria andSpareAddress2NotBetween(String value1, String value2) { + addCriterion("SPARE_ADDRESS2 not between", value1, value2, "spareAddress2"); + return (Criteria) this; + } + + public Criteria andFlagIsNull() { + addCriterion("FLAG is null"); + return (Criteria) this; + } + + public Criteria andFlagIsNotNull() { + addCriterion("FLAG is not null"); + return (Criteria) this; + } + + public Criteria andFlagEqualTo(String value) { + addCriterion("FLAG =", value, "flag"); + return (Criteria) this; + } + + public Criteria andFlagNotEqualTo(String value) { + addCriterion("FLAG <>", value, "flag"); + return (Criteria) this; + } + + public Criteria andFlagGreaterThan(String value) { + addCriterion("FLAG >", value, "flag"); + return (Criteria) this; + } + + public Criteria andFlagGreaterThanOrEqualTo(String value) { + addCriterion("FLAG >=", value, "flag"); + return (Criteria) this; + } + + public Criteria andFlagLessThan(String value) { + addCriterion("FLAG <", value, "flag"); + return (Criteria) this; + } + + public Criteria andFlagLessThanOrEqualTo(String value) { + addCriterion("FLAG <=", value, "flag"); + return (Criteria) this; + } + + public Criteria andFlagLike(String value) { + addCriterion("FLAG like", value, "flag"); + return (Criteria) this; + } + + public Criteria andFlagNotLike(String value) { + addCriterion("FLAG not like", value, "flag"); + return (Criteria) this; + } + + public Criteria andFlagIn(List values) { + addCriterion("FLAG in", values, "flag"); + return (Criteria) this; + } + + public Criteria andFlagNotIn(List values) { + addCriterion("FLAG not in", values, "flag"); + return (Criteria) this; + } + + public Criteria andFlagBetween(String value1, String value2) { + addCriterion("FLAG between", value1, value2, "flag"); + return (Criteria) this; + } + + public Criteria andFlagNotBetween(String value1, String value2) { + addCriterion("FLAG not between", value1, value2, "flag"); + return (Criteria) this; + } + + public Criteria andMemberTypeIsNull() { + addCriterion("MEMBER_TYPE is null"); + return (Criteria) this; + } + + public Criteria andMemberTypeIsNotNull() { + addCriterion("MEMBER_TYPE is not null"); + return (Criteria) this; + } + + public Criteria andMemberTypeEqualTo(Integer value) { + addCriterion("MEMBER_TYPE =", value, "memberType"); + return (Criteria) this; + } + + public Criteria andMemberTypeNotEqualTo(Integer value) { + addCriterion("MEMBER_TYPE <>", value, "memberType"); + return (Criteria) this; + } + + public Criteria andMemberTypeGreaterThan(Integer value) { + addCriterion("MEMBER_TYPE >", value, "memberType"); + return (Criteria) this; + } + + public Criteria andMemberTypeGreaterThanOrEqualTo(Integer value) { + addCriterion("MEMBER_TYPE >=", value, "memberType"); + return (Criteria) this; + } + + public Criteria andMemberTypeLessThan(Integer value) { + addCriterion("MEMBER_TYPE <", value, "memberType"); + return (Criteria) this; + } + + public Criteria andMemberTypeLessThanOrEqualTo(Integer value) { + addCriterion("MEMBER_TYPE <=", value, "memberType"); + return (Criteria) this; + } + + public Criteria andMemberTypeIn(List values) { + addCriterion("MEMBER_TYPE in", values, "memberType"); + return (Criteria) this; + } + + public Criteria andMemberTypeNotIn(List values) { + addCriterion("MEMBER_TYPE not in", values, "memberType"); + return (Criteria) this; + } + + public Criteria andMemberTypeBetween(Integer value1, Integer value2) { + addCriterion("MEMBER_TYPE between", value1, value2, "memberType"); + return (Criteria) this; + } + + public Criteria andMemberTypeNotBetween(Integer value1, Integer value2) { + addCriterion("MEMBER_TYPE not between", value1, value2, "memberType"); + return (Criteria) this; + } + + public Criteria andEmailIsNull() { + addCriterion("email is null"); + return (Criteria) this; + } + + public Criteria andEmailIsNotNull() { + addCriterion("email is not null"); + return (Criteria) this; + } + + public Criteria andEmailEqualTo(String value) { + addCriterion("email =", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailNotEqualTo(String value) { + addCriterion("email <>", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailGreaterThan(String value) { + addCriterion("email >", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailGreaterThanOrEqualTo(String value) { + addCriterion("email >=", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailLessThan(String value) { + addCriterion("email <", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailLessThanOrEqualTo(String value) { + addCriterion("email <=", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailLike(String value) { + addCriterion("email like", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailNotLike(String value) { + addCriterion("email not like", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailIn(List values) { + addCriterion("email in", values, "email"); + return (Criteria) this; + } + + public Criteria andEmailNotIn(List values) { + addCriterion("email not in", values, "email"); + return (Criteria) this; + } + + public Criteria andEmailBetween(String value1, String value2) { + addCriterion("email between", value1, value2, "email"); + return (Criteria) this; + } + + public Criteria andEmailNotBetween(String value1, String value2) { + addCriterion("email not between", value1, value2, "email"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/entity/CdPlan.java b/src/main/java/com/xmomen/module/base/entity/CdPlan.java new file mode 100644 index 0000000..d09b302 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/CdPlan.java @@ -0,0 +1,245 @@ +package com.xmomen.module.base.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import java.math.BigDecimal; +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "cd_plan") +public class CdPlan extends BaseMybatisModel { + /** + * 主键 + */ + private Integer id; + + /** + * 计划名称 + */ + private String planName; + + /** + * 计划创建人 + */ + private String createUser; + + /** + * 计划创建时间 + */ + private Date createTime; + + /** + * 配送频率(1-一天,2-一周,3-一月) + */ + private Integer deliveryType; + + /** + * 配送时间(一周的星期几,一月的几号等) + */ + private String deliveryTime; + + /** + * 配送的次数 + */ + private Integer deliverCount; + + /** + * 价格 + */ + private BigDecimal price; + + /** + * 是否随机 + */ + private Integer isRandom; + + /** + * 产品归属的类别 + */ + private Integer cdCategoryId; + + /** + * 随机数 + */ + private Integer randomNum; + + /** + * 起效时间 + */ + private Date beginTime; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "PLAN_NAME") + public String getPlanName() { + return planName; + } + + public void setPlanName(String planName) { + this.planName = planName; + if(planName == null){ + removeValidField("planName"); + return; + } + addValidField("planName"); + } + + @Column(name = "CREATE_USER") + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + if(createUser == null){ + removeValidField("createUser"); + return; + } + addValidField("createUser"); + } + + @Column(name = "CREATE_TIME") + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + if(createTime == null){ + removeValidField("createTime"); + return; + } + addValidField("createTime"); + } + + @Column(name = "DELIVERY_TYPE") + public Integer getDeliveryType() { + return deliveryType; + } + + public void setDeliveryType(Integer deliveryType) { + this.deliveryType = deliveryType; + if(deliveryType == null){ + removeValidField("deliveryType"); + return; + } + addValidField("deliveryType"); + } + + @Column(name = "DELIVERY_TIME") + public String getDeliveryTime() { + return deliveryTime; + } + + public void setDeliveryTime(String deliveryTime) { + this.deliveryTime = deliveryTime; + if(deliveryTime == null){ + removeValidField("deliveryTime"); + return; + } + addValidField("deliveryTime"); + } + + @Column(name = "DELIVER_COUNT") + public Integer getDeliverCount() { + return deliverCount; + } + + public void setDeliverCount(Integer deliverCount) { + this.deliverCount = deliverCount; + if(deliverCount == null){ + removeValidField("deliverCount"); + return; + } + addValidField("deliverCount"); + } + + @Column(name = "PRICE") + public BigDecimal getPrice() { + return price; + } + + public void setPrice(BigDecimal price) { + this.price = price; + if(price == null){ + removeValidField("price"); + return; + } + addValidField("price"); + } + + @Column(name = "IS_RANDOM") + public Integer getIsRandom() { + return isRandom; + } + + public void setIsRandom(Integer isRandom) { + this.isRandom = isRandom; + if(isRandom == null){ + removeValidField("isRandom"); + return; + } + addValidField("isRandom"); + } + + @Column(name = "CD_CATEGORY_ID") + public Integer getCdCategoryId() { + return cdCategoryId; + } + + public void setCdCategoryId(Integer cdCategoryId) { + this.cdCategoryId = cdCategoryId; + if(cdCategoryId == null){ + removeValidField("cdCategoryId"); + return; + } + addValidField("cdCategoryId"); + } + + @Column(name = "RANDOM_NUM") + public Integer getRandomNum() { + return randomNum; + } + + public void setRandomNum(Integer randomNum) { + this.randomNum = randomNum; + if(randomNum == null){ + removeValidField("randomNum"); + return; + } + addValidField("randomNum"); + } + + @Column(name = "BEGIN_TIME") + public Date getBeginTime() { + return beginTime; + } + + public void setBeginTime(Date beginTime) { + this.beginTime = beginTime; + if(beginTime == null){ + removeValidField("beginTime"); + return; + } + addValidField("beginTime"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/entity/CdPlanExample.java b/src/main/java/com/xmomen/module/base/entity/CdPlanExample.java new file mode 100644 index 0000000..ac773a6 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/CdPlanExample.java @@ -0,0 +1,953 @@ +package com.xmomen.module.base.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisExample; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class CdPlanExample extends BaseMybatisExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public CdPlanExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("ID is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("ID is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Integer value) { + addCriterion("ID =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Integer value) { + addCriterion("ID <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Integer value) { + addCriterion("ID >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Integer value) { + addCriterion("ID >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Integer value) { + addCriterion("ID <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Integer value) { + addCriterion("ID <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("ID in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("ID not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Integer value1, Integer value2) { + addCriterion("ID between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Integer value1, Integer value2) { + addCriterion("ID not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andPlanNameIsNull() { + addCriterion("PLAN_NAME is null"); + return (Criteria) this; + } + + public Criteria andPlanNameIsNotNull() { + addCriterion("PLAN_NAME is not null"); + return (Criteria) this; + } + + public Criteria andPlanNameEqualTo(String value) { + addCriterion("PLAN_NAME =", value, "planName"); + return (Criteria) this; + } + + public Criteria andPlanNameNotEqualTo(String value) { + addCriterion("PLAN_NAME <>", value, "planName"); + return (Criteria) this; + } + + public Criteria andPlanNameGreaterThan(String value) { + addCriterion("PLAN_NAME >", value, "planName"); + return (Criteria) this; + } + + public Criteria andPlanNameGreaterThanOrEqualTo(String value) { + addCriterion("PLAN_NAME >=", value, "planName"); + return (Criteria) this; + } + + public Criteria andPlanNameLessThan(String value) { + addCriterion("PLAN_NAME <", value, "planName"); + return (Criteria) this; + } + + public Criteria andPlanNameLessThanOrEqualTo(String value) { + addCriterion("PLAN_NAME <=", value, "planName"); + return (Criteria) this; + } + + public Criteria andPlanNameLike(String value) { + addCriterion("PLAN_NAME like", value, "planName"); + return (Criteria) this; + } + + public Criteria andPlanNameNotLike(String value) { + addCriterion("PLAN_NAME not like", value, "planName"); + return (Criteria) this; + } + + public Criteria andPlanNameIn(List values) { + addCriterion("PLAN_NAME in", values, "planName"); + return (Criteria) this; + } + + public Criteria andPlanNameNotIn(List values) { + addCriterion("PLAN_NAME not in", values, "planName"); + return (Criteria) this; + } + + public Criteria andPlanNameBetween(String value1, String value2) { + addCriterion("PLAN_NAME between", value1, value2, "planName"); + return (Criteria) this; + } + + public Criteria andPlanNameNotBetween(String value1, String value2) { + addCriterion("PLAN_NAME not between", value1, value2, "planName"); + return (Criteria) this; + } + + public Criteria andCreateUserIsNull() { + addCriterion("CREATE_USER is null"); + return (Criteria) this; + } + + public Criteria andCreateUserIsNotNull() { + addCriterion("CREATE_USER is not null"); + return (Criteria) this; + } + + public Criteria andCreateUserEqualTo(String value) { + addCriterion("CREATE_USER =", value, "createUser"); + return (Criteria) this; + } + + public Criteria andCreateUserNotEqualTo(String value) { + addCriterion("CREATE_USER <>", value, "createUser"); + return (Criteria) this; + } + + public Criteria andCreateUserGreaterThan(String value) { + addCriterion("CREATE_USER >", value, "createUser"); + return (Criteria) this; + } + + public Criteria andCreateUserGreaterThanOrEqualTo(String value) { + addCriterion("CREATE_USER >=", value, "createUser"); + return (Criteria) this; + } + + public Criteria andCreateUserLessThan(String value) { + addCriterion("CREATE_USER <", value, "createUser"); + return (Criteria) this; + } + + public Criteria andCreateUserLessThanOrEqualTo(String value) { + addCriterion("CREATE_USER <=", value, "createUser"); + return (Criteria) this; + } + + public Criteria andCreateUserLike(String value) { + addCriterion("CREATE_USER like", value, "createUser"); + return (Criteria) this; + } + + public Criteria andCreateUserNotLike(String value) { + addCriterion("CREATE_USER not like", value, "createUser"); + return (Criteria) this; + } + + public Criteria andCreateUserIn(List values) { + addCriterion("CREATE_USER in", values, "createUser"); + return (Criteria) this; + } + + public Criteria andCreateUserNotIn(List values) { + addCriterion("CREATE_USER not in", values, "createUser"); + return (Criteria) this; + } + + public Criteria andCreateUserBetween(String value1, String value2) { + addCriterion("CREATE_USER between", value1, value2, "createUser"); + return (Criteria) this; + } + + public Criteria andCreateUserNotBetween(String value1, String value2) { + addCriterion("CREATE_USER not between", value1, value2, "createUser"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNull() { + addCriterion("CREATE_TIME is null"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNotNull() { + addCriterion("CREATE_TIME is not null"); + return (Criteria) this; + } + + public Criteria andCreateTimeEqualTo(Date value) { + addCriterion("CREATE_TIME =", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotEqualTo(Date value) { + addCriterion("CREATE_TIME <>", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThan(Date value) { + addCriterion("CREATE_TIME >", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) { + addCriterion("CREATE_TIME >=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThan(Date value) { + addCriterion("CREATE_TIME <", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThanOrEqualTo(Date value) { + addCriterion("CREATE_TIME <=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeIn(List values) { + addCriterion("CREATE_TIME in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotIn(List values) { + addCriterion("CREATE_TIME not in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeBetween(Date value1, Date value2) { + addCriterion("CREATE_TIME between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotBetween(Date value1, Date value2) { + addCriterion("CREATE_TIME not between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andDeliveryTypeIsNull() { + addCriterion("DELIVERY_TYPE is null"); + return (Criteria) this; + } + + public Criteria andDeliveryTypeIsNotNull() { + addCriterion("DELIVERY_TYPE is not null"); + return (Criteria) this; + } + + public Criteria andDeliveryTypeEqualTo(Integer value) { + addCriterion("DELIVERY_TYPE =", value, "deliveryType"); + return (Criteria) this; + } + + public Criteria andDeliveryTypeNotEqualTo(Integer value) { + addCriterion("DELIVERY_TYPE <>", value, "deliveryType"); + return (Criteria) this; + } + + public Criteria andDeliveryTypeGreaterThan(Integer value) { + addCriterion("DELIVERY_TYPE >", value, "deliveryType"); + return (Criteria) this; + } + + public Criteria andDeliveryTypeGreaterThanOrEqualTo(Integer value) { + addCriterion("DELIVERY_TYPE >=", value, "deliveryType"); + return (Criteria) this; + } + + public Criteria andDeliveryTypeLessThan(Integer value) { + addCriterion("DELIVERY_TYPE <", value, "deliveryType"); + return (Criteria) this; + } + + public Criteria andDeliveryTypeLessThanOrEqualTo(Integer value) { + addCriterion("DELIVERY_TYPE <=", value, "deliveryType"); + return (Criteria) this; + } + + public Criteria andDeliveryTypeIn(List values) { + addCriterion("DELIVERY_TYPE in", values, "deliveryType"); + return (Criteria) this; + } + + public Criteria andDeliveryTypeNotIn(List values) { + addCriterion("DELIVERY_TYPE not in", values, "deliveryType"); + return (Criteria) this; + } + + public Criteria andDeliveryTypeBetween(Integer value1, Integer value2) { + addCriterion("DELIVERY_TYPE between", value1, value2, "deliveryType"); + return (Criteria) this; + } + + public Criteria andDeliveryTypeNotBetween(Integer value1, Integer value2) { + addCriterion("DELIVERY_TYPE not between", value1, value2, "deliveryType"); + return (Criteria) this; + } + + public Criteria andDeliveryTimeIsNull() { + addCriterion("DELIVERY_TIME is null"); + return (Criteria) this; + } + + public Criteria andDeliveryTimeIsNotNull() { + addCriterion("DELIVERY_TIME is not null"); + return (Criteria) this; + } + + public Criteria andDeliveryTimeEqualTo(String value) { + addCriterion("DELIVERY_TIME =", value, "deliveryTime"); + return (Criteria) this; + } + + public Criteria andDeliveryTimeNotEqualTo(String value) { + addCriterion("DELIVERY_TIME <>", value, "deliveryTime"); + return (Criteria) this; + } + + public Criteria andDeliveryTimeGreaterThan(String value) { + addCriterion("DELIVERY_TIME >", value, "deliveryTime"); + return (Criteria) this; + } + + public Criteria andDeliveryTimeGreaterThanOrEqualTo(String value) { + addCriterion("DELIVERY_TIME >=", value, "deliveryTime"); + return (Criteria) this; + } + + public Criteria andDeliveryTimeLessThan(String value) { + addCriterion("DELIVERY_TIME <", value, "deliveryTime"); + return (Criteria) this; + } + + public Criteria andDeliveryTimeLessThanOrEqualTo(String value) { + addCriterion("DELIVERY_TIME <=", value, "deliveryTime"); + return (Criteria) this; + } + + public Criteria andDeliveryTimeLike(String value) { + addCriterion("DELIVERY_TIME like", value, "deliveryTime"); + return (Criteria) this; + } + + public Criteria andDeliveryTimeNotLike(String value) { + addCriterion("DELIVERY_TIME not like", value, "deliveryTime"); + return (Criteria) this; + } + + public Criteria andDeliveryTimeIn(List values) { + addCriterion("DELIVERY_TIME in", values, "deliveryTime"); + return (Criteria) this; + } + + public Criteria andDeliveryTimeNotIn(List values) { + addCriterion("DELIVERY_TIME not in", values, "deliveryTime"); + return (Criteria) this; + } + + public Criteria andDeliveryTimeBetween(String value1, String value2) { + addCriterion("DELIVERY_TIME between", value1, value2, "deliveryTime"); + return (Criteria) this; + } + + public Criteria andDeliveryTimeNotBetween(String value1, String value2) { + addCriterion("DELIVERY_TIME not between", value1, value2, "deliveryTime"); + return (Criteria) this; + } + + public Criteria andDeliverCountIsNull() { + addCriterion("DELIVER_COUNT is null"); + return (Criteria) this; + } + + public Criteria andDeliverCountIsNotNull() { + addCriterion("DELIVER_COUNT is not null"); + return (Criteria) this; + } + + public Criteria andDeliverCountEqualTo(Integer value) { + addCriterion("DELIVER_COUNT =", value, "deliverCount"); + return (Criteria) this; + } + + public Criteria andDeliverCountNotEqualTo(Integer value) { + addCriterion("DELIVER_COUNT <>", value, "deliverCount"); + return (Criteria) this; + } + + public Criteria andDeliverCountGreaterThan(Integer value) { + addCriterion("DELIVER_COUNT >", value, "deliverCount"); + return (Criteria) this; + } + + public Criteria andDeliverCountGreaterThanOrEqualTo(Integer value) { + addCriterion("DELIVER_COUNT >=", value, "deliverCount"); + return (Criteria) this; + } + + public Criteria andDeliverCountLessThan(Integer value) { + addCriterion("DELIVER_COUNT <", value, "deliverCount"); + return (Criteria) this; + } + + public Criteria andDeliverCountLessThanOrEqualTo(Integer value) { + addCriterion("DELIVER_COUNT <=", value, "deliverCount"); + return (Criteria) this; + } + + public Criteria andDeliverCountIn(List values) { + addCriterion("DELIVER_COUNT in", values, "deliverCount"); + return (Criteria) this; + } + + public Criteria andDeliverCountNotIn(List values) { + addCriterion("DELIVER_COUNT not in", values, "deliverCount"); + return (Criteria) this; + } + + public Criteria andDeliverCountBetween(Integer value1, Integer value2) { + addCriterion("DELIVER_COUNT between", value1, value2, "deliverCount"); + return (Criteria) this; + } + + public Criteria andDeliverCountNotBetween(Integer value1, Integer value2) { + addCriterion("DELIVER_COUNT not between", value1, value2, "deliverCount"); + return (Criteria) this; + } + + public Criteria andPriceIsNull() { + addCriterion("PRICE is null"); + return (Criteria) this; + } + + public Criteria andPriceIsNotNull() { + addCriterion("PRICE is not null"); + return (Criteria) this; + } + + public Criteria andPriceEqualTo(BigDecimal value) { + addCriterion("PRICE =", value, "price"); + return (Criteria) this; + } + + public Criteria andPriceNotEqualTo(BigDecimal value) { + addCriterion("PRICE <>", value, "price"); + return (Criteria) this; + } + + public Criteria andPriceGreaterThan(BigDecimal value) { + addCriterion("PRICE >", value, "price"); + return (Criteria) this; + } + + public Criteria andPriceGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("PRICE >=", value, "price"); + return (Criteria) this; + } + + public Criteria andPriceLessThan(BigDecimal value) { + addCriterion("PRICE <", value, "price"); + return (Criteria) this; + } + + public Criteria andPriceLessThanOrEqualTo(BigDecimal value) { + addCriterion("PRICE <=", value, "price"); + return (Criteria) this; + } + + public Criteria andPriceIn(List values) { + addCriterion("PRICE in", values, "price"); + return (Criteria) this; + } + + public Criteria andPriceNotIn(List values) { + addCriterion("PRICE not in", values, "price"); + return (Criteria) this; + } + + public Criteria andPriceBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("PRICE between", value1, value2, "price"); + return (Criteria) this; + } + + public Criteria andPriceNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("PRICE not between", value1, value2, "price"); + return (Criteria) this; + } + + public Criteria andIsRandomIsNull() { + addCriterion("IS_RANDOM is null"); + return (Criteria) this; + } + + public Criteria andIsRandomIsNotNull() { + addCriterion("IS_RANDOM is not null"); + return (Criteria) this; + } + + public Criteria andIsRandomEqualTo(Integer value) { + addCriterion("IS_RANDOM =", value, "isRandom"); + return (Criteria) this; + } + + public Criteria andIsRandomNotEqualTo(Integer value) { + addCriterion("IS_RANDOM <>", value, "isRandom"); + return (Criteria) this; + } + + public Criteria andIsRandomGreaterThan(Integer value) { + addCriterion("IS_RANDOM >", value, "isRandom"); + return (Criteria) this; + } + + public Criteria andIsRandomGreaterThanOrEqualTo(Integer value) { + addCriterion("IS_RANDOM >=", value, "isRandom"); + return (Criteria) this; + } + + public Criteria andIsRandomLessThan(Integer value) { + addCriterion("IS_RANDOM <", value, "isRandom"); + return (Criteria) this; + } + + public Criteria andIsRandomLessThanOrEqualTo(Integer value) { + addCriterion("IS_RANDOM <=", value, "isRandom"); + return (Criteria) this; + } + + public Criteria andIsRandomIn(List values) { + addCriterion("IS_RANDOM in", values, "isRandom"); + return (Criteria) this; + } + + public Criteria andIsRandomNotIn(List values) { + addCriterion("IS_RANDOM not in", values, "isRandom"); + return (Criteria) this; + } + + public Criteria andIsRandomBetween(Integer value1, Integer value2) { + addCriterion("IS_RANDOM between", value1, value2, "isRandom"); + return (Criteria) this; + } + + public Criteria andIsRandomNotBetween(Integer value1, Integer value2) { + addCriterion("IS_RANDOM not between", value1, value2, "isRandom"); + return (Criteria) this; + } + + public Criteria andCdCategoryIdIsNull() { + addCriterion("CD_CATEGORY_ID is null"); + return (Criteria) this; + } + + public Criteria andCdCategoryIdIsNotNull() { + addCriterion("CD_CATEGORY_ID is not null"); + return (Criteria) this; + } + + public Criteria andCdCategoryIdEqualTo(Integer value) { + addCriterion("CD_CATEGORY_ID =", value, "cdCategoryId"); + return (Criteria) this; + } + + public Criteria andCdCategoryIdNotEqualTo(Integer value) { + addCriterion("CD_CATEGORY_ID <>", value, "cdCategoryId"); + return (Criteria) this; + } + + public Criteria andCdCategoryIdGreaterThan(Integer value) { + addCriterion("CD_CATEGORY_ID >", value, "cdCategoryId"); + return (Criteria) this; + } + + public Criteria andCdCategoryIdGreaterThanOrEqualTo(Integer value) { + addCriterion("CD_CATEGORY_ID >=", value, "cdCategoryId"); + return (Criteria) this; + } + + public Criteria andCdCategoryIdLessThan(Integer value) { + addCriterion("CD_CATEGORY_ID <", value, "cdCategoryId"); + return (Criteria) this; + } + + public Criteria andCdCategoryIdLessThanOrEqualTo(Integer value) { + addCriterion("CD_CATEGORY_ID <=", value, "cdCategoryId"); + return (Criteria) this; + } + + public Criteria andCdCategoryIdIn(List values) { + addCriterion("CD_CATEGORY_ID in", values, "cdCategoryId"); + return (Criteria) this; + } + + public Criteria andCdCategoryIdNotIn(List values) { + addCriterion("CD_CATEGORY_ID not in", values, "cdCategoryId"); + return (Criteria) this; + } + + public Criteria andCdCategoryIdBetween(Integer value1, Integer value2) { + addCriterion("CD_CATEGORY_ID between", value1, value2, "cdCategoryId"); + return (Criteria) this; + } + + public Criteria andCdCategoryIdNotBetween(Integer value1, Integer value2) { + addCriterion("CD_CATEGORY_ID not between", value1, value2, "cdCategoryId"); + return (Criteria) this; + } + + public Criteria andRandomNumIsNull() { + addCriterion("RANDOM_NUM is null"); + return (Criteria) this; + } + + public Criteria andRandomNumIsNotNull() { + addCriterion("RANDOM_NUM is not null"); + return (Criteria) this; + } + + public Criteria andRandomNumEqualTo(Integer value) { + addCriterion("RANDOM_NUM =", value, "randomNum"); + return (Criteria) this; + } + + public Criteria andRandomNumNotEqualTo(Integer value) { + addCriterion("RANDOM_NUM <>", value, "randomNum"); + return (Criteria) this; + } + + public Criteria andRandomNumGreaterThan(Integer value) { + addCriterion("RANDOM_NUM >", value, "randomNum"); + return (Criteria) this; + } + + public Criteria andRandomNumGreaterThanOrEqualTo(Integer value) { + addCriterion("RANDOM_NUM >=", value, "randomNum"); + return (Criteria) this; + } + + public Criteria andRandomNumLessThan(Integer value) { + addCriterion("RANDOM_NUM <", value, "randomNum"); + return (Criteria) this; + } + + public Criteria andRandomNumLessThanOrEqualTo(Integer value) { + addCriterion("RANDOM_NUM <=", value, "randomNum"); + return (Criteria) this; + } + + public Criteria andRandomNumIn(List values) { + addCriterion("RANDOM_NUM in", values, "randomNum"); + return (Criteria) this; + } + + public Criteria andRandomNumNotIn(List values) { + addCriterion("RANDOM_NUM not in", values, "randomNum"); + return (Criteria) this; + } + + public Criteria andRandomNumBetween(Integer value1, Integer value2) { + addCriterion("RANDOM_NUM between", value1, value2, "randomNum"); + return (Criteria) this; + } + + public Criteria andRandomNumNotBetween(Integer value1, Integer value2) { + addCriterion("RANDOM_NUM not between", value1, value2, "randomNum"); + return (Criteria) this; + } + + public Criteria andBeginTimeIsNull() { + addCriterion("BEGIN_TIME is null"); + return (Criteria) this; + } + + public Criteria andBeginTimeIsNotNull() { + addCriterion("BEGIN_TIME is not null"); + return (Criteria) this; + } + + public Criteria andBeginTimeEqualTo(Date value) { + addCriterion("BEGIN_TIME =", value, "beginTime"); + return (Criteria) this; + } + + public Criteria andBeginTimeNotEqualTo(Date value) { + addCriterion("BEGIN_TIME <>", value, "beginTime"); + return (Criteria) this; + } + + public Criteria andBeginTimeGreaterThan(Date value) { + addCriterion("BEGIN_TIME >", value, "beginTime"); + return (Criteria) this; + } + + public Criteria andBeginTimeGreaterThanOrEqualTo(Date value) { + addCriterion("BEGIN_TIME >=", value, "beginTime"); + return (Criteria) this; + } + + public Criteria andBeginTimeLessThan(Date value) { + addCriterion("BEGIN_TIME <", value, "beginTime"); + return (Criteria) this; + } + + public Criteria andBeginTimeLessThanOrEqualTo(Date value) { + addCriterion("BEGIN_TIME <=", value, "beginTime"); + return (Criteria) this; + } + + public Criteria andBeginTimeIn(List values) { + addCriterion("BEGIN_TIME in", values, "beginTime"); + return (Criteria) this; + } + + public Criteria andBeginTimeNotIn(List values) { + addCriterion("BEGIN_TIME not in", values, "beginTime"); + return (Criteria) this; + } + + public Criteria andBeginTimeBetween(Date value1, Date value2) { + addCriterion("BEGIN_TIME between", value1, value2, "beginTime"); + return (Criteria) this; + } + + public Criteria andBeginTimeNotBetween(Date value1, Date value2) { + addCriterion("BEGIN_TIME not between", value1, value2, "beginTime"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/entity/CdPlanItem.java b/src/main/java/com/xmomen/module/base/entity/CdPlanItem.java new file mode 100644 index 0000000..94c4c25 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/CdPlanItem.java @@ -0,0 +1,91 @@ +package com.xmomen.module.base.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "cd_plan_item") +public class CdPlanItem extends BaseMybatisModel { + /** + * + */ + private Integer id; + + /** + * 计划ID + */ + private Integer cdPlanId; + + /** + * 搭配的产品 + */ + private Integer cdItemId; + + /** + * 份数 + */ + private Integer countValue; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "CD_PLAN_ID") + public Integer getCdPlanId() { + return cdPlanId; + } + + public void setCdPlanId(Integer cdPlanId) { + this.cdPlanId = cdPlanId; + if(cdPlanId == null){ + removeValidField("cdPlanId"); + return; + } + addValidField("cdPlanId"); + } + + @Column(name = "CD_ITEM_ID") + public Integer getCdItemId() { + return cdItemId; + } + + public void setCdItemId(Integer cdItemId) { + this.cdItemId = cdItemId; + if(cdItemId == null){ + removeValidField("cdItemId"); + return; + } + addValidField("cdItemId"); + } + + @Column(name = "COUNT_VALUE") + public Integer getCountValue() { + return countValue; + } + + public void setCountValue(Integer countValue) { + this.countValue = countValue; + if(countValue == null){ + removeValidField("countValue"); + return; + } + addValidField("countValue"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/entity/CdPlanItemExample.java b/src/main/java/com/xmomen/module/base/entity/CdPlanItemExample.java new file mode 100644 index 0000000..12b6a83 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/CdPlanItemExample.java @@ -0,0 +1,441 @@ +package com.xmomen.module.base.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisExample; +import java.util.ArrayList; +import java.util.List; + +public class CdPlanItemExample extends BaseMybatisExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public CdPlanItemExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("ID is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("ID is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Integer value) { + addCriterion("ID =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Integer value) { + addCriterion("ID <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Integer value) { + addCriterion("ID >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Integer value) { + addCriterion("ID >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Integer value) { + addCriterion("ID <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Integer value) { + addCriterion("ID <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("ID in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("ID not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Integer value1, Integer value2) { + addCriterion("ID between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Integer value1, Integer value2) { + addCriterion("ID not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andCdPlanIdIsNull() { + addCriterion("CD_PLAN_ID is null"); + return (Criteria) this; + } + + public Criteria andCdPlanIdIsNotNull() { + addCriterion("CD_PLAN_ID is not null"); + return (Criteria) this; + } + + public Criteria andCdPlanIdEqualTo(Integer value) { + addCriterion("CD_PLAN_ID =", value, "cdPlanId"); + return (Criteria) this; + } + + public Criteria andCdPlanIdNotEqualTo(Integer value) { + addCriterion("CD_PLAN_ID <>", value, "cdPlanId"); + return (Criteria) this; + } + + public Criteria andCdPlanIdGreaterThan(Integer value) { + addCriterion("CD_PLAN_ID >", value, "cdPlanId"); + return (Criteria) this; + } + + public Criteria andCdPlanIdGreaterThanOrEqualTo(Integer value) { + addCriterion("CD_PLAN_ID >=", value, "cdPlanId"); + return (Criteria) this; + } + + public Criteria andCdPlanIdLessThan(Integer value) { + addCriterion("CD_PLAN_ID <", value, "cdPlanId"); + return (Criteria) this; + } + + public Criteria andCdPlanIdLessThanOrEqualTo(Integer value) { + addCriterion("CD_PLAN_ID <=", value, "cdPlanId"); + return (Criteria) this; + } + + public Criteria andCdPlanIdIn(List values) { + addCriterion("CD_PLAN_ID in", values, "cdPlanId"); + return (Criteria) this; + } + + public Criteria andCdPlanIdNotIn(List values) { + addCriterion("CD_PLAN_ID not in", values, "cdPlanId"); + return (Criteria) this; + } + + public Criteria andCdPlanIdBetween(Integer value1, Integer value2) { + addCriterion("CD_PLAN_ID between", value1, value2, "cdPlanId"); + return (Criteria) this; + } + + public Criteria andCdPlanIdNotBetween(Integer value1, Integer value2) { + addCriterion("CD_PLAN_ID not between", value1, value2, "cdPlanId"); + return (Criteria) this; + } + + public Criteria andCdItemIdIsNull() { + addCriterion("CD_ITEM_ID is null"); + return (Criteria) this; + } + + public Criteria andCdItemIdIsNotNull() { + addCriterion("CD_ITEM_ID is not null"); + return (Criteria) this; + } + + public Criteria andCdItemIdEqualTo(Integer value) { + addCriterion("CD_ITEM_ID =", value, "cdItemId"); + return (Criteria) this; + } + + public Criteria andCdItemIdNotEqualTo(Integer value) { + addCriterion("CD_ITEM_ID <>", value, "cdItemId"); + return (Criteria) this; + } + + public Criteria andCdItemIdGreaterThan(Integer value) { + addCriterion("CD_ITEM_ID >", value, "cdItemId"); + return (Criteria) this; + } + + public Criteria andCdItemIdGreaterThanOrEqualTo(Integer value) { + addCriterion("CD_ITEM_ID >=", value, "cdItemId"); + return (Criteria) this; + } + + public Criteria andCdItemIdLessThan(Integer value) { + addCriterion("CD_ITEM_ID <", value, "cdItemId"); + return (Criteria) this; + } + + public Criteria andCdItemIdLessThanOrEqualTo(Integer value) { + addCriterion("CD_ITEM_ID <=", value, "cdItemId"); + return (Criteria) this; + } + + public Criteria andCdItemIdIn(List values) { + addCriterion("CD_ITEM_ID in", values, "cdItemId"); + return (Criteria) this; + } + + public Criteria andCdItemIdNotIn(List values) { + addCriterion("CD_ITEM_ID not in", values, "cdItemId"); + return (Criteria) this; + } + + public Criteria andCdItemIdBetween(Integer value1, Integer value2) { + addCriterion("CD_ITEM_ID between", value1, value2, "cdItemId"); + return (Criteria) this; + } + + public Criteria andCdItemIdNotBetween(Integer value1, Integer value2) { + addCriterion("CD_ITEM_ID not between", value1, value2, "cdItemId"); + return (Criteria) this; + } + + public Criteria andCountValueIsNull() { + addCriterion("COUNT_VALUE is null"); + return (Criteria) this; + } + + public Criteria andCountValueIsNotNull() { + addCriterion("COUNT_VALUE is not null"); + return (Criteria) this; + } + + public Criteria andCountValueEqualTo(Integer value) { + addCriterion("COUNT_VALUE =", value, "countValue"); + return (Criteria) this; + } + + public Criteria andCountValueNotEqualTo(Integer value) { + addCriterion("COUNT_VALUE <>", value, "countValue"); + return (Criteria) this; + } + + public Criteria andCountValueGreaterThan(Integer value) { + addCriterion("COUNT_VALUE >", value, "countValue"); + return (Criteria) this; + } + + public Criteria andCountValueGreaterThanOrEqualTo(Integer value) { + addCriterion("COUNT_VALUE >=", value, "countValue"); + return (Criteria) this; + } + + public Criteria andCountValueLessThan(Integer value) { + addCriterion("COUNT_VALUE <", value, "countValue"); + return (Criteria) this; + } + + public Criteria andCountValueLessThanOrEqualTo(Integer value) { + addCriterion("COUNT_VALUE <=", value, "countValue"); + return (Criteria) this; + } + + public Criteria andCountValueIn(List values) { + addCriterion("COUNT_VALUE in", values, "countValue"); + return (Criteria) this; + } + + public Criteria andCountValueNotIn(List values) { + addCriterion("COUNT_VALUE not in", values, "countValue"); + return (Criteria) this; + } + + public Criteria andCountValueBetween(Integer value1, Integer value2) { + addCriterion("COUNT_VALUE between", value1, value2, "countValue"); + return (Criteria) this; + } + + public Criteria andCountValueNotBetween(Integer value1, Integer value2) { + addCriterion("COUNT_VALUE not between", value1, value2, "countValue"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/entity/mapper/CdActivityMapper.java b/src/main/java/com/xmomen/module/base/entity/mapper/CdActivityMapper.java new file mode 100644 index 0000000..a715a06 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/mapper/CdActivityMapper.java @@ -0,0 +1,16 @@ +package com.xmomen.module.base.entity.mapper; + +import com.xmomen.framework.mybatis.mapper.MybatisMapper; +import com.xmomen.module.base.entity.CdActivity; +import com.xmomen.module.base.entity.CdActivityExample; +import org.apache.ibatis.annotations.Param; + +public interface CdActivityMapper extends MybatisMapper { + int countByExample(CdActivityExample example); + + int deleteByExample(CdActivityExample example); + + int insertSelective(CdActivity record); + + int updateByExampleSelective(@Param("record") CdActivity record, @Param("example") CdActivityExample example); +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/entity/mapper/CdBindMapper.java b/src/main/java/com/xmomen/module/base/entity/mapper/CdBindMapper.java new file mode 100644 index 0000000..2be1715 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/mapper/CdBindMapper.java @@ -0,0 +1,16 @@ +package com.xmomen.module.base.entity.mapper; + +import com.xmomen.framework.mybatis.mapper.MybatisMapper; +import com.xmomen.module.base.entity.CdBind; +import com.xmomen.module.base.entity.CdBindExample; +import org.apache.ibatis.annotations.Param; + +public interface CdBindMapper extends MybatisMapper { + int countByExample(CdBindExample example); + + int deleteByExample(CdBindExample example); + + int insertSelective(CdBind record); + + int updateByExampleSelective(@Param("record") CdBind record, @Param("example") CdBindExample example); +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/entity/mapper/CdCategoryMapper.java b/src/main/java/com/xmomen/module/base/entity/mapper/CdCategoryMapper.java new file mode 100644 index 0000000..a971ec0 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/mapper/CdCategoryMapper.java @@ -0,0 +1,16 @@ +package com.xmomen.module.base.entity.mapper; + +import com.xmomen.framework.mybatis.mapper.MybatisMapper; +import com.xmomen.module.base.entity.CdCategory; +import com.xmomen.module.base.entity.CdCategoryExample; +import org.apache.ibatis.annotations.Param; + +public interface CdCategoryMapper extends MybatisMapper { + int countByExample(CdCategoryExample example); + + int deleteByExample(CdCategoryExample example); + + int insertSelective(CdCategory record); + + int updateByExampleSelective(@Param("record") CdCategory record, @Param("example") CdCategoryExample example); +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/entity/mapper/CdCompanyMapper.java b/src/main/java/com/xmomen/module/base/entity/mapper/CdCompanyMapper.java new file mode 100644 index 0000000..ff9aad2 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/mapper/CdCompanyMapper.java @@ -0,0 +1,16 @@ +package com.xmomen.module.base.entity.mapper; + +import com.xmomen.framework.mybatis.mapper.MybatisMapper; +import com.xmomen.module.base.entity.CdCompany; +import com.xmomen.module.base.entity.CdCompanyExample; +import org.apache.ibatis.annotations.Param; + +public interface CdCompanyMapper extends MybatisMapper { + int countByExample(CdCompanyExample example); + + int deleteByExample(CdCompanyExample example); + + int insertSelective(CdCompany record); + + int updateByExampleSelective(@Param("record") CdCompany record, @Param("example") CdCompanyExample example); +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/entity/mapper/CdContractItemMapper.java b/src/main/java/com/xmomen/module/base/entity/mapper/CdContractItemMapper.java new file mode 100644 index 0000000..f5267ee --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/mapper/CdContractItemMapper.java @@ -0,0 +1,16 @@ +package com.xmomen.module.base.entity.mapper; + +import com.xmomen.framework.mybatis.mapper.MybatisMapper; +import com.xmomen.module.base.entity.CdContractItem; +import com.xmomen.module.base.entity.CdContractItemExample; +import org.apache.ibatis.annotations.Param; + +public interface CdContractItemMapper extends MybatisMapper { + int countByExample(CdContractItemExample example); + + int deleteByExample(CdContractItemExample example); + + int insertSelective(CdContractItem record); + + int updateByExampleSelective(@Param("record") CdContractItem record, @Param("example") CdContractItemExample example); +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/entity/mapper/CdCouponCategoryRefMapper.java b/src/main/java/com/xmomen/module/base/entity/mapper/CdCouponCategoryRefMapper.java new file mode 100644 index 0000000..324b139 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/mapper/CdCouponCategoryRefMapper.java @@ -0,0 +1,16 @@ +package com.xmomen.module.base.entity.mapper; + +import com.xmomen.framework.mybatis.mapper.MybatisMapper; +import com.xmomen.module.base.entity.CdCouponCategoryRef; +import com.xmomen.module.base.entity.CdCouponCategoryRefExample; +import org.apache.ibatis.annotations.Param; + +public interface CdCouponCategoryRefMapper extends MybatisMapper { + int countByExample(CdCouponCategoryRefExample example); + + int deleteByExample(CdCouponCategoryRefExample example); + + int insertSelective(CdCouponCategoryRef record); + + int updateByExampleSelective(@Param("record") CdCouponCategoryRef record, @Param("example") CdCouponCategoryRefExample example); +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/entity/mapper/CdCouponMapper.java b/src/main/java/com/xmomen/module/base/entity/mapper/CdCouponMapper.java new file mode 100644 index 0000000..7b6e469 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/mapper/CdCouponMapper.java @@ -0,0 +1,16 @@ +package com.xmomen.module.base.entity.mapper; + +import com.xmomen.framework.mybatis.mapper.MybatisMapper; +import com.xmomen.module.base.entity.CdCoupon; +import com.xmomen.module.base.entity.CdCouponExample; +import org.apache.ibatis.annotations.Param; + +public interface CdCouponMapper extends MybatisMapper { + int countByExample(CdCouponExample example); + + int deleteByExample(CdCouponExample example); + + int insertSelective(CdCoupon record); + + int updateByExampleSelective(@Param("record") CdCoupon record, @Param("example") CdCouponExample example); +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/entity/mapper/CdCouponRefMapper.java b/src/main/java/com/xmomen/module/base/entity/mapper/CdCouponRefMapper.java new file mode 100644 index 0000000..5b9e5ef --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/mapper/CdCouponRefMapper.java @@ -0,0 +1,16 @@ +package com.xmomen.module.base.entity.mapper; + +import com.xmomen.framework.mybatis.mapper.MybatisMapper; +import com.xmomen.module.base.entity.CdCouponRef; +import com.xmomen.module.base.entity.CdCouponRefExample; +import org.apache.ibatis.annotations.Param; + +public interface CdCouponRefMapper extends MybatisMapper { + int countByExample(CdCouponRefExample example); + + int deleteByExample(CdCouponRefExample example); + + int insertSelective(CdCouponRef record); + + int updateByExampleSelective(@Param("record") CdCouponRef record, @Param("example") CdCouponRefExample example); +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/entity/mapper/CdExpressMapper.java b/src/main/java/com/xmomen/module/base/entity/mapper/CdExpressMapper.java new file mode 100644 index 0000000..b73a919 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/mapper/CdExpressMapper.java @@ -0,0 +1,16 @@ +package com.xmomen.module.base.entity.mapper; + +import com.xmomen.framework.mybatis.mapper.MybatisMapper; +import com.xmomen.module.base.entity.CdExpress; +import com.xmomen.module.base.entity.CdExpressExample; +import org.apache.ibatis.annotations.Param; + +public interface CdExpressMapper extends MybatisMapper { + int countByExample(CdExpressExample example); + + int deleteByExample(CdExpressExample example); + + int insertSelective(CdExpress record); + + int updateByExampleSelective(@Param("record") CdExpress record, @Param("example") CdExpressExample example); +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/entity/mapper/CdExpressMemberMapper.java b/src/main/java/com/xmomen/module/base/entity/mapper/CdExpressMemberMapper.java new file mode 100644 index 0000000..f5ecbe2 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/mapper/CdExpressMemberMapper.java @@ -0,0 +1,16 @@ +package com.xmomen.module.base.entity.mapper; + +import com.xmomen.framework.mybatis.mapper.MybatisMapper; +import com.xmomen.module.base.entity.CdExpressMember; +import com.xmomen.module.base.entity.CdExpressMemberExample; +import org.apache.ibatis.annotations.Param; + +public interface CdExpressMemberMapper extends MybatisMapper { + int countByExample(CdExpressMemberExample example); + + int deleteByExample(CdExpressMemberExample example); + + int insertSelective(CdExpressMember record); + + int updateByExampleSelective(@Param("record") CdExpressMember record, @Param("example") CdExpressMemberExample example); +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/entity/mapper/CdPlanMapper.java b/src/main/java/com/xmomen/module/base/entity/mapper/CdPlanMapper.java new file mode 100644 index 0000000..765aafb --- /dev/null +++ b/src/main/java/com/xmomen/module/base/entity/mapper/CdPlanMapper.java @@ -0,0 +1,16 @@ +package com.xmomen.module.base.entity.mapper; + +import com.xmomen.framework.mybatis.mapper.MybatisMapper; +import com.xmomen.module.base.entity.CdPlan; +import com.xmomen.module.base.entity.CdPlanExample; +import org.apache.ibatis.annotations.Param; + +public interface CdPlanMapper extends MybatisMapper { + int countByExample(CdPlanExample example); + + int deleteByExample(CdPlanExample example); + + int insertSelective(CdPlan record); + + int updateByExampleSelective(@Param("record") CdPlan record, @Param("example") CdPlanExample example); +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/mapper/BasePlanMapper.xml b/src/main/java/com/xmomen/module/base/mapper/BasePlanMapper.xml new file mode 100644 index 0000000..2fcf59d --- /dev/null +++ b/src/main/java/com/xmomen/module/base/mapper/BasePlanMapper.xml @@ -0,0 +1,42 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/mapper/CompanyMapper.xml b/src/main/java/com/xmomen/module/base/mapper/CompanyMapper.xml new file mode 100644 index 0000000..d6553a3 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/mapper/CompanyMapper.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/java/com/xmomen/module/base/mapper/ContractMapper.xml b/src/main/java/com/xmomen/module/base/mapper/ContractMapper.xml new file mode 100644 index 0000000..f472a2a --- /dev/null +++ b/src/main/java/com/xmomen/module/base/mapper/ContractMapper.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/mapper/CouponCategoryMapper.java b/src/main/java/com/xmomen/module/base/mapper/CouponCategoryMapper.java new file mode 100644 index 0000000..9d1edc6 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/mapper/CouponCategoryMapper.java @@ -0,0 +1,11 @@ +package com.xmomen.module.base.mapper; + +/** + * Created by Jeng on 2016/3/30. + */ +public interface CouponCategoryMapper { + + public static final String CouponCategoryMapperNameSpace = "com.xmomen.module.base.mapper.CouponCategoryMapper."; + + public static final String COUPON_RELATION_ITEM_CODE = "TICKET_ITEM"; +} diff --git a/src/main/java/com/xmomen/module/base/mapper/CouponCategoryMapper.xml b/src/main/java/com/xmomen/module/base/mapper/CouponCategoryMapper.xml new file mode 100644 index 0000000..59b7182 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/mapper/CouponCategoryMapper.xml @@ -0,0 +1,27 @@ + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/mapper/CouponMapper.xml b/src/main/java/com/xmomen/module/base/mapper/CouponMapper.xml new file mode 100644 index 0000000..9024797 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/mapper/CouponMapper.xml @@ -0,0 +1,316 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + update cd_coupon + set + is_send=0 , + is_useful = 0, + useful_date = null, + batch = null, + cd_company_id = null, + cd_user_id = null, + USER_PRICE = null + where id=#{id} + + + + + + + + + diff --git a/src/main/java/com/xmomen/module/base/mapper/ExpressMapper.java b/src/main/java/com/xmomen/module/base/mapper/ExpressMapper.java new file mode 100644 index 0000000..2ef6bbe --- /dev/null +++ b/src/main/java/com/xmomen/module/base/mapper/ExpressMapper.java @@ -0,0 +1,6 @@ +package com.xmomen.module.base.mapper; + +public interface ExpressMapper { + public static final String ExpressMapperNameSpace = "com.xmomen.module.base.mapper.ExpressMapper."; + +} diff --git a/src/main/java/com/xmomen/module/base/mapper/ExpressMapper.xml b/src/main/java/com/xmomen/module/base/mapper/ExpressMapper.xml new file mode 100644 index 0000000..063d85b --- /dev/null +++ b/src/main/java/com/xmomen/module/base/mapper/ExpressMapper.xml @@ -0,0 +1,215 @@ + + + + + + + update + tb_order + set + Despatch_Express_Id = null + where + order_no=#{orderNo} + + + + + + + + + + + + + + + + diff --git a/src/main/java/com/xmomen/module/base/mapper/ExpressMemberMapper.java b/src/main/java/com/xmomen/module/base/mapper/ExpressMemberMapper.java new file mode 100644 index 0000000..8914f03 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/mapper/ExpressMemberMapper.java @@ -0,0 +1,6 @@ +package com.xmomen.module.base.mapper; + +public interface ExpressMemberMapper { + public static final String ExpressMemberMapperNameSpace = "com.xmomen.module.base.mapper.ExpressMemberMapper."; + +} diff --git a/src/main/java/com/xmomen/module/base/mapper/ItemCategoryMapper.java b/src/main/java/com/xmomen/module/base/mapper/ItemCategoryMapper.java new file mode 100644 index 0000000..1863260 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/mapper/ItemCategoryMapper.java @@ -0,0 +1,19 @@ +package com.xmomen.module.base.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.ResultType; +import org.apache.ibatis.annotations.Select; + +import com.xmomen.module.base.model.ItemCategoryModel; + +/** + * Created by Jeng on 16/3/27. + */ +public interface ItemCategoryMapper { + + @Select(value = "SELECT s.ID,s.CATEGORY_NAME AS name, s.PARENT_ID,p.CATEGORY_NAME AS parent_name FROM cd_category s LEFT JOIN cd_category p ON p.ID=s.PARENT_ID where FIND_IN_SET(s.id, query_children_category(${id}))") + @ResultType(ItemCategoryModel.class) + public List getItemCategoryTree(@Param(value = "id") Integer id); +} diff --git a/src/main/java/com/xmomen/module/base/mapper/ItemDetailMapper.java b/src/main/java/com/xmomen/module/base/mapper/ItemDetailMapper.java new file mode 100644 index 0000000..57891de --- /dev/null +++ b/src/main/java/com/xmomen/module/base/mapper/ItemDetailMapper.java @@ -0,0 +1,6 @@ +package com.xmomen.module.base.mapper; + +public interface ItemDetailMapper { + public static final String ItemDetailMapperNameSpace = "com.xmomen.module.base.mapper.ItemDetailMapper."; + +} diff --git a/src/main/java/com/xmomen/module/base/mapper/ItemDetailMapper.xml b/src/main/java/com/xmomen/module/base/mapper/ItemDetailMapper.xml new file mode 100644 index 0000000..0ede2b1 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/mapper/ItemDetailMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/mapper/ItemMapper.java b/src/main/java/com/xmomen/module/base/mapper/ItemMapper.java new file mode 100644 index 0000000..86cd40c --- /dev/null +++ b/src/main/java/com/xmomen/module/base/mapper/ItemMapper.java @@ -0,0 +1,6 @@ +package com.xmomen.module.base.mapper; + +public interface ItemMapper { + public static final String ItemMapperNameSpace = "com.xmomen.module.base.mapper.ItemMapper."; + +} diff --git a/src/main/java/com/xmomen/module/base/mapper/MemberMapper.java b/src/main/java/com/xmomen/module/base/mapper/MemberMapper.java new file mode 100644 index 0000000..5390e17 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/mapper/MemberMapper.java @@ -0,0 +1,5 @@ +package com.xmomen.module.base.mapper; + +public interface MemberMapper { + public static final String MemberMapperNameSpace = "com.xmomen.module.base.mapper.MemberMapper."; +} diff --git a/src/main/java/com/xmomen/module/base/mapper/MemberMapper.xml b/src/main/java/com/xmomen/module/base/mapper/MemberMapper.xml new file mode 100644 index 0000000..e64516a --- /dev/null +++ b/src/main/java/com/xmomen/module/base/mapper/MemberMapper.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/mapper/PublicMapper.java b/src/main/java/com/xmomen/module/base/mapper/PublicMapper.java new file mode 100644 index 0000000..6377159 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/mapper/PublicMapper.java @@ -0,0 +1,13 @@ +package com.xmomen.module.base.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.ResultType; +import org.apache.ibatis.annotations.Select; + +import com.xmomen.module.user.entity.SysUsers; + +public interface PublicMapper { + + public static final String PublicMapperNameSpace = "com.xmomen.module.base.mapper.PublicMapper."; +} diff --git a/src/main/java/com/xmomen/module/base/model/ActivityRefModel.java b/src/main/java/com/xmomen/module/base/model/ActivityRefModel.java new file mode 100644 index 0000000..1319b89 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/model/ActivityRefModel.java @@ -0,0 +1,51 @@ +package com.xmomen.module.base.model; + +import java.io.Serializable; + +public class ActivityRefModel implements Serializable{ + private Integer cdItemId; + private String itemName; + private String itemCode; + private String categoryName; + private Integer count; + public Integer getCount() { + return count; + } + + public void setCount(Integer count) { + this.count = count; + } + + public String getItemName() { + return itemName; + } + + public void setItemName(String itemName) { + this.itemName = itemName; + } + + public String getItemCode() { + return itemCode; + } + + public void setItemCode(String itemCode) { + this.itemCode = itemCode; + } + + public String getCategoryName() { + return categoryName; + } + + public void setCategoryName(String categoryName) { + this.categoryName = categoryName; + } + + public Integer getCdItemId() { + return cdItemId; + } + + public void setCdItemId(Integer cdItemId) { + this.cdItemId = cdItemId; + } + +} diff --git a/src/main/java/com/xmomen/module/base/model/CompanyModel.java b/src/main/java/com/xmomen/module/base/model/CompanyModel.java new file mode 100644 index 0000000..55684e4 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/model/CompanyModel.java @@ -0,0 +1,94 @@ +package com.xmomen.module.base.model; + +import java.util.List; + +public class CompanyModel { + /** + * + */ + private Integer id; + + /** + * 单位编号 + */ + private String companyCode; + + /** + * 单位名称 + */ + private String companyName; + + /** + * 单位地址 + */ + private String companyAddress; + + /** + * 单位联系人 + */ + private String companyLeader; + + /** + * 联系人电话 + */ + private String companyLeaderTel; + + List companyCustomerManagers; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getCompanyCode() { + return companyCode; + } + + public void setCompanyCode(String companyCode) { + this.companyCode = companyCode; + } + + public String getCompanyName() { + return companyName; + } + + public void setCompanyName(String companyName) { + this.companyName = companyName; + } + + public String getCompanyAddress() { + return companyAddress; + } + + public void setCompanyAddress(String companyAddress) { + this.companyAddress = companyAddress; + } + + public String getCompanyLeader() { + return companyLeader; + } + + public void setCompanyLeader(String companyLeader) { + this.companyLeader = companyLeader; + } + + public String getCompanyLeaderTel() { + return companyLeaderTel; + } + + public void setCompanyLeaderTel(String companyLeaderTel) { + this.companyLeaderTel = companyLeaderTel; + } + + public List getCompanyCustomerManagers() { + return companyCustomerManagers; + } + + public void setCompanyCustomerManagers( + List companyCustomerManagers) { + this.companyCustomerManagers = companyCustomerManagers; + } +} diff --git a/src/main/java/com/xmomen/module/base/model/ContractItemModel.java b/src/main/java/com/xmomen/module/base/model/ContractItemModel.java new file mode 100644 index 0000000..0dfa597 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/model/ContractItemModel.java @@ -0,0 +1,40 @@ +package com.xmomen.module.base.model; + +import java.io.Serializable; +import java.math.BigDecimal; + +import lombok.Data; + +public @Data class ContractItemModel implements Serializable { + + private Integer id; + private String itemCode; + private String itemName; + private BigDecimal sellPrice; + private String categoryName; + private String contractTypeName; + private String discountText; + /** + * 1-固定价格,2-固定金额 + */ + private Integer contractType; + + /** + * 产品合同 + */ + private Integer cdContractId; + + /** + * 当合同适用范围为1的时候,每种产品要设定对应的合同价 + */ + private Integer cdItemId; + + /** + * 合同价格 + */ + private BigDecimal contractValue; + /** + * 合同折扣 + */ + private BigDecimal discount; +} diff --git a/src/main/java/com/xmomen/module/base/model/ContractModel.java b/src/main/java/com/xmomen/module/base/model/ContractModel.java new file mode 100644 index 0000000..55b4051 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/model/ContractModel.java @@ -0,0 +1,59 @@ +package com.xmomen.module.base.model; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +import lombok.Data; + +public @Data class ContractModel implements Serializable { + private Integer id; + /** + * 合同名称 + */ + private String contractName; + /** + * 合同编号 + */ + private String contractCode; + /** + * 合同价的客户 + */ + private Integer cdMemberId; + /** + * 单位名称 + */ + private String companyName; + /** + * 合同价的单位 + */ + private Integer cdCompanyId; + + /** + * 1-部分产品,2-全部产品 + */ + private Integer scope; + + /** + * 仅当适用范围为全部产品时适用 + */ + private BigDecimal contractPrice; + + /** + * 合同开始时间 + */ + private Date beginTime; + + /** + * 合同开始时间 + */ + private Date endTime; + + /** + * 是否作废 + */ + private int isDel; + + private List contractItemList; +} diff --git a/src/main/java/com/xmomen/module/base/model/CouponActivityAddressHead.java b/src/main/java/com/xmomen/module/base/model/CouponActivityAddressHead.java new file mode 100644 index 0000000..472e512 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/model/CouponActivityAddressHead.java @@ -0,0 +1,16 @@ +package com.xmomen.module.base.model; + +import java.io.Serializable; +import java.util.List; + +import lombok.Data; + +public @Data class CouponActivityAddressHead implements Serializable{ + /** + * 卡 + */ + private String couponNumber; + + private List couponActivityAddressList; + +} diff --git a/src/main/java/com/xmomen/module/base/model/CouponModel.java b/src/main/java/com/xmomen/module/base/model/CouponModel.java new file mode 100644 index 0000000..2981c57 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/model/CouponModel.java @@ -0,0 +1,152 @@ +package com.xmomen.module.base.model; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +import lombok.Data; + +/** + * Created by Jeng on 2016/3/30. + */ +public @Data class CouponModel implements Serializable { + + /** + * + */ + private Integer id; + + /** + * 卡或者劵,1-卡,2-劵 + */ + private Integer couponType; + + private String couponTypeDesc; + + private Integer couponCategoryId; + + private Integer couponCategory; + + private Integer memberId; + + private String categoryName; + + /** + * 卡描述 + */ + private String couponDesc; + + /** + * 卡号 + */ + private String couponNumber; + + /** + * 可用金额/可用次数 + */ + private BigDecimal userPrice; + + /** + * 卡值:初始金额,初始次数 + */ + private BigDecimal couponValue; + + /** + * 最低赠送金额 + */ + private Integer lowestPrice; + + /** + * 密码 + */ + private String couponPassword; + + /** + * 有效开始时间 + */ + private Date beginTime; + + /** + * 有效结束时间 + */ + private Date endTime; + + /** + * 审核时间 + */ + private Date auditDate; + + /** + * 0-未使用,1-已使用 + */ + private Integer isUsed; + + private String isUsedDesc; + + /** + * 0-无效,1-有效 + */ + private Integer isUseful; + /** + * 0-无效,1-有效 + */ + private Integer isSend; + + /** + * 客服经理id + */ + private Integer managerId; + /** + * 发放单位Id + */ + private Integer companyId; + /** + * 发放单位 + */ + private String companyName; + + /** + * 发放客户经理 + */ + private String managerName; + /** + * 是否预付款 1-预付款,2-后付款 + */ + private Integer paymentType; + + private String consignmentName; + + private String consignmentPhone; + + private String consignmentAddress; + + private Date sendTime; + + private String receivedPrice; + + private String batch; + + private String isUsefulDesc; + + /** + * 0-非赠送,1-赠送 + */ + private Integer isGift; + + /** + * + */ + private String isGiftDesc; + /** + * + */ + private String notes; + /** + * 活动id + */ + private int cdActivityId; + + private List relationItemList; + +} diff --git a/src/main/java/com/xmomen/module/base/model/CouponQuery.java b/src/main/java/com/xmomen/module/base/model/CouponQuery.java new file mode 100644 index 0000000..068f962 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/model/CouponQuery.java @@ -0,0 +1,29 @@ +package com.xmomen.module.base.model; + +import java.io.Serializable; +import java.util.Date; + +import lombok.Data; + +/** + * Created by Jeng on 2016/3/30. + */ +public @Data +class CouponQuery implements Serializable { + + private String keyword; + private String couponNumber; + private String password; + private Integer couponType; + private Integer couponCategoryId; + private Integer categoryType; + private Integer isSend; + private Integer cdCompanyId; + private Integer customerMangerId; + private Integer isUseful; + private Integer isOver; + private Integer managerId; + private String batch; + private String auditDateStart; + private String auditDateEnd; +} diff --git a/src/main/java/com/xmomen/module/base/model/CouponRelationItem.java b/src/main/java/com/xmomen/module/base/model/CouponRelationItem.java new file mode 100644 index 0000000..c26e660 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/model/CouponRelationItem.java @@ -0,0 +1,28 @@ +package com.xmomen.module.base.model; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * Created by Jeng on 2016/5/16. + */ +public class CouponRelationItem implements Serializable{ + private Integer itemId; + private BigDecimal itemNumber; + + public Integer getItemId() { + return itemId; + } + + public void setItemId(Integer itemId) { + this.itemId = itemId; + } + + public BigDecimal getItemNumber() { + return itemNumber; + } + + public void setItemNumber(BigDecimal itemNumber) { + this.itemNumber = itemNumber; + } +} diff --git a/src/main/java/com/xmomen/module/base/model/CouponReportModel.java b/src/main/java/com/xmomen/module/base/model/CouponReportModel.java new file mode 100644 index 0000000..3cf7524 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/model/CouponReportModel.java @@ -0,0 +1,119 @@ +package com.xmomen.module.base.model; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +import org.jeecgframework.poi.excel.annotation.Excel; + +import lombok.Data; + +/** + */ +public class CouponReportModel implements Serializable { + + /** + * 卡或者劵,1-卡,2-劵 + */ + @Excel(name="卡劵",replace={"卡_1","劵_2"}) + private Integer couponType; + + @Excel(name="类型") + private String categoryName; + private Integer couponCategoryId; + /** + * 卡描述 + */ + @Excel(name="卡描述") + private String couponDesc; + + /** + * 卡号 + */ + @Excel(name="卡号") + private String couponNumber; + + /** + * 卡值:初始金额,初始次数 + */ + @Excel(name="初始金额") + private BigDecimal couponValue; + + /** + * 密码 + */ + @Excel(name="密码") + private String couponPassword; + + /** + * 是否预付款 1-预付款,2-后付款 + */ + @Excel(name="是否预付款",replace={"预付款_1","后付款_2"}) + private Integer paymentType; + + public Integer getCouponType() { + return couponType; + } + + public void setCouponType(Integer couponType) { + this.couponType = couponType; + } + + public String getCategoryName() { + return categoryName; + } + + public void setCategoryName(String categoryName) { + this.categoryName = categoryName; + } + + public String getCouponDesc() { + return couponDesc; + } + + public void setCouponDesc(String couponDesc) { + this.couponDesc = couponDesc; + } + + public String getCouponNumber() { + return couponNumber; + } + + public void setCouponNumber(String couponNumber) { + this.couponNumber = couponNumber; + } + + public BigDecimal getCouponValue() { + return couponValue; + } + + public void setCouponValue(BigDecimal couponValue) { + this.couponValue = couponValue; + } + + public String getCouponPassword() { + return couponPassword; + } + + public void setCouponPassword(String couponPassword) { + this.couponPassword = couponPassword; + } + + public Integer getPaymentType() { + return paymentType; + } + + public void setPaymentType(Integer paymentType) { + this.paymentType = paymentType; + } + + public Integer getCouponCategoryId() { + return couponCategoryId; + } + + public void setCouponCategoryId(Integer couponCategoryId) { + this.couponCategoryId = couponCategoryId; + } + +} diff --git a/src/main/java/com/xmomen/module/base/model/CreateContractItem.java b/src/main/java/com/xmomen/module/base/model/CreateContractItem.java new file mode 100644 index 0000000..d685ca5 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/model/CreateContractItem.java @@ -0,0 +1,36 @@ +package com.xmomen.module.base.model; + +import java.io.Serializable; +import java.math.BigDecimal; + +import lombok.Data; + +public @Data class CreateContractItem implements Serializable{ + private Integer addType;//添加方式 + private Integer cdCategoryId; + private String itemCode; + /** + * 1-固定价格,2-固定金额 + */ + private Integer contractType; + + /** + * 产品合同 + */ + private Integer cdContractId; + + /** + * 当合同适用范围为1的时候,每种产品要设定对应的合同价 + */ + private Integer cdItemId; + + /** + * 合同折扣 + */ + private BigDecimal discount; + /** + * 合同价格 + */ + private BigDecimal contractValue; + +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/model/CreateCoupon.java b/src/main/java/com/xmomen/module/base/model/CreateCoupon.java new file mode 100644 index 0000000..6fc9493 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/model/CreateCoupon.java @@ -0,0 +1,32 @@ +package com.xmomen.module.base.model; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +import javax.validation.constraints.NotNull; + +import lombok.Data; + +/** + * Created by Jeng on 2016/3/30. + */ +public @Data class CreateCoupon implements Serializable { + + @NotNull + private Integer couponType; + private String couponDesc; + @NotNull + private Integer couponCategory; + private String couponNumber; + private String couponPassword; + private Date beginTime; + private Date endTime; + private BigDecimal couponValue; + private Integer isUsed; + private Integer isUseful; + private Integer isGift; + private String notes; + private Integer paymentType; + private BigDecimal userPrice; +} diff --git a/src/main/java/com/xmomen/module/base/model/CreateCouponCategory.java b/src/main/java/com/xmomen/module/base/model/CreateCouponCategory.java new file mode 100644 index 0000000..311566a --- /dev/null +++ b/src/main/java/com/xmomen/module/base/model/CreateCouponCategory.java @@ -0,0 +1,48 @@ +package com.xmomen.module.base.model; + +import java.io.Serializable; +import java.util.List; + +import javax.validation.constraints.NotNull; + +import org.hibernate.validator.constraints.NotBlank; + +/** + * Created by Jeng on 16/3/26. + */ +public class CreateCouponCategory implements Serializable { + + @NotNull + @NotBlank + private String categoryName; + @NotNull + private Integer categoryType; + + private List categoryRefs; + + public String getCategoryName() { + return categoryName; + } + + public void setCategoryName(String categoryName) { + this.categoryName = categoryName; + } + + public Integer getCategoryType() { + return categoryType; + } + + public void setCategoryType(Integer categoryType) { + this.categoryType = categoryType; + } + + public List getCategoryRefs() { + return categoryRefs; + } + + public void setCategoryRefs(List categoryRefs) { + this.categoryRefs = categoryRefs; + } + + +} diff --git a/src/main/java/com/xmomen/module/base/model/CreateItemDetail.java b/src/main/java/com/xmomen/module/base/model/CreateItemDetail.java new file mode 100644 index 0000000..9f5df0e --- /dev/null +++ b/src/main/java/com/xmomen/module/base/model/CreateItemDetail.java @@ -0,0 +1,23 @@ +package com.xmomen.module.base.model; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import lombok.Data; + +import javax.persistence.*; + +public @Data class CreateItemDetail extends BaseMybatisModel { + /** + * 主键 + */ + private Integer id; + + /** + * 商品ID + */ + private Integer cdItemId; + + /** + * 商品的详细内容 + */ + private String itemDetailContent; +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/model/CreateMember.java b/src/main/java/com/xmomen/module/base/model/CreateMember.java new file mode 100644 index 0000000..f4b4661 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/model/CreateMember.java @@ -0,0 +1,165 @@ +package com.xmomen.module.base.model; + +import java.io.Serializable; +import java.util.List; + +import javax.validation.constraints.NotNull; + +import com.xmomen.module.member.model.MemberAddressCreate; +import com.xmomen.module.member.model.MemberAddressModel; +import org.hibernate.validator.constraints.NotBlank; + +public class CreateMember implements Serializable { + /** + * 会员编号 + */ + private String memberCode; + + /** + * 姓名 + */ + @NotNull + @NotBlank + private String name; + + /** + * 手机号 + */ + @NotNull + @NotBlank + private String phoneNumber; + + /** + * 卡号 + */ + private String couponNumber; + + + /** + * 家庭固话 + */ + private String telNumber; + + /** + * 办公室电话 + */ + private String officeTel; + + /** + * 1-潜在客户,2-普通客户,3-优质客户 + */ + private Integer memberType; + + /** + * 所属单位 + */ + private Integer cdCompanyId; + + /** + * 所属客服经理 + */ + private Integer cdUserId; + + private String password; + + private String email; + + //地址集合 + List memberAddressList; + + public List getMemberAddressList() { + return memberAddressList; + } + + public void setMemberAddressList(List memberAddressList) { + this.memberAddressList = memberAddressList; + } + + public String getMemberCode() { + return memberCode; + } + + public void setMemberCode(String memberCode) { + this.memberCode = memberCode; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getPhoneNumber() { + return phoneNumber; + } + + public void setPhoneNumber(String phoneNumber) { + this.phoneNumber = phoneNumber; + } + + public String getTelNumber() { + return telNumber; + } + + public void setTelNumber(String telNumber) { + this.telNumber = telNumber; + } + + public String getOfficeTel() { + return officeTel; + } + + public void setOfficeTel(String officeTel) { + this.officeTel = officeTel; + } + + public Integer getMemberType() { + return memberType; + } + + public void setMemberType(Integer memberType) { + this.memberType = memberType; + } + + public Integer getCdCompanyId() { + return cdCompanyId; + } + + public void setCdCompanyId(Integer cdCompanyId) { + this.cdCompanyId = cdCompanyId; + } + + public Integer getCdUserId() { + return cdUserId; + } + + public void setCdUserId(Integer cdUserId) { + this.cdUserId = cdUserId; + } + + public String getCouponNumber() { + return couponNumber; + } + + public void setCouponNumber(String couponNumber) { + this.couponNumber = couponNumber; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } +} diff --git a/src/main/java/com/xmomen/module/base/model/ExpressMemberModel.java b/src/main/java/com/xmomen/module/base/model/ExpressMemberModel.java new file mode 100644 index 0000000..2eec3a9 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/model/ExpressMemberModel.java @@ -0,0 +1,29 @@ +package com.xmomen.module.base.model; + +import java.io.Serializable; + +import lombok.Data; + +public @Data class ExpressMemberModel implements Serializable{ + /** + * 主键 + */ + private Integer id; + + /** + * 快递商id + */ + private Integer cdExpressId; + + /** + * 快递员姓名 + */ + private String memberName; + + /** + * 电话号码 + */ + private String phone; + + private String expressName; +} diff --git a/src/main/java/com/xmomen/module/base/model/ItemCategoryModel.java b/src/main/java/com/xmomen/module/base/model/ItemCategoryModel.java new file mode 100644 index 0000000..e866411 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/model/ItemCategoryModel.java @@ -0,0 +1,55 @@ +package com.xmomen.module.base.model; + +import java.io.Serializable; +import java.util.List; + +/** + * Created by Jeng on 16/3/25. + */ +public class ItemCategoryModel implements Serializable { + + private Integer id; + private String name; + private Integer parentId; + private String parentName; + private List nodes; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + public Integer getParentId() { + return parentId; + } + + public void setParentId(Integer parentId) { + this.parentId = parentId; + } + + public String getParentName() { + return parentName; + } + + public void setParentName(String parentName) { + this.parentName = parentName; + } + + public List getNodes() { + return nodes; + } + + public void setNodes(List nodes) { + this.nodes = nodes; + } +} diff --git a/src/main/java/com/xmomen/module/base/model/ItemChildModel.java b/src/main/java/com/xmomen/module/base/model/ItemChildModel.java new file mode 100644 index 0000000..c75c3f3 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/model/ItemChildModel.java @@ -0,0 +1,16 @@ +package com.xmomen.module.base.model; + +import java.io.Serializable; + +import lombok.Data; + +public @Data class ItemChildModel implements Serializable{ + + private Integer id; + private String itemName; + private String itemCode; + private String categoryName; + private Integer count; + private Integer sellStatus;//状态0-下架 1-上架 + +} diff --git a/src/main/java/com/xmomen/module/base/model/ItemDetailQuery.java b/src/main/java/com/xmomen/module/base/model/ItemDetailQuery.java new file mode 100644 index 0000000..a537675 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/model/ItemDetailQuery.java @@ -0,0 +1,21 @@ +package com.xmomen.module.base.model; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import lombok.Data; + +public @Data class ItemDetailQuery extends BaseMybatisModel { + /** + * 主键 + */ + private Integer id; + + /** + * 商品ID + */ + private Integer cdItemId; + + /** + * 商品的详细内容 + */ + private String itemDetailContent; +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/model/ItemQuery.java b/src/main/java/com/xmomen/module/base/model/ItemQuery.java new file mode 100644 index 0000000..5928c57 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/model/ItemQuery.java @@ -0,0 +1,23 @@ +package com.xmomen.module.base.model; + +import lombok.Data; + +import java.io.Serializable; + +/** + * Created by Jeng on 2016/5/13. + */ +public @Data +class ItemQuery implements Serializable{ + + private Integer id; + private String keyword; + private Integer sellStatus; + private Integer companyId; + private Integer itemType; + private String[] itemCodes; + private String sellUnit; + private Integer[] ids; + private Integer[] excludeIds; + private Integer excludeStock; +} diff --git a/src/main/java/com/xmomen/module/base/model/MemberCouponModel.java b/src/main/java/com/xmomen/module/base/model/MemberCouponModel.java new file mode 100644 index 0000000..e78927a --- /dev/null +++ b/src/main/java/com/xmomen/module/base/model/MemberCouponModel.java @@ -0,0 +1,21 @@ +package com.xmomen.module.base.model; + +import java.io.Serializable; +import java.math.BigDecimal; + +public class MemberCouponModel implements Serializable{ + private String couponNumber; + private BigDecimal userPrice; + public String getCouponNumber() { + return couponNumber; + } + public void setCouponNumber(String couponNumber) { + this.couponNumber = couponNumber; + } + public BigDecimal getUserPrice() { + return userPrice; + } + public void setUserPrice(BigDecimal userPrice) { + this.userPrice = userPrice; + } +} diff --git a/src/main/java/com/xmomen/module/base/model/MemberModel.java b/src/main/java/com/xmomen/module/base/model/MemberModel.java new file mode 100644 index 0000000..618dcb9 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/model/MemberModel.java @@ -0,0 +1,249 @@ +package com.xmomen.module.base.model; + +import java.io.Serializable; +import java.util.List; + +public class MemberModel implements Serializable{ + /** + * + */ + private Integer id; + /** + * 会员编号 + */ + private String memberCode; + + /** + * 姓名 + */ + private String name; + + /** + * 手机号 + */ + private String phoneNumber; + + private String spareName; + + private String spareName2; + /** + * 备用手机号1 + */ + private String spareTel; + + /** + * 备用手机号2 + */ + private String spareTel2; + + /** + * 家庭固话 + */ + private String telNumber; + + /** + * 办公室电话 + */ + private String officeTel; + + /** + * 收货地址 + */ + private String address; + + /** + * 备用地址1 + */ + private String spareAddress; + + /** + * 备用地址2 + */ + private String spareAddress2; + + /** + * 1-潜在客户,2-普通客户,3-优质客户 + */ + private Integer memberType; + + /** + * 所属单位 + */ + private Integer cdCompanyId; + /** + * 单位 + */ + private String companyName; + /** + * 所属客服经理 + */ + private Integer cdUserId; + /** + * 所属客服经理 + */ + private String managerName; + + private List couponNumbers; + + public String getMemberCode() { + return memberCode; + } + + + public Integer getId() { + return id; + } + + + public void setId(Integer id) { + this.id = id; + } + + + public void setMemberCode(String memberCode) { + this.memberCode = memberCode; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getPhoneNumber() { + return phoneNumber; + } + + public void setPhoneNumber(String phoneNumber) { + this.phoneNumber = phoneNumber; + } + + public String getSpareTel() { + return spareTel; + } + + public void setSpareTel(String spareTel) { + this.spareTel = spareTel; + } + + public String getSpareTel2() { + return spareTel2; + } + + public void setSpareTel2(String spareTel2) { + this.spareTel2 = spareTel2; + } + + public String getTelNumber() { + return telNumber; + } + + public void setTelNumber(String telNumber) { + this.telNumber = telNumber; + } + + public String getOfficeTel() { + return officeTel; + } + + public void setOfficeTel(String officeTel) { + this.officeTel = officeTel; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public String getSpareAddress() { + return spareAddress; + } + + public void setSpareAddress(String spareAddress) { + this.spareAddress = spareAddress; + } + + public String getSpareAddress2() { + return spareAddress2; + } + + public void setSpareAddress2(String spareAddress2) { + this.spareAddress2 = spareAddress2; + } + + public Integer getMemberType() { + return memberType; + } + + public void setMemberType(Integer memberType) { + this.memberType = memberType; + } + + public Integer getCdCompanyId() { + return cdCompanyId; + } + + public void setCdCompanyId(Integer cdCompanyId) { + this.cdCompanyId = cdCompanyId; + } + + public Integer getCdUserId() { + return cdUserId; + } + + public void setCdUserId(Integer cdUserId) { + this.cdUserId = cdUserId; + } + + public String getSpareName() { + return spareName; + } + + public void setSpareName(String spareName) { + this.spareName = spareName; + } + + public String getSpareName2() { + return spareName2; + } + + public void setSpareName2(String spareName2) { + this.spareName2 = spareName2; + } + + + public String getCompanyName() { + return companyName; + } + + + public void setCompanyName(String companyName) { + this.companyName = companyName; + } + + + public String getManagerName() { + return managerName; + } + + + public void setManagerName(String managerName) { + this.managerName = managerName; + } + + + public List getCouponNumbers() { + return couponNumbers; + } + + + public void setCouponNumbers(List couponNumbers) { + this.couponNumbers = couponNumbers; + } + +} diff --git a/src/main/java/com/xmomen/module/base/model/PlanItemModel.java b/src/main/java/com/xmomen/module/base/model/PlanItemModel.java new file mode 100644 index 0000000..9ec623c --- /dev/null +++ b/src/main/java/com/xmomen/module/base/model/PlanItemModel.java @@ -0,0 +1,41 @@ +package com.xmomen.module.base.model; + +import java.io.Serializable; + +public class PlanItemModel implements Serializable{ + private Integer cdItemId; + private String itemName; + private String itemCode; + private String categoryName; + private Integer count; + public Integer getCdItemId() { + return cdItemId; + } + public void setCdItemId(Integer cdItemId) { + this.cdItemId = cdItemId; + } + public String getItemName() { + return itemName; + } + public void setItemName(String itemName) { + this.itemName = itemName; + } + public String getItemCode() { + return itemCode; + } + public void setItemCode(String itemCode) { + this.itemCode = itemCode; + } + public String getCategoryName() { + return categoryName; + } + public void setCategoryName(String categoryName) { + this.categoryName = categoryName; + } + public Integer getCount() { + return count; + } + public void setCount(Integer count) { + this.count = count; + } +} diff --git a/src/main/java/com/xmomen/module/base/model/PlanModel.java b/src/main/java/com/xmomen/module/base/model/PlanModel.java new file mode 100644 index 0000000..cc1bc33 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/model/PlanModel.java @@ -0,0 +1,72 @@ +package com.xmomen.module.base.model; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +import lombok.Data; + +public @Data class PlanModel implements Serializable{ + /** + * 主键 + */ + private Integer id; + + /** + * 计划名称 + */ + private String planName; + + /** + * 计划创建人 + */ + private String createUser; + + /** + * 计划创建时间 + */ + private Date createTime; + + /** + * 配送频率 + */ + private Integer deliveryType; + + /** + * 配送时间(一周的星期几) + */ + private String deliveryTime; + + /** + * 配送的次数 + */ + private Integer deliverCount; + + /** + * 价格 + */ + private BigDecimal price; + + /** + * 是否随机 + */ + private Integer isRandom; + + /** + * 产品归属的类别 + */ + private Integer cdCategoryId; + + private String categoryName; + + /** + * 随机数 + */ + private Integer randomNum; + + private Date beginTime; + + private List planItems; + +} diff --git a/src/main/java/com/xmomen/module/base/model/ReadCardVo.java b/src/main/java/com/xmomen/module/base/model/ReadCardVo.java new file mode 100644 index 0000000..354749c --- /dev/null +++ b/src/main/java/com/xmomen/module/base/model/ReadCardVo.java @@ -0,0 +1,43 @@ +package com.xmomen.module.base.model; + +import java.math.BigDecimal; + +public class ReadCardVo { + private String couponNo; + private BigDecimal couponPrice; + private String userName; + private String phoneNumber; + private String couponPassword; + public String getCouponNo() { + return couponNo; + } + public void setCouponNo(String couponNo) { + this.couponNo = couponNo; + } + public BigDecimal getCouponPrice() { + return couponPrice; + } + public void setCouponPrice(BigDecimal couponPrice) { + this.couponPrice = couponPrice; + } + public String getUserName() { + return userName; + } + public void setUserName(String userName) { + this.userName = userName; + } + public String getPhoneNumber() { + return phoneNumber; + } + public void setPhoneNumber(String phoneNumber) { + this.phoneNumber = phoneNumber; + } + public String getCouponPassword() { + return couponPassword; + } + public void setCouponPassword(String couponPassword) { + this.couponPassword = couponPassword; + } + + +} diff --git a/src/main/java/com/xmomen/module/base/model/UpdateActivity.java b/src/main/java/com/xmomen/module/base/model/UpdateActivity.java new file mode 100644 index 0000000..acb4211 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/model/UpdateActivity.java @@ -0,0 +1,129 @@ +package com.xmomen.module.base.model; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +public class UpdateActivity implements Serializable { + /** + * 活动名称 + */ + private String activityName; + + /** + * 活动开始时间 + */ + private Date activityBeginTime; + + /** + * 活动结束时间 + */ + private Date activityEndTime; + + /** + * 活动介绍 + */ + private String activityDescribe; + + /** + * 参与活动的卡类型 + */ + private Integer activityType; + + /** + * 活动下单时间 + */ + private Integer activityDay; + + /** + * 是否启用(0-不启用,1-启用) + */ + private Integer available; + + private BigDecimal lowestPrice; + + private Integer couponCategory; + + private List activityRefList; + + public String getActivityName() { + return activityName; + } + + public void setActivityName(String activityName) { + this.activityName = activityName; + } + + public Date getActivityBeginTime() { + return activityBeginTime; + } + + public void setActivityBeginTime(Date activityBeginTime) { + this.activityBeginTime = activityBeginTime; + } + + public Date getActivityEndTime() { + return activityEndTime; + } + + public void setActivityEndTime(Date activityEndTime) { + this.activityEndTime = activityEndTime; + } + + public String getActivityDescribe() { + return activityDescribe; + } + + public void setActivityDescribe(String activityDescribe) { + this.activityDescribe = activityDescribe; + } + + public Integer getActivityType() { + return activityType; + } + + public void setActivityType(Integer activityType) { + this.activityType = activityType; + } + + public Integer getActivityDay() { + return activityDay; + } + + public void setActivityDay(Integer activityDay) { + this.activityDay = activityDay; + } + + public Integer getAvailable() { + return available; + } + + public void setAvailable(Integer available) { + this.available = available; + } + + public BigDecimal getLowestPrice() { + return lowestPrice; + } + + public void setLowestPrice(BigDecimal lowestPrice) { + this.lowestPrice = lowestPrice; + } + + public Integer getCouponCategory() { + return couponCategory; + } + + public void setCouponCategory(Integer couponCategory) { + this.couponCategory = couponCategory; + } + + public List getActivityRefList() { + return activityRefList; + } + + public void setActivityRefList(List activityRefList) { + this.activityRefList = activityRefList; + } +} diff --git a/src/main/java/com/xmomen/module/base/model/UpdateContract.java b/src/main/java/com/xmomen/module/base/model/UpdateContract.java new file mode 100644 index 0000000..f48ba89 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/model/UpdateContract.java @@ -0,0 +1,58 @@ +package com.xmomen.module.base.model; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +import lombok.Data; + +public @Data class UpdateContract implements Serializable { + /** + * 合同名称 + */ + private String contractName; + /** + * 合同编号 + */ + private String contractCode; + /** + * 合同价的客户 + */ + private Integer cdMemberId; + + /** + * 合同价的单位 + */ + private Integer cdCompanyId; + + /** + * 1-部分产品,2-全部产品 + */ + private Integer scope; + + /** + * 仅当适用范围为全部产品时适用 + */ + private BigDecimal contractPrice; + + /** + * 合同开始时间 + */ + private Date beginTime; + + /** + * 合同结束时间 + */ + private Date endTime; + + /** + * 0-未审核,1-审核 + */ + private Integer isAuditor; + /** + * 合同明细 + */ + private List contractItemList; + +} diff --git a/src/main/java/com/xmomen/module/base/model/UpdateCoupon.java b/src/main/java/com/xmomen/module/base/model/UpdateCoupon.java new file mode 100644 index 0000000..bbe7365 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/model/UpdateCoupon.java @@ -0,0 +1,33 @@ +package com.xmomen.module.base.model; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +import javax.validation.constraints.NotNull; + +import lombok.Data; + +/** + * Created by Jeng on 2016/3/30. + */ +public @Data class UpdateCoupon implements Serializable { + + @NotNull + private Integer id; + @NotNull + private Integer couponType; + private Integer couponCategory; + private String couponDesc; + private String couponNumber; + private String couponPassword; + private Date beginTime; + private Date endTime; + private BigDecimal couponValue; + private BigDecimal userPrice; + private Integer isUsed; + private Integer isUseful; + private Integer isGift; + private String notes; + private Integer paymentType; +} diff --git a/src/main/java/com/xmomen/module/base/model/UpdateItem.java b/src/main/java/com/xmomen/module/base/model/UpdateItem.java new file mode 100644 index 0000000..3ed2042 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/model/UpdateItem.java @@ -0,0 +1,342 @@ +package com.xmomen.module.base.model; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +public class UpdateItem implements Serializable { + /** + * 产品编号 + */ + private String itemCode; + + /** + * 产品归属的类别 + */ + private Integer cdCategoryId; + + /** + * 产品名称 + */ + private String itemName; + + /** + * 产品描述 + */ + private String itemDescribe; + + /** + * 产品类型 + */ + private Integer itemType; + + /** + * 生产地 + */ + private String yieldly; + + /** + * 产品规格 + */ + private String spec; + + /** + * 基础价格 + */ + private BigDecimal basePrice; + + /** + * 会员价格 + */ + private BigDecimal memberPrice; + + /** + * 计价方式 + */ + private String pricingManner; + + /** + * 0-下架 1-上架 + */ + private Integer sellStatus; + + /** + * 销售单位 + */ + private String sellUnit; + + /** + * 销售金额 + */ + private BigDecimal sellPrice; + + /** + * 0-未审核,1-审核 + */ + private Integer isAudit; + + /** + * 录入时间 + */ + private Date createDateTime; + + /** + * 录入人 + */ + private String createUserCode; + /** + * 采摘人 + */ + private String caizaiUser; + + /** + * 检测人 + */ + private String jianceUser; + + /** + * 农残率 + */ + private String nongCanLv; + + /** + * 营养成分 + */ + private String yiYangChenFen; + + /** + * 保质期 + */ + private Integer baoZhiQi; + + /** + * 适应人群 + */ + private String shiYiRenQun; + + /** + * 限时抢购 + */ + private Integer xianShiQiangGou; + + /** + * 新品尝鲜 + */ + private Integer xinPinChangXian; + + /** + * 热卖推荐 + */ + private Integer reMaiTuiJian; + + private List childItems; + + public String getItemCode() { + return itemCode; + } + + public void setItemCode(String itemCode) { + this.itemCode = itemCode; + } + + public Integer getCdCategoryId() { + return cdCategoryId; + } + + public void setCdCategoryId(Integer cdCategoryId) { + this.cdCategoryId = cdCategoryId; + } + + public String getItemName() { + return itemName; + } + + public void setItemName(String itemName) { + this.itemName = itemName; + } + + public String getItemDescribe() { + return itemDescribe; + } + + public void setItemDescribe(String itemDescribe) { + this.itemDescribe = itemDescribe; + } + + public Integer getItemType() { + return itemType; + } + + public void setItemType(Integer itemType) { + this.itemType = itemType; + } + + public String getYieldly() { + return yieldly; + } + + public void setYieldly(String yieldly) { + this.yieldly = yieldly; + } + + public String getSpec() { + return spec; + } + + public void setSpec(String spec) { + this.spec = spec; + } + + public BigDecimal getBasePrice() { + return basePrice; + } + + public void setBasePrice(BigDecimal basePrice) { + this.basePrice = basePrice; + } + + public BigDecimal getMemberPrice() { + return memberPrice; + } + + public void setMemberPrice(BigDecimal memberPrice) { + this.memberPrice = memberPrice; + } + + public String getPricingManner() { + return pricingManner; + } + + public void setPricingManner(String pricingManner) { + this.pricingManner = pricingManner; + } + + public Integer getSellStatus() { + return sellStatus; + } + + public void setSellStatus(Integer sellStatus) { + this.sellStatus = sellStatus; + } + + public String getSellUnit() { + return sellUnit; + } + + public void setSellUnit(String sellUnit) { + this.sellUnit = sellUnit; + } + + public BigDecimal getSellPrice() { + return sellPrice; + } + + public void setSellPrice(BigDecimal sellPrice) { + this.sellPrice = sellPrice; + } + + public Integer getIsAudit() { + return isAudit; + } + + public void setIsAudit(Integer isAudit) { + this.isAudit = isAudit; + } + + public Date getCreateDateTime() { + return createDateTime; + } + + public void setCreateDateTime(Date createDateTime) { + this.createDateTime = createDateTime; + } + + public String getCreateUserCode() { + return createUserCode; + } + + public void setCreateUserCode(String createUserCode) { + this.createUserCode = createUserCode; + } + + public List getChildItems() { + return childItems; + } + + public void setChildItems(List childItems) { + this.childItems = childItems; + } + + public String getCaizaiUser() { + return caizaiUser; + } + + public void setCaizaiUser(String caizaiUser) { + this.caizaiUser = caizaiUser; + } + + public String getJianceUser() { + return jianceUser; + } + + public void setJianceUser(String jianceUser) { + this.jianceUser = jianceUser; + } + + public String getNongCanLv() { + return nongCanLv; + } + + public void setNongCanLv(String nongCanLv) { + this.nongCanLv = nongCanLv; + } + + public String getYiYangChenFen() { + return yiYangChenFen; + } + + public void setYiYangChenFen(String yiYangChenFen) { + this.yiYangChenFen = yiYangChenFen; + } + + public Integer getBaoZhiQi() { + return baoZhiQi; + } + + public void setBaoZhiQi(Integer baoZhiQi) { + this.baoZhiQi = baoZhiQi; + } + + public String getShiYiRenQun() { + return shiYiRenQun; + } + + public void setShiYiRenQun(String shiYiRenQun) { + this.shiYiRenQun = shiYiRenQun; + } + + public Integer getXianShiQiangGou() { + return xianShiQiangGou; + } + + public void setXianShiQiangGou(Integer xianShiQiangGou) { + this.xianShiQiangGou = xianShiQiangGou; + } + + public Integer getXinPinChangXian() { + return xinPinChangXian; + } + + public void setXinPinChangXian(Integer xinPinChangXian) { + this.xinPinChangXian = xinPinChangXian; + } + + public Integer getReMaiTuiJian() { + return reMaiTuiJian; + } + + public void setReMaiTuiJian(Integer reMaiTuiJian) { + this.reMaiTuiJian = reMaiTuiJian; + } +} diff --git a/src/main/java/com/xmomen/module/base/model/UpdateItemDetail.java b/src/main/java/com/xmomen/module/base/model/UpdateItemDetail.java new file mode 100644 index 0000000..d58a3fc --- /dev/null +++ b/src/main/java/com/xmomen/module/base/model/UpdateItemDetail.java @@ -0,0 +1,21 @@ +package com.xmomen.module.base.model; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import lombok.Data; + +public @Data class UpdateItemDetail extends BaseMybatisModel { + /** + * 主键 + */ + private Integer id; + + /** + * 商品ID + */ + private Integer cdItemId; + + /** + * 商品的详细内容 + */ + private String itemDetailContent; +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/base/model/UpdateMember.java b/src/main/java/com/xmomen/module/base/model/UpdateMember.java new file mode 100644 index 0000000..93d5809 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/model/UpdateMember.java @@ -0,0 +1,131 @@ +package com.xmomen.module.base.model; + +import com.xmomen.module.member.model.MemberAddressCreate; +import com.xmomen.module.member.model.MemberAddressUpdate; +import org.hibernate.validator.constraints.NotBlank; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.List; + +public class UpdateMember implements Serializable { + /** + * 会员编号 + */ + private String memberCode; + + /** + * 姓名 + */ + @NotNull + @NotBlank + private String name; + + /** + * 手机号 + */ + @NotNull + @NotBlank + private String phoneNumber; + + /** + * 家庭固话 + */ + private String telNumber; + + /** + * 办公室电话 + */ + private String officeTel; + + /** + * 1-潜在客户,2-普通客户,3-优质客户 + */ + private Integer memberType; + + /** + * 所属单位 + */ + private Integer cdCompanyId; + + /** + * 所属客服经理 + */ + private Integer cdUserId; + + //地址集合 + List memberAddressList; + + public String getMemberCode() { + return memberCode; + } + + public void setMemberCode(String memberCode) { + this.memberCode = memberCode; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getPhoneNumber() { + return phoneNumber; + } + + public void setPhoneNumber(String phoneNumber) { + this.phoneNumber = phoneNumber; + } + + + public String getTelNumber() { + return telNumber; + } + + public void setTelNumber(String telNumber) { + this.telNumber = telNumber; + } + + public String getOfficeTel() { + return officeTel; + } + + public void setOfficeTel(String officeTel) { + this.officeTel = officeTel; + } + + public Integer getMemberType() { + return memberType; + } + + public void setMemberType(Integer memberType) { + this.memberType = memberType; + } + + public Integer getCdCompanyId() { + return cdCompanyId; + } + + public void setCdCompanyId(Integer cdCompanyId) { + this.cdCompanyId = cdCompanyId; + } + + public Integer getCdUserId() { + return cdUserId; + } + + public void setCdUserId(Integer cdUserId) { + this.cdUserId = cdUserId; + } + + public List getMemberAddressList() { + return memberAddressList; + } + + public void setMemberAddressList(List memberAddressList) { + this.memberAddressList = memberAddressList; + } +} diff --git a/src/main/java/com/xmomen/module/base/model/UpdatePlan.java b/src/main/java/com/xmomen/module/base/model/UpdatePlan.java new file mode 100644 index 0000000..1f21280 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/model/UpdatePlan.java @@ -0,0 +1,78 @@ +package com.xmomen.module.base.model; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +import javax.validation.constraints.NotNull; + +import lombok.Data; + +import org.hibernate.validator.constraints.NotBlank; + +public @Data class UpdatePlan implements Serializable { + /** + * 主键 + */ + private Integer id; + + /** + * 计划名称 + */ + @NotBlank + private String planName; + + /** + * 计划创建人 + */ + private String createUser; + + /** + * 计划创建时间 + */ + private Date createTime; + + /** + * 配送频率 + */ + @NotNull + private Integer deliveryType; + + /** + * 配送时间(一周的星期几) + */ + + private String deliveryTime; + + /** + * 配送的次数 + */ + @NotNull + private Integer deliverCount; + + /** + * 价格 + */ + @NotNull + private BigDecimal price; + + /** + * 是否随机 + */ + private Integer isRandom; + + /** + * 产品归属的类别 + */ + private Integer cdCategoryId; + + /** + * 随机数 + */ + private Integer randomNum; + + private Date beginTime; + + private List planItems; +} diff --git a/src/main/java/com/xmomen/module/base/service/ActivityService.java b/src/main/java/com/xmomen/module/base/service/ActivityService.java new file mode 100644 index 0000000..f2c3d15 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/service/ActivityService.java @@ -0,0 +1,13 @@ +package com.xmomen.module.base.service; + +import com.xmomen.module.base.model.CreateActivity; +import com.xmomen.module.base.model.UpdateActivity; + + +public interface ActivityService { + public void createActivity(CreateActivity createActivity); + + public void updateActivity(Integer id,UpdateActivity updateActivity); + + public void delete(Integer id); +} diff --git a/src/main/java/com/xmomen/module/base/service/BasePlanService.java b/src/main/java/com/xmomen/module/base/service/BasePlanService.java new file mode 100644 index 0000000..dfe5722 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/service/BasePlanService.java @@ -0,0 +1,19 @@ +package com.xmomen.module.base.service; + +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.module.base.entity.CdPlan; +import com.xmomen.module.base.model.CreatePlan; +import com.xmomen.module.base.model.PlanModel; +import com.xmomen.module.base.model.UpdatePlan; + +public interface BasePlanService { + public Page getPlanList(String keyword,Integer limit, Integer offset); + + public CdPlan getPlan(Integer id); + + public CdPlan createPlan(CreatePlan createPlan); + + public CdPlan updatePlan(Integer id,UpdatePlan updatePlan); + + public void delete(Integer id); +} diff --git a/src/main/java/com/xmomen/module/base/service/CouponService.java b/src/main/java/com/xmomen/module/base/service/CouponService.java new file mode 100644 index 0000000..46a4f52 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/service/CouponService.java @@ -0,0 +1,448 @@ +package com.xmomen.module.base.service; + +import java.math.BigDecimal; +import java.util.List; + +import org.apache.commons.lang.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.util.CollectionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.xmomen.framework.exception.BusinessException; +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.framework.utils.AssertExt; +import com.xmomen.module.base.constant.AppConstants; +import com.xmomen.module.base.entity.CdCoupon; +import com.xmomen.module.base.entity.CdCouponExample; +import com.xmomen.module.base.entity.CdCouponRef; +import com.xmomen.module.base.entity.CdMember; +import com.xmomen.module.base.entity.CdMemberCouponRelation; +import com.xmomen.module.base.mapper.CouponMapper; +import com.xmomen.module.base.model.CouponModel; +import com.xmomen.module.base.model.CouponQuery; +import com.xmomen.module.base.model.CouponReportModel; +import com.xmomen.module.base.model.ReadCardVo; +import com.xmomen.module.order.entity.TbTradeRecord; +import com.xmomen.module.pick.entity.TbExchangeCardLog; +import com.xmomen.module.pick.entity.TbRechargeLog; +import com.xmomen.module.system.entity.SysUserOrganization; +import com.xmomen.module.wx.module.coupon.model.CouponQueryModel; +import com.xmomen.module.wx.module.coupon.model.WxCouponModel; +import com.xmomen.module.wx.util.DateUtils; + +/** + * Created by Jeng on 2016/3/30. + */ +@Service +public class CouponService { + private static Logger logger = LoggerFactory.getLogger(CouponService.class); + + @Autowired + MybatisDao mybatisDao; + + @Autowired + ItemService itemService; + + /** + * 查询卡券信息 + * + * @param couponQuery + * @param limit + * @param offset + * @return + */ + public Page queryCoupon(CouponQuery couponQuery, Integer limit, Integer offset) { + return (Page) mybatisDao.selectPage(CouponMapper.CouponMapperNameSpace + "getCouponList", couponQuery, limit, offset); + } + + /** + * 查询卡券信息 + * + * @param couponQuery + * @param limit + * @param offset + * @return + */ + public Page queryCouponActivity(CouponQuery couponQuery, Integer limit, Integer offset) { + return (Page) mybatisDao.selectPage(CouponMapper.CouponMapperNameSpace + "getCouponActivityList", couponQuery, limit, offset); + } + + public CouponModel queryOneCoupon(CouponQuery couponQuery) { + return mybatisDao.getSqlSessionTemplate().selectOne(CouponMapper.CouponMapperNameSpace + "getCouponList", couponQuery); + } + + @Transactional + public CdCoupon createCoupon(CdCoupon cdCoupon) { + return mybatisDao.saveByModel(cdCoupon); + } + + @Transactional + public void updateCoupon(CdCoupon cdCoupon) { + mybatisDao.update(cdCoupon); + } + + public CdCoupon getCoupon(Integer id) { + return mybatisDao.selectByPrimaryKey(CdCoupon.class, id); + } + + public Page getCouponList(String keyword, Integer limit, Integer offset) { + CdCouponExample cdCouponExample = new CdCouponExample(); + cdCouponExample.createCriteria().andCouponNumberLike("%" + StringUtils.trimToEmpty(keyword) + "%"); + return mybatisDao.selectPageByExample(cdCouponExample, limit, offset); + } + + @Transactional + public Boolean bindMember(String couponNumber, Integer memberId, String password) throws Exception { + CouponQuery couponQuery = new CouponQuery(); + couponQuery.setCouponNumber(couponNumber); + List existingBindCards = mybatisDao.getSqlSessionTemplate().selectList(CouponMapper.CouponMapperNameSpace + "getCouponByCouponNo", couponQuery); + if (CollectionUtils.isEmpty(existingBindCards)) { + throw new BusinessException("该卡不存在!"); + } + for (ReadCardVo readCardVo : existingBindCards) { + String userName = readCardVo.getUserName(); + if (!StringUtils.isEmpty(userName)) { + throw new BusinessException("该卡已经被绑定了!"); + } + } + + CdCoupon query = new CdCoupon(); + query.setCouponNumber(couponNumber); + CdCoupon coupon = mybatisDao.selectOneByModel(query); + String prePassword = coupon.getCouponPassword(); + if (!StringUtils.isEmpty(prePassword)) { + if (!prePassword.equals(password)) { + throw new BusinessException("密码错误!"); + } + } + + CdMemberCouponRelation relation = new CdMemberCouponRelation(); + relation.setCdMemberId(memberId); + relation.setCouponNumber(couponNumber); + mybatisDao.save(relation); + return Boolean.TRUE; + } + + @Transactional + public void sendOneCoupon(Integer id, Integer companyId, Integer customerMangerId, String couponNumber, String batch, Integer isGift) { + //更新卡发放状态 + CdCoupon coupon = mybatisDao.selectByPrimaryKey(CdCoupon.class, id); + //如果是后付款类型则发卡就激活 + if (coupon.getPaymentType() == 2) { + coupon.setIsUseful(1); + //如果是卡则记录激活时间 + if (coupon.getCouponType() == 1) { + coupon.setUsefulDate(DateUtils.getNowDate()); + } + } + coupon.setIsSend(1); + coupon.setId(id); + //是否赠送 + coupon.setIsGift(isGift == null ? 0 : isGift); + coupon.setBatch(batch); + coupon.setCdCompanyId(companyId); + coupon.setCdUserId(customerMangerId); + mybatisDao.updateByModel(coupon); + } + + /** + * 退卡 + * + * @param id + */ + @Transactional + public void returnCoupon(Integer id) { + //更新卡券为未发送 + mybatisDao.getSqlSessionTemplate().update(CouponMapper.CouponMapperNameSpace + "updateReturnCoupon", id); + } + + /** + * 卡充值 + * + * @param couponNo + * @param rechargePrice + */ + @Transactional + public void cardRecharge(String couponNo, BigDecimal rechargePrice) { + CdCoupon coupon = new CdCoupon(); + coupon.setCouponNumber(couponNo); + coupon = mybatisDao.selectOneByModel(coupon); + AssertExt.notNull(coupon, "卡号不存在!"); + BigDecimal userPrice = coupon.getUserPrice() == null ? BigDecimal.ZERO : coupon.getUserPrice(); + coupon.setUserPrice(userPrice.add(rechargePrice)); + mybatisDao.update(coupon); + + Integer userId = (Integer) SecurityUtils.getSubject().getSession().getAttribute(AppConstants.SESSION_USER_ID_KEY); + SysUserOrganization userOrganization = new SysUserOrganization(); + userOrganization.setUserId(userId); + userOrganization = mybatisDao.selectOneByModel(userOrganization); + TbRechargeLog rechargeLog = new TbRechargeLog(); + rechargeLog.setCouponNo(couponNo); + rechargeLog.setRechargeDate(mybatisDao.getSysdate()); + rechargeLog.setRechargePlace(userOrganization.getOrganizationId()); + rechargeLog.setRechargePrice(rechargePrice); + rechargeLog.setRechargeUser(userId); + mybatisDao.save(rechargeLog); + + //添加交易记录 + TbTradeRecord tradeRecord = new TbTradeRecord(); + tradeRecord.setAmount(rechargePrice); + tradeRecord.setCreateTime(mybatisDao.getSysdate()); + tradeRecord.setTradeNo(couponNo); + tradeRecord.setTradeType("recharge"); + tradeRecord.setRecordUser(userId); + tradeRecord.setRemark("卡充值记录"); + mybatisDao.save(tradeRecord); + } + + /** + * 卡充值 + * + * @param couponNo + * @param rechargePrice + */ + @Transactional + public void cardWxRecharge(String couponNo, BigDecimal rechargePrice, Integer userId) { + CdCoupon coupon = new CdCoupon(); + coupon.setCouponNumber(couponNo); + coupon = mybatisDao.selectOneByModel(coupon); + AssertExt.notNull(coupon, "卡号不存在!"); + BigDecimal userPrice = coupon.getUserPrice() == null ? BigDecimal.ZERO : coupon.getUserPrice(); + coupon.setUserPrice(userPrice.add(rechargePrice)); + mybatisDao.update(coupon); + + + /*SysUserOrganization userOrganization = new SysUserOrganization(); + userOrganization.setUserId(userId); + userOrganization = mybatisDao.selectOneByModel(userOrganization);*/ + TbRechargeLog rechargeLog = new TbRechargeLog(); + rechargeLog.setCouponNo(couponNo); + rechargeLog.setRechargeDate(mybatisDao.getSysdate()); + // 微信用户没有组织,设为默认值0 + rechargeLog.setRechargePlace(0); + rechargeLog.setRechargePrice(rechargePrice); + // userId 是微信端的memberId(cd_member) + rechargeLog.setRechargeUser(userId); + mybatisDao.save(rechargeLog); + + //添加交易记录 + TbTradeRecord tradeRecord = new TbTradeRecord(); + tradeRecord.setAmount(rechargePrice); + tradeRecord.setCreateTime(mybatisDao.getSysdate()); + tradeRecord.setTradeNo(couponNo); + tradeRecord.setTradeType("recharge"); + tradeRecord.setRecordUser(userId); + tradeRecord.setRemark("卡充值记录"); + mybatisDao.save(tradeRecord); + } + + /** + * 换卡 + * + * @param oldCouponNo + * @param oldPassword + * @param newCouponNo + * @param newPassword + */ + @Transactional + public void exchangeCard(String oldCouponNo, String oldPassword, String newCouponNo, String newPassword) { + CdCoupon oldCoupon = new CdCoupon(); + oldCoupon.setCouponNumber(oldCouponNo); + oldCoupon.setCouponPassword(oldPassword); + oldCoupon = mybatisDao.selectOneByModel(oldCoupon); + AssertExt.notNull(oldCoupon, "老卡卡号错误或者密码错误!"); + CdCoupon newCoupon = new CdCoupon(); + newCoupon.setCouponNumber(newCouponNo); + newCoupon.setCouponPassword(newPassword); + newCoupon = mybatisDao.selectOneByModel(newCoupon); + AssertExt.notNull(oldCoupon, "新卡卡号错误或者密码错误!"); + if (1 == newCoupon.getIsSend()) { + AssertExt.notNull(newCoupon, "新卡已经发卡不能再次换卡!"); + } + //老卡作废 + oldCoupon.setIsUsed(3); + mybatisDao.update(oldCoupon); + //将老卡的所有关系转移给新卡 + //转移余额 + BigDecimal userPrice = newCoupon.getUserPrice() == null ? BigDecimal.ZERO : newCoupon.getUserPrice(); + newCoupon.setUserPrice(userPrice.add(oldCoupon.getUserPrice())); + newCoupon.setIsSend(1); + newCoupon.setIsUsed(1); + newCoupon.setIsOver(1); + newCoupon.setIsUseful(1); + mybatisDao.update(newCoupon); + //卡客户关系 + CdMemberCouponRelation memberCouponRelation = new CdMemberCouponRelation(); + memberCouponRelation.setCouponNumber(oldCoupon.getCouponNumber()); + memberCouponRelation = mybatisDao.selectOneByModel(memberCouponRelation); + memberCouponRelation.setCouponNumber(newCoupon.getCouponNumber()); + mybatisDao.update(memberCouponRelation); + //卡劵的发放单位和客户经理 + CdCouponRef couponRef = new CdCouponRef(); + couponRef.setCouponNumber(oldCoupon.getCouponNumber()); + List couponRefs = mybatisDao.selectByModel(couponRef); + for (CdCouponRef couponRefdb : couponRefs) { + couponRefdb.setCdCouponId(newCoupon.getId()); + couponRefdb.setCouponNumber(newCoupon.getCouponNumber()); + mybatisDao.update(couponRefdb); + } + //记录换卡记录 + Integer userId = (Integer) SecurityUtils.getSubject().getSession().getAttribute(AppConstants.SESSION_USER_ID_KEY); + SysUserOrganization userOrganization = new SysUserOrganization(); + userOrganization.setUserId(userId); + userOrganization = mybatisDao.selectOneByModel(userOrganization); + TbExchangeCardLog exchangeCardLog = new TbExchangeCardLog(); + exchangeCardLog.setNewCouponId(newCoupon.getId()); + exchangeCardLog.setNewCouponNo(newCouponNo); + exchangeCardLog.setOldCouponId(oldCoupon.getId()); + exchangeCardLog.setOldCouponNo(oldCouponNo); + exchangeCardLog.setRechargePlace(userOrganization.getOrganizationId()); + exchangeCardLog.setRechargeUser(userId); + mybatisDao.save(exchangeCardLog); + } + + /** + * 手工调整金额 + * + * @param couponNo + * @param updatePrice + * @param remark + */ + @Transactional + public void updateBalance(String couponNo, BigDecimal updatePrice, String remark) { + Integer userId = (Integer) SecurityUtils.getSubject().getSession().getAttribute(AppConstants.SESSION_USER_ID_KEY); + + CdCoupon coupon = new CdCoupon(); + coupon.setCouponNumber(couponNo); + coupon = mybatisDao.selectOneByModel(coupon); + AssertExt.notNull(coupon, "卡号" + couponNo + "不存在,调整失败!"); + + BigDecimal userPrice = coupon.getUserPrice(); + if (userPrice == null) { + userPrice = BigDecimal.ZERO; + } + userPrice = userPrice.add(updatePrice); + coupon.setUserPrice(userPrice); + mybatisDao.update(coupon); + + //添加交易记录 + TbTradeRecord tradeRecord = new TbTradeRecord(); + tradeRecord.setAmount(updatePrice); + tradeRecord.setCreateTime(mybatisDao.getSysdate()); + tradeRecord.setTradeNo(couponNo); + tradeRecord.setTradeType("adjustment"); + tradeRecord.setRecordUser(userId); + tradeRecord.setRemark(remark); + mybatisDao.save(tradeRecord); + } + + + /** + * 导入卡劵 + * + * @param couponReport + */ + @Transactional + public void importCoupon(CouponReportModel couponReport) { + // TODO Auto-generated method stub + CdCoupon coupon = new CdCoupon(); + coupon.setCouponCategory(1); + coupon.setCouponDesc(couponReport.getCouponDesc()); + coupon.setCouponNumber(couponReport.getCouponNumber()); + coupon.setCouponPassword(couponReport.getCouponPassword()); + coupon.setCouponType(couponReport.getCouponType()); + coupon.setCouponValue(couponReport.getCouponValue()); + coupon.setPaymentType(couponReport.getPaymentType()); + coupon.setCouponCategory(couponReport.getCouponCategoryId()); + try { + mybatisDao.save(coupon); + } catch (Exception e) { + logger.error("卡劵已经存在!卡劵号:" + coupon.getCouponNumber()); + } + } + + @Transactional + public void auditCoupon(Integer id, boolean locked) { + //db的卡 + CdCoupon cdCouponDb = mybatisDao.selectByPrimaryKey(CdCoupon.class, id); + CdCoupon coupon = new CdCoupon(); + coupon.setAuditDate(DateUtils.getNowDate()); + coupon.setIsUseful(locked ? 1 : 0); + //如果是预付款类型则审核就激活 + if (locked && cdCouponDb.getPaymentType() == 1 && cdCouponDb.getCouponType() == 1) { + //激活时间 + coupon.setUsefulDate(DateUtils.getNowDate()); + } + coupon.setId(id); + mybatisDao.update(coupon); + } + + public CouponModel getCouponModel(String couponNumber) { + return mybatisDao.getSqlSessionTemplate().selectOne(CouponMapper.CouponMapperNameSpace + "getCouponItemsByByCouponNo", couponNumber); + } + + public List getMyCouponList(CouponQueryModel queryModel) { + return mybatisDao.getSqlSessionTemplate().selectList(CouponMapper.CouponMapperNameSpace + "getMyCouponList", queryModel); + } + + public Boolean validate(String couponNo, String password) { + CdCoupon couponQuery = new CdCoupon(); + couponQuery.setCouponNumber(couponNo); + CdCoupon coupon = mybatisDao.selectOneByModel(couponQuery); + if (coupon == null) return false; + String prePassword = coupon.getCouponPassword(); + if (StringUtils.isEmpty(prePassword) && StringUtils.isEmpty(password)) { + return true; + } + else { + if (password == null) password = ""; + if (password.equals(prePassword)) return true; + return false; + } + } + + public Boolean resetPasword(String couponNumber, String password, String newPassWord, Integer memberId) throws Exception { + CouponQuery couponQuery = new CouponQuery(); + couponQuery.setCouponNumber(couponNumber); + List existingBindCards = mybatisDao.getSqlSessionTemplate().selectList(CouponMapper.CouponMapperNameSpace + "getCouponByCouponNo", couponQuery); + if (CollectionUtils.isEmpty(existingBindCards)) { + throw new BusinessException("该卡不存在!"); + } + CdMember cdMember = mybatisDao.selectByPrimaryKey(CdMember.class, memberId); + if (cdMember == null) { + throw new BusinessException("当前用户不存在!"); + } + boolean belongTo = false; + for (ReadCardVo readCardVo : existingBindCards) { + String userName = readCardVo.getUserName(); + if (cdMember.getName().equals(userName)) { + belongTo = true; + } + } + if (!belongTo) { + throw new BusinessException("该卡未被激活或者不属于当前用户!"); + } + CdCoupon query = new CdCoupon(); + query.setCouponNumber(couponNumber); + CdCoupon coupon = mybatisDao.selectOneByModel(query); + String prePassword = coupon.getCouponPassword(); + if (StringUtils.isEmpty(prePassword) && StringUtils.isEmpty(password)) { + coupon.setCouponPassword(newPassWord); + } + else if (!StringUtils.isEmpty(prePassword)) { + if (prePassword.equals(password)) { + coupon.setCouponPassword(newPassWord); + } + else { + throw new BusinessException("密码不正确!"); + } + } + mybatisDao.update(coupon); + return Boolean.TRUE; + } +} diff --git a/src/main/java/com/xmomen/module/base/service/ItemService.java b/src/main/java/com/xmomen/module/base/service/ItemService.java new file mode 100644 index 0000000..144e224 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/service/ItemService.java @@ -0,0 +1,25 @@ +package com.xmomen.module.base.service; + +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.module.base.model.CreateItem; +import com.xmomen.module.base.model.ItemModel; +import com.xmomen.module.base.model.ItemQuery; +import com.xmomen.module.base.model.UpdateItem; + +import java.util.List; + +public interface ItemService { + + public List queryItemList(ItemQuery itemQuery); + + public Page queryItemList(ItemQuery itemQuery, Integer offset, Integer limit); + + public void createItem(CreateItem createItem); + + public void updateItem(Integer id, UpdateItem updateItem); + + public void delete(Integer id); + + public void defaultImage(String resourceId); + +} diff --git a/src/main/java/com/xmomen/module/base/service/MemberService.java b/src/main/java/com/xmomen/module/base/service/MemberService.java new file mode 100644 index 0000000..aae9ee2 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/service/MemberService.java @@ -0,0 +1,42 @@ +package com.xmomen.module.base.service; + +import com.xmomen.module.base.entity.CdMember; +import com.xmomen.module.base.model.CreateMember; +import com.xmomen.module.base.model.MemberModel; +import com.xmomen.module.base.model.UpdateMember; +import com.xmomen.module.member.model.MemberAddressModel; + +public interface MemberService { + public CdMember createMember(CreateMember createMember); + + public void updateMember(Integer id, UpdateMember updateMember); + + public void delete(Integer id); + + public CdMember bindMember(String mobile, String name, String openId, Integer memberId) throws Exception; + + public void updateMobile(Integer id, String mobile); + + /** + * 根据主键查询单个对象 + * + * @param id 主键 + * @return MemberModel 客户对象 + */ + public CdMember getOneMemberModel(String id); + + public CdMember findMember(CdMember query); + + public boolean updatePassword(Integer id, String newPassword, String oldPassword); + /** + * openId绑定用户 + * + * @param openId + * @return + */ + public CdMember bindMember(String openId); + + public CdMember updateMember(CdMember updateMember); + + public boolean resetPassword(Integer id, String newPassword); +} diff --git a/src/main/java/com/xmomen/module/base/service/impl/ContractServiceImpl.java b/src/main/java/com/xmomen/module/base/service/impl/ContractServiceImpl.java new file mode 100644 index 0000000..275e52f --- /dev/null +++ b/src/main/java/com/xmomen/module/base/service/impl/ContractServiceImpl.java @@ -0,0 +1,80 @@ +package com.xmomen.module.base.service.impl; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.module.base.entity.CdContract; +import com.xmomen.module.base.entity.CdContractItem; +import com.xmomen.module.base.entity.CdItem; +import com.xmomen.module.base.model.CreateContract; +import com.xmomen.module.base.model.CreateContractItem; +import com.xmomen.module.base.model.UpdateContract; +import com.xmomen.module.base.service.ContractService; +@Service +public class ContractServiceImpl implements ContractService { + @Autowired + MybatisDao mybatisDao; + @Override + @Transactional + public void createContract(CreateContract createContract) { + CdContract contract = new CdContract(); + contract.setBeginTime(createContract.getBeginTime()); + contract.setEndTime(createContract.getEndTime()); + contract.setCdCompanyId(createContract.getCdCompanyId()); + contract.setContractCode(createContract.getContractCode()); + contract.setContractName(createContract.getContractName()); + contract.setCdMemberId(createContract.getCdMemberId()); + contract.setIsAuditor(1); + contract.setIsDel(0); + contract = mybatisDao.saveByModel(contract); + //保存合同明细 + for(CreateContractItem createContractItem : createContract.getContractItemList()){ + CdContractItem contractItem = new CdContractItem(); + contractItem.setCdItemId(createContractItem.getCdItemId()); + contractItem.setCdContractId(contract.getId()); + contractItem.setContractType(createContractItem.getContractType()); + contractItem.setDiscount(createContractItem.getDiscount()); + contractItem.setContractValue(createContractItem.getContractValue()); + mybatisDao.save(contractItem); + } + } + @Transactional + public void updateContract(Integer id, UpdateContract updateContract) { + CdContract contract = new CdContract(); + contract.setId(id); + contract.setBeginTime(updateContract.getBeginTime()); + contract.setEndTime(updateContract.getEndTime()); + contract.setCdCompanyId(updateContract.getCdCompanyId()); + contract.setContractCode(updateContract.getContractCode()); + contract.setContractName(updateContract.getContractName()); + contract.setCdMemberId(updateContract.getCdMemberId()); + mybatisDao.update(contract); + + CdContractItem contractItemdb = new CdContractItem(); + contractItemdb.setCdContractId(id); + List contractItemdbs = mybatisDao.selectByModel(contractItemdb); + mybatisDao.deleteAllByModel(contractItemdbs); + //保存合同明细 + for(CreateContractItem createContractItem : updateContract.getContractItemList()){ + CdContractItem contractItem = new CdContractItem(); + contractItem.setCdItemId(createContractItem.getCdItemId()); + contractItem.setCdContractId(contract.getId()); + contractItem.setContractType(createContractItem.getContractType()); + contractItem.setDiscount(createContractItem.getDiscount()); + contractItem.setContractValue(createContractItem.getContractValue()); + mybatisDao.save(contractItem); + } + + } + @Transactional + public void delete(Integer id) { + CdContract contract = mybatisDao.selectByPrimaryKey(CdContract.class, id); + contract.setIsDel(1); + mybatisDao.update(contract); + } + +} diff --git a/src/main/java/com/xmomen/module/base/service/impl/CouponCategoryServiceImpl.java b/src/main/java/com/xmomen/module/base/service/impl/CouponCategoryServiceImpl.java new file mode 100644 index 0000000..3097327 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/service/impl/CouponCategoryServiceImpl.java @@ -0,0 +1,88 @@ +package com.xmomen.module.base.service.impl; + +import com.xmomen.module.base.mapper.CouponCategoryMapper; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.module.base.entity.CdCouponCategory; +import com.xmomen.module.base.entity.CdCouponCategoryExample; +import com.xmomen.module.base.entity.CdCouponCategoryExample.Criteria; +import com.xmomen.module.base.entity.CdCouponCategoryRef; +import com.xmomen.module.base.entity.CdCouponCategoryRefExample; +import com.xmomen.module.base.model.CouponCategoryRefModel; +import com.xmomen.module.base.model.CreateCouponCategory; +import com.xmomen.module.base.model.UpdateCouponCategory; +import com.xmomen.module.base.service.CouponCategoryService; +@Service +public class CouponCategoryServiceImpl implements CouponCategoryService { + @Autowired + MybatisDao mybatisDao; + + public Page getCouponCategoryList(String keyword,Integer categoryType, Integer limit, Integer offset){ + CdCouponCategoryExample cdCouponCategoryExample = new CdCouponCategoryExample(); + Criteria couponCategoryCriteria = cdCouponCategoryExample.createCriteria().andCategoryNameLike("%" + StringUtils.trimToEmpty(keyword) + "%"); + if(categoryType != null){ + couponCategoryCriteria.andCategoryTypeEqualTo(categoryType); + } + + return mybatisDao.selectPageByExample(cdCouponCategoryExample, limit, offset); + } + + public CdCouponCategory getCouponCategory(Integer id){ + return mybatisDao.selectByPrimaryKey(CdCouponCategory.class, id); + } + + @Override + @Transactional + public CdCouponCategory createCouponCategory(CreateCouponCategory createCouponCategory) { + CdCouponCategory category = new CdCouponCategory(); + category.setCategoryName(createCouponCategory.getCategoryName()); + category.setCategoryType(createCouponCategory.getCategoryType()); + category = mybatisDao.saveByModel(category); + if(createCouponCategory.getCategoryRefs() != null){ + for(CouponCategoryRefModel categoryRefVo : createCouponCategory.getCategoryRefs()){ + CdCouponCategoryRef categoryRef = new CdCouponCategoryRef(); + categoryRef.setCdCouponCategoryId(category.getId()); + categoryRef.setRefType(CouponCategoryMapper.COUPON_RELATION_ITEM_CODE); + categoryRef.setRefValue(categoryRefVo.getCdItemId()+""); + categoryRef.setRefName("消费劵固定产品"); + categoryRef.setRefCount(categoryRefVo.getCount()); + mybatisDao.save(categoryRef); + } + } + return category; + } + @Transactional + public CdCouponCategory updateCouponCategory(Integer id, UpdateCouponCategory updateCouponCategory) { + CdCouponCategory category = new CdCouponCategory(); + category.setId(id); + category.setCategoryName(updateCouponCategory.getCategoryName()); + category.setCategoryType(updateCouponCategory.getCategoryType()); + category = mybatisDao.updateByModel(category); + if(updateCouponCategory.getCategoryRefs() != null){ + //先删除再添加 + CdCouponCategoryRefExample categoryRefExample = new CdCouponCategoryRefExample(); + categoryRefExample.createCriteria().andCdCouponCategoryIdEqualTo(id); + mybatisDao.deleteByExample(categoryRefExample); + for(CouponCategoryRefModel categoryRefVo : updateCouponCategory.getCategoryRefs()){ + CdCouponCategoryRef categoryRef = new CdCouponCategoryRef(); + categoryRef.setCdCouponCategoryId(category.getId()); + categoryRef.setRefType(CouponCategoryMapper.COUPON_RELATION_ITEM_CODE); + categoryRef.setRefValue(categoryRefVo.getCdItemId()+""); + categoryRef.setRefName("消费劵固定产品"); + categoryRef.setRefCount(categoryRefVo.getCount()); + mybatisDao.save(categoryRef); + } + } + return mybatisDao.updateByModel(category); + } + @Transactional + public void delete(Integer id) { + mybatisDao.deleteByPrimaryKey(CdCouponCategory.class, id); + } + +} diff --git a/src/main/java/com/xmomen/module/base/service/impl/ExpressMemberServiceImpl.java b/src/main/java/com/xmomen/module/base/service/impl/ExpressMemberServiceImpl.java new file mode 100644 index 0000000..4583b06 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/service/impl/ExpressMemberServiceImpl.java @@ -0,0 +1,36 @@ +package com.xmomen.module.base.service.impl; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.module.base.entity.CdExpress; +import com.xmomen.module.base.entity.CdExpressMember; +import com.xmomen.module.base.model.ExpressTask; +import com.xmomen.module.base.service.ExpressMemberService; +import com.xmomen.module.base.service.ExpressService; +import com.xmomen.module.order.entity.TbOrder; + +@Service +public class ExpressMemberServiceImpl implements ExpressMemberService { + @Autowired + MybatisDao mybatisDao; + @Override + @Transactional + public void createExpressMember(CdExpressMember createExpress) { + mybatisDao.save(createExpress); + } + + @Transactional + public void updateExpressMember(Integer id, CdExpressMember updateExpress) { + updateExpress.setId(id); + mybatisDao.update(updateExpress); + } + + @Transactional + public void delete(Integer id) { + mybatisDao.deleteByPrimaryKey(CdExpress.class, id); + } + +} diff --git a/src/main/java/com/xmomen/module/base/service/impl/ItemDetailServiceImpl.java b/src/main/java/com/xmomen/module/base/service/impl/ItemDetailServiceImpl.java new file mode 100644 index 0000000..beaafbc --- /dev/null +++ b/src/main/java/com/xmomen/module/base/service/impl/ItemDetailServiceImpl.java @@ -0,0 +1,56 @@ +package com.xmomen.module.base.service.impl; + +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.module.base.entity.CdItemDetail; +import com.xmomen.module.base.mapper.ItemDetailMapper; +import com.xmomen.module.base.model.CreateItemDetail; +import com.xmomen.module.base.model.ItemDetailModel; +import com.xmomen.module.base.model.ItemDetailQuery; +import com.xmomen.module.base.model.UpdateItemDetail; +import com.xmomen.module.base.service.ItemDetailService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Service +public class ItemDetailServiceImpl implements ItemDetailService { + @Autowired + MybatisDao mybatisDao; + + @Override + public List queryItemDetailList(ItemDetailQuery itemQuery) { + return mybatisDao.getSqlSessionTemplate().selectList(ItemDetailMapper.ItemDetailMapperNameSpace + "getItemDetailList", itemQuery); + } + + @Override + public Page queryItemDetailList(ItemDetailQuery itemQuery, Integer offset, Integer limit) { + return (Page) mybatisDao.selectPage(ItemDetailMapper.ItemDetailMapperNameSpace + "getItemDetailList", itemQuery, limit, offset); + } + + @Override + @Transactional + public void createItemDetail(CreateItemDetail createItemDetail) { + CdItemDetail itemDetail = new CdItemDetail(); + itemDetail.setItemDetailContent(createItemDetail.getItemDetailContent()); + itemDetail.setCdItemId(createItemDetail.getCdItemId()); + mybatisDao.save(itemDetail); + } + + @Transactional + public void updateItemDetail(Integer id, UpdateItemDetail updateItemDetail) { + CdItemDetail itemDetail = new CdItemDetail(); + itemDetail.setId(id); + itemDetail.setCdItemId(updateItemDetail.getCdItemId()); + itemDetail.setItemDetailContent(updateItemDetail.getItemDetailContent()); + mybatisDao.update(itemDetail); + } + + @Transactional + public void delete(Integer id) { + mybatisDao.deleteByPrimaryKey(CdItemDetail.class, id); + } + +} diff --git a/src/main/java/com/xmomen/module/base/service/impl/MemberServiceImpl.java b/src/main/java/com/xmomen/module/base/service/impl/MemberServiceImpl.java new file mode 100644 index 0000000..e15c921 --- /dev/null +++ b/src/main/java/com/xmomen/module/base/service/impl/MemberServiceImpl.java @@ -0,0 +1,333 @@ +package com.xmomen.module.base.service.impl; + +import java.util.List; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; + +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.module.account.service.PasswordHelper; +import com.xmomen.module.base.constant.AppConstants; +import com.xmomen.module.base.entity.CdActivityAddress; +import com.xmomen.module.base.entity.CdBind; +import com.xmomen.module.base.entity.CdBindExample; +import com.xmomen.module.base.entity.CdMember; +import com.xmomen.module.base.entity.CdMemberCouponRelation; +import com.xmomen.module.base.entity.CdMemberCouponRelationExample; +import com.xmomen.module.base.model.CreateMember; +import com.xmomen.module.base.model.UpdateMember; +import com.xmomen.module.base.service.CouponService; +import com.xmomen.module.base.service.MemberService; +import com.xmomen.module.member.entity.MemberAddress; +import com.xmomen.module.member.entity.MemberAddressExample; +import com.xmomen.module.member.model.MemberAddressCreate; +import com.xmomen.module.member.model.MemberAddressUpdate; +import com.xmomen.module.wx.module.cart.service.CartService; + +//@Service +public class MemberServiceImpl implements MemberService { + @Autowired + MybatisDao mybatisDao; + + @Autowired + CouponService couponService; + + @Autowired + PasswordHelper passwordHelper; + + @Autowired + CartService cartService; + + public CdMember getOneMemberModel(String id) { + return this.mybatisDao.selectByPrimaryKey(CdMember.class, id); + } + + @Override + @Transactional + public CdMember createMember(CreateMember createMember) { + + CdMember member = new CdMember(); + member.setPhoneNumber(createMember.getPhoneNumber()); + member = mybatisDao.selectOneByModel(member); + if (member == null) { + member = new CdMember(); + member.setMemberType(createMember.getMemberType()); + member.setName(createMember.getName()); + member.setPhoneNumber(createMember.getPhoneNumber()); + member.setTelNumber(createMember.getTelNumber()); + member.setOfficeTel(createMember.getOfficeTel()); + member.setCdCompanyId(createMember.getCdCompanyId()); + member.setCdUserId(createMember.getCdUserId()); + //加密密码 + String newPassword = ""; + if(!StringUtils.isEmpty(createMember.getPassword())) { + newPassword = passwordHelper.encryptPassword(createMember.getPassword(), AppConstants.PC_PASSWORD_SALT); + } + member.setPassword(newPassword); + member.setEmail(createMember.getEmail()); + member = mybatisDao.insertByModel(member); + //保存收货地址 + for (MemberAddressCreate memberAddressCreate : createMember.getMemberAddressList()) { + MemberAddress memberAddress = new MemberAddress(); + memberAddress.setCdMemberId(member.getId()); + memberAddress.setAddress(memberAddressCreate.getAddress()); + memberAddress.setFullAddress(memberAddressCreate.getAddress()); + memberAddress.setMobile(memberAddressCreate.getMobile()); + memberAddress.setName(memberAddressCreate.getName()); + mybatisDao.insertByModel(memberAddress); + } + } + //存在场合 + else { + member.setMemberType(createMember.getMemberType()); + member.setName(createMember.getName()); + member.setPhoneNumber(createMember.getPhoneNumber()); + member.setTelNumber(createMember.getTelNumber()); + member.setOfficeTel(createMember.getOfficeTel()); + member.setCdCompanyId(createMember.getCdCompanyId()); + member.setCdUserId(createMember.getCdUserId()); + member = mybatisDao.updateByModel(member); + //保存收货地址 + for (MemberAddressCreate memberAddressCreate : createMember.getMemberAddressList()) { + MemberAddress memberAddress = new MemberAddress(); + memberAddress.setCdMemberId(member.getId()); + memberAddress.setAddress(memberAddressCreate.getAddress()); + memberAddress.setFullAddress(memberAddressCreate.getAddress()); + memberAddress.setMobile(memberAddressCreate.getMobile()); + memberAddress.setName(memberAddressCreate.getName()); + mybatisDao.insertByModel(memberAddress); + } + } + if (!StringUtils.isBlank(createMember.getCouponNumber())) { + CdMemberCouponRelation cdMemberCouponRelation = new CdMemberCouponRelation(); + cdMemberCouponRelation.setCdMemberId(member.getId()); + cdMemberCouponRelation.setCouponNumber(createMember.getCouponNumber()); + mybatisDao.insert(cdMemberCouponRelation); + //查看卡是否有送礼品地址 如果有填充到第3个地址里面 + CdActivityAddress couponActivityAddress = new CdActivityAddress(); + couponActivityAddress.setCouponNumber(createMember.getCouponNumber()); + List couponAddressList = mybatisDao.selectByModel(couponActivityAddress); + if (couponAddressList.size() > 0) { + couponActivityAddress = couponAddressList.get(0); + member.setSpareAddress2(couponActivityAddress.getConsignmentAddress()); + member.setSpareName2(couponActivityAddress.getConsignmentName()); + member.setSpareTel2(couponActivityAddress.getConsignmentPhone()); + mybatisDao.update(member); + } + } + return member; + } + + @Transactional + public void updateMember(Integer id, UpdateMember updateMember) { + CdMember member = new CdMember(); + member.setId(id); + member.setMemberType(updateMember.getMemberType()); + member.setName(updateMember.getName()); + member.setPhoneNumber(updateMember.getPhoneNumber()); + member.setTelNumber(updateMember.getTelNumber()); + member.setOfficeTel(updateMember.getOfficeTel()); + member.setCdCompanyId(updateMember.getCdCompanyId()); + member.setCdUserId(updateMember.getCdUserId()); + mybatisDao.update(member); + //保存收货地址 + for (MemberAddressUpdate memberAddressUpdate : updateMember.getMemberAddressList()) { + MemberAddress memberAddress = new MemberAddress(); + if (StringUtils.isNotEmpty(memberAddressUpdate.getId())) { + memberAddress.setId(memberAddressUpdate.getId()); + memberAddress.setCdMemberId(id); + memberAddress.setAddress(memberAddressUpdate.getAddress()); + memberAddress.setFullAddress(memberAddressUpdate.getAddress()); + memberAddress.setMobile(memberAddressUpdate.getMobile()); + memberAddress.setName(memberAddressUpdate.getName()); + mybatisDao.update(memberAddress); + } + else { + memberAddress.setCdMemberId(id); + memberAddress.setFullAddress(memberAddressUpdate.getAddress()); + memberAddress.setMobile(memberAddressUpdate.getMobile()); + memberAddress.setAddress(memberAddressUpdate.getAddress()); + memberAddress.setName(memberAddressUpdate.getName()); + mybatisDao.insert(memberAddress); + } + } + } + + @Transactional + public void delete(Integer id) { + //删除卡与客户的绑定关系 + CdMemberCouponRelationExample tbOrderItemExample = new CdMemberCouponRelationExample(); + tbOrderItemExample.createCriteria().andCdMemberIdEqualTo(id); + mybatisDao.deleteByExample(tbOrderItemExample); + mybatisDao.deleteByPrimaryKey(CdMember.class, id); + //删除收货地址 + MemberAddressExample memberAddressExample = new MemberAddressExample(); + memberAddressExample.createCriteria().andCdMemberIdEqualTo(id); + mybatisDao.deleteByExample(memberAddressExample); + } + + /** + * 绑定 + * + * @param openId + */ + @Transactional + public CdMember bindMember(String openId) { + CdMember member = new CdMember(); + member.setMemberType(1); + member = mybatisDao.insertByModel(member); + //新增绑定关系 + CdBind bind = new CdBind(); + bind.setUserId(member.getId()); + bind.setOpenId(openId); + this.mybatisDao.save(bind); + + return member; + } + + /** + * 绑定 + * + * @param mobile + * @param name + * @param memberId + */ + @Transactional + public CdMember bindMember(String mobile, String name, String openId, Integer memberId) throws Exception { + //手机号是否在member表存在 不存在则新增 + CdMember member = new CdMember(); + member.setPhoneNumber(mobile); + List members = mybatisDao.selectByModel(member); + //手机号不存在场合 + if (members.size() == 0) { + //更新member + CdMember cdMember = new CdMember(); + cdMember.setId(memberId); + cdMember.setName(name); + cdMember.setPhoneNumber(mobile); + member = mybatisDao.updateByModel(cdMember); + + //更新cdBind + CdBindExample cdBindExample = new CdBindExample(); + cdBindExample.createCriteria().andUserIdEqualTo(memberId); + CdBind cdBind = new CdBind(); + //手机号 + cdBind.setPhone(mobile); + mybatisDao.updateOneByExampleSelective(cdBind, cdBindExample); + } + //手机号存在场合 + else { + member = members.get(0); + member.setName(name); + //替换购物车数据 + cartService.copyCartInfo(String.valueOf(memberId), String.valueOf(member.getId())); + + try { + //删除新的member + mybatisDao.deleteByPrimaryKey(CdMember.class, memberId); + } catch (Exception e) { + + } + + CdBind bindDb = new CdBind(); + bindDb.setUserId(member.getId()); + bindDb.setPhone(mobile); + List cdBinds = mybatisDao.selectByModel(bindDb); + if (cdBinds.size() == 0) { + //新增绑定关系 + CdBind bind = new CdBind(); + bind.setUserId(member.getId()); + bind.setPhone(mobile); + bind.setOpenId(openId); + mybatisDao.save(bind); + } + } + + return member; + } + + /** + * 更新手机号码 + * + * @param id 主键 + * @param mobile 新手机号码 + */ + @Transactional + public void updateMobile(Integer id, String mobile) { + CdMember memberDb = this.mybatisDao.selectByPrimaryKey(CdMember.class, id); + //新手机号码和原来一样 直接返回 + if (memberDb.getPhoneNumber().equals(mobile)) { + return; + } + //判断新手机是否存在 存在则不能修改 + CdMember member = new CdMember(); + member.setPhoneNumber(mobile); + List members = mybatisDao.selectByModel(member); + if (members.size() > 0) { + throw new IllegalArgumentException("新手机号已经绑定其他账号!"); + } + //更新bind表的手机号 + CdBind bind = new CdBind(); + bind.setUserId(id); + List cdBinds = mybatisDao.selectByModel(bind); + //更新手机号 + if (cdBinds.size() > 0) { + bind = cdBinds.get(0); + bind.setPhone(mobile); + mybatisDao.updateByModel(bind); + } + else { + throw new IllegalArgumentException("新手机号已经绑定其他账号!"); + } + //更新用户表的手机号 + member.setId(id); + this.mybatisDao.updateByModel(member); + } + + @Override + public CdMember findMember(CdMember member) { + List members = mybatisDao.selectByModel(member); + if (members.size() == 0) { + return null; + } + else { + return members.get(0); + } + } + + @Override + public boolean updatePassword(Integer id, String newPassword, String oldPassword) { + CdMember cdMember = mybatisDao.selectByPrimaryKey(CdMember.class, id); + String newEncryptPassword = passwordHelper.encryptPassword(newPassword, AppConstants.PC_PASSWORD_SALT); + String oldEncryptPassword = passwordHelper.encryptPassword(oldPassword, AppConstants.PC_PASSWORD_SALT); + if(cdMember != null) { + if(StringUtils.isEmpty(cdMember.getPassword()) || cdMember.getPassword().equals(oldEncryptPassword)) { + cdMember.setPassword(newEncryptPassword); + mybatisDao.update(cdMember); + return true; + } + } + return false; + } + + @Override + public CdMember updateMember(CdMember updateMember) { + if(updateMember != null) { + mybatisDao.update(updateMember); + } + return updateMember; + } + + @Override + public boolean resetPassword(Integer id, String newPassword) { + CdMember cdMember = mybatisDao.selectByPrimaryKey(CdMember.class, id); + String newEncryptPassword = passwordHelper.encryptPassword(newPassword, AppConstants.PC_PASSWORD_SALT); + if(cdMember != null) { + cdMember.setPassword(newEncryptPassword); + mybatisDao.update(cdMember); + return true; + } + return false; + } +} diff --git a/src/main/java/com/xmomen/module/beforehandpackagerecord/entity/BeforehandPackageRecord.java b/src/main/java/com/xmomen/module/beforehandpackagerecord/entity/BeforehandPackageRecord.java new file mode 100644 index 0000000..4c122e5 --- /dev/null +++ b/src/main/java/com/xmomen/module/beforehandpackagerecord/entity/BeforehandPackageRecord.java @@ -0,0 +1,149 @@ +package com.xmomen.module.beforehandpackagerecord.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "cd_beforehand_package_record") +public class BeforehandPackageRecord extends BaseMybatisModel { + /** + * + */ + private String id; + + /** + * 包装商品 + */ + private Integer cdItemId; + + /** + * 包装商品数 + */ + private Integer packageNum; + + /** + * 创建时间 + */ + private Date insertDate; + + /** + * 创建人 + */ + private Integer insertUserId; + + /** + * 更新时间 + */ + private Date updateDate; + + /** + * 更新人 + */ + private Integer updateUserId; + + @Column(name = "id") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "cd_item_id") + public Integer getCdItemId() { + return cdItemId; + } + + public void setCdItemId(Integer cdItemId) { + this.cdItemId = cdItemId; + if(cdItemId == null){ + removeValidField("cdItemId"); + return; + } + addValidField("cdItemId"); + } + + @Column(name = "package_num") + public Integer getPackageNum() { + return packageNum; + } + + public void setPackageNum(Integer packageNum) { + this.packageNum = packageNum; + if(packageNum == null){ + removeValidField("packageNum"); + return; + } + addValidField("packageNum"); + } + + @Column(name = "insert_date") + public Date getInsertDate() { + return insertDate; + } + + public void setInsertDate(Date insertDate) { + this.insertDate = insertDate; + if(insertDate == null){ + removeValidField("insertDate"); + return; + } + addValidField("insertDate"); + } + + @Column(name = "insert_user_id") + public Integer getInsertUserId() { + return insertUserId; + } + + public void setInsertUserId(Integer insertUserId) { + this.insertUserId = insertUserId; + if(insertUserId == null){ + removeValidField("insertUserId"); + return; + } + addValidField("insertUserId"); + } + + @Column(name = "update_date") + public Date getUpdateDate() { + return updateDate; + } + + public void setUpdateDate(Date updateDate) { + this.updateDate = updateDate; + if(updateDate == null){ + removeValidField("updateDate"); + return; + } + addValidField("updateDate"); + } + + @Column(name = "update_user_id") + public Integer getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(Integer updateUserId) { + this.updateUserId = updateUserId; + if(updateUserId == null){ + removeValidField("updateUserId"); + return; + } + addValidField("updateUserId"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/beforehandpackagerecord/entity/mapper/BeforehandPackageRecordMapper.java b/src/main/java/com/xmomen/module/beforehandpackagerecord/entity/mapper/BeforehandPackageRecordMapper.java new file mode 100644 index 0000000..e1ba5bc --- /dev/null +++ b/src/main/java/com/xmomen/module/beforehandpackagerecord/entity/mapper/BeforehandPackageRecordMapper.java @@ -0,0 +1,16 @@ +package com.xmomen.module.beforehandpackagerecord.entity.mapper; + +import com.xmomen.framework.mybatis.mapper.MybatisMapper; +import com.xmomen.module.beforehandpackagerecord.entity.BeforehandPackageRecord; +import com.xmomen.module.beforehandpackagerecord.entity.BeforehandPackageRecordExample; +import org.apache.ibatis.annotations.Param; + +public interface BeforehandPackageRecordMapper extends MybatisMapper { + int countByExample(BeforehandPackageRecordExample example); + + int deleteByExample(BeforehandPackageRecordExample example); + + int insertSelective(BeforehandPackageRecord record); + + int updateByExampleSelective(@Param("record") BeforehandPackageRecord record, @Param("example") BeforehandPackageRecordExample example); +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/beforehandpackagerecord/entity/mapper/BeforehandPackageRecordMapper.xml b/src/main/java/com/xmomen/module/beforehandpackagerecord/entity/mapper/BeforehandPackageRecordMapper.xml new file mode 100644 index 0000000..beab32c --- /dev/null +++ b/src/main/java/com/xmomen/module/beforehandpackagerecord/entity/mapper/BeforehandPackageRecordMapper.xml @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, cd_item_id, package_num, insert_date, insert_user_id, update_date, update_user_id + + + + delete from cd_beforehand_package_record + + + + + + + SELECT replace(UUID(),'-','') + + insert into cd_beforehand_package_record + + id, + + cd_item_id, + + + package_num, + + + insert_date, + + + insert_user_id, + + + update_date, + + + update_user_id, + + + + #{id,jdbcType=VARCHAR}, + + #{cdItemId,jdbcType=INTEGER}, + + + #{packageNum,jdbcType=INTEGER}, + + + #{insertDate,jdbcType=TIMESTAMP}, + + + #{insertUserId,jdbcType=INTEGER}, + + + #{updateDate,jdbcType=TIMESTAMP}, + + + #{updateUserId,jdbcType=INTEGER}, + + + + + + update cd_beforehand_package_record + + + id = #{record.id,jdbcType=VARCHAR}, + + + cd_item_id = #{record.cdItemId,jdbcType=INTEGER}, + + + package_num = #{record.packageNum,jdbcType=INTEGER}, + + + insert_date = #{record.insertDate,jdbcType=TIMESTAMP}, + + + insert_user_id = #{record.insertUserId,jdbcType=INTEGER}, + + + update_date = #{record.updateDate,jdbcType=TIMESTAMP}, + + + update_user_id = #{record.updateUserId,jdbcType=INTEGER}, + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/beforehandpackagerecord/mapper/BeforehandPackageRecordMapperExt.java b/src/main/java/com/xmomen/module/beforehandpackagerecord/mapper/BeforehandPackageRecordMapperExt.java new file mode 100644 index 0000000..03a9a2d --- /dev/null +++ b/src/main/java/com/xmomen/module/beforehandpackagerecord/mapper/BeforehandPackageRecordMapperExt.java @@ -0,0 +1,12 @@ +package com.xmomen.module.beforehandpackagerecord.mapper; + +/** + * @author tanxinzheng + * @date 2017-5-18 23:36:38 + * @version 1.0.0 + */ +public interface BeforehandPackageRecordMapperExt { + + public static final String BeforehandPackageRecordMapperNameSpace = "com.xmomen.module.beforehandpackagerecord.mapper.BeforehandPackageRecordMapperExt."; + +} diff --git a/src/main/java/com/xmomen/module/beforehandpackagerecord/model/BeforehandPackageRecordQuery.java b/src/main/java/com/xmomen/module/beforehandpackagerecord/model/BeforehandPackageRecordQuery.java new file mode 100644 index 0000000..a8abfc8 --- /dev/null +++ b/src/main/java/com/xmomen/module/beforehandpackagerecord/model/BeforehandPackageRecordQuery.java @@ -0,0 +1,30 @@ +package com.xmomen.module.beforehandpackagerecord.model; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author tanxinzheng + * @version 1.0.0 + * @date 2017-5-18 23:36:38 + */ +public +@Data +class BeforehandPackageRecordQuery implements Serializable { + /** + * 主键 + */ + private String id; + /** + * 包含主键集 + */ + private String[] ids; + /** + * 排除主键集 + */ + private String[] excludeIds; + + private Integer insertUserId; + +} diff --git a/src/main/java/com/xmomen/module/beforehandpackagerecord/model/BeforehandPackageRecordUpdate.java b/src/main/java/com/xmomen/module/beforehandpackagerecord/model/BeforehandPackageRecordUpdate.java new file mode 100644 index 0000000..330fb0e --- /dev/null +++ b/src/main/java/com/xmomen/module/beforehandpackagerecord/model/BeforehandPackageRecordUpdate.java @@ -0,0 +1,40 @@ +package com.xmomen.module.beforehandpackagerecord.model; + +import lombok.Data; +import com.xmomen.module.beforehandpackagerecord.entity.BeforehandPackageRecord; +import org.springframework.beans.BeanUtils; + + import java.lang.String; + import java.lang.Integer; + import java.util.Date; +import java.io.Serializable; + +/** + * @author tanxinzheng + * @date 2017-5-18 23:36:38 + * @version 1.0.0 + */ +public @Data class BeforehandPackageRecordUpdate implements Serializable { + + /** */ + private String id; + /** 包装商品 */ + private Integer cdItemId; + /** 包装商品数 */ + private Integer packageNum; + /** 创建时间 */ + private Date insertDate; + /** 创建人 */ + private Integer insertUserId; + /** 更新时间 */ + private Date updateDate; + /** 更新人 */ + private Integer updateUserId; + + + public BeforehandPackageRecord getEntity(){ + BeforehandPackageRecord beforehandPackageRecord = new BeforehandPackageRecord(); + BeanUtils.copyProperties(this, beforehandPackageRecord); + return beforehandPackageRecord; + } +} diff --git a/src/main/java/com/xmomen/module/common/SysConstant.java b/src/main/java/com/xmomen/module/common/SysConstant.java new file mode 100644 index 0000000..4a04f69 --- /dev/null +++ b/src/main/java/com/xmomen/module/common/SysConstant.java @@ -0,0 +1,10 @@ +package com.xmomen.module.common; + +/** + * 系统常量 + * @author Administrator + * + */ +public class SysConstant { + +} diff --git a/src/main/java/com/xmomen/module/core/web/authenticator/MultiLoginAuthenticator.java b/src/main/java/com/xmomen/module/core/web/authenticator/MultiLoginAuthenticator.java new file mode 100644 index 0000000..c1bb2ef --- /dev/null +++ b/src/main/java/com/xmomen/module/core/web/authenticator/MultiLoginAuthenticator.java @@ -0,0 +1,49 @@ +package com.xmomen.module.core.web.authenticator; + +import java.util.Collection; + +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.AuthenticationInfo; +import org.apache.shiro.authc.AuthenticationToken; +import org.apache.shiro.authc.pam.ModularRealmAuthenticator; +import org.apache.shiro.realm.Realm; + +import com.xmomen.module.core.web.token.MemberUserToken; +import com.xmomen.module.core.web.token.SysUserToken; + +public class MultiLoginAuthenticator extends ModularRealmAuthenticator { + + + @Override + protected AuthenticationInfo doAuthenticate(AuthenticationToken authenticationToken) + throws AuthenticationException { + assertRealmsConfigured(); + //根据不同类型的token找对应的的Realm + String realmKey = ""; + if(authenticationToken instanceof MemberUserToken) { + realmKey = ((MemberUserToken)authenticationToken).getRealmKey(); + } else if(authenticationToken instanceof SysUserToken) { + realmKey = ((SysUserToken)authenticationToken).getRealmKey(); + } + if(StringUtils.isEmpty(realmKey)) { + // 抛异常还是支持multiple Realms + // return doMultiRealmAuthentication(realms, authenticationToken); + throw new AuthenticationException("不支持token:" + authenticationToken.getClass().getName()); + } else { + Realm realm = lookupRealm(realmKey); + return doSingleRealmAuthentication(realm, authenticationToken); + } + } + + protected Realm lookupRealm(String realmName) throws AuthenticationException { + Collection realms = getRealms(); + for(Realm realm: realms) { + // 不是很严格,但是根据是否名字包含就足够 + if(realm.getName().indexOf(realmName) > -1) { + return realm; + } + } + throw new AuthenticationException("找不到对应的的Realm:" + realmName); + } +} diff --git a/src/main/java/com/xmomen/module/core/web/controller/AccountController.java b/src/main/java/com/xmomen/module/core/web/controller/AccountController.java new file mode 100644 index 0000000..3259aa3 --- /dev/null +++ b/src/main/java/com/xmomen/module/core/web/controller/AccountController.java @@ -0,0 +1,54 @@ +package com.xmomen.module.core.web.controller; + +import java.util.Set; + +import com.xmomen.module.account.service.UserService; +import com.xmomen.module.core.web.controller.dto.AccountSettingDto; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.subject.Subject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +/** + * Created by Jeng on 2016/1/5. + */ +@RestController +public class AccountController { + + @Autowired + UserService userService; + + /** + * 用户设置 + * @return + */ + @RequestMapping(value = "/account/setting", method = RequestMethod.GET) + public AccountSettingDto accountSetting(){ + AccountSettingDto accountSettingDto = new AccountSettingDto(); + Subject subject = SecurityUtils.getSubject(); + if(subject == null){ + return null; + } + String username = subject.getPrincipal().toString(); + accountSettingDto.setUsername(username); + Set roles = userService.findRoles(username); + return accountSettingDto; + } + + /** + * 用户修改密码 + * @return + */ + @RequestMapping(value = "/account/resetPassword", method = RequestMethod.POST) + public void resetPassword(@RequestParam(value = "current_password") String currentPassword, + @RequestParam(value = "password") String password){ + Subject subject = SecurityUtils.getSubject(); + String username = subject.getPrincipal().toString(); + userService.changePassword(username, currentPassword, password); + } + + +} diff --git a/src/main/java/com/xmomen/module/core/web/controller/CoreController.java b/src/main/java/com/xmomen/module/core/web/controller/CoreController.java new file mode 100644 index 0000000..8cec06f --- /dev/null +++ b/src/main/java/com/xmomen/module/core/web/controller/CoreController.java @@ -0,0 +1,84 @@ +package com.xmomen.module.core.web.controller; + +import javax.servlet.http.HttpServletRequest; +import javax.validation.Valid; + +import com.xmomen.module.account.model.CreateUser; +import com.xmomen.module.account.service.UserService; +import com.xmomen.module.user.entity.SysUsers; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authc.IncorrectCredentialsException; +import org.apache.shiro.authc.UnknownAccountException; +import org.apache.shiro.web.util.WebUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; + +import com.xmomen.module.core.web.controller.dto.RegisterDto; + +/** + * Created by Jeng on 2016/1/5. + */ +@Controller +public class CoreController { + + private static Logger logger = LoggerFactory.getLogger(CoreController.class); + + @RequestMapping(value = "/") + public String index(){ + return "redirect:/index.html"; + } + + @RequestMapping(value = "/login") + public String login(HttpServletRequest request, Model model){ + if(SecurityUtils.getSubject().isAuthenticated()){ + return "redirect:/"; + } + String exceptionClassName = (String)request.getAttribute("shiroLoginFailure"); + String error = null; + if(UnknownAccountException.class.getName().equals(exceptionClassName)) { + error = "用户名/密码错误"; + } else if(IncorrectCredentialsException.class.getName().equals(exceptionClassName)) { + error = "用户名/密码错误"; + } else if(exceptionClassName != null) { + error = "其他错误:" + exceptionClassName; + } + model.addAttribute("error", error); + return "login"; + } + + @Autowired + UserService userService; + + @RequestMapping(value = "/register") + public String register(@ModelAttribute @Valid RegisterDto registerDto, + BindingResult bindingResult, + HttpServletRequest request, + Model model) { + if (!WebUtils.toHttp(request).getMethod().equalsIgnoreCase("POST")){ + return "register"; + } + if(!bindingResult.hasErrors()){ + CreateUser user = new CreateUser(); + user.setUsername(registerDto.getUsername()); + user.setPassword(registerDto.getPassword()); + SysUsers sysUsers = userService.createUser(user); + if(sysUsers.getId() != null && sysUsers.getId() > 0 ){ + return "login"; + }else{ + logger.error("注册成功后返回的主键为空(或主键等于或小于0)"); + model.addAttribute("error", "注册用户失败"); + return "register"; + } + }else{ + model.addAttribute("error", bindingResult.getFieldError().getDefaultMessage()); + return "register"; + } + } + +} diff --git a/src/main/java/com/xmomen/module/core/web/controller/dto/RegisterDto.java b/src/main/java/com/xmomen/module/core/web/controller/dto/RegisterDto.java new file mode 100644 index 0000000..49db7ca --- /dev/null +++ b/src/main/java/com/xmomen/module/core/web/controller/dto/RegisterDto.java @@ -0,0 +1,43 @@ +package com.xmomen.module.core.web.controller.dto; + +import org.hibernate.validator.constraints.Email; +import org.hibernate.validator.constraints.NotBlank; + +import java.io.Serializable; + +/** + * Created by Jeng on 2016/1/6. + */ +public class RegisterDto implements Serializable { + + @NotBlank + private String username; + @Email + private String email; + @NotBlank + private String password; + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } +} diff --git a/src/main/java/com/xmomen/module/core/web/exception/DefaultExceptionHandler.java b/src/main/java/com/xmomen/module/core/web/exception/DefaultExceptionHandler.java new file mode 100644 index 0000000..ad6f1d9 --- /dev/null +++ b/src/main/java/com/xmomen/module/core/web/exception/DefaultExceptionHandler.java @@ -0,0 +1,45 @@ +package com.xmomen.module.core.web.exception; + +import org.apache.shiro.authz.UnauthorizedException; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.context.request.NativeWebRequest; +import org.springframework.web.servlet.ModelAndView; + +/** + *

    User: Zhang Kaitao + *

    Date: 14-2-12 + *

    Version: 1.0 + */ +@ControllerAdvice +public class DefaultExceptionHandler { + /** + * 没有权限 异常 + *

    + * 后续根据不同的需求定制即可 + */ + @ExceptionHandler({UnauthorizedException.class}) + @ResponseStatus(HttpStatus.UNAUTHORIZED) + public ModelAndView processUnauthenticatedException(NativeWebRequest request, UnauthorizedException e) { + ModelAndView mv = new ModelAndView(); + mv.addObject("exception", e); + mv.setViewName("unauthorized"); + return mv; + } + + /** + * 没有权限 异常 + *

    + * 后续根据不同的需求定制即可 + */ + @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) + public ModelAndView internalServerError500Exception(NativeWebRequest request, UnauthorizedException e) { + ModelAndView mv = new ModelAndView(); + mv.addObject("exception", e); + mv.setViewName("unauthorized"); + return mv; + } + +} diff --git a/src/main/java/com/xmomen/module/core/web/exception/GlobalMappingExceptionResolver.java b/src/main/java/com/xmomen/module/core/web/exception/GlobalMappingExceptionResolver.java new file mode 100644 index 0000000..2ac5c1f --- /dev/null +++ b/src/main/java/com/xmomen/module/core/web/exception/GlobalMappingExceptionResolver.java @@ -0,0 +1,53 @@ +package com.xmomen.module.core.web.exception; + +import com.alibaba.fastjson.JSONObject; +import com.xmomen.framework.exception.BusinessException; +import com.xmomen.framework.web.rest.RestError; +import com.xmomen.module.core.web.WebCommonUtils; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.handler.SimpleMappingExceptionResolver; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +/** + * Created by Jeng on 2016/1/11. + */ +public class GlobalMappingExceptionResolver extends SimpleMappingExceptionResolver { + + @Override + protected ModelAndView doResolveException(HttpServletRequest request, + HttpServletResponse response, Object handler, Exception ex) { + if (!WebCommonUtils.isJSON(request)) {// 不是ajax请求 + return super.doResolveException(request, response, handler, ex); + } + ModelAndView mv = new ModelAndView(); + //设置ContentType + response.setContentType(MediaType.APPLICATION_JSON_VALUE); + //避免乱码 + response.setCharacterEncoding("UTF-8"); + RestError restError = new RestError(ex, request); + //设置状态码 + int status = HttpStatus.INTERNAL_SERVER_ERROR.value(); + String message = ""; + if(ex instanceof IllegalArgumentException || ex instanceof BusinessException){ + status = HttpStatus.BAD_REQUEST.value(); + message = ex.getMessage(); + }else{ + message = "系统异常,请联系管理员"; + } + response.setStatus(status); + restError.setStatus(status); + restError.setMessage(message); + try { + response.getWriter().write(JSONObject.toJSONString(restError)); + } catch (IOException e) { + e.printStackTrace(); + } + logger.error(ex.getMessage(), ex); + return mv; + } +} diff --git a/src/main/java/com/xmomen/module/core/web/filter/FormAuthenticationFilterExt.java b/src/main/java/com/xmomen/module/core/web/filter/FormAuthenticationFilterExt.java new file mode 100644 index 0000000..7f1559c --- /dev/null +++ b/src/main/java/com/xmomen/module/core/web/filter/FormAuthenticationFilterExt.java @@ -0,0 +1,169 @@ +package com.xmomen.module.core.web.filter; + +import com.alibaba.fastjson.JSONObject; +import com.xmomen.module.account.service.UserService; +import com.xmomen.module.core.web.WebCommonUtils; +import com.xmomen.module.core.web.token.SysUserToken; +import com.xmomen.module.user.entity.SysUsers; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.AuthenticationToken; +import org.apache.shiro.session.Session; +import org.apache.shiro.session.mgt.eis.SessionDAO; +import org.apache.shiro.subject.Subject; +import org.apache.shiro.web.filter.authc.FormAuthenticationFilter; +import org.apache.shiro.web.util.WebUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; + +import javax.servlet.ServletOutputStream; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +/** + * Created by Jeng on 2016/1/7. + */ +public class FormAuthenticationFilterExt extends FormAuthenticationFilter { + + @Autowired + UserService userService; + + private static Logger logger = LoggerFactory.getLogger(FormAuthenticationFilterExt.class); + + private void initUserContext(String username, Subject subject){ + SysUsers sysUsers = userService.findByUsername(username); + subject.getSession().setAttribute("user_id", sysUsers.getId()); + } + + private void buildJSONMessage(String message, ServletRequest request, ServletResponse response){ + try { + Map map = new HashMap(); + map.put("code", HttpStatus.UNAUTHORIZED.value()); + map.put("message", message); + map.put("timestamp", new Date()); + HttpServletResponse httpServletResponse = WebUtils.toHttp(response); + httpServletResponse.setCharacterEncoding("UTF-8"); + httpServletResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED); + ServletOutputStream servletOutputStream = httpServletResponse.getOutputStream(); + servletOutputStream.print(JSONObject.toJSONString(map)); + servletOutputStream.flush(); + servletOutputStream.close(); + } catch (IOException e) { + logger.error(e.getMessage(), e.getCause()); + e.printStackTrace(); + } + } + + @Override + protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception { + if (isLoginRequest(request, response)) { + if (isLoginSubmission(request, response)) { + if (logger.isTraceEnabled()) { + logger.trace("Login submission detected. Attempting to execute login."); + } + return executeLogin(request, response); + } else { + if (logger.isTraceEnabled()) { + logger.trace("Login page view."); + } + if (!WebCommonUtils.isJSON(request)) {// 不是ajax请求 + //allow them to see the login page ;) + return true; + } else { + buildJSONMessage("Requires authentication", request, response); + } + return false; + } + } else { + if (logger.isTraceEnabled()) { + logger.trace("Attempting to access a path which requires authentication. Forwarding to the " + + "Authentication url [" + getLoginUrl() + "]"); + } + if (!WebCommonUtils.isJSON(request)) {// 不是ajax请求 + saveRequestAndRedirectToLogin(request, response); + } else { + buildJSONMessage("Requires authentication", request, response); + } + return false; + } + } + + /** + * 登录成功处理(兼容自动识别异步请求,json请求及页面请求) + * @param token + * @param subject + * @param request + * @param response + * @return + * @throws Exception + */ + @Override + protected boolean onLoginSuccess(AuthenticationToken token, Subject subject, + ServletRequest request, ServletResponse response) throws Exception { + HttpServletRequest httpServletRequest = (HttpServletRequest) request; + HttpServletResponse httpServletResponse = (HttpServletResponse) response; + String username = (String) subject.getPrincipal(); + initUserContext(username, subject); + if (!WebCommonUtils.isJSON(request)) {// 不是ajax请求 + issueSuccessRedirect(request, response); + } else { + httpServletResponse.setCharacterEncoding("UTF-8"); + PrintWriter out = httpServletResponse.getWriter(); + out.println("{success:true,message:'登入成功'}"); + out.flush(); + out.close(); + } + return false; + } + + /** + * 登录失败处理(兼容自动识别异步请求,json请求及页面请求) + * @param token + * @param e + * @param request + * @param response + * @return + */ + @Override + protected boolean onLoginFailure(AuthenticationToken token, AuthenticationException e, + ServletRequest request, ServletResponse response) { + if (!WebCommonUtils.isJSON(request)) {// 不是ajax请求 + setFailureAttribute(request, e); + return true; + } + try { + response.setCharacterEncoding("UTF-8"); + PrintWriter out = response.getWriter(); + String message = e.getClass().getSimpleName(); + if ("IncorrectCredentialsException".equals(message)) { + out.println("{success:false,message:'密码错误'}"); + } else if ("UnknownAccountException".equals(message)) { + out.println("{success:false,message:'账号不存在'}"); + } else if ("LockedAccountException".equals(message)) { + out.println("{success:false,message:'账号被锁定'}"); + } else { + out.println("{success:false,message:'未知错误'}"); + } + out.flush(); + out.close(); + } catch (IOException e1) { + logger.error(e1.getMessage(), e1.getCause()); + // TODO Auto-generated catch block + e1.printStackTrace(); + } + return false; + } + + @Override + protected AuthenticationToken createToken(String username, String password, boolean rememberMe, String host) { + return new SysUserToken(username, password, rememberMe, host); + } +} diff --git a/src/main/java/com/xmomen/module/core/web/mgt/WebSecurityManagerExt.java b/src/main/java/com/xmomen/module/core/web/mgt/WebSecurityManagerExt.java new file mode 100644 index 0000000..77fe423 --- /dev/null +++ b/src/main/java/com/xmomen/module/core/web/mgt/WebSecurityManagerExt.java @@ -0,0 +1,55 @@ +package com.xmomen.module.core.web.mgt; + +import com.xmomen.module.account.service.UserService; +import com.xmomen.module.base.constant.AppConstants; +import com.xmomen.module.base.entity.CdMember; +import com.xmomen.module.base.service.MemberService; +import com.xmomen.module.user.entity.SysUsers; + +import org.apache.shiro.authc.Authenticator; +import org.apache.shiro.authc.pam.ModularRealmAuthenticator; +import org.apache.shiro.subject.Subject; +import org.apache.shiro.subject.SubjectContext; +import org.apache.shiro.web.mgt.DefaultWebSecurityManager; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * Created by tanxinzheng on 16/7/3. + */ +public class WebSecurityManagerExt extends DefaultWebSecurityManager { + + @Autowired + UserService userService; + + @Autowired + MemberService memberService; + + protected Subject doCreateSubject(SubjectContext context) { + Subject subject = this.getSubjectFactory().createSubject(context); + String username = (String) subject.getPrincipal(); + if(username != null){ + //后端用户数据源 + SysUsers sysUsers = userService.findByUsername(username); + if(sysUsers !=null && sysUsers.getId() != null){ + subject.getSession().setAttribute(AppConstants.SESSION_USER_ID_KEY, sysUsers.getId()); + } else { + CdMember memberQuery = new CdMember(); + memberQuery.setPhoneNumber(username); + //前端用户数据源 + CdMember member = memberService.findMember(memberQuery); + if(member != null && member.getId() != null) { + subject.getSession().setAttribute(AppConstants.SESSION_USER_ID_KEY, member.getId()); + } + } + } + return subject; + } + + @Override + public void setAuthenticator(Authenticator authenticator) throws IllegalArgumentException { + super.setAuthenticator(authenticator); + if (authenticator instanceof ModularRealmAuthenticator) { + ((ModularRealmAuthenticator) authenticator).setRealms(getRealms()); + } + } +} diff --git a/src/main/java/com/xmomen/module/core/web/token/MemberUserToken.java b/src/main/java/com/xmomen/module/core/web/token/MemberUserToken.java new file mode 100644 index 0000000..e527133 --- /dev/null +++ b/src/main/java/com/xmomen/module/core/web/token/MemberUserToken.java @@ -0,0 +1,19 @@ +package com.xmomen.module.core.web.token; + +import org.apache.shiro.authc.UsernamePasswordToken; + +public class MemberUserToken extends UsernamePasswordToken { + + private static final long serialVersionUID = 1L; + + private final String realmKey = "MemberRealm"; + + public MemberUserToken(final String username, final String password, + final boolean rememberMe, final String host) { + super(username, password != null ? password.toCharArray() : null, rememberMe, host); + } + + public String getRealmKey() { + return this.realmKey; + } +} diff --git a/src/main/java/com/xmomen/module/export/model/UploadFileVo.java b/src/main/java/com/xmomen/module/export/model/UploadFileVo.java new file mode 100644 index 0000000..e6d473a --- /dev/null +++ b/src/main/java/com/xmomen/module/export/model/UploadFileVo.java @@ -0,0 +1,203 @@ +package com.xmomen.module.export.model; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.web.multipart.MultipartHttpServletRequest; + + +/** + * 上传下载模型类 + * + * @author 张代浩 + * + */ +public class UploadFileVo { + private String byteField = "attachmentcontent";// 二进制文件内容保存到数据库的对应实体类字段 + private String titleField = "attachmenttitle";// 文件名(标题)保存到数据库的对应实体类字段 + private String basePath = "upload";// 文件保存目录根路径 + private String realPath = "realpath";// 文件保存在硬盘的全路径对应实体字段 + private String extend = "extend";// 扩展名 + private boolean view = false;// 是否是预览 + private boolean rename =true;// 是否重命名 + private String swfpath;// 转换SWF + private String cusPath;// 文件物理路径自定义子目录 + private byte[] content;// 预览或下载时传入的文件二进制内容 + private Object object;// 文件对应实体对象 + private String fileKey;// 上传文件ID + private MultipartHttpServletRequest multipartRequest; + private HttpServletRequest request; + private HttpServletResponse response; + + /** + * @param response + * the response to set + */ + public void setResponse(HttpServletResponse response) { + this.response = response; + } + + public UploadFileVo(HttpServletRequest request, Object object) { + this.multipartRequest = (MultipartHttpServletRequest) request; + this.object = object; + } + + public UploadFileVo(HttpServletRequest request) { + this.multipartRequest = (MultipartHttpServletRequest) request; + + } + + public UploadFileVo(HttpServletRequest request, HttpServletResponse response) { + this.request = request; + this.response = response; + } + + public UploadFileVo() { + + } + + public String getSwfpath() { + return swfpath; + } + + public void setSwfpath(String swfpath) { + this.swfpath = swfpath; + } + + /** + * @return the realPath + */ + public String getRealPath() { + return realPath; + } + + /** + * @param realPath + * the realPath to set + */ + public void setRealPath(String realPath) { + this.realPath = realPath; + } + + /** + * @return the response + */ + public HttpServletResponse getResponse() { + return response; + } + + /** + * @return the request + */ + public HttpServletRequest getRequest() { + return request; + } + + /** + * @param request + * the request to set + */ + public void setRequest(HttpServletRequest request) { + this.request = request; + } + + /** + * @return the multipartRequest + */ + public MultipartHttpServletRequest getMultipartRequest() { + return multipartRequest; + } + + public String get(String name) { + return getMultipartRequest().getParameter(name); + + } + + /** + * @param multipartRequest + * the multipartRequest to set + */ + public void setMultipartRequest(MultipartHttpServletRequest multipartRequest) { + this.multipartRequest = multipartRequest; + } + + public Object getObject() { + return object; + } + + public String getBasePath() { + return basePath; + } + + public void setBasePath(String basePath) { + this.basePath = basePath; + } + + public void setObject(Object object) { + this.object = object; + } + + public String getByteField() { + return byteField; + } + + public void setByteField(String byteField) { + this.byteField = byteField; + } + + public String getTitleField() { + return titleField; + } + + public void setTitleField(String titleField) { + this.titleField = titleField; + } + + public String getCusPath() { + return cusPath; + } + + public void setCusPath(String cusPath) { + this.cusPath = cusPath; + } + + public String getExtend() { + return extend; + } + + public void setExtend(String extend) { + this.extend = extend; + } + + public boolean isView() { + return view; + } + + public void setView(boolean view) { + this.view = view; + } + + public byte[] getContent() { + return content; + } + + public void setContent(byte[] content) { + this.content = content; + } + + public String getFileKey() { + return fileKey; + } + + public void setFileKey(String fileKey) { + this.fileKey = fileKey; + } + public boolean isRename() { + return rename; + } + + public void setRename(boolean rename) { + this.rename = rename; + } + +} diff --git a/src/main/java/com/xmomen/module/export/service/ExportService.java b/src/main/java/com/xmomen/module/export/service/ExportService.java new file mode 100644 index 0000000..768d652 --- /dev/null +++ b/src/main/java/com/xmomen/module/export/service/ExportService.java @@ -0,0 +1,113 @@ +package com.xmomen.module.export.service; + +import java.io.ByteArrayOutputStream; +import java.io.FileInputStream; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.poi.xssf.usermodel.XSSFCell; +import org.apache.poi.xssf.usermodel.XSSFRow; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.xmomen.module.base.service.ExpressService; +import com.xmomen.module.order.model.OrderModel; +import com.xmomen.module.order.model.OrderQuery; +import com.xmomen.module.order.model.PurchaseModel; +import com.xmomen.module.order.service.PurchaseService; + + +@Service +public class ExportService { + @Autowired + PurchaseService purchaseService; + @Autowired + ExpressService expressService; + /** + * 采购单导出 + * @param templatePath + * @return + */ + public XSSFWorkbook exportPurchaseExcel(String templatePath){ + XSSFWorkbook workbook = new XSSFWorkbook(); + ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream(); + try { + workbook = new XSSFWorkbook(new FileInputStream(templatePath)); + XSSFSheet sheet = workbook.getSheet("Sheet1"); + Map param = new HashMap(); + param.put("purchaseStatus", 0); + List purchaseModels = purchaseService.getPurchaseList(param); + for(int i=0,size=purchaseModels.size();i takeDeliverys = expressService.getTakeDeliveryList(query); + for(int i=0,size=takeDeliverys.size();i getUserList(@RequestParam(value = "limit") Integer limit, + @RequestParam(value = "offset") Integer offset, + @RequestParam(value = "keyword", required = false) String keyword, + @RequestParam(value = "jobId", required = false) Integer jobId, + @RequestParam(value = "upc", required = false) String upc){ + Map param = new HashMap(); + param.put("keyword", keyword); + param.put("jobId", jobId); + param.put("upc",upc); + return (Page) mybatisDao.selectPage(JobOperationLogMapper.JobOperationLogMapperNameSpace + "getJobOperationLogList", param, limit, offset); + } + + /** + * 删除包装操作记录 + * @param id + */ + @RequestMapping(value = "/jobOperationLog/{id}", method = RequestMethod.DELETE) + @Log(actionName = "包装操作记录") + public void deletePlan(@PathVariable(value = "id") Integer id){ + this.jobOperationLogService.delete(id); + } +} diff --git a/src/main/java/com/xmomen/module/job/entity/TbJobOperationLog.java b/src/main/java/com/xmomen/module/job/entity/TbJobOperationLog.java new file mode 100644 index 0000000..4f82d05 --- /dev/null +++ b/src/main/java/com/xmomen/module/job/entity/TbJobOperationLog.java @@ -0,0 +1,130 @@ +package com.xmomen.module.job.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "tb_job_operation_log") +public class TbJobOperationLog extends BaseMybatisModel { + /** + * 主键 + */ + private Integer id; + + /** + * 工作ID + */ + private Integer jobId; + + /** + * 操作人 + */ + private Integer jobUser; + + /** + * 操作时间 + */ + private Date jobTime; + + /** + * 操作的条码 + */ + private String barCode; + + /** + * 操作的商品条码 + */ + private String itemCode; + + @Column(name = "id") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "job_id") + public Integer getJobId() { + return jobId; + } + + public void setJobId(Integer jobId) { + this.jobId = jobId; + if(jobId == null){ + removeValidField("jobId"); + return; + } + addValidField("jobId"); + } + + @Column(name = "job_user") + public Integer getJobUser() { + return jobUser; + } + + public void setJobUser(Integer jobUser) { + this.jobUser = jobUser; + if(jobUser == null){ + removeValidField("jobUser"); + return; + } + addValidField("jobUser"); + } + + @Column(name = "job_time") + public Date getJobTime() { + return jobTime; + } + + public void setJobTime(Date jobTime) { + this.jobTime = jobTime; + if(jobTime == null){ + removeValidField("jobTime"); + return; + } + addValidField("jobTime"); + } + + @Column(name = "bar_code") + public String getBarCode() { + return barCode; + } + + public void setBarCode(String barCode) { + this.barCode = barCode; + if(barCode == null){ + removeValidField("barCode"); + return; + } + addValidField("barCode"); + } + + @Column(name = "item_code") + public String getItemCode() { + return itemCode; + } + + public void setItemCode(String itemCode) { + this.itemCode = itemCode; + if(itemCode == null){ + removeValidField("itemCode"); + return; + } + addValidField("itemCode"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/job/mapper/JobOperationLogMapper.java b/src/main/java/com/xmomen/module/job/mapper/JobOperationLogMapper.java new file mode 100644 index 0000000..385bd67 --- /dev/null +++ b/src/main/java/com/xmomen/module/job/mapper/JobOperationLogMapper.java @@ -0,0 +1,6 @@ +package com.xmomen.module.job.mapper; + +public interface JobOperationLogMapper { + public static final String JobOperationLogMapperNameSpace = "com.xmomen.module.job.mapper.JobOperationLogMapper."; + +} diff --git a/src/main/java/com/xmomen/module/job/mapper/PackageTaskMapper.java b/src/main/java/com/xmomen/module/job/mapper/PackageTaskMapper.java new file mode 100644 index 0000000..4678188 --- /dev/null +++ b/src/main/java/com/xmomen/module/job/mapper/PackageTaskMapper.java @@ -0,0 +1,6 @@ +package com.xmomen.module.job.mapper; + +public interface PackageTaskMapper { + public static final String PackageTaskMapperNameSpace = "com.xmomen.module.job.mapper.PackageTaskMapper."; + +} diff --git a/src/main/java/com/xmomen/module/job/mapper/PackageTaskMapper.xml b/src/main/java/com/xmomen/module/job/mapper/PackageTaskMapper.xml new file mode 100644 index 0000000..af9310b --- /dev/null +++ b/src/main/java/com/xmomen/module/job/mapper/PackageTaskMapper.xml @@ -0,0 +1,74 @@ + + + + + + + + update + tb_job + set + job_status = 0 ,job_begin_time = null ,finish_time = null + where + id=#{id} + + + + update + tb_job + set + job_status = 1,finish_time = null + where + id=#{id} + + \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/job/model/CreatePackageTask.java b/src/main/java/com/xmomen/module/job/model/CreatePackageTask.java new file mode 100644 index 0000000..6d41d1d --- /dev/null +++ b/src/main/java/com/xmomen/module/job/model/CreatePackageTask.java @@ -0,0 +1,152 @@ +package com.xmomen.module.job.model; + +import java.io.Serializable; +import java.util.Date; + +public class CreatePackageTask implements Serializable{ + + /** + * 采购编号 + */ + private String purchaseCode; + + /** + * 采购明细ID + */ + private Integer purchaseId; + + /** + * 1-包装任务,2-装箱任务 + */ + private Integer jobType; + + /** + * 0-未开始,1-包装中,2-包装完成 + */ + private Integer jobStatus; + + /** + * + */ + private Integer jobUser; + + /** + * 任务创建时间 + */ + private Date jobCreateTime; + + /** + * 包装的产品 + */ + private Integer cdItemId; + + /** + * 需要包装的份数 + */ + private Integer countValue; + + /** + * 包装完成的份数 + */ + private Integer finishValue; + + /** + * + */ + private Date finishTime; + + /** + * 任务创建人 + */ + private Integer jobCreateUser; + + public String getPurchaseCode() { + return purchaseCode; + } + + public void setPurchaseCode(String purchaseCode) { + this.purchaseCode = purchaseCode; + } + + public Integer getPurchaseId() { + return purchaseId; + } + + public void setPurchaseId(Integer purchaseId) { + this.purchaseId = purchaseId; + } + + public Integer getJobType() { + return jobType; + } + + public void setJobType(Integer jobType) { + this.jobType = jobType; + } + + public Integer getJobStatus() { + return jobStatus; + } + + public void setJobStatus(Integer jobStatus) { + this.jobStatus = jobStatus; + } + + public Integer getJobUser() { + return jobUser; + } + + public void setJobUser(Integer jobUser) { + this.jobUser = jobUser; + } + + public Date getJobCreateTime() { + return jobCreateTime; + } + + public void setJobCreateTime(Date jobCreateTime) { + this.jobCreateTime = jobCreateTime; + } + + public Integer getCdItemId() { + return cdItemId; + } + + public void setCdItemId(Integer cdItemId) { + this.cdItemId = cdItemId; + } + + public Integer getCountValue() { + return countValue; + } + + public void setCountValue(Integer countValue) { + this.countValue = countValue; + } + + public Integer getFinishValue() { + return finishValue; + } + + public void setFinishValue(Integer finishValue) { + this.finishValue = finishValue; + } + + public Date getFinishTime() { + return finishTime; + } + + public void setFinishTime(Date finishTime) { + this.finishTime = finishTime; + } + + public Integer getJobCreateUser() { + return jobCreateUser; + } + + public void setJobCreateUser(Integer jobCreateUser) { + this.jobCreateUser = jobCreateUser; + } + + +} diff --git a/src/main/java/com/xmomen/module/job/model/JobOperationLogModel.java b/src/main/java/com/xmomen/module/job/model/JobOperationLogModel.java new file mode 100644 index 0000000..4fb48a4 --- /dev/null +++ b/src/main/java/com/xmomen/module/job/model/JobOperationLogModel.java @@ -0,0 +1,42 @@ +package com.xmomen.module.job.model; + +import java.io.Serializable; +import java.util.Date; + +import lombok.Data; + +public @Data class JobOperationLogModel implements Serializable{ + private Integer id; + /** + * 操作的条码 + */ + private String barCode; + /** + * 操作的商品条码 + */ + private String itemCode; + + private String itemName; + + /** + * 采摘人 + */ + private String caizaiUser; + + /** + * 检测人 + */ + private String jianceUser; + + + /** + * 农残率 + */ + private String nongCanLv; + + + /** + * 生产地 + */ + private String yieldly; +} diff --git a/src/main/java/com/xmomen/module/job/model/PackageTaskModel.java b/src/main/java/com/xmomen/module/job/model/PackageTaskModel.java new file mode 100644 index 0000000..77a06ae --- /dev/null +++ b/src/main/java/com/xmomen/module/job/model/PackageTaskModel.java @@ -0,0 +1,291 @@ +package com.xmomen.module.job.model; + +import java.io.Serializable; +import java.util.Date; + +public class PackageTaskModel implements Serializable { + /** + * + */ + private Integer id; + + /** + * 采购编号 + */ + private String purchaseCode; + + /** + * 采购明细ID + */ + private Integer purchaseId; + + /** + * 1-包装任务,2-装箱任务 + */ + private Integer jobType; + + /** + * 0-未开始,1-包装中,2-包装完成 + */ + private Integer jobStatus; + + /** + * + */ + private Integer jobUser; + + /** + * 任务创建时间 + */ + private Date jobCreateTime; + + + /** + * 任务开始时间 + */ + private Date jobBeginTime; + + + /** + * 包装的产品 + */ + private Integer cdItemId; + + /** + * 销售单位 + */ + private String sellUnit; + + /** + * 需要包装的份数 + */ + private Integer countValue; + + /** + * 包装完成的份数 + */ + private Integer finishValue; + + private Integer noFinishValue; + /** + * + */ + private Date finishTime; + + /** + * 任务创建人 + */ + private Integer jobCreateUser; + + private String itemCode; + + private String itemName; + + private String jobUserName; + + private String spec; + + /** + * 采摘人 + */ + private String caizaiUser; + + /** + * 检测人 + */ + private String jianceUser; + + /** + * 农残率 + */ + private String nongCanLv; + + /** + * 生产地 + */ + private String yieldly; + + public String getItemCode() { + return itemCode; + } + + public void setItemCode(String itemCode) { + this.itemCode = itemCode; + } + + public String getItemName() { + return itemName; + } + + public void setItemName(String itemName) { + this.itemName = itemName; + } + + public String getJobUserName() { + return jobUserName; + } + + public void setJobUserName(String jobUserName) { + this.jobUserName = jobUserName; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getPurchaseCode() { + return purchaseCode; + } + + public void setPurchaseCode(String purchaseCode) { + this.purchaseCode = purchaseCode; + } + + public Integer getPurchaseId() { + return purchaseId; + } + + public void setPurchaseId(Integer purchaseId) { + this.purchaseId = purchaseId; + } + + public Integer getJobType() { + return jobType; + } + + public void setJobType(Integer jobType) { + this.jobType = jobType; + } + + public Integer getJobStatus() { + return jobStatus; + } + + public void setJobStatus(Integer jobStatus) { + this.jobStatus = jobStatus; + } + + public Integer getJobUser() { + return jobUser; + } + + public void setJobUser(Integer jobUser) { + this.jobUser = jobUser; + } + + public Date getJobCreateTime() { + return jobCreateTime; + } + + public void setJobCreateTime(Date jobCreateTime) { + this.jobCreateTime = jobCreateTime; + } + + public Integer getCdItemId() { + return cdItemId; + } + + public void setCdItemId(Integer cdItemId) { + this.cdItemId = cdItemId; + } + + public Integer getCountValue() { + return countValue; + } + + public void setCountValue(Integer countValue) { + this.countValue = countValue; + } + + public Integer getFinishValue() { + return finishValue; + } + + public void setFinishValue(Integer finishValue) { + this.finishValue = finishValue; + } + + public Date getFinishTime() { + return finishTime; + } + + public void setFinishTime(Date finishTime) { + this.finishTime = finishTime; + } + + public Integer getJobCreateUser() { + return jobCreateUser; + } + + public void setJobCreateUser(Integer jobCreateUser) { + this.jobCreateUser = jobCreateUser; + } + + public Date getJobBeginTime() { + return jobBeginTime; + } + + public void setJobBeginTime(Date jobBeginTime) { + this.jobBeginTime = jobBeginTime; + } + + public Integer getNoFinishValue() { + return noFinishValue; + } + + public void setNoFinishValue(Integer noFinishValue) { + this.noFinishValue = noFinishValue; + } + + public String getSpec() { + return spec; + } + + public void setSpec(String spec) { + this.spec = spec; + } + + public String getCaizaiUser() { + return caizaiUser; + } + + public void setCaizaiUser(String caizaiUser) { + this.caizaiUser = caizaiUser; + } + + public String getJianceUser() { + return jianceUser; + } + + public void setJianceUser(String jianceUser) { + this.jianceUser = jianceUser; + } + + public String getSellUnit() { + return sellUnit; + } + + public void setSellUnit(String sellUnit) { + this.sellUnit = sellUnit; + } + + public String getNongCanLv() { + return nongCanLv; + } + + public void setNongCanLv(String nongCanLv) { + this.nongCanLv = nongCanLv; + } + + public String getYieldly() { + return yieldly; + } + + public void setYieldly(String yieldly) { + this.yieldly = yieldly; + } +} diff --git a/src/main/java/com/xmomen/module/job/model/UpdateJobOperationLog.java b/src/main/java/com/xmomen/module/job/model/UpdateJobOperationLog.java new file mode 100644 index 0000000..ac38bb9 --- /dev/null +++ b/src/main/java/com/xmomen/module/job/model/UpdateJobOperationLog.java @@ -0,0 +1,18 @@ +package com.xmomen.module.job.model; + +import java.io.Serializable; +import java.util.Date; + +import lombok.Data; + +public @Data class UpdateJobOperationLog implements Serializable{ + /** + * 操作的条码 + */ + private String barCode; + /** + * 操作的商品条码 + */ + private String itemCode; + +} diff --git a/src/main/java/com/xmomen/module/job/model/UpdatePackageTask.java b/src/main/java/com/xmomen/module/job/model/UpdatePackageTask.java new file mode 100644 index 0000000..0fa2e13 --- /dev/null +++ b/src/main/java/com/xmomen/module/job/model/UpdatePackageTask.java @@ -0,0 +1,151 @@ +package com.xmomen.module.job.model; + +import java.io.Serializable; +import java.util.Date; + +public class UpdatePackageTask implements Serializable{ + /** + * 采购编号 + */ + private String purchaseCode; + + /** + * 采购明细ID + */ + private Integer purchaseId; + + /** + * 1-包装任务,2-装箱任务 + */ + private Integer jobType; + + /** + * 0-未开始,1-包装中,2-包装完成 + */ + private Integer jobStatus; + + /** + * + */ + private Integer jobUser; + + /** + * 任务创建时间 + */ + private Date jobCreateTime; + + /** + * 包装的产品 + */ + private Integer cdItemId; + + /** + * 需要包装的份数 + */ + private Integer countValue; + + /** + * 包装完成的份数 + */ + private Integer finishValue; + + /** + * + */ + private Date finishTime; + + /** + * 任务创建人 + */ + private Integer jobCreateUser; + + public String getPurchaseCode() { + return purchaseCode; + } + + public void setPurchaseCode(String purchaseCode) { + this.purchaseCode = purchaseCode; + } + + public Integer getPurchaseId() { + return purchaseId; + } + + public void setPurchaseId(Integer purchaseId) { + this.purchaseId = purchaseId; + } + + public Integer getJobType() { + return jobType; + } + + public void setJobType(Integer jobType) { + this.jobType = jobType; + } + + public Integer getJobStatus() { + return jobStatus; + } + + public void setJobStatus(Integer jobStatus) { + this.jobStatus = jobStatus; + } + + public Integer getJobUser() { + return jobUser; + } + + public void setJobUser(Integer jobUser) { + this.jobUser = jobUser; + } + + public Date getJobCreateTime() { + return jobCreateTime; + } + + public void setJobCreateTime(Date jobCreateTime) { + this.jobCreateTime = jobCreateTime; + } + + public Integer getCdItemId() { + return cdItemId; + } + + public void setCdItemId(Integer cdItemId) { + this.cdItemId = cdItemId; + } + + public Integer getCountValue() { + return countValue; + } + + public void setCountValue(Integer countValue) { + this.countValue = countValue; + } + + public Integer getFinishValue() { + return finishValue; + } + + public void setFinishValue(Integer finishValue) { + this.finishValue = finishValue; + } + + public Date getFinishTime() { + return finishTime; + } + + public void setFinishTime(Date finishTime) { + this.finishTime = finishTime; + } + + public Integer getJobCreateUser() { + return jobCreateUser; + } + + public void setJobCreateUser(Integer jobCreateUser) { + this.jobCreateUser = jobCreateUser; + } + + +} diff --git a/src/main/java/com/xmomen/module/job/service/impl/PackageTaskServiceImpl.java b/src/main/java/com/xmomen/module/job/service/impl/PackageTaskServiceImpl.java new file mode 100644 index 0000000..85e0c24 --- /dev/null +++ b/src/main/java/com/xmomen/module/job/service/impl/PackageTaskServiceImpl.java @@ -0,0 +1,91 @@ +package com.xmomen.module.job.service.impl; + +import java.util.Date; + +import org.apache.commons.lang.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.framework.utils.DateUtils; +import com.xmomen.module.base.constant.AppConstants; +import com.xmomen.module.base.model.UpdateItem; +import com.xmomen.module.job.entity.TbJob; +import com.xmomen.module.job.entity.TbJobOperationLog; +import com.xmomen.module.job.model.CreatePackageTask; +import com.xmomen.module.job.service.PackageTaskService; +import com.xmomen.module.order.entity.TbPurchase; + +@Service +public class PackageTaskServiceImpl implements PackageTaskService { + + @Autowired + MybatisDao mybatisDao; + @Override + public void createPackageTask(CreatePackageTask createPackageTask) { + Integer userId = (Integer) SecurityUtils.getSubject().getSession().getAttribute(AppConstants.SESSION_USER_ID_KEY);//登陆用户 + TbJob packageTask = new TbJob(); + packageTask.setCdItemId(createPackageTask.getCdItemId()); + packageTask.setCountValue(createPackageTask.getCountValue()); + packageTask.setJobCreateUser(userId); + packageTask.setJobType(1); + packageTask.setJobStatus(0); + packageTask.setJobCreateTime(mybatisDao.getSysdate()); + packageTask.setJobUser(createPackageTask.getJobUser()); + packageTask.setPurchaseCode(createPackageTask.getPurchaseCode()); + packageTask.setPurchaseId(createPackageTask.getPurchaseId()); + mybatisDao.save(packageTask); + //更新采购单的明细分配数量 + TbPurchase purchase = mybatisDao.selectByPrimaryKey(TbPurchase.class, createPackageTask.getPurchaseId()); + int distributeValue = purchase.getDistributeValue(); + distributeValue = distributeValue + createPackageTask.getCountValue(); + purchase.setDistributeValue(distributeValue); + mybatisDao.update(purchase); + } + + @Override + public void packageWorking(Integer id, String barCodes) { + String[] barCodeList = barCodes.split(","); + TbJob packageTask = mybatisDao.selectByPrimaryKey(TbJob.class, id); + for(String barCode : barCodeList){ + Date currentTime = mybatisDao.getSysdate(); + Integer finishValue = packageTask.getFinishValue(); + Integer countValue = packageTask.getCountValue(); + Integer currentFinishValue = finishValue + 1; + if(packageTask.getJobBeginTime() == null){ + packageTask.setJobBeginTime(currentTime); + packageTask.setJobStatus(1); + + } + if(countValue.intValue() == currentFinishValue.intValue()){ + packageTask.setFinishTime(currentTime); + packageTask.setJobStatus(2); + } + packageTask.setFinishValue(currentFinishValue); + mybatisDao.update(packageTask); + //添加操作记录 + TbJobOperationLog jobOperationLog = new TbJobOperationLog(); + jobOperationLog.setBarCode(barCode); + jobOperationLog.setItemCode(StringUtils.substring(barCode,0,7)); + jobOperationLog.setJobId(packageTask.getId()); + jobOperationLog.setJobTime(currentTime); + jobOperationLog.setJobUser(packageTask.getJobUser()); + mybatisDao.save(jobOperationLog); + //更新包装数 + } + } + + @Override + public void updatePackageTask(Integer id, UpdateItem updatePackageTask) { + // TODO Auto-generated method stub + + } + + @Override + public void delete(Integer id) { + // TODO Auto-generated method stub + + } + +} diff --git a/src/main/java/com/xmomen/module/logger/Log.java b/src/main/java/com/xmomen/module/logger/Log.java new file mode 100644 index 0000000..a69ba8e --- /dev/null +++ b/src/main/java/com/xmomen/module/logger/Log.java @@ -0,0 +1,15 @@ +package com.xmomen.module.logger; + +import java.lang.annotation.*; + +/** + * Created by Jeng on 16/3/20. + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.METHOD}) +@Documented +public @interface Log { + + /** 要执行的具体操作比如:【添加商品】 **/ + public String actionName() default ""; +} diff --git a/src/main/java/com/xmomen/module/member/controller/MemberAddressController.java b/src/main/java/com/xmomen/module/member/controller/MemberAddressController.java new file mode 100644 index 0000000..0cc6d86 --- /dev/null +++ b/src/main/java/com/xmomen/module/member/controller/MemberAddressController.java @@ -0,0 +1,132 @@ +package com.xmomen.module.member.controller; + +import com.xmomen.framework.exception.BusinessException; +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.module.base.constant.AppConstants; +import com.xmomen.module.logger.Log; +import com.xmomen.module.member.model.MemberAddressQuery; +import com.xmomen.module.member.model.MemberAddressModel; +import com.xmomen.module.member.service.MemberAddressService; + +import org.apache.commons.io.IOUtils; +import org.apache.shiro.SecurityUtils; +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.entity.result.ExcelImportResult; +import org.jeecgframework.poi.excel.entity.vo.NormalExcelConstants; +import org.jeecgframework.poi.exception.excel.ExcelImportException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.ui.ModelMap; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.servlet.ModelAndView; + +import javax.validation.Valid; +import java.io.Serializable; +import java.io.IOException; +import java.io.InputStream; +import java.util.List; + +/** + * @author tanxinzheng + * @version 1.0.0 + * @date 2017-3-29 0:27:52 + */ +@RestController +@RequestMapping(value = "/memberAddress") +public class MemberAddressController { + + @Autowired + MemberAddressService memberAddressService; + + /** + * 客户地址列表 + * + * @param limit 每页结果数 + * @param offset 页码 + * @param id 主键 + * @param ids 主键数组 + * @param excludeIds 不包含主键数组 + * @return Page 客户地址领域分页对象 + */ + @RequestMapping(method = RequestMethod.GET) + @Log(actionName = "查询客户地址列表") + public Page getMemberAddressList(@RequestParam(value = "limit") Integer limit, + @RequestParam(value = "offset") Integer offset, + @RequestParam(value = "id", required = false) String id, + @RequestParam(value = "ids", required = false) String[] ids, + @RequestParam(value = "cdMemberId", required = false) String cdMemberId, + @RequestParam(value = "excludeIds", required = false) String[] excludeIds) { + MemberAddressQuery memberAddressQuery = new MemberAddressQuery(); + memberAddressQuery.setId(id); + memberAddressQuery.setExcludeIds(excludeIds); + memberAddressQuery.setIds(ids); + memberAddressQuery.setCdMemberId(cdMemberId); + return memberAddressService.getMemberAddressModelPage(limit, offset, memberAddressQuery); + } + + /** + * 查询单个客户地址 + * + * @param id 主键 + * @return MemberAddressModel 客户地址领域对象 + */ + @RequestMapping(value = "/{id}", method = RequestMethod.GET) + @Log(actionName = "查询客户地址") + public MemberAddressModel getMemberAddressById(@PathVariable(value = "id") String id) { + return memberAddressService.getOneMemberAddressModel(id); + } + + /** + * 新增客户地址 + * + * @param memberAddressModel 新增对象参数 + * @return MemberAddressModel 客户地址领域对象 + */ + @RequestMapping(method = RequestMethod.POST) + @Log(actionName = "新增客户地址") + public MemberAddressModel createMemberAddress(@RequestBody @Valid MemberAddressModel memberAddressModel) { + Integer userId = (Integer) SecurityUtils.getSubject().getSession().getAttribute(AppConstants.SESSION_USER_ID_KEY); + memberAddressModel.setCdMemberId(userId); + return memberAddressService.createMemberAddress(memberAddressModel); + } + + /** + * 更新客户地址 + * + * @param id 主键 + * @param memberAddressModel 更新对象参数 + */ + @RequestMapping(value = "/{id}", method = RequestMethod.PUT) + @Log(actionName = "更新客户地址") + public void updateMemberAddress(@PathVariable(value = "id") String id, + @RequestBody @Valid MemberAddressModel memberAddressModel) { + memberAddressService.updateMemberAddress(memberAddressModel); + } + + /** + * 删除客户地址 + * + * @param id 主键 + */ + @RequestMapping(value = "/{id}", method = RequestMethod.DELETE) + @Log(actionName = "删除单个客户地址") + public void deleteMemberAddress(@PathVariable(value = "id") String id) { + memberAddressService.deleteMemberAddress(id); + } + + /** + * 删除客户地址 + * + * @param ids 主键 + */ + @RequestMapping(method = RequestMethod.DELETE) + @Log(actionName = "批量删除客户地址") + public void deleteMemberAddresss(@RequestParam(value = "ids") String[] ids) { + memberAddressService.deleteMemberAddress(ids); + } + + +} diff --git a/src/main/java/com/xmomen/module/member/entity/MemberAddress.java b/src/main/java/com/xmomen/module/member/entity/MemberAddress.java new file mode 100644 index 0000000..26934c4 --- /dev/null +++ b/src/main/java/com/xmomen/module/member/entity/MemberAddress.java @@ -0,0 +1,205 @@ +package com.xmomen.module.member.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "cd_member_address") +public class MemberAddress extends BaseMybatisModel { + /** + * + */ + private String id; + + /** + * 客户ID + */ + private Integer cdMemberId; + + /** + * + */ + private Integer province; + + /** + * 城市 + */ + private Integer city; + + /** + * 区域 + */ + private Integer area; + + /** + * 详细地址 + */ + private String address; + + /** + * 完整地址 + */ + private String fullAddress; + + /** + * + */ + private String name; + + /** + * + */ + private String mobile; + + /** + * 是否默认地址 + */ + private Boolean isDefault; + + @Column(name = "id") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "cd_member_id") + public Integer getCdMemberId() { + return cdMemberId; + } + + public void setCdMemberId(Integer cdMemberId) { + this.cdMemberId = cdMemberId; + if(cdMemberId == null){ + removeValidField("cdMemberId"); + return; + } + addValidField("cdMemberId"); + } + + @Column(name = "province") + public Integer getProvince() { + return province; + } + + public void setProvince(Integer province) { + this.province = province; + if(province == null){ + removeValidField("province"); + return; + } + addValidField("province"); + } + + @Column(name = "city") + public Integer getCity() { + return city; + } + + public void setCity(Integer city) { + this.city = city; + if(city == null){ + removeValidField("city"); + return; + } + addValidField("city"); + } + + @Column(name = "area") + public Integer getArea() { + return area; + } + + public void setArea(Integer area) { + this.area = area; + if(area == null){ + removeValidField("area"); + return; + } + addValidField("area"); + } + + @Column(name = "address") + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + if(address == null){ + removeValidField("address"); + return; + } + addValidField("address"); + } + + @Column(name = "full_address") + public String getFullAddress() { + return fullAddress; + } + + public void setFullAddress(String fullAddress) { + this.fullAddress = fullAddress; + if(fullAddress == null){ + removeValidField("fullAddress"); + return; + } + addValidField("fullAddress"); + } + + @Column(name = "name") + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + if(name == null){ + removeValidField("name"); + return; + } + addValidField("name"); + } + + @Column(name = "mobile") + public String getMobile() { + return mobile; + } + + public void setMobile(String mobile) { + this.mobile = mobile; + if(mobile == null){ + removeValidField("mobile"); + return; + } + addValidField("mobile"); + } + + @Column(name = "is_default") + public Boolean getIsDefault() { + return isDefault; + } + + public void setIsDefault(Boolean isDefault) { + this.isDefault = isDefault; + if(isDefault == null){ + removeValidField("isDefault"); + return; + } + addValidField("isDefault"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/member/mapper/MemberAddressMapperExt.java b/src/main/java/com/xmomen/module/member/mapper/MemberAddressMapperExt.java new file mode 100644 index 0000000..9c4a5cc --- /dev/null +++ b/src/main/java/com/xmomen/module/member/mapper/MemberAddressMapperExt.java @@ -0,0 +1,12 @@ +package com.xmomen.module.member.mapper; + +/** + * @author tanxinzheng + * @date 2017-4-10 23:05:39 + * @version 1.0.0 + */ +public interface MemberAddressMapperExt { + + public static final String MemberAddressMapperNameSpace = "com.xmomen.module.member.mapper.MemberAddressMapperExt."; + +} diff --git a/src/main/java/com/xmomen/module/member/model/MemberAddressQuery.java b/src/main/java/com/xmomen/module/member/model/MemberAddressQuery.java new file mode 100644 index 0000000..826ee74 --- /dev/null +++ b/src/main/java/com/xmomen/module/member/model/MemberAddressQuery.java @@ -0,0 +1,30 @@ +package com.xmomen.module.member.model; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author tanxinzheng + * @version 1.0.0 + * @date 2017-3-29 0:27:52 + */ +public +@Data +class MemberAddressQuery implements Serializable { + /** + * 主键 + */ + private String id; + /** + * 包含主键集 + */ + private String[] ids; + /** + * 排除主键集 + */ + private String[] excludeIds; + + private String cdMemberId; + +} diff --git a/src/main/java/com/xmomen/module/member/model/MemberAddressUpdate.java b/src/main/java/com/xmomen/module/member/model/MemberAddressUpdate.java new file mode 100644 index 0000000..f9f6e17 --- /dev/null +++ b/src/main/java/com/xmomen/module/member/model/MemberAddressUpdate.java @@ -0,0 +1,46 @@ +package com.xmomen.module.member.model; + +import lombok.Data; +import com.xmomen.module.member.entity.MemberAddress; +import org.springframework.beans.BeanUtils; + + import java.lang.Boolean; + import java.lang.String; + import java.lang.Integer; +import java.io.Serializable; + +/** + * @author tanxinzheng + * @date 2017-4-10 23:05:39 + * @version 1.0.0 + */ +public @Data class MemberAddressUpdate implements Serializable { + + /** */ + private String id; + /** 客户ID */ + private Integer cdMemberId; + /** */ + private Integer province; + /** 城市 */ + private Integer city; + /** 区域 */ + private Integer area; + /** 详细地址 */ + private String address; + /** 完整地址 */ + private String fullAddress; + /** */ + private String name; + /** */ + private String mobile; + /** 是否默认地址 */ + private Boolean isDefault; + + + public MemberAddress getEntity(){ + MemberAddress memberAddress = new MemberAddress(); + BeanUtils.copyProperties(this, memberAddress); + return memberAddress; + } +} diff --git a/src/main/java/com/xmomen/module/member/service/impl/MemberAddressServiceImpl.java b/src/main/java/com/xmomen/module/member/service/impl/MemberAddressServiceImpl.java new file mode 100644 index 0000000..b9c8149 --- /dev/null +++ b/src/main/java/com/xmomen/module/member/service/impl/MemberAddressServiceImpl.java @@ -0,0 +1,231 @@ +package com.xmomen.module.member.service.impl; + +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.framework.utils.StringUtilsExt; +import com.xmomen.module.member.entity.MemberAddress; +import com.xmomen.module.member.entity.MemberAddressExample; +import com.xmomen.module.member.mapper.MemberAddressMapperExt; +import com.xmomen.module.member.model.MemberAddressModel; +import com.xmomen.module.member.model.MemberAddressQuery; +import com.xmomen.module.member.service.MemberAddressService; +import org.apache.commons.lang.StringUtils; +import org.apache.ibatis.exceptions.TooManyResultsException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * @author tanxinzheng + * @version 1.0.0 + * @date 2017-3-29 0:27:52 + */ +@Service +public class MemberAddressServiceImpl implements MemberAddressService { + + @Autowired + MybatisDao mybatisDao; + + /** + * 新增客户地址 + * + * @param memberAddressModel 新增客户地址对象参数 + * @return MemberAddressModel 客户地址领域对象 + */ + @Override + @Transactional + public MemberAddressModel createMemberAddress(MemberAddressModel memberAddressModel) { + MemberAddress memberAddress = createMemberAddress(memberAddressModel.getEntity()); + if (memberAddress != null) { + return getOneMemberAddressModel(memberAddress.getId()); + } + return null; + } + + /** + * 新增客户地址实体对象 + * + * @param memberAddress 新增客户地址实体对象参数 + * @return MemberAddress 客户地址实体对象 + */ + @Override + @Transactional + public MemberAddress createMemberAddress(MemberAddress memberAddress) { + if (StringUtils.trimToNull(memberAddress.getId()) == null) { + memberAddress.setId(StringUtilsExt.getUUID(32)); + } + return mybatisDao.insertByModel(memberAddress); + } + + /** + * 批量新增客户地址 + * + * @param memberAddressModels 新增客户地址对象集合参数 + * @return List 客户地址领域对象集合 + */ + @Override + @Transactional + public List createMemberAddresss(List memberAddressModels) { + List memberAddressModelList = null; + for (MemberAddressModel memberAddressModel : memberAddressModels) { + memberAddressModel = createMemberAddress(memberAddressModel); + if (memberAddressModel != null) { + if (memberAddressModelList == null) { + memberAddressModelList = new ArrayList<>(); + } + memberAddressModelList.add(memberAddressModel); + } + } + return memberAddressModelList; + } + + /** + * 更新客户地址 + * + * @param memberAddressModel 更新客户地址对象参数 + */ + @Override + @Transactional + public void updateMemberAddress(MemberAddressModel memberAddressModel) { + mybatisDao.update(memberAddressModel.getEntity()); + } + + /** + * 更新客户地址实体对象 + * + * @param memberAddress 新增客户地址实体对象参数 + * @return MemberAddress 客户地址实体对象 + */ + @Override + @Transactional + public void updateMemberAddress(MemberAddress memberAddress) { + mybatisDao.update(memberAddress); + } + + /** + * 删除客户地址 + * + * @param ids 主键数组 + */ + @Override + @Transactional + public void deleteMemberAddress(String[] ids) { + MemberAddressExample memberAddressExample = new MemberAddressExample(); + memberAddressExample.createCriteria().andIdIn(Arrays.asList((String[]) ids)); + mybatisDao.deleteByExample(memberAddressExample); + } + + /** + * 删除客户地址 + * + * @param id 主键 + */ + @Override + @Transactional + public void deleteMemberAddress(String id) { + mybatisDao.deleteByPrimaryKey(MemberAddress.class, id); + } + + /** + * 查询客户地址领域分页对象(带参数条件) + * + * @param limit 每页最大数 + * @param offset 页码 + * @param memberAddressQuery 查询参数 + * @return Page 客户地址参数对象 + */ + @Override + public Page getMemberAddressModelPage(int limit, int offset, MemberAddressQuery memberAddressQuery) { + return (Page) mybatisDao.selectPage(MemberAddressMapperExt.MemberAddressMapperNameSpace + "getMemberAddressModel", memberAddressQuery, limit, offset); + } + + /** + * 查询客户地址领域分页对象(无参数条件) + * + * @param limit 每页最大数 + * @param offset 页码 + * @return Page 客户地址领域对象 + */ + @Override + public Page getMemberAddressModelPage(int limit, int offset) { + return (Page) mybatisDao.selectPage(MemberAddressMapperExt.MemberAddressMapperNameSpace + "getMemberAddressModel", null, limit, offset); + } + + /** + * 查询客户地址领域集合对象(带参数条件) + * + * @param memberAddressQuery 查询参数对象 + * @return List 客户地址领域集合对象 + */ + @Override + public List getMemberAddressModelList(MemberAddressQuery memberAddressQuery) { + return mybatisDao.getSqlSessionTemplate().selectList(MemberAddressMapperExt.MemberAddressMapperNameSpace + "getMemberAddressModel", memberAddressQuery); + } + + /** + * 查询客户地址领域集合对象(无参数条件) + * + * @return List 客户地址领域集合对象 + */ + @Override + public List getMemberAddressModelList() { + return mybatisDao.getSqlSessionTemplate().selectList(MemberAddressMapperExt.MemberAddressMapperNameSpace + "getMemberAddressModel"); + } + + /** + * 查询客户地址实体对象 + * + * @param id 主键 + * @return MemberAddress 客户地址实体对象 + */ + @Override + public MemberAddress getOneMemberAddress(String id) { + return mybatisDao.selectByPrimaryKey(MemberAddress.class, id); + } + + /** + * 根据主键查询单个对象 + * + * @param id 主键 + * @return MemberAddressModel 客户地址领域对象 + */ + @Override + public MemberAddressModel getOneMemberAddressModel(String id) { + MemberAddressQuery memberAddressQuery = new MemberAddressQuery(); + memberAddressQuery.setId(id); + return mybatisDao.getSqlSessionTemplate().selectOne(MemberAddressMapperExt.MemberAddressMapperNameSpace + "getMemberAddressModel", memberAddressQuery); + } + + /** + * 根据查询参数查询单个对象(此方法只用于提供精确查询单个对象,若结果数超过1,则会报错) + * + * @param memberAddressQuery 客户地址查询参数对象 + * @return MemberAddressModel 客户地址领域对象 + */ + @Override + public MemberAddressModel getOneMemberAddressModel(MemberAddressQuery memberAddressQuery) throws TooManyResultsException { + return mybatisDao.getSqlSessionTemplate().selectOne(MemberAddressMapperExt.MemberAddressMapperNameSpace + "getMemberAddressModel", memberAddressQuery); + } + + /** + * 设置默认收货地址 + * + * @param addressId 收货地址 + */ + public void defaultAddress(String addressId) { + MemberAddress memberAddress = this.getOneMemberAddress(addressId); + //将收货地址全部更新为非默认 + mybatisDao.getSqlSessionTemplate().update(MemberAddressMapperExt.MemberAddressMapperNameSpace + "updateAddressByMemberId", memberAddress.getCdMemberId()); + memberAddress.setIsDefault(true); + this.mybatisDao.updateByModel(memberAddress); + } + + @Override + public List getMemberAddressModels(MemberAddressQuery memberAddressQuery) { + return mybatisDao.getSqlSessionTemplate().selectList(MemberAddressMapperExt.MemberAddressMapperNameSpace + "getMemberAddressModel", memberAddressQuery); + } +} diff --git a/src/main/java/com/xmomen/module/order/entity/TbOrder.java b/src/main/java/com/xmomen/module/order/entity/TbOrder.java new file mode 100644 index 0000000..1536fe4 --- /dev/null +++ b/src/main/java/com/xmomen/module/order/entity/TbOrder.java @@ -0,0 +1,701 @@ +package com.xmomen.module.order.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import java.math.BigDecimal; +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "tb_order") +public class TbOrder extends BaseMybatisModel { + /** + * + */ + private Integer id; + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 1-卡,2-劵,3-常规,4-活动 + */ + private Integer orderType; + + /** + * 1-微信订单,2-商城订单,3-客服下单,4-采摘订单 + */ + private Integer orderSource; + + /** + * 付款方式 + */ + private Integer paymentMode; + + /** + * 附加付款方式 + */ + private Integer otherPaymentMode; + + /** + * 客户代码 + */ + private String memberCode; + + /** + * 订单状态 + */ + private String orderStatus; + + /** + * 交易状态:0-待支付,1-已支付 + */ + private Integer payStatus; + + /** + * 收货人手机 + */ + private String consigneePhone; + + /** + * 收货人姓名 + */ + private String consigneeName; + + /** + * 收货人地址 + */ + private String consigneeAddress; + + /** + * 邮政编码 + */ + private String postcode; + + /** + * 运送方式 1-快递,2-自提 + */ + private Integer transportMode; + + /** + * 订单备注 + */ + private String remark; + + /** + * 折扣金额 + */ + private BigDecimal discountPrice; + + /** + * 订单总金额 + */ + private BigDecimal totalAmount; + + /** + * 订单创建时间 + */ + private Date createTime; + + /** + * 预约时间 + */ + private Date appointmentTime; + + /** + * 订单创建人ID + */ + private Integer createUserId; + + /** + * 发运快递 + */ + private Integer despatchExpressId; + + /** + * 快递员ID + */ + private Integer expressMemberId; + + /** + * 单位ID + */ + private Integer companyId; + + /** + * 客户经理ID + */ + private Integer managerId; + + /** + * 批次号 + */ + private String batchNo; + + /** + * 装箱总箱数 + */ + private Integer totalBoxNum; + + /** + * 快递商提货扫描箱数 + */ + private Integer expressScanBoxNum; + + /** + * 0无下架商品,1有下架商品 + */ + private Integer xiajia; + + /** + * 是否二次配送订单 + */ + private Integer isTwoSend; + + /** + * 二次配送审核时间 + */ + private Date twoSendAuditDate; + + /** + * 二次配送审核人 + */ + private Integer twoSendAuditUserId; + + /** + * 出库时间 + */ + private Date outDate; + + /** + * 确认收货时间 + */ + private Date shouHuoDate; + + /** + * 是否拒绝收货(0-不 1-是) + */ + private Integer isReject; + + /** + * 更新时间 + */ + private Date updateDate; + + /** + * 更新人 + */ + private Integer updateUserId; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "ORDER_NO") + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + if(orderNo == null){ + removeValidField("orderNo"); + return; + } + addValidField("orderNo"); + } + + @Column(name = "ORDER_TYPE") + public Integer getOrderType() { + return orderType; + } + + public void setOrderType(Integer orderType) { + this.orderType = orderType; + if(orderType == null){ + removeValidField("orderType"); + return; + } + addValidField("orderType"); + } + + @Column(name = "ORDER_SOURCE") + public Integer getOrderSource() { + return orderSource; + } + + public void setOrderSource(Integer orderSource) { + this.orderSource = orderSource; + if(orderSource == null){ + removeValidField("orderSource"); + return; + } + addValidField("orderSource"); + } + + @Column(name = "PAYMENT_MODE") + public Integer getPaymentMode() { + return paymentMode; + } + + public void setPaymentMode(Integer paymentMode) { + this.paymentMode = paymentMode; + if(paymentMode == null){ + removeValidField("paymentMode"); + return; + } + addValidField("paymentMode"); + } + + @Column(name = "OTHER_PAYMENT_MODE") + public Integer getOtherPaymentMode() { + return otherPaymentMode; + } + + public void setOtherPaymentMode(Integer otherPaymentMode) { + this.otherPaymentMode = otherPaymentMode; + if(otherPaymentMode == null){ + removeValidField("otherPaymentMode"); + return; + } + addValidField("otherPaymentMode"); + } + + @Column(name = "MEMBER_CODE") + public String getMemberCode() { + return memberCode; + } + + public void setMemberCode(String memberCode) { + this.memberCode = memberCode; + if(memberCode == null){ + removeValidField("memberCode"); + return; + } + addValidField("memberCode"); + } + + @Column(name = "ORDER_STATUS") + public String getOrderStatus() { + return orderStatus; + } + + public void setOrderStatus(String orderStatus) { + this.orderStatus = orderStatus; + if(orderStatus == null){ + removeValidField("orderStatus"); + return; + } + addValidField("orderStatus"); + } + + @Column(name = "PAY_STATUS") + public Integer getPayStatus() { + return payStatus; + } + + public void setPayStatus(Integer payStatus) { + this.payStatus = payStatus; + if(payStatus == null){ + removeValidField("payStatus"); + return; + } + addValidField("payStatus"); + } + + @Column(name = "CONSIGNEE_PHONE") + public String getConsigneePhone() { + return consigneePhone; + } + + public void setConsigneePhone(String consigneePhone) { + this.consigneePhone = consigneePhone; + if(consigneePhone == null){ + removeValidField("consigneePhone"); + return; + } + addValidField("consigneePhone"); + } + + @Column(name = "CONSIGNEE_NAME") + public String getConsigneeName() { + return consigneeName; + } + + public void setConsigneeName(String consigneeName) { + this.consigneeName = consigneeName; + if(consigneeName == null){ + removeValidField("consigneeName"); + return; + } + addValidField("consigneeName"); + } + + @Column(name = "CONSIGNEE_ADDRESS") + public String getConsigneeAddress() { + return consigneeAddress; + } + + public void setConsigneeAddress(String consigneeAddress) { + this.consigneeAddress = consigneeAddress; + if(consigneeAddress == null){ + removeValidField("consigneeAddress"); + return; + } + addValidField("consigneeAddress"); + } + + @Column(name = "POSTCODE") + public String getPostcode() { + return postcode; + } + + public void setPostcode(String postcode) { + this.postcode = postcode; + if(postcode == null){ + removeValidField("postcode"); + return; + } + addValidField("postcode"); + } + + @Column(name = "TRANSPORT_MODE") + public Integer getTransportMode() { + return transportMode; + } + + public void setTransportMode(Integer transportMode) { + this.transportMode = transportMode; + if(transportMode == null){ + removeValidField("transportMode"); + return; + } + addValidField("transportMode"); + } + + @Column(name = "REMARK") + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + if(remark == null){ + removeValidField("remark"); + return; + } + addValidField("remark"); + } + + @Column(name = "DISCOUNT_PRICE") + public BigDecimal getDiscountPrice() { + return discountPrice; + } + + public void setDiscountPrice(BigDecimal discountPrice) { + this.discountPrice = discountPrice; + if(discountPrice == null){ + removeValidField("discountPrice"); + return; + } + addValidField("discountPrice"); + } + + @Column(name = "TOTAL_AMOUNT") + public BigDecimal getTotalAmount() { + return totalAmount; + } + + public void setTotalAmount(BigDecimal totalAmount) { + this.totalAmount = totalAmount; + if(totalAmount == null){ + removeValidField("totalAmount"); + return; + } + addValidField("totalAmount"); + } + + @Column(name = "CREATE_TIME") + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + if(createTime == null){ + removeValidField("createTime"); + return; + } + addValidField("createTime"); + } + + @Column(name = "APPOINTMENT_TIME") + public Date getAppointmentTime() { + return appointmentTime; + } + + public void setAppointmentTime(Date appointmentTime) { + this.appointmentTime = appointmentTime; + if(appointmentTime == null){ + removeValidField("appointmentTime"); + return; + } + addValidField("appointmentTime"); + } + + @Column(name = "CREATE_USER_ID") + public Integer getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(Integer createUserId) { + this.createUserId = createUserId; + if(createUserId == null){ + removeValidField("createUserId"); + return; + } + addValidField("createUserId"); + } + + @Column(name = "DESPATCH_EXPRESS_ID") + public Integer getDespatchExpressId() { + return despatchExpressId; + } + + public void setDespatchExpressId(Integer despatchExpressId) { + this.despatchExpressId = despatchExpressId; + if(despatchExpressId == null){ + removeValidField("despatchExpressId"); + return; + } + addValidField("despatchExpressId"); + } + + @Column(name = "EXPRESS_MEMBER_ID") + public Integer getExpressMemberId() { + return expressMemberId; + } + + public void setExpressMemberId(Integer expressMemberId) { + this.expressMemberId = expressMemberId; + if(expressMemberId == null){ + removeValidField("expressMemberId"); + return; + } + addValidField("expressMemberId"); + } + + @Column(name = "COMPANY_ID") + public Integer getCompanyId() { + return companyId; + } + + public void setCompanyId(Integer companyId) { + this.companyId = companyId; + if(companyId == null){ + removeValidField("companyId"); + return; + } + addValidField("companyId"); + } + + @Column(name = "MANAGER_ID") + public Integer getManagerId() { + return managerId; + } + + public void setManagerId(Integer managerId) { + this.managerId = managerId; + if(managerId == null){ + removeValidField("managerId"); + return; + } + addValidField("managerId"); + } + + @Column(name = "BATCH_NO") + public String getBatchNo() { + return batchNo; + } + + public void setBatchNo(String batchNo) { + this.batchNo = batchNo; + if(batchNo == null){ + removeValidField("batchNo"); + return; + } + addValidField("batchNo"); + } + + @Column(name = "TOTAL_BOX_NUM") + public Integer getTotalBoxNum() { + return totalBoxNum; + } + + public void setTotalBoxNum(Integer totalBoxNum) { + this.totalBoxNum = totalBoxNum; + if(totalBoxNum == null){ + removeValidField("totalBoxNum"); + return; + } + addValidField("totalBoxNum"); + } + + @Column(name = "EXPRESS_SCAN_BOX_NUM") + public Integer getExpressScanBoxNum() { + return expressScanBoxNum; + } + + public void setExpressScanBoxNum(Integer expressScanBoxNum) { + this.expressScanBoxNum = expressScanBoxNum; + if(expressScanBoxNum == null){ + removeValidField("expressScanBoxNum"); + return; + } + addValidField("expressScanBoxNum"); + } + + @Column(name = "XIAJIA") + public Integer getXiajia() { + return xiajia; + } + + public void setXiajia(Integer xiajia) { + this.xiajia = xiajia; + if(xiajia == null){ + removeValidField("xiajia"); + return; + } + addValidField("xiajia"); + } + + @Column(name = "IS_TWO_SEND") + public Integer getIsTwoSend() { + return isTwoSend; + } + + public void setIsTwoSend(Integer isTwoSend) { + this.isTwoSend = isTwoSend; + if(isTwoSend == null){ + removeValidField("isTwoSend"); + return; + } + addValidField("isTwoSend"); + } + + @Column(name = "TWO_SEND_AUDIT_DATE") + public Date getTwoSendAuditDate() { + return twoSendAuditDate; + } + + public void setTwoSendAuditDate(Date twoSendAuditDate) { + this.twoSendAuditDate = twoSendAuditDate; + if(twoSendAuditDate == null){ + removeValidField("twoSendAuditDate"); + return; + } + addValidField("twoSendAuditDate"); + } + + @Column(name = "TWO_SEND_AUDIT_USER_ID") + public Integer getTwoSendAuditUserId() { + return twoSendAuditUserId; + } + + public void setTwoSendAuditUserId(Integer twoSendAuditUserId) { + this.twoSendAuditUserId = twoSendAuditUserId; + if(twoSendAuditUserId == null){ + removeValidField("twoSendAuditUserId"); + return; + } + addValidField("twoSendAuditUserId"); + } + + @Column(name = "OUT_DATE") + public Date getOutDate() { + return outDate; + } + + public void setOutDate(Date outDate) { + this.outDate = outDate; + if(outDate == null){ + removeValidField("outDate"); + return; + } + addValidField("outDate"); + } + + @Column(name = "SHOU_HUO_DATE") + public Date getShouHuoDate() { + return shouHuoDate; + } + + public void setShouHuoDate(Date shouHuoDate) { + this.shouHuoDate = shouHuoDate; + if(shouHuoDate == null){ + removeValidField("shouHuoDate"); + return; + } + addValidField("shouHuoDate"); + } + + @Column(name = "IS_REJECT") + public Integer getIsReject() { + return isReject; + } + + public void setIsReject(Integer isReject) { + this.isReject = isReject; + if(isReject == null){ + removeValidField("isReject"); + return; + } + addValidField("isReject"); + } + + @Column(name = "UPDATE_DATE") + public Date getUpdateDate() { + return updateDate; + } + + public void setUpdateDate(Date updateDate) { + this.updateDate = updateDate; + if(updateDate == null){ + removeValidField("updateDate"); + return; + } + addValidField("updateDate"); + } + + @Column(name = "UPDATE_USER_ID") + public Integer getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(Integer updateUserId) { + this.updateUserId = updateUserId; + if(updateUserId == null){ + removeValidField("updateUserId"); + return; + } + addValidField("updateUserId"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/order/entity/TbOrderExample.java b/src/main/java/com/xmomen/module/order/entity/TbOrderExample.java new file mode 100644 index 0000000..3bf4ad2 --- /dev/null +++ b/src/main/java/com/xmomen/module/order/entity/TbOrderExample.java @@ -0,0 +1,2453 @@ +package com.xmomen.module.order.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisExample; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class TbOrderExample extends BaseMybatisExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public TbOrderExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("ID is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("ID is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Integer value) { + addCriterion("ID =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Integer value) { + addCriterion("ID <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Integer value) { + addCriterion("ID >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Integer value) { + addCriterion("ID >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Integer value) { + addCriterion("ID <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Integer value) { + addCriterion("ID <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("ID in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("ID not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Integer value1, Integer value2) { + addCriterion("ID between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Integer value1, Integer value2) { + addCriterion("ID not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andOrderNoIsNull() { + addCriterion("ORDER_NO is null"); + return (Criteria) this; + } + + public Criteria andOrderNoIsNotNull() { + addCriterion("ORDER_NO is not null"); + return (Criteria) this; + } + + public Criteria andOrderNoEqualTo(String value) { + addCriterion("ORDER_NO =", value, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoNotEqualTo(String value) { + addCriterion("ORDER_NO <>", value, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoGreaterThan(String value) { + addCriterion("ORDER_NO >", value, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoGreaterThanOrEqualTo(String value) { + addCriterion("ORDER_NO >=", value, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoLessThan(String value) { + addCriterion("ORDER_NO <", value, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoLessThanOrEqualTo(String value) { + addCriterion("ORDER_NO <=", value, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoLike(String value) { + addCriterion("ORDER_NO like", value, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoNotLike(String value) { + addCriterion("ORDER_NO not like", value, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoIn(List values) { + addCriterion("ORDER_NO in", values, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoNotIn(List values) { + addCriterion("ORDER_NO not in", values, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoBetween(String value1, String value2) { + addCriterion("ORDER_NO between", value1, value2, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoNotBetween(String value1, String value2) { + addCriterion("ORDER_NO not between", value1, value2, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderTypeIsNull() { + addCriterion("ORDER_TYPE is null"); + return (Criteria) this; + } + + public Criteria andOrderTypeIsNotNull() { + addCriterion("ORDER_TYPE is not null"); + return (Criteria) this; + } + + public Criteria andOrderTypeEqualTo(Integer value) { + addCriterion("ORDER_TYPE =", value, "orderType"); + return (Criteria) this; + } + + public Criteria andOrderTypeNotEqualTo(Integer value) { + addCriterion("ORDER_TYPE <>", value, "orderType"); + return (Criteria) this; + } + + public Criteria andOrderTypeGreaterThan(Integer value) { + addCriterion("ORDER_TYPE >", value, "orderType"); + return (Criteria) this; + } + + public Criteria andOrderTypeGreaterThanOrEqualTo(Integer value) { + addCriterion("ORDER_TYPE >=", value, "orderType"); + return (Criteria) this; + } + + public Criteria andOrderTypeLessThan(Integer value) { + addCriterion("ORDER_TYPE <", value, "orderType"); + return (Criteria) this; + } + + public Criteria andOrderTypeLessThanOrEqualTo(Integer value) { + addCriterion("ORDER_TYPE <=", value, "orderType"); + return (Criteria) this; + } + + public Criteria andOrderTypeIn(List values) { + addCriterion("ORDER_TYPE in", values, "orderType"); + return (Criteria) this; + } + + public Criteria andOrderTypeNotIn(List values) { + addCriterion("ORDER_TYPE not in", values, "orderType"); + return (Criteria) this; + } + + public Criteria andOrderTypeBetween(Integer value1, Integer value2) { + addCriterion("ORDER_TYPE between", value1, value2, "orderType"); + return (Criteria) this; + } + + public Criteria andOrderTypeNotBetween(Integer value1, Integer value2) { + addCriterion("ORDER_TYPE not between", value1, value2, "orderType"); + return (Criteria) this; + } + + public Criteria andOrderSourceIsNull() { + addCriterion("ORDER_SOURCE is null"); + return (Criteria) this; + } + + public Criteria andOrderSourceIsNotNull() { + addCriterion("ORDER_SOURCE is not null"); + return (Criteria) this; + } + + public Criteria andOrderSourceEqualTo(Integer value) { + addCriterion("ORDER_SOURCE =", value, "orderSource"); + return (Criteria) this; + } + + public Criteria andOrderSourceNotEqualTo(Integer value) { + addCriterion("ORDER_SOURCE <>", value, "orderSource"); + return (Criteria) this; + } + + public Criteria andOrderSourceGreaterThan(Integer value) { + addCriterion("ORDER_SOURCE >", value, "orderSource"); + return (Criteria) this; + } + + public Criteria andOrderSourceGreaterThanOrEqualTo(Integer value) { + addCriterion("ORDER_SOURCE >=", value, "orderSource"); + return (Criteria) this; + } + + public Criteria andOrderSourceLessThan(Integer value) { + addCriterion("ORDER_SOURCE <", value, "orderSource"); + return (Criteria) this; + } + + public Criteria andOrderSourceLessThanOrEqualTo(Integer value) { + addCriterion("ORDER_SOURCE <=", value, "orderSource"); + return (Criteria) this; + } + + public Criteria andOrderSourceIn(List values) { + addCriterion("ORDER_SOURCE in", values, "orderSource"); + return (Criteria) this; + } + + public Criteria andOrderSourceNotIn(List values) { + addCriterion("ORDER_SOURCE not in", values, "orderSource"); + return (Criteria) this; + } + + public Criteria andOrderSourceBetween(Integer value1, Integer value2) { + addCriterion("ORDER_SOURCE between", value1, value2, "orderSource"); + return (Criteria) this; + } + + public Criteria andOrderSourceNotBetween(Integer value1, Integer value2) { + addCriterion("ORDER_SOURCE not between", value1, value2, "orderSource"); + return (Criteria) this; + } + + public Criteria andPaymentModeIsNull() { + addCriterion("PAYMENT_MODE is null"); + return (Criteria) this; + } + + public Criteria andPaymentModeIsNotNull() { + addCriterion("PAYMENT_MODE is not null"); + return (Criteria) this; + } + + public Criteria andPaymentModeEqualTo(Integer value) { + addCriterion("PAYMENT_MODE =", value, "paymentMode"); + return (Criteria) this; + } + + public Criteria andPaymentModeNotEqualTo(Integer value) { + addCriterion("PAYMENT_MODE <>", value, "paymentMode"); + return (Criteria) this; + } + + public Criteria andPaymentModeGreaterThan(Integer value) { + addCriterion("PAYMENT_MODE >", value, "paymentMode"); + return (Criteria) this; + } + + public Criteria andPaymentModeGreaterThanOrEqualTo(Integer value) { + addCriterion("PAYMENT_MODE >=", value, "paymentMode"); + return (Criteria) this; + } + + public Criteria andPaymentModeLessThan(Integer value) { + addCriterion("PAYMENT_MODE <", value, "paymentMode"); + return (Criteria) this; + } + + public Criteria andPaymentModeLessThanOrEqualTo(Integer value) { + addCriterion("PAYMENT_MODE <=", value, "paymentMode"); + return (Criteria) this; + } + + public Criteria andPaymentModeIn(List values) { + addCriterion("PAYMENT_MODE in", values, "paymentMode"); + return (Criteria) this; + } + + public Criteria andPaymentModeNotIn(List values) { + addCriterion("PAYMENT_MODE not in", values, "paymentMode"); + return (Criteria) this; + } + + public Criteria andPaymentModeBetween(Integer value1, Integer value2) { + addCriterion("PAYMENT_MODE between", value1, value2, "paymentMode"); + return (Criteria) this; + } + + public Criteria andPaymentModeNotBetween(Integer value1, Integer value2) { + addCriterion("PAYMENT_MODE not between", value1, value2, "paymentMode"); + return (Criteria) this; + } + + public Criteria andOtherPaymentModeIsNull() { + addCriterion("OTHER_PAYMENT_MODE is null"); + return (Criteria) this; + } + + public Criteria andOtherPaymentModeIsNotNull() { + addCriterion("OTHER_PAYMENT_MODE is not null"); + return (Criteria) this; + } + + public Criteria andOtherPaymentModeEqualTo(Integer value) { + addCriterion("OTHER_PAYMENT_MODE =", value, "otherPaymentMode"); + return (Criteria) this; + } + + public Criteria andOtherPaymentModeNotEqualTo(Integer value) { + addCriterion("OTHER_PAYMENT_MODE <>", value, "otherPaymentMode"); + return (Criteria) this; + } + + public Criteria andOtherPaymentModeGreaterThan(Integer value) { + addCriterion("OTHER_PAYMENT_MODE >", value, "otherPaymentMode"); + return (Criteria) this; + } + + public Criteria andOtherPaymentModeGreaterThanOrEqualTo(Integer value) { + addCriterion("OTHER_PAYMENT_MODE >=", value, "otherPaymentMode"); + return (Criteria) this; + } + + public Criteria andOtherPaymentModeLessThan(Integer value) { + addCriterion("OTHER_PAYMENT_MODE <", value, "otherPaymentMode"); + return (Criteria) this; + } + + public Criteria andOtherPaymentModeLessThanOrEqualTo(Integer value) { + addCriterion("OTHER_PAYMENT_MODE <=", value, "otherPaymentMode"); + return (Criteria) this; + } + + public Criteria andOtherPaymentModeIn(List values) { + addCriterion("OTHER_PAYMENT_MODE in", values, "otherPaymentMode"); + return (Criteria) this; + } + + public Criteria andOtherPaymentModeNotIn(List values) { + addCriterion("OTHER_PAYMENT_MODE not in", values, "otherPaymentMode"); + return (Criteria) this; + } + + public Criteria andOtherPaymentModeBetween(Integer value1, Integer value2) { + addCriterion("OTHER_PAYMENT_MODE between", value1, value2, "otherPaymentMode"); + return (Criteria) this; + } + + public Criteria andOtherPaymentModeNotBetween(Integer value1, Integer value2) { + addCriterion("OTHER_PAYMENT_MODE not between", value1, value2, "otherPaymentMode"); + return (Criteria) this; + } + + public Criteria andMemberCodeIsNull() { + addCriterion("MEMBER_CODE is null"); + return (Criteria) this; + } + + public Criteria andMemberCodeIsNotNull() { + addCriterion("MEMBER_CODE is not null"); + return (Criteria) this; + } + + public Criteria andMemberCodeEqualTo(String value) { + addCriterion("MEMBER_CODE =", value, "memberCode"); + return (Criteria) this; + } + + public Criteria andMemberCodeNotEqualTo(String value) { + addCriterion("MEMBER_CODE <>", value, "memberCode"); + return (Criteria) this; + } + + public Criteria andMemberCodeGreaterThan(String value) { + addCriterion("MEMBER_CODE >", value, "memberCode"); + return (Criteria) this; + } + + public Criteria andMemberCodeGreaterThanOrEqualTo(String value) { + addCriterion("MEMBER_CODE >=", value, "memberCode"); + return (Criteria) this; + } + + public Criteria andMemberCodeLessThan(String value) { + addCriterion("MEMBER_CODE <", value, "memberCode"); + return (Criteria) this; + } + + public Criteria andMemberCodeLessThanOrEqualTo(String value) { + addCriterion("MEMBER_CODE <=", value, "memberCode"); + return (Criteria) this; + } + + public Criteria andMemberCodeLike(String value) { + addCriterion("MEMBER_CODE like", value, "memberCode"); + return (Criteria) this; + } + + public Criteria andMemberCodeNotLike(String value) { + addCriterion("MEMBER_CODE not like", value, "memberCode"); + return (Criteria) this; + } + + public Criteria andMemberCodeIn(List values) { + addCriterion("MEMBER_CODE in", values, "memberCode"); + return (Criteria) this; + } + + public Criteria andMemberCodeNotIn(List values) { + addCriterion("MEMBER_CODE not in", values, "memberCode"); + return (Criteria) this; + } + + public Criteria andMemberCodeBetween(String value1, String value2) { + addCriterion("MEMBER_CODE between", value1, value2, "memberCode"); + return (Criteria) this; + } + + public Criteria andMemberCodeNotBetween(String value1, String value2) { + addCriterion("MEMBER_CODE not between", value1, value2, "memberCode"); + return (Criteria) this; + } + + public Criteria andOrderStatusIsNull() { + addCriterion("ORDER_STATUS is null"); + return (Criteria) this; + } + + public Criteria andOrderStatusIsNotNull() { + addCriterion("ORDER_STATUS is not null"); + return (Criteria) this; + } + + public Criteria andOrderStatusEqualTo(String value) { + addCriterion("ORDER_STATUS =", value, "orderStatus"); + return (Criteria) this; + } + + public Criteria andOrderStatusNotEqualTo(String value) { + addCriterion("ORDER_STATUS <>", value, "orderStatus"); + return (Criteria) this; + } + + public Criteria andOrderStatusGreaterThan(String value) { + addCriterion("ORDER_STATUS >", value, "orderStatus"); + return (Criteria) this; + } + + public Criteria andOrderStatusGreaterThanOrEqualTo(String value) { + addCriterion("ORDER_STATUS >=", value, "orderStatus"); + return (Criteria) this; + } + + public Criteria andOrderStatusLessThan(String value) { + addCriterion("ORDER_STATUS <", value, "orderStatus"); + return (Criteria) this; + } + + public Criteria andOrderStatusLessThanOrEqualTo(String value) { + addCriterion("ORDER_STATUS <=", value, "orderStatus"); + return (Criteria) this; + } + + public Criteria andOrderStatusLike(String value) { + addCriterion("ORDER_STATUS like", value, "orderStatus"); + return (Criteria) this; + } + + public Criteria andOrderStatusNotLike(String value) { + addCriterion("ORDER_STATUS not like", value, "orderStatus"); + return (Criteria) this; + } + + public Criteria andOrderStatusIn(List values) { + addCriterion("ORDER_STATUS in", values, "orderStatus"); + return (Criteria) this; + } + + public Criteria andOrderStatusNotIn(List values) { + addCriterion("ORDER_STATUS not in", values, "orderStatus"); + return (Criteria) this; + } + + public Criteria andOrderStatusBetween(String value1, String value2) { + addCriterion("ORDER_STATUS between", value1, value2, "orderStatus"); + return (Criteria) this; + } + + public Criteria andOrderStatusNotBetween(String value1, String value2) { + addCriterion("ORDER_STATUS not between", value1, value2, "orderStatus"); + return (Criteria) this; + } + + public Criteria andPayStatusIsNull() { + addCriterion("PAY_STATUS is null"); + return (Criteria) this; + } + + public Criteria andPayStatusIsNotNull() { + addCriterion("PAY_STATUS is not null"); + return (Criteria) this; + } + + public Criteria andPayStatusEqualTo(Integer value) { + addCriterion("PAY_STATUS =", value, "payStatus"); + return (Criteria) this; + } + + public Criteria andPayStatusNotEqualTo(Integer value) { + addCriterion("PAY_STATUS <>", value, "payStatus"); + return (Criteria) this; + } + + public Criteria andPayStatusGreaterThan(Integer value) { + addCriterion("PAY_STATUS >", value, "payStatus"); + return (Criteria) this; + } + + public Criteria andPayStatusGreaterThanOrEqualTo(Integer value) { + addCriterion("PAY_STATUS >=", value, "payStatus"); + return (Criteria) this; + } + + public Criteria andPayStatusLessThan(Integer value) { + addCriterion("PAY_STATUS <", value, "payStatus"); + return (Criteria) this; + } + + public Criteria andPayStatusLessThanOrEqualTo(Integer value) { + addCriterion("PAY_STATUS <=", value, "payStatus"); + return (Criteria) this; + } + + public Criteria andPayStatusIn(List values) { + addCriterion("PAY_STATUS in", values, "payStatus"); + return (Criteria) this; + } + + public Criteria andPayStatusNotIn(List values) { + addCriterion("PAY_STATUS not in", values, "payStatus"); + return (Criteria) this; + } + + public Criteria andPayStatusBetween(Integer value1, Integer value2) { + addCriterion("PAY_STATUS between", value1, value2, "payStatus"); + return (Criteria) this; + } + + public Criteria andPayStatusNotBetween(Integer value1, Integer value2) { + addCriterion("PAY_STATUS not between", value1, value2, "payStatus"); + return (Criteria) this; + } + + public Criteria andConsigneePhoneIsNull() { + addCriterion("CONSIGNEE_PHONE is null"); + return (Criteria) this; + } + + public Criteria andConsigneePhoneIsNotNull() { + addCriterion("CONSIGNEE_PHONE is not null"); + return (Criteria) this; + } + + public Criteria andConsigneePhoneEqualTo(String value) { + addCriterion("CONSIGNEE_PHONE =", value, "consigneePhone"); + return (Criteria) this; + } + + public Criteria andConsigneePhoneNotEqualTo(String value) { + addCriterion("CONSIGNEE_PHONE <>", value, "consigneePhone"); + return (Criteria) this; + } + + public Criteria andConsigneePhoneGreaterThan(String value) { + addCriterion("CONSIGNEE_PHONE >", value, "consigneePhone"); + return (Criteria) this; + } + + public Criteria andConsigneePhoneGreaterThanOrEqualTo(String value) { + addCriterion("CONSIGNEE_PHONE >=", value, "consigneePhone"); + return (Criteria) this; + } + + public Criteria andConsigneePhoneLessThan(String value) { + addCriterion("CONSIGNEE_PHONE <", value, "consigneePhone"); + return (Criteria) this; + } + + public Criteria andConsigneePhoneLessThanOrEqualTo(String value) { + addCriterion("CONSIGNEE_PHONE <=", value, "consigneePhone"); + return (Criteria) this; + } + + public Criteria andConsigneePhoneLike(String value) { + addCriterion("CONSIGNEE_PHONE like", value, "consigneePhone"); + return (Criteria) this; + } + + public Criteria andConsigneePhoneNotLike(String value) { + addCriterion("CONSIGNEE_PHONE not like", value, "consigneePhone"); + return (Criteria) this; + } + + public Criteria andConsigneePhoneIn(List values) { + addCriterion("CONSIGNEE_PHONE in", values, "consigneePhone"); + return (Criteria) this; + } + + public Criteria andConsigneePhoneNotIn(List values) { + addCriterion("CONSIGNEE_PHONE not in", values, "consigneePhone"); + return (Criteria) this; + } + + public Criteria andConsigneePhoneBetween(String value1, String value2) { + addCriterion("CONSIGNEE_PHONE between", value1, value2, "consigneePhone"); + return (Criteria) this; + } + + public Criteria andConsigneePhoneNotBetween(String value1, String value2) { + addCriterion("CONSIGNEE_PHONE not between", value1, value2, "consigneePhone"); + return (Criteria) this; + } + + public Criteria andConsigneeNameIsNull() { + addCriterion("CONSIGNEE_NAME is null"); + return (Criteria) this; + } + + public Criteria andConsigneeNameIsNotNull() { + addCriterion("CONSIGNEE_NAME is not null"); + return (Criteria) this; + } + + public Criteria andConsigneeNameEqualTo(String value) { + addCriterion("CONSIGNEE_NAME =", value, "consigneeName"); + return (Criteria) this; + } + + public Criteria andConsigneeNameNotEqualTo(String value) { + addCriterion("CONSIGNEE_NAME <>", value, "consigneeName"); + return (Criteria) this; + } + + public Criteria andConsigneeNameGreaterThan(String value) { + addCriterion("CONSIGNEE_NAME >", value, "consigneeName"); + return (Criteria) this; + } + + public Criteria andConsigneeNameGreaterThanOrEqualTo(String value) { + addCriterion("CONSIGNEE_NAME >=", value, "consigneeName"); + return (Criteria) this; + } + + public Criteria andConsigneeNameLessThan(String value) { + addCriterion("CONSIGNEE_NAME <", value, "consigneeName"); + return (Criteria) this; + } + + public Criteria andConsigneeNameLessThanOrEqualTo(String value) { + addCriterion("CONSIGNEE_NAME <=", value, "consigneeName"); + return (Criteria) this; + } + + public Criteria andConsigneeNameLike(String value) { + addCriterion("CONSIGNEE_NAME like", value, "consigneeName"); + return (Criteria) this; + } + + public Criteria andConsigneeNameNotLike(String value) { + addCriterion("CONSIGNEE_NAME not like", value, "consigneeName"); + return (Criteria) this; + } + + public Criteria andConsigneeNameIn(List values) { + addCriterion("CONSIGNEE_NAME in", values, "consigneeName"); + return (Criteria) this; + } + + public Criteria andConsigneeNameNotIn(List values) { + addCriterion("CONSIGNEE_NAME not in", values, "consigneeName"); + return (Criteria) this; + } + + public Criteria andConsigneeNameBetween(String value1, String value2) { + addCriterion("CONSIGNEE_NAME between", value1, value2, "consigneeName"); + return (Criteria) this; + } + + public Criteria andConsigneeNameNotBetween(String value1, String value2) { + addCriterion("CONSIGNEE_NAME not between", value1, value2, "consigneeName"); + return (Criteria) this; + } + + public Criteria andConsigneeAddressIsNull() { + addCriterion("CONSIGNEE_ADDRESS is null"); + return (Criteria) this; + } + + public Criteria andConsigneeAddressIsNotNull() { + addCriterion("CONSIGNEE_ADDRESS is not null"); + return (Criteria) this; + } + + public Criteria andConsigneeAddressEqualTo(String value) { + addCriterion("CONSIGNEE_ADDRESS =", value, "consigneeAddress"); + return (Criteria) this; + } + + public Criteria andConsigneeAddressNotEqualTo(String value) { + addCriterion("CONSIGNEE_ADDRESS <>", value, "consigneeAddress"); + return (Criteria) this; + } + + public Criteria andConsigneeAddressGreaterThan(String value) { + addCriterion("CONSIGNEE_ADDRESS >", value, "consigneeAddress"); + return (Criteria) this; + } + + public Criteria andConsigneeAddressGreaterThanOrEqualTo(String value) { + addCriterion("CONSIGNEE_ADDRESS >=", value, "consigneeAddress"); + return (Criteria) this; + } + + public Criteria andConsigneeAddressLessThan(String value) { + addCriterion("CONSIGNEE_ADDRESS <", value, "consigneeAddress"); + return (Criteria) this; + } + + public Criteria andConsigneeAddressLessThanOrEqualTo(String value) { + addCriterion("CONSIGNEE_ADDRESS <=", value, "consigneeAddress"); + return (Criteria) this; + } + + public Criteria andConsigneeAddressLike(String value) { + addCriterion("CONSIGNEE_ADDRESS like", value, "consigneeAddress"); + return (Criteria) this; + } + + public Criteria andConsigneeAddressNotLike(String value) { + addCriterion("CONSIGNEE_ADDRESS not like", value, "consigneeAddress"); + return (Criteria) this; + } + + public Criteria andConsigneeAddressIn(List values) { + addCriterion("CONSIGNEE_ADDRESS in", values, "consigneeAddress"); + return (Criteria) this; + } + + public Criteria andConsigneeAddressNotIn(List values) { + addCriterion("CONSIGNEE_ADDRESS not in", values, "consigneeAddress"); + return (Criteria) this; + } + + public Criteria andConsigneeAddressBetween(String value1, String value2) { + addCriterion("CONSIGNEE_ADDRESS between", value1, value2, "consigneeAddress"); + return (Criteria) this; + } + + public Criteria andConsigneeAddressNotBetween(String value1, String value2) { + addCriterion("CONSIGNEE_ADDRESS not between", value1, value2, "consigneeAddress"); + return (Criteria) this; + } + + public Criteria andPostcodeIsNull() { + addCriterion("POSTCODE is null"); + return (Criteria) this; + } + + public Criteria andPostcodeIsNotNull() { + addCriterion("POSTCODE is not null"); + return (Criteria) this; + } + + public Criteria andPostcodeEqualTo(String value) { + addCriterion("POSTCODE =", value, "postcode"); + return (Criteria) this; + } + + public Criteria andPostcodeNotEqualTo(String value) { + addCriterion("POSTCODE <>", value, "postcode"); + return (Criteria) this; + } + + public Criteria andPostcodeGreaterThan(String value) { + addCriterion("POSTCODE >", value, "postcode"); + return (Criteria) this; + } + + public Criteria andPostcodeGreaterThanOrEqualTo(String value) { + addCriterion("POSTCODE >=", value, "postcode"); + return (Criteria) this; + } + + public Criteria andPostcodeLessThan(String value) { + addCriterion("POSTCODE <", value, "postcode"); + return (Criteria) this; + } + + public Criteria andPostcodeLessThanOrEqualTo(String value) { + addCriterion("POSTCODE <=", value, "postcode"); + return (Criteria) this; + } + + public Criteria andPostcodeLike(String value) { + addCriterion("POSTCODE like", value, "postcode"); + return (Criteria) this; + } + + public Criteria andPostcodeNotLike(String value) { + addCriterion("POSTCODE not like", value, "postcode"); + return (Criteria) this; + } + + public Criteria andPostcodeIn(List values) { + addCriterion("POSTCODE in", values, "postcode"); + return (Criteria) this; + } + + public Criteria andPostcodeNotIn(List values) { + addCriterion("POSTCODE not in", values, "postcode"); + return (Criteria) this; + } + + public Criteria andPostcodeBetween(String value1, String value2) { + addCriterion("POSTCODE between", value1, value2, "postcode"); + return (Criteria) this; + } + + public Criteria andPostcodeNotBetween(String value1, String value2) { + addCriterion("POSTCODE not between", value1, value2, "postcode"); + return (Criteria) this; + } + + public Criteria andTransportModeIsNull() { + addCriterion("TRANSPORT_MODE is null"); + return (Criteria) this; + } + + public Criteria andTransportModeIsNotNull() { + addCriterion("TRANSPORT_MODE is not null"); + return (Criteria) this; + } + + public Criteria andTransportModeEqualTo(Integer value) { + addCriterion("TRANSPORT_MODE =", value, "transportMode"); + return (Criteria) this; + } + + public Criteria andTransportModeNotEqualTo(Integer value) { + addCriterion("TRANSPORT_MODE <>", value, "transportMode"); + return (Criteria) this; + } + + public Criteria andTransportModeGreaterThan(Integer value) { + addCriterion("TRANSPORT_MODE >", value, "transportMode"); + return (Criteria) this; + } + + public Criteria andTransportModeGreaterThanOrEqualTo(Integer value) { + addCriterion("TRANSPORT_MODE >=", value, "transportMode"); + return (Criteria) this; + } + + public Criteria andTransportModeLessThan(Integer value) { + addCriterion("TRANSPORT_MODE <", value, "transportMode"); + return (Criteria) this; + } + + public Criteria andTransportModeLessThanOrEqualTo(Integer value) { + addCriterion("TRANSPORT_MODE <=", value, "transportMode"); + return (Criteria) this; + } + + public Criteria andTransportModeIn(List values) { + addCriterion("TRANSPORT_MODE in", values, "transportMode"); + return (Criteria) this; + } + + public Criteria andTransportModeNotIn(List values) { + addCriterion("TRANSPORT_MODE not in", values, "transportMode"); + return (Criteria) this; + } + + public Criteria andTransportModeBetween(Integer value1, Integer value2) { + addCriterion("TRANSPORT_MODE between", value1, value2, "transportMode"); + return (Criteria) this; + } + + public Criteria andTransportModeNotBetween(Integer value1, Integer value2) { + addCriterion("TRANSPORT_MODE not between", value1, value2, "transportMode"); + return (Criteria) this; + } + + public Criteria andRemarkIsNull() { + addCriterion("REMARK is null"); + return (Criteria) this; + } + + public Criteria andRemarkIsNotNull() { + addCriterion("REMARK is not null"); + return (Criteria) this; + } + + public Criteria andRemarkEqualTo(String value) { + addCriterion("REMARK =", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotEqualTo(String value) { + addCriterion("REMARK <>", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThan(String value) { + addCriterion("REMARK >", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThanOrEqualTo(String value) { + addCriterion("REMARK >=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThan(String value) { + addCriterion("REMARK <", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThanOrEqualTo(String value) { + addCriterion("REMARK <=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLike(String value) { + addCriterion("REMARK like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotLike(String value) { + addCriterion("REMARK not like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkIn(List values) { + addCriterion("REMARK in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotIn(List values) { + addCriterion("REMARK not in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkBetween(String value1, String value2) { + addCriterion("REMARK between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotBetween(String value1, String value2) { + addCriterion("REMARK not between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andDiscountPriceIsNull() { + addCriterion("DISCOUNT_PRICE is null"); + return (Criteria) this; + } + + public Criteria andDiscountPriceIsNotNull() { + addCriterion("DISCOUNT_PRICE is not null"); + return (Criteria) this; + } + + public Criteria andDiscountPriceEqualTo(BigDecimal value) { + addCriterion("DISCOUNT_PRICE =", value, "discountPrice"); + return (Criteria) this; + } + + public Criteria andDiscountPriceNotEqualTo(BigDecimal value) { + addCriterion("DISCOUNT_PRICE <>", value, "discountPrice"); + return (Criteria) this; + } + + public Criteria andDiscountPriceGreaterThan(BigDecimal value) { + addCriterion("DISCOUNT_PRICE >", value, "discountPrice"); + return (Criteria) this; + } + + public Criteria andDiscountPriceGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("DISCOUNT_PRICE >=", value, "discountPrice"); + return (Criteria) this; + } + + public Criteria andDiscountPriceLessThan(BigDecimal value) { + addCriterion("DISCOUNT_PRICE <", value, "discountPrice"); + return (Criteria) this; + } + + public Criteria andDiscountPriceLessThanOrEqualTo(BigDecimal value) { + addCriterion("DISCOUNT_PRICE <=", value, "discountPrice"); + return (Criteria) this; + } + + public Criteria andDiscountPriceIn(List values) { + addCriterion("DISCOUNT_PRICE in", values, "discountPrice"); + return (Criteria) this; + } + + public Criteria andDiscountPriceNotIn(List values) { + addCriterion("DISCOUNT_PRICE not in", values, "discountPrice"); + return (Criteria) this; + } + + public Criteria andDiscountPriceBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("DISCOUNT_PRICE between", value1, value2, "discountPrice"); + return (Criteria) this; + } + + public Criteria andDiscountPriceNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("DISCOUNT_PRICE not between", value1, value2, "discountPrice"); + return (Criteria) this; + } + + public Criteria andTotalAmountIsNull() { + addCriterion("TOTAL_AMOUNT is null"); + return (Criteria) this; + } + + public Criteria andTotalAmountIsNotNull() { + addCriterion("TOTAL_AMOUNT is not null"); + return (Criteria) this; + } + + public Criteria andTotalAmountEqualTo(BigDecimal value) { + addCriterion("TOTAL_AMOUNT =", value, "totalAmount"); + return (Criteria) this; + } + + public Criteria andTotalAmountNotEqualTo(BigDecimal value) { + addCriterion("TOTAL_AMOUNT <>", value, "totalAmount"); + return (Criteria) this; + } + + public Criteria andTotalAmountGreaterThan(BigDecimal value) { + addCriterion("TOTAL_AMOUNT >", value, "totalAmount"); + return (Criteria) this; + } + + public Criteria andTotalAmountGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("TOTAL_AMOUNT >=", value, "totalAmount"); + return (Criteria) this; + } + + public Criteria andTotalAmountLessThan(BigDecimal value) { + addCriterion("TOTAL_AMOUNT <", value, "totalAmount"); + return (Criteria) this; + } + + public Criteria andTotalAmountLessThanOrEqualTo(BigDecimal value) { + addCriterion("TOTAL_AMOUNT <=", value, "totalAmount"); + return (Criteria) this; + } + + public Criteria andTotalAmountIn(List values) { + addCriterion("TOTAL_AMOUNT in", values, "totalAmount"); + return (Criteria) this; + } + + public Criteria andTotalAmountNotIn(List values) { + addCriterion("TOTAL_AMOUNT not in", values, "totalAmount"); + return (Criteria) this; + } + + public Criteria andTotalAmountBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("TOTAL_AMOUNT between", value1, value2, "totalAmount"); + return (Criteria) this; + } + + public Criteria andTotalAmountNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("TOTAL_AMOUNT not between", value1, value2, "totalAmount"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNull() { + addCriterion("CREATE_TIME is null"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNotNull() { + addCriterion("CREATE_TIME is not null"); + return (Criteria) this; + } + + public Criteria andCreateTimeEqualTo(Date value) { + addCriterion("CREATE_TIME =", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotEqualTo(Date value) { + addCriterion("CREATE_TIME <>", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThan(Date value) { + addCriterion("CREATE_TIME >", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) { + addCriterion("CREATE_TIME >=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThan(Date value) { + addCriterion("CREATE_TIME <", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThanOrEqualTo(Date value) { + addCriterion("CREATE_TIME <=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeIn(List values) { + addCriterion("CREATE_TIME in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotIn(List values) { + addCriterion("CREATE_TIME not in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeBetween(Date value1, Date value2) { + addCriterion("CREATE_TIME between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotBetween(Date value1, Date value2) { + addCriterion("CREATE_TIME not between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andAppointmentTimeIsNull() { + addCriterion("APPOINTMENT_TIME is null"); + return (Criteria) this; + } + + public Criteria andAppointmentTimeIsNotNull() { + addCriterion("APPOINTMENT_TIME is not null"); + return (Criteria) this; + } + + public Criteria andAppointmentTimeEqualTo(Date value) { + addCriterion("APPOINTMENT_TIME =", value, "appointmentTime"); + return (Criteria) this; + } + + public Criteria andAppointmentTimeNotEqualTo(Date value) { + addCriterion("APPOINTMENT_TIME <>", value, "appointmentTime"); + return (Criteria) this; + } + + public Criteria andAppointmentTimeGreaterThan(Date value) { + addCriterion("APPOINTMENT_TIME >", value, "appointmentTime"); + return (Criteria) this; + } + + public Criteria andAppointmentTimeGreaterThanOrEqualTo(Date value) { + addCriterion("APPOINTMENT_TIME >=", value, "appointmentTime"); + return (Criteria) this; + } + + public Criteria andAppointmentTimeLessThan(Date value) { + addCriterion("APPOINTMENT_TIME <", value, "appointmentTime"); + return (Criteria) this; + } + + public Criteria andAppointmentTimeLessThanOrEqualTo(Date value) { + addCriterion("APPOINTMENT_TIME <=", value, "appointmentTime"); + return (Criteria) this; + } + + public Criteria andAppointmentTimeIn(List values) { + addCriterion("APPOINTMENT_TIME in", values, "appointmentTime"); + return (Criteria) this; + } + + public Criteria andAppointmentTimeNotIn(List values) { + addCriterion("APPOINTMENT_TIME not in", values, "appointmentTime"); + return (Criteria) this; + } + + public Criteria andAppointmentTimeBetween(Date value1, Date value2) { + addCriterion("APPOINTMENT_TIME between", value1, value2, "appointmentTime"); + return (Criteria) this; + } + + public Criteria andAppointmentTimeNotBetween(Date value1, Date value2) { + addCriterion("APPOINTMENT_TIME not between", value1, value2, "appointmentTime"); + return (Criteria) this; + } + + public Criteria andCreateUserIdIsNull() { + addCriterion("CREATE_USER_ID is null"); + return (Criteria) this; + } + + public Criteria andCreateUserIdIsNotNull() { + addCriterion("CREATE_USER_ID is not null"); + return (Criteria) this; + } + + public Criteria andCreateUserIdEqualTo(Integer value) { + addCriterion("CREATE_USER_ID =", value, "createUserId"); + return (Criteria) this; + } + + public Criteria andCreateUserIdNotEqualTo(Integer value) { + addCriterion("CREATE_USER_ID <>", value, "createUserId"); + return (Criteria) this; + } + + public Criteria andCreateUserIdGreaterThan(Integer value) { + addCriterion("CREATE_USER_ID >", value, "createUserId"); + return (Criteria) this; + } + + public Criteria andCreateUserIdGreaterThanOrEqualTo(Integer value) { + addCriterion("CREATE_USER_ID >=", value, "createUserId"); + return (Criteria) this; + } + + public Criteria andCreateUserIdLessThan(Integer value) { + addCriterion("CREATE_USER_ID <", value, "createUserId"); + return (Criteria) this; + } + + public Criteria andCreateUserIdLessThanOrEqualTo(Integer value) { + addCriterion("CREATE_USER_ID <=", value, "createUserId"); + return (Criteria) this; + } + + public Criteria andCreateUserIdIn(List values) { + addCriterion("CREATE_USER_ID in", values, "createUserId"); + return (Criteria) this; + } + + public Criteria andCreateUserIdNotIn(List values) { + addCriterion("CREATE_USER_ID not in", values, "createUserId"); + return (Criteria) this; + } + + public Criteria andCreateUserIdBetween(Integer value1, Integer value2) { + addCriterion("CREATE_USER_ID between", value1, value2, "createUserId"); + return (Criteria) this; + } + + public Criteria andCreateUserIdNotBetween(Integer value1, Integer value2) { + addCriterion("CREATE_USER_ID not between", value1, value2, "createUserId"); + return (Criteria) this; + } + + public Criteria andDespatchExpressIdIsNull() { + addCriterion("DESPATCH_EXPRESS_ID is null"); + return (Criteria) this; + } + + public Criteria andDespatchExpressIdIsNotNull() { + addCriterion("DESPATCH_EXPRESS_ID is not null"); + return (Criteria) this; + } + + public Criteria andDespatchExpressIdEqualTo(Integer value) { + addCriterion("DESPATCH_EXPRESS_ID =", value, "despatchExpressId"); + return (Criteria) this; + } + + public Criteria andDespatchExpressIdNotEqualTo(Integer value) { + addCriterion("DESPATCH_EXPRESS_ID <>", value, "despatchExpressId"); + return (Criteria) this; + } + + public Criteria andDespatchExpressIdGreaterThan(Integer value) { + addCriterion("DESPATCH_EXPRESS_ID >", value, "despatchExpressId"); + return (Criteria) this; + } + + public Criteria andDespatchExpressIdGreaterThanOrEqualTo(Integer value) { + addCriterion("DESPATCH_EXPRESS_ID >=", value, "despatchExpressId"); + return (Criteria) this; + } + + public Criteria andDespatchExpressIdLessThan(Integer value) { + addCriterion("DESPATCH_EXPRESS_ID <", value, "despatchExpressId"); + return (Criteria) this; + } + + public Criteria andDespatchExpressIdLessThanOrEqualTo(Integer value) { + addCriterion("DESPATCH_EXPRESS_ID <=", value, "despatchExpressId"); + return (Criteria) this; + } + + public Criteria andDespatchExpressIdIn(List values) { + addCriterion("DESPATCH_EXPRESS_ID in", values, "despatchExpressId"); + return (Criteria) this; + } + + public Criteria andDespatchExpressIdNotIn(List values) { + addCriterion("DESPATCH_EXPRESS_ID not in", values, "despatchExpressId"); + return (Criteria) this; + } + + public Criteria andDespatchExpressIdBetween(Integer value1, Integer value2) { + addCriterion("DESPATCH_EXPRESS_ID between", value1, value2, "despatchExpressId"); + return (Criteria) this; + } + + public Criteria andDespatchExpressIdNotBetween(Integer value1, Integer value2) { + addCriterion("DESPATCH_EXPRESS_ID not between", value1, value2, "despatchExpressId"); + return (Criteria) this; + } + + public Criteria andExpressMemberIdIsNull() { + addCriterion("EXPRESS_MEMBER_ID is null"); + return (Criteria) this; + } + + public Criteria andExpressMemberIdIsNotNull() { + addCriterion("EXPRESS_MEMBER_ID is not null"); + return (Criteria) this; + } + + public Criteria andExpressMemberIdEqualTo(Integer value) { + addCriterion("EXPRESS_MEMBER_ID =", value, "expressMemberId"); + return (Criteria) this; + } + + public Criteria andExpressMemberIdNotEqualTo(Integer value) { + addCriterion("EXPRESS_MEMBER_ID <>", value, "expressMemberId"); + return (Criteria) this; + } + + public Criteria andExpressMemberIdGreaterThan(Integer value) { + addCriterion("EXPRESS_MEMBER_ID >", value, "expressMemberId"); + return (Criteria) this; + } + + public Criteria andExpressMemberIdGreaterThanOrEqualTo(Integer value) { + addCriterion("EXPRESS_MEMBER_ID >=", value, "expressMemberId"); + return (Criteria) this; + } + + public Criteria andExpressMemberIdLessThan(Integer value) { + addCriterion("EXPRESS_MEMBER_ID <", value, "expressMemberId"); + return (Criteria) this; + } + + public Criteria andExpressMemberIdLessThanOrEqualTo(Integer value) { + addCriterion("EXPRESS_MEMBER_ID <=", value, "expressMemberId"); + return (Criteria) this; + } + + public Criteria andExpressMemberIdIn(List values) { + addCriterion("EXPRESS_MEMBER_ID in", values, "expressMemberId"); + return (Criteria) this; + } + + public Criteria andExpressMemberIdNotIn(List values) { + addCriterion("EXPRESS_MEMBER_ID not in", values, "expressMemberId"); + return (Criteria) this; + } + + public Criteria andExpressMemberIdBetween(Integer value1, Integer value2) { + addCriterion("EXPRESS_MEMBER_ID between", value1, value2, "expressMemberId"); + return (Criteria) this; + } + + public Criteria andExpressMemberIdNotBetween(Integer value1, Integer value2) { + addCriterion("EXPRESS_MEMBER_ID not between", value1, value2, "expressMemberId"); + return (Criteria) this; + } + + public Criteria andCompanyIdIsNull() { + addCriterion("COMPANY_ID is null"); + return (Criteria) this; + } + + public Criteria andCompanyIdIsNotNull() { + addCriterion("COMPANY_ID is not null"); + return (Criteria) this; + } + + public Criteria andCompanyIdEqualTo(Integer value) { + addCriterion("COMPANY_ID =", value, "companyId"); + return (Criteria) this; + } + + public Criteria andCompanyIdNotEqualTo(Integer value) { + addCriterion("COMPANY_ID <>", value, "companyId"); + return (Criteria) this; + } + + public Criteria andCompanyIdGreaterThan(Integer value) { + addCriterion("COMPANY_ID >", value, "companyId"); + return (Criteria) this; + } + + public Criteria andCompanyIdGreaterThanOrEqualTo(Integer value) { + addCriterion("COMPANY_ID >=", value, "companyId"); + return (Criteria) this; + } + + public Criteria andCompanyIdLessThan(Integer value) { + addCriterion("COMPANY_ID <", value, "companyId"); + return (Criteria) this; + } + + public Criteria andCompanyIdLessThanOrEqualTo(Integer value) { + addCriterion("COMPANY_ID <=", value, "companyId"); + return (Criteria) this; + } + + public Criteria andCompanyIdIn(List values) { + addCriterion("COMPANY_ID in", values, "companyId"); + return (Criteria) this; + } + + public Criteria andCompanyIdNotIn(List values) { + addCriterion("COMPANY_ID not in", values, "companyId"); + return (Criteria) this; + } + + public Criteria andCompanyIdBetween(Integer value1, Integer value2) { + addCriterion("COMPANY_ID between", value1, value2, "companyId"); + return (Criteria) this; + } + + public Criteria andCompanyIdNotBetween(Integer value1, Integer value2) { + addCriterion("COMPANY_ID not between", value1, value2, "companyId"); + return (Criteria) this; + } + + public Criteria andManagerIdIsNull() { + addCriterion("MANAGER_ID is null"); + return (Criteria) this; + } + + public Criteria andManagerIdIsNotNull() { + addCriterion("MANAGER_ID is not null"); + return (Criteria) this; + } + + public Criteria andManagerIdEqualTo(Integer value) { + addCriterion("MANAGER_ID =", value, "managerId"); + return (Criteria) this; + } + + public Criteria andManagerIdNotEqualTo(Integer value) { + addCriterion("MANAGER_ID <>", value, "managerId"); + return (Criteria) this; + } + + public Criteria andManagerIdGreaterThan(Integer value) { + addCriterion("MANAGER_ID >", value, "managerId"); + return (Criteria) this; + } + + public Criteria andManagerIdGreaterThanOrEqualTo(Integer value) { + addCriterion("MANAGER_ID >=", value, "managerId"); + return (Criteria) this; + } + + public Criteria andManagerIdLessThan(Integer value) { + addCriterion("MANAGER_ID <", value, "managerId"); + return (Criteria) this; + } + + public Criteria andManagerIdLessThanOrEqualTo(Integer value) { + addCriterion("MANAGER_ID <=", value, "managerId"); + return (Criteria) this; + } + + public Criteria andManagerIdIn(List values) { + addCriterion("MANAGER_ID in", values, "managerId"); + return (Criteria) this; + } + + public Criteria andManagerIdNotIn(List values) { + addCriterion("MANAGER_ID not in", values, "managerId"); + return (Criteria) this; + } + + public Criteria andManagerIdBetween(Integer value1, Integer value2) { + addCriterion("MANAGER_ID between", value1, value2, "managerId"); + return (Criteria) this; + } + + public Criteria andManagerIdNotBetween(Integer value1, Integer value2) { + addCriterion("MANAGER_ID not between", value1, value2, "managerId"); + return (Criteria) this; + } + + public Criteria andBatchNoIsNull() { + addCriterion("BATCH_NO is null"); + return (Criteria) this; + } + + public Criteria andBatchNoIsNotNull() { + addCriterion("BATCH_NO is not null"); + return (Criteria) this; + } + + public Criteria andBatchNoEqualTo(String value) { + addCriterion("BATCH_NO =", value, "batchNo"); + return (Criteria) this; + } + + public Criteria andBatchNoNotEqualTo(String value) { + addCriterion("BATCH_NO <>", value, "batchNo"); + return (Criteria) this; + } + + public Criteria andBatchNoGreaterThan(String value) { + addCriterion("BATCH_NO >", value, "batchNo"); + return (Criteria) this; + } + + public Criteria andBatchNoGreaterThanOrEqualTo(String value) { + addCriterion("BATCH_NO >=", value, "batchNo"); + return (Criteria) this; + } + + public Criteria andBatchNoLessThan(String value) { + addCriterion("BATCH_NO <", value, "batchNo"); + return (Criteria) this; + } + + public Criteria andBatchNoLessThanOrEqualTo(String value) { + addCriterion("BATCH_NO <=", value, "batchNo"); + return (Criteria) this; + } + + public Criteria andBatchNoLike(String value) { + addCriterion("BATCH_NO like", value, "batchNo"); + return (Criteria) this; + } + + public Criteria andBatchNoNotLike(String value) { + addCriterion("BATCH_NO not like", value, "batchNo"); + return (Criteria) this; + } + + public Criteria andBatchNoIn(List values) { + addCriterion("BATCH_NO in", values, "batchNo"); + return (Criteria) this; + } + + public Criteria andBatchNoNotIn(List values) { + addCriterion("BATCH_NO not in", values, "batchNo"); + return (Criteria) this; + } + + public Criteria andBatchNoBetween(String value1, String value2) { + addCriterion("BATCH_NO between", value1, value2, "batchNo"); + return (Criteria) this; + } + + public Criteria andBatchNoNotBetween(String value1, String value2) { + addCriterion("BATCH_NO not between", value1, value2, "batchNo"); + return (Criteria) this; + } + + public Criteria andTotalBoxNumIsNull() { + addCriterion("TOTAL_BOX_NUM is null"); + return (Criteria) this; + } + + public Criteria andTotalBoxNumIsNotNull() { + addCriterion("TOTAL_BOX_NUM is not null"); + return (Criteria) this; + } + + public Criteria andTotalBoxNumEqualTo(Integer value) { + addCriterion("TOTAL_BOX_NUM =", value, "totalBoxNum"); + return (Criteria) this; + } + + public Criteria andTotalBoxNumNotEqualTo(Integer value) { + addCriterion("TOTAL_BOX_NUM <>", value, "totalBoxNum"); + return (Criteria) this; + } + + public Criteria andTotalBoxNumGreaterThan(Integer value) { + addCriterion("TOTAL_BOX_NUM >", value, "totalBoxNum"); + return (Criteria) this; + } + + public Criteria andTotalBoxNumGreaterThanOrEqualTo(Integer value) { + addCriterion("TOTAL_BOX_NUM >=", value, "totalBoxNum"); + return (Criteria) this; + } + + public Criteria andTotalBoxNumLessThan(Integer value) { + addCriterion("TOTAL_BOX_NUM <", value, "totalBoxNum"); + return (Criteria) this; + } + + public Criteria andTotalBoxNumLessThanOrEqualTo(Integer value) { + addCriterion("TOTAL_BOX_NUM <=", value, "totalBoxNum"); + return (Criteria) this; + } + + public Criteria andTotalBoxNumIn(List values) { + addCriterion("TOTAL_BOX_NUM in", values, "totalBoxNum"); + return (Criteria) this; + } + + public Criteria andTotalBoxNumNotIn(List values) { + addCriterion("TOTAL_BOX_NUM not in", values, "totalBoxNum"); + return (Criteria) this; + } + + public Criteria andTotalBoxNumBetween(Integer value1, Integer value2) { + addCriterion("TOTAL_BOX_NUM between", value1, value2, "totalBoxNum"); + return (Criteria) this; + } + + public Criteria andTotalBoxNumNotBetween(Integer value1, Integer value2) { + addCriterion("TOTAL_BOX_NUM not between", value1, value2, "totalBoxNum"); + return (Criteria) this; + } + + public Criteria andExpressScanBoxNumIsNull() { + addCriterion("EXPRESS_SCAN_BOX_NUM is null"); + return (Criteria) this; + } + + public Criteria andExpressScanBoxNumIsNotNull() { + addCriterion("EXPRESS_SCAN_BOX_NUM is not null"); + return (Criteria) this; + } + + public Criteria andExpressScanBoxNumEqualTo(Integer value) { + addCriterion("EXPRESS_SCAN_BOX_NUM =", value, "expressScanBoxNum"); + return (Criteria) this; + } + + public Criteria andExpressScanBoxNumNotEqualTo(Integer value) { + addCriterion("EXPRESS_SCAN_BOX_NUM <>", value, "expressScanBoxNum"); + return (Criteria) this; + } + + public Criteria andExpressScanBoxNumGreaterThan(Integer value) { + addCriterion("EXPRESS_SCAN_BOX_NUM >", value, "expressScanBoxNum"); + return (Criteria) this; + } + + public Criteria andExpressScanBoxNumGreaterThanOrEqualTo(Integer value) { + addCriterion("EXPRESS_SCAN_BOX_NUM >=", value, "expressScanBoxNum"); + return (Criteria) this; + } + + public Criteria andExpressScanBoxNumLessThan(Integer value) { + addCriterion("EXPRESS_SCAN_BOX_NUM <", value, "expressScanBoxNum"); + return (Criteria) this; + } + + public Criteria andExpressScanBoxNumLessThanOrEqualTo(Integer value) { + addCriterion("EXPRESS_SCAN_BOX_NUM <=", value, "expressScanBoxNum"); + return (Criteria) this; + } + + public Criteria andExpressScanBoxNumIn(List values) { + addCriterion("EXPRESS_SCAN_BOX_NUM in", values, "expressScanBoxNum"); + return (Criteria) this; + } + + public Criteria andExpressScanBoxNumNotIn(List values) { + addCriterion("EXPRESS_SCAN_BOX_NUM not in", values, "expressScanBoxNum"); + return (Criteria) this; + } + + public Criteria andExpressScanBoxNumBetween(Integer value1, Integer value2) { + addCriterion("EXPRESS_SCAN_BOX_NUM between", value1, value2, "expressScanBoxNum"); + return (Criteria) this; + } + + public Criteria andExpressScanBoxNumNotBetween(Integer value1, Integer value2) { + addCriterion("EXPRESS_SCAN_BOX_NUM not between", value1, value2, "expressScanBoxNum"); + return (Criteria) this; + } + + public Criteria andXiajiaIsNull() { + addCriterion("XIAJIA is null"); + return (Criteria) this; + } + + public Criteria andXiajiaIsNotNull() { + addCriterion("XIAJIA is not null"); + return (Criteria) this; + } + + public Criteria andXiajiaEqualTo(Integer value) { + addCriterion("XIAJIA =", value, "xiajia"); + return (Criteria) this; + } + + public Criteria andXiajiaNotEqualTo(Integer value) { + addCriterion("XIAJIA <>", value, "xiajia"); + return (Criteria) this; + } + + public Criteria andXiajiaGreaterThan(Integer value) { + addCriterion("XIAJIA >", value, "xiajia"); + return (Criteria) this; + } + + public Criteria andXiajiaGreaterThanOrEqualTo(Integer value) { + addCriterion("XIAJIA >=", value, "xiajia"); + return (Criteria) this; + } + + public Criteria andXiajiaLessThan(Integer value) { + addCriterion("XIAJIA <", value, "xiajia"); + return (Criteria) this; + } + + public Criteria andXiajiaLessThanOrEqualTo(Integer value) { + addCriterion("XIAJIA <=", value, "xiajia"); + return (Criteria) this; + } + + public Criteria andXiajiaIn(List values) { + addCriterion("XIAJIA in", values, "xiajia"); + return (Criteria) this; + } + + public Criteria andXiajiaNotIn(List values) { + addCriterion("XIAJIA not in", values, "xiajia"); + return (Criteria) this; + } + + public Criteria andXiajiaBetween(Integer value1, Integer value2) { + addCriterion("XIAJIA between", value1, value2, "xiajia"); + return (Criteria) this; + } + + public Criteria andXiajiaNotBetween(Integer value1, Integer value2) { + addCriterion("XIAJIA not between", value1, value2, "xiajia"); + return (Criteria) this; + } + + public Criteria andIsTwoSendIsNull() { + addCriterion("IS_TWO_SEND is null"); + return (Criteria) this; + } + + public Criteria andIsTwoSendIsNotNull() { + addCriterion("IS_TWO_SEND is not null"); + return (Criteria) this; + } + + public Criteria andIsTwoSendEqualTo(Integer value) { + addCriterion("IS_TWO_SEND =", value, "isTwoSend"); + return (Criteria) this; + } + + public Criteria andIsTwoSendNotEqualTo(Integer value) { + addCriterion("IS_TWO_SEND <>", value, "isTwoSend"); + return (Criteria) this; + } + + public Criteria andIsTwoSendGreaterThan(Integer value) { + addCriterion("IS_TWO_SEND >", value, "isTwoSend"); + return (Criteria) this; + } + + public Criteria andIsTwoSendGreaterThanOrEqualTo(Integer value) { + addCriterion("IS_TWO_SEND >=", value, "isTwoSend"); + return (Criteria) this; + } + + public Criteria andIsTwoSendLessThan(Integer value) { + addCriterion("IS_TWO_SEND <", value, "isTwoSend"); + return (Criteria) this; + } + + public Criteria andIsTwoSendLessThanOrEqualTo(Integer value) { + addCriterion("IS_TWO_SEND <=", value, "isTwoSend"); + return (Criteria) this; + } + + public Criteria andIsTwoSendIn(List values) { + addCriterion("IS_TWO_SEND in", values, "isTwoSend"); + return (Criteria) this; + } + + public Criteria andIsTwoSendNotIn(List values) { + addCriterion("IS_TWO_SEND not in", values, "isTwoSend"); + return (Criteria) this; + } + + public Criteria andIsTwoSendBetween(Integer value1, Integer value2) { + addCriterion("IS_TWO_SEND between", value1, value2, "isTwoSend"); + return (Criteria) this; + } + + public Criteria andIsTwoSendNotBetween(Integer value1, Integer value2) { + addCriterion("IS_TWO_SEND not between", value1, value2, "isTwoSend"); + return (Criteria) this; + } + + public Criteria andTwoSendAuditDateIsNull() { + addCriterion("TWO_SEND_AUDIT_DATE is null"); + return (Criteria) this; + } + + public Criteria andTwoSendAuditDateIsNotNull() { + addCriterion("TWO_SEND_AUDIT_DATE is not null"); + return (Criteria) this; + } + + public Criteria andTwoSendAuditDateEqualTo(Date value) { + addCriterion("TWO_SEND_AUDIT_DATE =", value, "twoSendAuditDate"); + return (Criteria) this; + } + + public Criteria andTwoSendAuditDateNotEqualTo(Date value) { + addCriterion("TWO_SEND_AUDIT_DATE <>", value, "twoSendAuditDate"); + return (Criteria) this; + } + + public Criteria andTwoSendAuditDateGreaterThan(Date value) { + addCriterion("TWO_SEND_AUDIT_DATE >", value, "twoSendAuditDate"); + return (Criteria) this; + } + + public Criteria andTwoSendAuditDateGreaterThanOrEqualTo(Date value) { + addCriterion("TWO_SEND_AUDIT_DATE >=", value, "twoSendAuditDate"); + return (Criteria) this; + } + + public Criteria andTwoSendAuditDateLessThan(Date value) { + addCriterion("TWO_SEND_AUDIT_DATE <", value, "twoSendAuditDate"); + return (Criteria) this; + } + + public Criteria andTwoSendAuditDateLessThanOrEqualTo(Date value) { + addCriterion("TWO_SEND_AUDIT_DATE <=", value, "twoSendAuditDate"); + return (Criteria) this; + } + + public Criteria andTwoSendAuditDateIn(List values) { + addCriterion("TWO_SEND_AUDIT_DATE in", values, "twoSendAuditDate"); + return (Criteria) this; + } + + public Criteria andTwoSendAuditDateNotIn(List values) { + addCriterion("TWO_SEND_AUDIT_DATE not in", values, "twoSendAuditDate"); + return (Criteria) this; + } + + public Criteria andTwoSendAuditDateBetween(Date value1, Date value2) { + addCriterion("TWO_SEND_AUDIT_DATE between", value1, value2, "twoSendAuditDate"); + return (Criteria) this; + } + + public Criteria andTwoSendAuditDateNotBetween(Date value1, Date value2) { + addCriterion("TWO_SEND_AUDIT_DATE not between", value1, value2, "twoSendAuditDate"); + return (Criteria) this; + } + + public Criteria andTwoSendAuditUserIdIsNull() { + addCriterion("TWO_SEND_AUDIT_USER_ID is null"); + return (Criteria) this; + } + + public Criteria andTwoSendAuditUserIdIsNotNull() { + addCriterion("TWO_SEND_AUDIT_USER_ID is not null"); + return (Criteria) this; + } + + public Criteria andTwoSendAuditUserIdEqualTo(Integer value) { + addCriterion("TWO_SEND_AUDIT_USER_ID =", value, "twoSendAuditUserId"); + return (Criteria) this; + } + + public Criteria andTwoSendAuditUserIdNotEqualTo(Integer value) { + addCriterion("TWO_SEND_AUDIT_USER_ID <>", value, "twoSendAuditUserId"); + return (Criteria) this; + } + + public Criteria andTwoSendAuditUserIdGreaterThan(Integer value) { + addCriterion("TWO_SEND_AUDIT_USER_ID >", value, "twoSendAuditUserId"); + return (Criteria) this; + } + + public Criteria andTwoSendAuditUserIdGreaterThanOrEqualTo(Integer value) { + addCriterion("TWO_SEND_AUDIT_USER_ID >=", value, "twoSendAuditUserId"); + return (Criteria) this; + } + + public Criteria andTwoSendAuditUserIdLessThan(Integer value) { + addCriterion("TWO_SEND_AUDIT_USER_ID <", value, "twoSendAuditUserId"); + return (Criteria) this; + } + + public Criteria andTwoSendAuditUserIdLessThanOrEqualTo(Integer value) { + addCriterion("TWO_SEND_AUDIT_USER_ID <=", value, "twoSendAuditUserId"); + return (Criteria) this; + } + + public Criteria andTwoSendAuditUserIdIn(List values) { + addCriterion("TWO_SEND_AUDIT_USER_ID in", values, "twoSendAuditUserId"); + return (Criteria) this; + } + + public Criteria andTwoSendAuditUserIdNotIn(List values) { + addCriterion("TWO_SEND_AUDIT_USER_ID not in", values, "twoSendAuditUserId"); + return (Criteria) this; + } + + public Criteria andTwoSendAuditUserIdBetween(Integer value1, Integer value2) { + addCriterion("TWO_SEND_AUDIT_USER_ID between", value1, value2, "twoSendAuditUserId"); + return (Criteria) this; + } + + public Criteria andTwoSendAuditUserIdNotBetween(Integer value1, Integer value2) { + addCriterion("TWO_SEND_AUDIT_USER_ID not between", value1, value2, "twoSendAuditUserId"); + return (Criteria) this; + } + + public Criteria andOutDateIsNull() { + addCriterion("OUT_DATE is null"); + return (Criteria) this; + } + + public Criteria andOutDateIsNotNull() { + addCriterion("OUT_DATE is not null"); + return (Criteria) this; + } + + public Criteria andOutDateEqualTo(Date value) { + addCriterion("OUT_DATE =", value, "outDate"); + return (Criteria) this; + } + + public Criteria andOutDateNotEqualTo(Date value) { + addCriterion("OUT_DATE <>", value, "outDate"); + return (Criteria) this; + } + + public Criteria andOutDateGreaterThan(Date value) { + addCriterion("OUT_DATE >", value, "outDate"); + return (Criteria) this; + } + + public Criteria andOutDateGreaterThanOrEqualTo(Date value) { + addCriterion("OUT_DATE >=", value, "outDate"); + return (Criteria) this; + } + + public Criteria andOutDateLessThan(Date value) { + addCriterion("OUT_DATE <", value, "outDate"); + return (Criteria) this; + } + + public Criteria andOutDateLessThanOrEqualTo(Date value) { + addCriterion("OUT_DATE <=", value, "outDate"); + return (Criteria) this; + } + + public Criteria andOutDateIn(List values) { + addCriterion("OUT_DATE in", values, "outDate"); + return (Criteria) this; + } + + public Criteria andOutDateNotIn(List values) { + addCriterion("OUT_DATE not in", values, "outDate"); + return (Criteria) this; + } + + public Criteria andOutDateBetween(Date value1, Date value2) { + addCriterion("OUT_DATE between", value1, value2, "outDate"); + return (Criteria) this; + } + + public Criteria andOutDateNotBetween(Date value1, Date value2) { + addCriterion("OUT_DATE not between", value1, value2, "outDate"); + return (Criteria) this; + } + + public Criteria andShouHuoDateIsNull() { + addCriterion("SHOU_HUO_DATE is null"); + return (Criteria) this; + } + + public Criteria andShouHuoDateIsNotNull() { + addCriterion("SHOU_HUO_DATE is not null"); + return (Criteria) this; + } + + public Criteria andShouHuoDateEqualTo(Date value) { + addCriterion("SHOU_HUO_DATE =", value, "shouHuoDate"); + return (Criteria) this; + } + + public Criteria andShouHuoDateNotEqualTo(Date value) { + addCriterion("SHOU_HUO_DATE <>", value, "shouHuoDate"); + return (Criteria) this; + } + + public Criteria andShouHuoDateGreaterThan(Date value) { + addCriterion("SHOU_HUO_DATE >", value, "shouHuoDate"); + return (Criteria) this; + } + + public Criteria andShouHuoDateGreaterThanOrEqualTo(Date value) { + addCriterion("SHOU_HUO_DATE >=", value, "shouHuoDate"); + return (Criteria) this; + } + + public Criteria andShouHuoDateLessThan(Date value) { + addCriterion("SHOU_HUO_DATE <", value, "shouHuoDate"); + return (Criteria) this; + } + + public Criteria andShouHuoDateLessThanOrEqualTo(Date value) { + addCriterion("SHOU_HUO_DATE <=", value, "shouHuoDate"); + return (Criteria) this; + } + + public Criteria andShouHuoDateIn(List values) { + addCriterion("SHOU_HUO_DATE in", values, "shouHuoDate"); + return (Criteria) this; + } + + public Criteria andShouHuoDateNotIn(List values) { + addCriterion("SHOU_HUO_DATE not in", values, "shouHuoDate"); + return (Criteria) this; + } + + public Criteria andShouHuoDateBetween(Date value1, Date value2) { + addCriterion("SHOU_HUO_DATE between", value1, value2, "shouHuoDate"); + return (Criteria) this; + } + + public Criteria andShouHuoDateNotBetween(Date value1, Date value2) { + addCriterion("SHOU_HUO_DATE not between", value1, value2, "shouHuoDate"); + return (Criteria) this; + } + + public Criteria andIsRejectIsNull() { + addCriterion("IS_REJECT is null"); + return (Criteria) this; + } + + public Criteria andIsRejectIsNotNull() { + addCriterion("IS_REJECT is not null"); + return (Criteria) this; + } + + public Criteria andIsRejectEqualTo(Integer value) { + addCriterion("IS_REJECT =", value, "isReject"); + return (Criteria) this; + } + + public Criteria andIsRejectNotEqualTo(Integer value) { + addCriterion("IS_REJECT <>", value, "isReject"); + return (Criteria) this; + } + + public Criteria andIsRejectGreaterThan(Integer value) { + addCriterion("IS_REJECT >", value, "isReject"); + return (Criteria) this; + } + + public Criteria andIsRejectGreaterThanOrEqualTo(Integer value) { + addCriterion("IS_REJECT >=", value, "isReject"); + return (Criteria) this; + } + + public Criteria andIsRejectLessThan(Integer value) { + addCriterion("IS_REJECT <", value, "isReject"); + return (Criteria) this; + } + + public Criteria andIsRejectLessThanOrEqualTo(Integer value) { + addCriterion("IS_REJECT <=", value, "isReject"); + return (Criteria) this; + } + + public Criteria andIsRejectIn(List values) { + addCriterion("IS_REJECT in", values, "isReject"); + return (Criteria) this; + } + + public Criteria andIsRejectNotIn(List values) { + addCriterion("IS_REJECT not in", values, "isReject"); + return (Criteria) this; + } + + public Criteria andIsRejectBetween(Integer value1, Integer value2) { + addCriterion("IS_REJECT between", value1, value2, "isReject"); + return (Criteria) this; + } + + public Criteria andIsRejectNotBetween(Integer value1, Integer value2) { + addCriterion("IS_REJECT not between", value1, value2, "isReject"); + return (Criteria) this; + } + + public Criteria andUpdateDateIsNull() { + addCriterion("UPDATE_DATE is null"); + return (Criteria) this; + } + + public Criteria andUpdateDateIsNotNull() { + addCriterion("UPDATE_DATE is not null"); + return (Criteria) this; + } + + public Criteria andUpdateDateEqualTo(Date value) { + addCriterion("UPDATE_DATE =", value, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateNotEqualTo(Date value) { + addCriterion("UPDATE_DATE <>", value, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateGreaterThan(Date value) { + addCriterion("UPDATE_DATE >", value, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateGreaterThanOrEqualTo(Date value) { + addCriterion("UPDATE_DATE >=", value, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateLessThan(Date value) { + addCriterion("UPDATE_DATE <", value, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateLessThanOrEqualTo(Date value) { + addCriterion("UPDATE_DATE <=", value, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateIn(List values) { + addCriterion("UPDATE_DATE in", values, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateNotIn(List values) { + addCriterion("UPDATE_DATE not in", values, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateBetween(Date value1, Date value2) { + addCriterion("UPDATE_DATE between", value1, value2, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateNotBetween(Date value1, Date value2) { + addCriterion("UPDATE_DATE not between", value1, value2, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdIsNull() { + addCriterion("UPDATE_USER_ID is null"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdIsNotNull() { + addCriterion("UPDATE_USER_ID is not null"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdEqualTo(Integer value) { + addCriterion("UPDATE_USER_ID =", value, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdNotEqualTo(Integer value) { + addCriterion("UPDATE_USER_ID <>", value, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdGreaterThan(Integer value) { + addCriterion("UPDATE_USER_ID >", value, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdGreaterThanOrEqualTo(Integer value) { + addCriterion("UPDATE_USER_ID >=", value, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdLessThan(Integer value) { + addCriterion("UPDATE_USER_ID <", value, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdLessThanOrEqualTo(Integer value) { + addCriterion("UPDATE_USER_ID <=", value, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdIn(List values) { + addCriterion("UPDATE_USER_ID in", values, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdNotIn(List values) { + addCriterion("UPDATE_USER_ID not in", values, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdBetween(Integer value1, Integer value2) { + addCriterion("UPDATE_USER_ID between", value1, value2, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdNotBetween(Integer value1, Integer value2) { + addCriterion("UPDATE_USER_ID not between", value1, value2, "updateUserId"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/order/entity/TbOrderItem.java b/src/main/java/com/xmomen/module/order/entity/TbOrderItem.java new file mode 100644 index 0000000..f309900 --- /dev/null +++ b/src/main/java/com/xmomen/module/order/entity/TbOrderItem.java @@ -0,0 +1,245 @@ +package com.xmomen.module.order.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import java.math.BigDecimal; +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "tb_order_item") +public class TbOrderItem extends BaseMybatisModel { + /** + * + */ + private Integer id; + + /** + * 订单编号 + */ + private String orderNo; + + /** + * + */ + private Integer itemId; + + /** + * 商品编码 + */ + private String itemCode; + + /** + * 商品名称 + */ + private String itemName; + + /** + * 商品单价 + */ + private BigDecimal itemPrice; + + /** + * 商品数量 + */ + private BigDecimal itemQty; + + /** + * 商品单位 + */ + private String itemUnit; + + /** + * 创建时间 + */ + private Date createDate; + + /** + * 创建人 + */ + private Integer createUserId; + + /** + * 更新时间 + */ + private Date updateDate; + + /** + * 更新人 + */ + private Integer updateUserId; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "ORDER_NO") + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + if(orderNo == null){ + removeValidField("orderNo"); + return; + } + addValidField("orderNo"); + } + + @Column(name = "ITEM_ID") + public Integer getItemId() { + return itemId; + } + + public void setItemId(Integer itemId) { + this.itemId = itemId; + if(itemId == null){ + removeValidField("itemId"); + return; + } + addValidField("itemId"); + } + + @Column(name = "ITEM_CODE") + public String getItemCode() { + return itemCode; + } + + public void setItemCode(String itemCode) { + this.itemCode = itemCode; + if(itemCode == null){ + removeValidField("itemCode"); + return; + } + addValidField("itemCode"); + } + + @Column(name = "ITEM_NAME") + public String getItemName() { + return itemName; + } + + public void setItemName(String itemName) { + this.itemName = itemName; + if(itemName == null){ + removeValidField("itemName"); + return; + } + addValidField("itemName"); + } + + @Column(name = "ITEM_PRICE") + public BigDecimal getItemPrice() { + return itemPrice; + } + + public void setItemPrice(BigDecimal itemPrice) { + this.itemPrice = itemPrice; + if(itemPrice == null){ + removeValidField("itemPrice"); + return; + } + addValidField("itemPrice"); + } + + @Column(name = "ITEM_QTY") + public BigDecimal getItemQty() { + return itemQty; + } + + public void setItemQty(BigDecimal itemQty) { + this.itemQty = itemQty; + if(itemQty == null){ + removeValidField("itemQty"); + return; + } + addValidField("itemQty"); + } + + @Column(name = "ITEM_UNIT") + public String getItemUnit() { + return itemUnit; + } + + public void setItemUnit(String itemUnit) { + this.itemUnit = itemUnit; + if(itemUnit == null){ + removeValidField("itemUnit"); + return; + } + addValidField("itemUnit"); + } + + @Column(name = "CREATE_DATE") + public Date getCreateDate() { + return createDate; + } + + public void setCreateDate(Date createDate) { + this.createDate = createDate; + if(createDate == null){ + removeValidField("createDate"); + return; + } + addValidField("createDate"); + } + + @Column(name = "CREATE_USER_ID") + public Integer getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(Integer createUserId) { + this.createUserId = createUserId; + if(createUserId == null){ + removeValidField("createUserId"); + return; + } + addValidField("createUserId"); + } + + @Column(name = "UPDATE_DATE") + public Date getUpdateDate() { + return updateDate; + } + + public void setUpdateDate(Date updateDate) { + this.updateDate = updateDate; + if(updateDate == null){ + removeValidField("updateDate"); + return; + } + addValidField("updateDate"); + } + + @Column(name = "UPDATE_USER_ID") + public Integer getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(Integer updateUserId) { + this.updateUserId = updateUserId; + if(updateUserId == null){ + removeValidField("updateUserId"); + return; + } + addValidField("updateUserId"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/order/entity/TbOrderItemExample.java b/src/main/java/com/xmomen/module/order/entity/TbOrderItemExample.java new file mode 100644 index 0000000..68a1963 --- /dev/null +++ b/src/main/java/com/xmomen/module/order/entity/TbOrderItemExample.java @@ -0,0 +1,963 @@ +package com.xmomen.module.order.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisExample; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class TbOrderItemExample extends BaseMybatisExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public TbOrderItemExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("ID is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("ID is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Integer value) { + addCriterion("ID =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Integer value) { + addCriterion("ID <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Integer value) { + addCriterion("ID >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Integer value) { + addCriterion("ID >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Integer value) { + addCriterion("ID <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Integer value) { + addCriterion("ID <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("ID in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("ID not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Integer value1, Integer value2) { + addCriterion("ID between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Integer value1, Integer value2) { + addCriterion("ID not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andOrderNoIsNull() { + addCriterion("ORDER_NO is null"); + return (Criteria) this; + } + + public Criteria andOrderNoIsNotNull() { + addCriterion("ORDER_NO is not null"); + return (Criteria) this; + } + + public Criteria andOrderNoEqualTo(String value) { + addCriterion("ORDER_NO =", value, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoNotEqualTo(String value) { + addCriterion("ORDER_NO <>", value, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoGreaterThan(String value) { + addCriterion("ORDER_NO >", value, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoGreaterThanOrEqualTo(String value) { + addCriterion("ORDER_NO >=", value, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoLessThan(String value) { + addCriterion("ORDER_NO <", value, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoLessThanOrEqualTo(String value) { + addCriterion("ORDER_NO <=", value, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoLike(String value) { + addCriterion("ORDER_NO like", value, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoNotLike(String value) { + addCriterion("ORDER_NO not like", value, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoIn(List values) { + addCriterion("ORDER_NO in", values, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoNotIn(List values) { + addCriterion("ORDER_NO not in", values, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoBetween(String value1, String value2) { + addCriterion("ORDER_NO between", value1, value2, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoNotBetween(String value1, String value2) { + addCriterion("ORDER_NO not between", value1, value2, "orderNo"); + return (Criteria) this; + } + + public Criteria andItemIdIsNull() { + addCriterion("ITEM_ID is null"); + return (Criteria) this; + } + + public Criteria andItemIdIsNotNull() { + addCriterion("ITEM_ID is not null"); + return (Criteria) this; + } + + public Criteria andItemIdEqualTo(Integer value) { + addCriterion("ITEM_ID =", value, "itemId"); + return (Criteria) this; + } + + public Criteria andItemIdNotEqualTo(Integer value) { + addCriterion("ITEM_ID <>", value, "itemId"); + return (Criteria) this; + } + + public Criteria andItemIdGreaterThan(Integer value) { + addCriterion("ITEM_ID >", value, "itemId"); + return (Criteria) this; + } + + public Criteria andItemIdGreaterThanOrEqualTo(Integer value) { + addCriterion("ITEM_ID >=", value, "itemId"); + return (Criteria) this; + } + + public Criteria andItemIdLessThan(Integer value) { + addCriterion("ITEM_ID <", value, "itemId"); + return (Criteria) this; + } + + public Criteria andItemIdLessThanOrEqualTo(Integer value) { + addCriterion("ITEM_ID <=", value, "itemId"); + return (Criteria) this; + } + + public Criteria andItemIdIn(List values) { + addCriterion("ITEM_ID in", values, "itemId"); + return (Criteria) this; + } + + public Criteria andItemIdNotIn(List values) { + addCriterion("ITEM_ID not in", values, "itemId"); + return (Criteria) this; + } + + public Criteria andItemIdBetween(Integer value1, Integer value2) { + addCriterion("ITEM_ID between", value1, value2, "itemId"); + return (Criteria) this; + } + + public Criteria andItemIdNotBetween(Integer value1, Integer value2) { + addCriterion("ITEM_ID not between", value1, value2, "itemId"); + return (Criteria) this; + } + + public Criteria andItemCodeIsNull() { + addCriterion("ITEM_CODE is null"); + return (Criteria) this; + } + + public Criteria andItemCodeIsNotNull() { + addCriterion("ITEM_CODE is not null"); + return (Criteria) this; + } + + public Criteria andItemCodeEqualTo(String value) { + addCriterion("ITEM_CODE =", value, "itemCode"); + return (Criteria) this; + } + + public Criteria andItemCodeNotEqualTo(String value) { + addCriterion("ITEM_CODE <>", value, "itemCode"); + return (Criteria) this; + } + + public Criteria andItemCodeGreaterThan(String value) { + addCriterion("ITEM_CODE >", value, "itemCode"); + return (Criteria) this; + } + + public Criteria andItemCodeGreaterThanOrEqualTo(String value) { + addCriterion("ITEM_CODE >=", value, "itemCode"); + return (Criteria) this; + } + + public Criteria andItemCodeLessThan(String value) { + addCriterion("ITEM_CODE <", value, "itemCode"); + return (Criteria) this; + } + + public Criteria andItemCodeLessThanOrEqualTo(String value) { + addCriterion("ITEM_CODE <=", value, "itemCode"); + return (Criteria) this; + } + + public Criteria andItemCodeLike(String value) { + addCriterion("ITEM_CODE like", value, "itemCode"); + return (Criteria) this; + } + + public Criteria andItemCodeNotLike(String value) { + addCriterion("ITEM_CODE not like", value, "itemCode"); + return (Criteria) this; + } + + public Criteria andItemCodeIn(List values) { + addCriterion("ITEM_CODE in", values, "itemCode"); + return (Criteria) this; + } + + public Criteria andItemCodeNotIn(List values) { + addCriterion("ITEM_CODE not in", values, "itemCode"); + return (Criteria) this; + } + + public Criteria andItemCodeBetween(String value1, String value2) { + addCriterion("ITEM_CODE between", value1, value2, "itemCode"); + return (Criteria) this; + } + + public Criteria andItemCodeNotBetween(String value1, String value2) { + addCriterion("ITEM_CODE not between", value1, value2, "itemCode"); + return (Criteria) this; + } + + public Criteria andItemNameIsNull() { + addCriterion("ITEM_NAME is null"); + return (Criteria) this; + } + + public Criteria andItemNameIsNotNull() { + addCriterion("ITEM_NAME is not null"); + return (Criteria) this; + } + + public Criteria andItemNameEqualTo(String value) { + addCriterion("ITEM_NAME =", value, "itemName"); + return (Criteria) this; + } + + public Criteria andItemNameNotEqualTo(String value) { + addCriterion("ITEM_NAME <>", value, "itemName"); + return (Criteria) this; + } + + public Criteria andItemNameGreaterThan(String value) { + addCriterion("ITEM_NAME >", value, "itemName"); + return (Criteria) this; + } + + public Criteria andItemNameGreaterThanOrEqualTo(String value) { + addCriterion("ITEM_NAME >=", value, "itemName"); + return (Criteria) this; + } + + public Criteria andItemNameLessThan(String value) { + addCriterion("ITEM_NAME <", value, "itemName"); + return (Criteria) this; + } + + public Criteria andItemNameLessThanOrEqualTo(String value) { + addCriterion("ITEM_NAME <=", value, "itemName"); + return (Criteria) this; + } + + public Criteria andItemNameLike(String value) { + addCriterion("ITEM_NAME like", value, "itemName"); + return (Criteria) this; + } + + public Criteria andItemNameNotLike(String value) { + addCriterion("ITEM_NAME not like", value, "itemName"); + return (Criteria) this; + } + + public Criteria andItemNameIn(List values) { + addCriterion("ITEM_NAME in", values, "itemName"); + return (Criteria) this; + } + + public Criteria andItemNameNotIn(List values) { + addCriterion("ITEM_NAME not in", values, "itemName"); + return (Criteria) this; + } + + public Criteria andItemNameBetween(String value1, String value2) { + addCriterion("ITEM_NAME between", value1, value2, "itemName"); + return (Criteria) this; + } + + public Criteria andItemNameNotBetween(String value1, String value2) { + addCriterion("ITEM_NAME not between", value1, value2, "itemName"); + return (Criteria) this; + } + + public Criteria andItemPriceIsNull() { + addCriterion("ITEM_PRICE is null"); + return (Criteria) this; + } + + public Criteria andItemPriceIsNotNull() { + addCriterion("ITEM_PRICE is not null"); + return (Criteria) this; + } + + public Criteria andItemPriceEqualTo(BigDecimal value) { + addCriterion("ITEM_PRICE =", value, "itemPrice"); + return (Criteria) this; + } + + public Criteria andItemPriceNotEqualTo(BigDecimal value) { + addCriterion("ITEM_PRICE <>", value, "itemPrice"); + return (Criteria) this; + } + + public Criteria andItemPriceGreaterThan(BigDecimal value) { + addCriterion("ITEM_PRICE >", value, "itemPrice"); + return (Criteria) this; + } + + public Criteria andItemPriceGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("ITEM_PRICE >=", value, "itemPrice"); + return (Criteria) this; + } + + public Criteria andItemPriceLessThan(BigDecimal value) { + addCriterion("ITEM_PRICE <", value, "itemPrice"); + return (Criteria) this; + } + + public Criteria andItemPriceLessThanOrEqualTo(BigDecimal value) { + addCriterion("ITEM_PRICE <=", value, "itemPrice"); + return (Criteria) this; + } + + public Criteria andItemPriceIn(List values) { + addCriterion("ITEM_PRICE in", values, "itemPrice"); + return (Criteria) this; + } + + public Criteria andItemPriceNotIn(List values) { + addCriterion("ITEM_PRICE not in", values, "itemPrice"); + return (Criteria) this; + } + + public Criteria andItemPriceBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("ITEM_PRICE between", value1, value2, "itemPrice"); + return (Criteria) this; + } + + public Criteria andItemPriceNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("ITEM_PRICE not between", value1, value2, "itemPrice"); + return (Criteria) this; + } + + public Criteria andItemQtyIsNull() { + addCriterion("ITEM_QTY is null"); + return (Criteria) this; + } + + public Criteria andItemQtyIsNotNull() { + addCriterion("ITEM_QTY is not null"); + return (Criteria) this; + } + + public Criteria andItemQtyEqualTo(BigDecimal value) { + addCriterion("ITEM_QTY =", value, "itemQty"); + return (Criteria) this; + } + + public Criteria andItemQtyNotEqualTo(BigDecimal value) { + addCriterion("ITEM_QTY <>", value, "itemQty"); + return (Criteria) this; + } + + public Criteria andItemQtyGreaterThan(BigDecimal value) { + addCriterion("ITEM_QTY >", value, "itemQty"); + return (Criteria) this; + } + + public Criteria andItemQtyGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("ITEM_QTY >=", value, "itemQty"); + return (Criteria) this; + } + + public Criteria andItemQtyLessThan(BigDecimal value) { + addCriterion("ITEM_QTY <", value, "itemQty"); + return (Criteria) this; + } + + public Criteria andItemQtyLessThanOrEqualTo(BigDecimal value) { + addCriterion("ITEM_QTY <=", value, "itemQty"); + return (Criteria) this; + } + + public Criteria andItemQtyIn(List values) { + addCriterion("ITEM_QTY in", values, "itemQty"); + return (Criteria) this; + } + + public Criteria andItemQtyNotIn(List values) { + addCriterion("ITEM_QTY not in", values, "itemQty"); + return (Criteria) this; + } + + public Criteria andItemQtyBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("ITEM_QTY between", value1, value2, "itemQty"); + return (Criteria) this; + } + + public Criteria andItemQtyNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("ITEM_QTY not between", value1, value2, "itemQty"); + return (Criteria) this; + } + + public Criteria andItemUnitIsNull() { + addCriterion("ITEM_UNIT is null"); + return (Criteria) this; + } + + public Criteria andItemUnitIsNotNull() { + addCriterion("ITEM_UNIT is not null"); + return (Criteria) this; + } + + public Criteria andItemUnitEqualTo(String value) { + addCriterion("ITEM_UNIT =", value, "itemUnit"); + return (Criteria) this; + } + + public Criteria andItemUnitNotEqualTo(String value) { + addCriterion("ITEM_UNIT <>", value, "itemUnit"); + return (Criteria) this; + } + + public Criteria andItemUnitGreaterThan(String value) { + addCriterion("ITEM_UNIT >", value, "itemUnit"); + return (Criteria) this; + } + + public Criteria andItemUnitGreaterThanOrEqualTo(String value) { + addCriterion("ITEM_UNIT >=", value, "itemUnit"); + return (Criteria) this; + } + + public Criteria andItemUnitLessThan(String value) { + addCriterion("ITEM_UNIT <", value, "itemUnit"); + return (Criteria) this; + } + + public Criteria andItemUnitLessThanOrEqualTo(String value) { + addCriterion("ITEM_UNIT <=", value, "itemUnit"); + return (Criteria) this; + } + + public Criteria andItemUnitLike(String value) { + addCriterion("ITEM_UNIT like", value, "itemUnit"); + return (Criteria) this; + } + + public Criteria andItemUnitNotLike(String value) { + addCriterion("ITEM_UNIT not like", value, "itemUnit"); + return (Criteria) this; + } + + public Criteria andItemUnitIn(List values) { + addCriterion("ITEM_UNIT in", values, "itemUnit"); + return (Criteria) this; + } + + public Criteria andItemUnitNotIn(List values) { + addCriterion("ITEM_UNIT not in", values, "itemUnit"); + return (Criteria) this; + } + + public Criteria andItemUnitBetween(String value1, String value2) { + addCriterion("ITEM_UNIT between", value1, value2, "itemUnit"); + return (Criteria) this; + } + + public Criteria andItemUnitNotBetween(String value1, String value2) { + addCriterion("ITEM_UNIT not between", value1, value2, "itemUnit"); + return (Criteria) this; + } + + public Criteria andCreateDateIsNull() { + addCriterion("CREATE_DATE is null"); + return (Criteria) this; + } + + public Criteria andCreateDateIsNotNull() { + addCriterion("CREATE_DATE is not null"); + return (Criteria) this; + } + + public Criteria andCreateDateEqualTo(Date value) { + addCriterion("CREATE_DATE =", value, "createDate"); + return (Criteria) this; + } + + public Criteria andCreateDateNotEqualTo(Date value) { + addCriterion("CREATE_DATE <>", value, "createDate"); + return (Criteria) this; + } + + public Criteria andCreateDateGreaterThan(Date value) { + addCriterion("CREATE_DATE >", value, "createDate"); + return (Criteria) this; + } + + public Criteria andCreateDateGreaterThanOrEqualTo(Date value) { + addCriterion("CREATE_DATE >=", value, "createDate"); + return (Criteria) this; + } + + public Criteria andCreateDateLessThan(Date value) { + addCriterion("CREATE_DATE <", value, "createDate"); + return (Criteria) this; + } + + public Criteria andCreateDateLessThanOrEqualTo(Date value) { + addCriterion("CREATE_DATE <=", value, "createDate"); + return (Criteria) this; + } + + public Criteria andCreateDateIn(List values) { + addCriterion("CREATE_DATE in", values, "createDate"); + return (Criteria) this; + } + + public Criteria andCreateDateNotIn(List values) { + addCriterion("CREATE_DATE not in", values, "createDate"); + return (Criteria) this; + } + + public Criteria andCreateDateBetween(Date value1, Date value2) { + addCriterion("CREATE_DATE between", value1, value2, "createDate"); + return (Criteria) this; + } + + public Criteria andCreateDateNotBetween(Date value1, Date value2) { + addCriterion("CREATE_DATE not between", value1, value2, "createDate"); + return (Criteria) this; + } + + public Criteria andCreateUserIdIsNull() { + addCriterion("CREATE_USER_ID is null"); + return (Criteria) this; + } + + public Criteria andCreateUserIdIsNotNull() { + addCriterion("CREATE_USER_ID is not null"); + return (Criteria) this; + } + + public Criteria andCreateUserIdEqualTo(Integer value) { + addCriterion("CREATE_USER_ID =", value, "createUserId"); + return (Criteria) this; + } + + public Criteria andCreateUserIdNotEqualTo(Integer value) { + addCriterion("CREATE_USER_ID <>", value, "createUserId"); + return (Criteria) this; + } + + public Criteria andCreateUserIdGreaterThan(Integer value) { + addCriterion("CREATE_USER_ID >", value, "createUserId"); + return (Criteria) this; + } + + public Criteria andCreateUserIdGreaterThanOrEqualTo(Integer value) { + addCriterion("CREATE_USER_ID >=", value, "createUserId"); + return (Criteria) this; + } + + public Criteria andCreateUserIdLessThan(Integer value) { + addCriterion("CREATE_USER_ID <", value, "createUserId"); + return (Criteria) this; + } + + public Criteria andCreateUserIdLessThanOrEqualTo(Integer value) { + addCriterion("CREATE_USER_ID <=", value, "createUserId"); + return (Criteria) this; + } + + public Criteria andCreateUserIdIn(List values) { + addCriterion("CREATE_USER_ID in", values, "createUserId"); + return (Criteria) this; + } + + public Criteria andCreateUserIdNotIn(List values) { + addCriterion("CREATE_USER_ID not in", values, "createUserId"); + return (Criteria) this; + } + + public Criteria andCreateUserIdBetween(Integer value1, Integer value2) { + addCriterion("CREATE_USER_ID between", value1, value2, "createUserId"); + return (Criteria) this; + } + + public Criteria andCreateUserIdNotBetween(Integer value1, Integer value2) { + addCriterion("CREATE_USER_ID not between", value1, value2, "createUserId"); + return (Criteria) this; + } + + public Criteria andUpdateDateIsNull() { + addCriterion("UPDATE_DATE is null"); + return (Criteria) this; + } + + public Criteria andUpdateDateIsNotNull() { + addCriterion("UPDATE_DATE is not null"); + return (Criteria) this; + } + + public Criteria andUpdateDateEqualTo(Date value) { + addCriterion("UPDATE_DATE =", value, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateNotEqualTo(Date value) { + addCriterion("UPDATE_DATE <>", value, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateGreaterThan(Date value) { + addCriterion("UPDATE_DATE >", value, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateGreaterThanOrEqualTo(Date value) { + addCriterion("UPDATE_DATE >=", value, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateLessThan(Date value) { + addCriterion("UPDATE_DATE <", value, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateLessThanOrEqualTo(Date value) { + addCriterion("UPDATE_DATE <=", value, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateIn(List values) { + addCriterion("UPDATE_DATE in", values, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateNotIn(List values) { + addCriterion("UPDATE_DATE not in", values, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateBetween(Date value1, Date value2) { + addCriterion("UPDATE_DATE between", value1, value2, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateNotBetween(Date value1, Date value2) { + addCriterion("UPDATE_DATE not between", value1, value2, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdIsNull() { + addCriterion("UPDATE_USER_ID is null"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdIsNotNull() { + addCriterion("UPDATE_USER_ID is not null"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdEqualTo(Integer value) { + addCriterion("UPDATE_USER_ID =", value, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdNotEqualTo(Integer value) { + addCriterion("UPDATE_USER_ID <>", value, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdGreaterThan(Integer value) { + addCriterion("UPDATE_USER_ID >", value, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdGreaterThanOrEqualTo(Integer value) { + addCriterion("UPDATE_USER_ID >=", value, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdLessThan(Integer value) { + addCriterion("UPDATE_USER_ID <", value, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdLessThanOrEqualTo(Integer value) { + addCriterion("UPDATE_USER_ID <=", value, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdIn(List values) { + addCriterion("UPDATE_USER_ID in", values, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdNotIn(List values) { + addCriterion("UPDATE_USER_ID not in", values, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdBetween(Integer value1, Integer value2) { + addCriterion("UPDATE_USER_ID between", value1, value2, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdNotBetween(Integer value1, Integer value2) { + addCriterion("UPDATE_USER_ID not between", value1, value2, "updateUserId"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/order/entity/TbOrderRef.java b/src/main/java/com/xmomen/module/order/entity/TbOrderRef.java new file mode 100644 index 0000000..fd073eb --- /dev/null +++ b/src/main/java/com/xmomen/module/order/entity/TbOrderRef.java @@ -0,0 +1,91 @@ +package com.xmomen.module.order.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "tb_order_ref") +public class TbOrderRef extends BaseMybatisModel { + /** + * 物理主键 + */ + private Integer id; + + /** + * 扩展类型 + */ + private String refType; + + /** + * 扩展值 + */ + private String refValue; + + /** + * 订单编号 + */ + private String orderNo; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "REF_TYPE") + public String getRefType() { + return refType; + } + + public void setRefType(String refType) { + this.refType = refType; + if(refType == null){ + removeValidField("refType"); + return; + } + addValidField("refType"); + } + + @Column(name = "REF_VALUE") + public String getRefValue() { + return refValue; + } + + public void setRefValue(String refValue) { + this.refValue = refValue; + if(refValue == null){ + removeValidField("refValue"); + return; + } + addValidField("refValue"); + } + + @Column(name = "ORDER_NO") + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + if(orderNo == null){ + removeValidField("orderNo"); + return; + } + addValidField("orderNo"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/order/entity/TbOrderRelation.java b/src/main/java/com/xmomen/module/order/entity/TbOrderRelation.java new file mode 100644 index 0000000..ea5765b --- /dev/null +++ b/src/main/java/com/xmomen/module/order/entity/TbOrderRelation.java @@ -0,0 +1,91 @@ +package com.xmomen.module.order.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "tb_order_relation") +public class TbOrderRelation extends BaseMybatisModel { + /** + * + */ + private Integer id; + + /** + * 扩展类型 + */ + private String refType; + + /** + * 扩展值 + */ + private String refValue; + + /** + * 订单编号 + */ + private String orderNo; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "REF_TYPE") + public String getRefType() { + return refType; + } + + public void setRefType(String refType) { + this.refType = refType; + if(refType == null){ + removeValidField("refType"); + return; + } + addValidField("refType"); + } + + @Column(name = "REF_VALUE") + public String getRefValue() { + return refValue; + } + + public void setRefValue(String refValue) { + this.refValue = refValue; + if(refValue == null){ + removeValidField("refValue"); + return; + } + addValidField("refValue"); + } + + @Column(name = "ORDER_NO") + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + if(orderNo == null){ + removeValidField("orderNo"); + return; + } + addValidField("orderNo"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/order/entity/TbOrderSendLog.java b/src/main/java/com/xmomen/module/order/entity/TbOrderSendLog.java new file mode 100644 index 0000000..4c3950d --- /dev/null +++ b/src/main/java/com/xmomen/module/order/entity/TbOrderSendLog.java @@ -0,0 +1,130 @@ +package com.xmomen.module.order.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "tb_order_send_log") +public class TbOrderSendLog extends BaseMybatisModel { + /** + * 主键 + */ + private Integer id; + + /** + * 订单ID + */ + private Integer orderId; + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 原快递员ID + */ + private Integer oldExpressMemberId; + + /** + * 新快递员 + */ + private Integer newExpressMemberId; + + /** + * 插入时间 + */ + private Date insertDate; + + @Column(name = "id") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "order_id") + public Integer getOrderId() { + return orderId; + } + + public void setOrderId(Integer orderId) { + this.orderId = orderId; + if(orderId == null){ + removeValidField("orderId"); + return; + } + addValidField("orderId"); + } + + @Column(name = "order_no") + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + if(orderNo == null){ + removeValidField("orderNo"); + return; + } + addValidField("orderNo"); + } + + @Column(name = "old_express_member_id") + public Integer getOldExpressMemberId() { + return oldExpressMemberId; + } + + public void setOldExpressMemberId(Integer oldExpressMemberId) { + this.oldExpressMemberId = oldExpressMemberId; + if(oldExpressMemberId == null){ + removeValidField("oldExpressMemberId"); + return; + } + addValidField("oldExpressMemberId"); + } + + @Column(name = "new_express_member_id") + public Integer getNewExpressMemberId() { + return newExpressMemberId; + } + + public void setNewExpressMemberId(Integer newExpressMemberId) { + this.newExpressMemberId = newExpressMemberId; + if(newExpressMemberId == null){ + removeValidField("newExpressMemberId"); + return; + } + addValidField("newExpressMemberId"); + } + + @Column(name = "insert_date") + public Date getInsertDate() { + return insertDate; + } + + public void setInsertDate(Date insertDate) { + this.insertDate = insertDate; + if(insertDate == null){ + removeValidField("insertDate"); + return; + } + addValidField("insertDate"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/order/entity/TbOrderSendLogExample.java b/src/main/java/com/xmomen/module/order/entity/TbOrderSendLogExample.java new file mode 100644 index 0000000..10efd31 --- /dev/null +++ b/src/main/java/com/xmomen/module/order/entity/TbOrderSendLogExample.java @@ -0,0 +1,572 @@ +package com.xmomen.module.order.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisExample; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class TbOrderSendLogExample extends BaseMybatisExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public TbOrderSendLogExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Integer value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Integer value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Integer value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Integer value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Integer value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Integer value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Integer value1, Integer value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Integer value1, Integer value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andOrderIdIsNull() { + addCriterion("order_id is null"); + return (Criteria) this; + } + + public Criteria andOrderIdIsNotNull() { + addCriterion("order_id is not null"); + return (Criteria) this; + } + + public Criteria andOrderIdEqualTo(Integer value) { + addCriterion("order_id =", value, "orderId"); + return (Criteria) this; + } + + public Criteria andOrderIdNotEqualTo(Integer value) { + addCriterion("order_id <>", value, "orderId"); + return (Criteria) this; + } + + public Criteria andOrderIdGreaterThan(Integer value) { + addCriterion("order_id >", value, "orderId"); + return (Criteria) this; + } + + public Criteria andOrderIdGreaterThanOrEqualTo(Integer value) { + addCriterion("order_id >=", value, "orderId"); + return (Criteria) this; + } + + public Criteria andOrderIdLessThan(Integer value) { + addCriterion("order_id <", value, "orderId"); + return (Criteria) this; + } + + public Criteria andOrderIdLessThanOrEqualTo(Integer value) { + addCriterion("order_id <=", value, "orderId"); + return (Criteria) this; + } + + public Criteria andOrderIdIn(List values) { + addCriterion("order_id in", values, "orderId"); + return (Criteria) this; + } + + public Criteria andOrderIdNotIn(List values) { + addCriterion("order_id not in", values, "orderId"); + return (Criteria) this; + } + + public Criteria andOrderIdBetween(Integer value1, Integer value2) { + addCriterion("order_id between", value1, value2, "orderId"); + return (Criteria) this; + } + + public Criteria andOrderIdNotBetween(Integer value1, Integer value2) { + addCriterion("order_id not between", value1, value2, "orderId"); + return (Criteria) this; + } + + public Criteria andOrderNoIsNull() { + addCriterion("order_no is null"); + return (Criteria) this; + } + + public Criteria andOrderNoIsNotNull() { + addCriterion("order_no is not null"); + return (Criteria) this; + } + + public Criteria andOrderNoEqualTo(String value) { + addCriterion("order_no =", value, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoNotEqualTo(String value) { + addCriterion("order_no <>", value, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoGreaterThan(String value) { + addCriterion("order_no >", value, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoGreaterThanOrEqualTo(String value) { + addCriterion("order_no >=", value, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoLessThan(String value) { + addCriterion("order_no <", value, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoLessThanOrEqualTo(String value) { + addCriterion("order_no <=", value, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoLike(String value) { + addCriterion("order_no like", value, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoNotLike(String value) { + addCriterion("order_no not like", value, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoIn(List values) { + addCriterion("order_no in", values, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoNotIn(List values) { + addCriterion("order_no not in", values, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoBetween(String value1, String value2) { + addCriterion("order_no between", value1, value2, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoNotBetween(String value1, String value2) { + addCriterion("order_no not between", value1, value2, "orderNo"); + return (Criteria) this; + } + + public Criteria andOldExpressMemberIdIsNull() { + addCriterion("old_express_member_id is null"); + return (Criteria) this; + } + + public Criteria andOldExpressMemberIdIsNotNull() { + addCriterion("old_express_member_id is not null"); + return (Criteria) this; + } + + public Criteria andOldExpressMemberIdEqualTo(Integer value) { + addCriterion("old_express_member_id =", value, "oldExpressMemberId"); + return (Criteria) this; + } + + public Criteria andOldExpressMemberIdNotEqualTo(Integer value) { + addCriterion("old_express_member_id <>", value, "oldExpressMemberId"); + return (Criteria) this; + } + + public Criteria andOldExpressMemberIdGreaterThan(Integer value) { + addCriterion("old_express_member_id >", value, "oldExpressMemberId"); + return (Criteria) this; + } + + public Criteria andOldExpressMemberIdGreaterThanOrEqualTo(Integer value) { + addCriterion("old_express_member_id >=", value, "oldExpressMemberId"); + return (Criteria) this; + } + + public Criteria andOldExpressMemberIdLessThan(Integer value) { + addCriterion("old_express_member_id <", value, "oldExpressMemberId"); + return (Criteria) this; + } + + public Criteria andOldExpressMemberIdLessThanOrEqualTo(Integer value) { + addCriterion("old_express_member_id <=", value, "oldExpressMemberId"); + return (Criteria) this; + } + + public Criteria andOldExpressMemberIdIn(List values) { + addCriterion("old_express_member_id in", values, "oldExpressMemberId"); + return (Criteria) this; + } + + public Criteria andOldExpressMemberIdNotIn(List values) { + addCriterion("old_express_member_id not in", values, "oldExpressMemberId"); + return (Criteria) this; + } + + public Criteria andOldExpressMemberIdBetween(Integer value1, Integer value2) { + addCriterion("old_express_member_id between", value1, value2, "oldExpressMemberId"); + return (Criteria) this; + } + + public Criteria andOldExpressMemberIdNotBetween(Integer value1, Integer value2) { + addCriterion("old_express_member_id not between", value1, value2, "oldExpressMemberId"); + return (Criteria) this; + } + + public Criteria andNewExpressMemberIdIsNull() { + addCriterion("new_express_member_id is null"); + return (Criteria) this; + } + + public Criteria andNewExpressMemberIdIsNotNull() { + addCriterion("new_express_member_id is not null"); + return (Criteria) this; + } + + public Criteria andNewExpressMemberIdEqualTo(Integer value) { + addCriterion("new_express_member_id =", value, "newExpressMemberId"); + return (Criteria) this; + } + + public Criteria andNewExpressMemberIdNotEqualTo(Integer value) { + addCriterion("new_express_member_id <>", value, "newExpressMemberId"); + return (Criteria) this; + } + + public Criteria andNewExpressMemberIdGreaterThan(Integer value) { + addCriterion("new_express_member_id >", value, "newExpressMemberId"); + return (Criteria) this; + } + + public Criteria andNewExpressMemberIdGreaterThanOrEqualTo(Integer value) { + addCriterion("new_express_member_id >=", value, "newExpressMemberId"); + return (Criteria) this; + } + + public Criteria andNewExpressMemberIdLessThan(Integer value) { + addCriterion("new_express_member_id <", value, "newExpressMemberId"); + return (Criteria) this; + } + + public Criteria andNewExpressMemberIdLessThanOrEqualTo(Integer value) { + addCriterion("new_express_member_id <=", value, "newExpressMemberId"); + return (Criteria) this; + } + + public Criteria andNewExpressMemberIdIn(List values) { + addCriterion("new_express_member_id in", values, "newExpressMemberId"); + return (Criteria) this; + } + + public Criteria andNewExpressMemberIdNotIn(List values) { + addCriterion("new_express_member_id not in", values, "newExpressMemberId"); + return (Criteria) this; + } + + public Criteria andNewExpressMemberIdBetween(Integer value1, Integer value2) { + addCriterion("new_express_member_id between", value1, value2, "newExpressMemberId"); + return (Criteria) this; + } + + public Criteria andNewExpressMemberIdNotBetween(Integer value1, Integer value2) { + addCriterion("new_express_member_id not between", value1, value2, "newExpressMemberId"); + return (Criteria) this; + } + + public Criteria andInsertDateIsNull() { + addCriterion("insert_date is null"); + return (Criteria) this; + } + + public Criteria andInsertDateIsNotNull() { + addCriterion("insert_date is not null"); + return (Criteria) this; + } + + public Criteria andInsertDateEqualTo(Date value) { + addCriterion("insert_date =", value, "insertDate"); + return (Criteria) this; + } + + public Criteria andInsertDateNotEqualTo(Date value) { + addCriterion("insert_date <>", value, "insertDate"); + return (Criteria) this; + } + + public Criteria andInsertDateGreaterThan(Date value) { + addCriterion("insert_date >", value, "insertDate"); + return (Criteria) this; + } + + public Criteria andInsertDateGreaterThanOrEqualTo(Date value) { + addCriterion("insert_date >=", value, "insertDate"); + return (Criteria) this; + } + + public Criteria andInsertDateLessThan(Date value) { + addCriterion("insert_date <", value, "insertDate"); + return (Criteria) this; + } + + public Criteria andInsertDateLessThanOrEqualTo(Date value) { + addCriterion("insert_date <=", value, "insertDate"); + return (Criteria) this; + } + + public Criteria andInsertDateIn(List values) { + addCriterion("insert_date in", values, "insertDate"); + return (Criteria) this; + } + + public Criteria andInsertDateNotIn(List values) { + addCriterion("insert_date not in", values, "insertDate"); + return (Criteria) this; + } + + public Criteria andInsertDateBetween(Date value1, Date value2) { + addCriterion("insert_date between", value1, value2, "insertDate"); + return (Criteria) this; + } + + public Criteria andInsertDateNotBetween(Date value1, Date value2) { + addCriterion("insert_date not between", value1, value2, "insertDate"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/order/entity/TbPacking.java b/src/main/java/com/xmomen/module/order/entity/TbPacking.java new file mode 100644 index 0000000..86fb1a4 --- /dev/null +++ b/src/main/java/com/xmomen/module/order/entity/TbPacking.java @@ -0,0 +1,92 @@ +package com.xmomen.module.order.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "tb_packing") +public class TbPacking extends BaseMybatisModel { + /** + * + */ + private Integer id; + + /** + * 装箱码 + */ + private String packingNo; + + /** + * 装箱时间 + */ + private Date packingTime; + + /** + * 装箱库内状态:0-在库,1-出库 + */ + private Integer packingStatus; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "PACKING_NO") + public String getPackingNo() { + return packingNo; + } + + public void setPackingNo(String packingNo) { + this.packingNo = packingNo; + if(packingNo == null){ + removeValidField("packingNo"); + return; + } + addValidField("packingNo"); + } + + @Column(name = "PACKING_TIME") + public Date getPackingTime() { + return packingTime; + } + + public void setPackingTime(Date packingTime) { + this.packingTime = packingTime; + if(packingTime == null){ + removeValidField("packingTime"); + return; + } + addValidField("packingTime"); + } + + @Column(name = "PACKING_STATUS") + public Integer getPackingStatus() { + return packingStatus; + } + + public void setPackingStatus(Integer packingStatus) { + this.packingStatus = packingStatus; + if(packingStatus == null){ + removeValidField("packingStatus"); + return; + } + addValidField("packingStatus"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/order/entity/TbPackingRecord.java b/src/main/java/com/xmomen/module/order/entity/TbPackingRecord.java new file mode 100644 index 0000000..7311d54 --- /dev/null +++ b/src/main/java/com/xmomen/module/order/entity/TbPackingRecord.java @@ -0,0 +1,111 @@ +package com.xmomen.module.order.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "tb_packing_record") +public class TbPackingRecord extends BaseMybatisModel { + /** + * + */ + private Integer id; + + /** + * 商品条码 + */ + private String upc; + + /** + * 订单商品ID + */ + private Integer orderItemId; + + /** + * 扫描时间 + */ + private Date scanTime; + + /** + * 装箱ID + */ + private Integer packingId; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "UPC") + public String getUpc() { + return upc; + } + + public void setUpc(String upc) { + this.upc = upc; + if(upc == null){ + removeValidField("upc"); + return; + } + addValidField("upc"); + } + + @Column(name = "ORDER_ITEM_ID") + public Integer getOrderItemId() { + return orderItemId; + } + + public void setOrderItemId(Integer orderItemId) { + this.orderItemId = orderItemId; + if(orderItemId == null){ + removeValidField("orderItemId"); + return; + } + addValidField("orderItemId"); + } + + @Column(name = "SCAN_TIME") + public Date getScanTime() { + return scanTime; + } + + public void setScanTime(Date scanTime) { + this.scanTime = scanTime; + if(scanTime == null){ + removeValidField("scanTime"); + return; + } + addValidField("scanTime"); + } + + @Column(name = "PACKING_ID") + public Integer getPackingId() { + return packingId; + } + + public void setPackingId(Integer packingId) { + this.packingId = packingId; + if(packingId == null){ + removeValidField("packingId"); + return; + } + addValidField("packingId"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/order/entity/TbPurchase.java b/src/main/java/com/xmomen/module/order/entity/TbPurchase.java new file mode 100644 index 0000000..b439f49 --- /dev/null +++ b/src/main/java/com/xmomen/module/order/entity/TbPurchase.java @@ -0,0 +1,226 @@ +package com.xmomen.module.order.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import java.math.BigDecimal; +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "tb_purchase") +public class TbPurchase extends BaseMybatisModel { + /** + * 主键ID + */ + private Integer id; + + /** + * 采购单编号 + */ + private String purchaseCode; + + /** + * 产品代码 + */ + private String itemCode; + + /** + * 采购总数量 + */ + private BigDecimal total; + + /** + * 创建时间 + */ + private Date createDate; + + /** + * 采购人员ID + */ + private Integer buyerId; + + /** + * 采购总重量 + */ + private BigDecimal totalWeight; + + /** + * 分配数量 + */ + private Integer distributeValue; + + /** + * 已包装数 + */ + private Integer packageValue; + + /** + * 已装箱数 + */ + private Integer packingValue; + + /** + * 采购状态:0-待采购,1-已采购 + */ + private Integer purchaseStatus; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "PURCHASE_CODE") + public String getPurchaseCode() { + return purchaseCode; + } + + public void setPurchaseCode(String purchaseCode) { + this.purchaseCode = purchaseCode; + if(purchaseCode == null){ + removeValidField("purchaseCode"); + return; + } + addValidField("purchaseCode"); + } + + @Column(name = "ITEM_CODE") + public String getItemCode() { + return itemCode; + } + + public void setItemCode(String itemCode) { + this.itemCode = itemCode; + if(itemCode == null){ + removeValidField("itemCode"); + return; + } + addValidField("itemCode"); + } + + @Column(name = "TOTAL") + public BigDecimal getTotal() { + return total; + } + + public void setTotal(BigDecimal total) { + this.total = total; + if(total == null){ + removeValidField("total"); + return; + } + addValidField("total"); + } + + @Column(name = "CREATE_DATE") + public Date getCreateDate() { + return createDate; + } + + public void setCreateDate(Date createDate) { + this.createDate = createDate; + if(createDate == null){ + removeValidField("createDate"); + return; + } + addValidField("createDate"); + } + + @Column(name = "BUYER_ID") + public Integer getBuyerId() { + return buyerId; + } + + public void setBuyerId(Integer buyerId) { + this.buyerId = buyerId; + if(buyerId == null){ + removeValidField("buyerId"); + return; + } + addValidField("buyerId"); + } + + @Column(name = "TOTAL_WEIGHT") + public BigDecimal getTotalWeight() { + return totalWeight; + } + + public void setTotalWeight(BigDecimal totalWeight) { + this.totalWeight = totalWeight; + if(totalWeight == null){ + removeValidField("totalWeight"); + return; + } + addValidField("totalWeight"); + } + + @Column(name = "DISTRIBUTE_VALUE") + public Integer getDistributeValue() { + return distributeValue; + } + + public void setDistributeValue(Integer distributeValue) { + this.distributeValue = distributeValue; + if(distributeValue == null){ + removeValidField("distributeValue"); + return; + } + addValidField("distributeValue"); + } + + @Column(name = "PACKAGE_VALUE") + public Integer getPackageValue() { + return packageValue; + } + + public void setPackageValue(Integer packageValue) { + this.packageValue = packageValue; + if(packageValue == null){ + removeValidField("packageValue"); + return; + } + addValidField("packageValue"); + } + + @Column(name = "PACKING_VALUE") + public Integer getPackingValue() { + return packingValue; + } + + public void setPackingValue(Integer packingValue) { + this.packingValue = packingValue; + if(packingValue == null){ + removeValidField("packingValue"); + return; + } + addValidField("packingValue"); + } + + @Column(name = "PURCHASE_STATUS") + public Integer getPurchaseStatus() { + return purchaseStatus; + } + + public void setPurchaseStatus(Integer purchaseStatus) { + this.purchaseStatus = purchaseStatus; + if(purchaseStatus == null){ + removeValidField("purchaseStatus"); + return; + } + addValidField("purchaseStatus"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/order/entity/TbPurchaseExample.java b/src/main/java/com/xmomen/module/order/entity/TbPurchaseExample.java new file mode 100644 index 0000000..4f15d2a --- /dev/null +++ b/src/main/java/com/xmomen/module/order/entity/TbPurchaseExample.java @@ -0,0 +1,883 @@ +package com.xmomen.module.order.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisExample; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class TbPurchaseExample extends BaseMybatisExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public TbPurchaseExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("ID is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("ID is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Integer value) { + addCriterion("ID =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Integer value) { + addCriterion("ID <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Integer value) { + addCriterion("ID >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Integer value) { + addCriterion("ID >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Integer value) { + addCriterion("ID <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Integer value) { + addCriterion("ID <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("ID in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("ID not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Integer value1, Integer value2) { + addCriterion("ID between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Integer value1, Integer value2) { + addCriterion("ID not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andPurchaseCodeIsNull() { + addCriterion("PURCHASE_CODE is null"); + return (Criteria) this; + } + + public Criteria andPurchaseCodeIsNotNull() { + addCriterion("PURCHASE_CODE is not null"); + return (Criteria) this; + } + + public Criteria andPurchaseCodeEqualTo(String value) { + addCriterion("PURCHASE_CODE =", value, "purchaseCode"); + return (Criteria) this; + } + + public Criteria andPurchaseCodeNotEqualTo(String value) { + addCriterion("PURCHASE_CODE <>", value, "purchaseCode"); + return (Criteria) this; + } + + public Criteria andPurchaseCodeGreaterThan(String value) { + addCriterion("PURCHASE_CODE >", value, "purchaseCode"); + return (Criteria) this; + } + + public Criteria andPurchaseCodeGreaterThanOrEqualTo(String value) { + addCriterion("PURCHASE_CODE >=", value, "purchaseCode"); + return (Criteria) this; + } + + public Criteria andPurchaseCodeLessThan(String value) { + addCriterion("PURCHASE_CODE <", value, "purchaseCode"); + return (Criteria) this; + } + + public Criteria andPurchaseCodeLessThanOrEqualTo(String value) { + addCriterion("PURCHASE_CODE <=", value, "purchaseCode"); + return (Criteria) this; + } + + public Criteria andPurchaseCodeLike(String value) { + addCriterion("PURCHASE_CODE like", value, "purchaseCode"); + return (Criteria) this; + } + + public Criteria andPurchaseCodeNotLike(String value) { + addCriterion("PURCHASE_CODE not like", value, "purchaseCode"); + return (Criteria) this; + } + + public Criteria andPurchaseCodeIn(List values) { + addCriterion("PURCHASE_CODE in", values, "purchaseCode"); + return (Criteria) this; + } + + public Criteria andPurchaseCodeNotIn(List values) { + addCriterion("PURCHASE_CODE not in", values, "purchaseCode"); + return (Criteria) this; + } + + public Criteria andPurchaseCodeBetween(String value1, String value2) { + addCriterion("PURCHASE_CODE between", value1, value2, "purchaseCode"); + return (Criteria) this; + } + + public Criteria andPurchaseCodeNotBetween(String value1, String value2) { + addCriterion("PURCHASE_CODE not between", value1, value2, "purchaseCode"); + return (Criteria) this; + } + + public Criteria andItemCodeIsNull() { + addCriterion("ITEM_CODE is null"); + return (Criteria) this; + } + + public Criteria andItemCodeIsNotNull() { + addCriterion("ITEM_CODE is not null"); + return (Criteria) this; + } + + public Criteria andItemCodeEqualTo(String value) { + addCriterion("ITEM_CODE =", value, "itemCode"); + return (Criteria) this; + } + + public Criteria andItemCodeNotEqualTo(String value) { + addCriterion("ITEM_CODE <>", value, "itemCode"); + return (Criteria) this; + } + + public Criteria andItemCodeGreaterThan(String value) { + addCriterion("ITEM_CODE >", value, "itemCode"); + return (Criteria) this; + } + + public Criteria andItemCodeGreaterThanOrEqualTo(String value) { + addCriterion("ITEM_CODE >=", value, "itemCode"); + return (Criteria) this; + } + + public Criteria andItemCodeLessThan(String value) { + addCriterion("ITEM_CODE <", value, "itemCode"); + return (Criteria) this; + } + + public Criteria andItemCodeLessThanOrEqualTo(String value) { + addCriterion("ITEM_CODE <=", value, "itemCode"); + return (Criteria) this; + } + + public Criteria andItemCodeLike(String value) { + addCriterion("ITEM_CODE like", value, "itemCode"); + return (Criteria) this; + } + + public Criteria andItemCodeNotLike(String value) { + addCriterion("ITEM_CODE not like", value, "itemCode"); + return (Criteria) this; + } + + public Criteria andItemCodeIn(List values) { + addCriterion("ITEM_CODE in", values, "itemCode"); + return (Criteria) this; + } + + public Criteria andItemCodeNotIn(List values) { + addCriterion("ITEM_CODE not in", values, "itemCode"); + return (Criteria) this; + } + + public Criteria andItemCodeBetween(String value1, String value2) { + addCriterion("ITEM_CODE between", value1, value2, "itemCode"); + return (Criteria) this; + } + + public Criteria andItemCodeNotBetween(String value1, String value2) { + addCriterion("ITEM_CODE not between", value1, value2, "itemCode"); + return (Criteria) this; + } + + public Criteria andTotalIsNull() { + addCriterion("TOTAL is null"); + return (Criteria) this; + } + + public Criteria andTotalIsNotNull() { + addCriterion("TOTAL is not null"); + return (Criteria) this; + } + + public Criteria andTotalEqualTo(BigDecimal value) { + addCriterion("TOTAL =", value, "total"); + return (Criteria) this; + } + + public Criteria andTotalNotEqualTo(BigDecimal value) { + addCriterion("TOTAL <>", value, "total"); + return (Criteria) this; + } + + public Criteria andTotalGreaterThan(BigDecimal value) { + addCriterion("TOTAL >", value, "total"); + return (Criteria) this; + } + + public Criteria andTotalGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("TOTAL >=", value, "total"); + return (Criteria) this; + } + + public Criteria andTotalLessThan(BigDecimal value) { + addCriterion("TOTAL <", value, "total"); + return (Criteria) this; + } + + public Criteria andTotalLessThanOrEqualTo(BigDecimal value) { + addCriterion("TOTAL <=", value, "total"); + return (Criteria) this; + } + + public Criteria andTotalIn(List values) { + addCriterion("TOTAL in", values, "total"); + return (Criteria) this; + } + + public Criteria andTotalNotIn(List values) { + addCriterion("TOTAL not in", values, "total"); + return (Criteria) this; + } + + public Criteria andTotalBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("TOTAL between", value1, value2, "total"); + return (Criteria) this; + } + + public Criteria andTotalNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("TOTAL not between", value1, value2, "total"); + return (Criteria) this; + } + + public Criteria andCreateDateIsNull() { + addCriterion("CREATE_DATE is null"); + return (Criteria) this; + } + + public Criteria andCreateDateIsNotNull() { + addCriterion("CREATE_DATE is not null"); + return (Criteria) this; + } + + public Criteria andCreateDateEqualTo(Date value) { + addCriterion("CREATE_DATE =", value, "createDate"); + return (Criteria) this; + } + + public Criteria andCreateDateNotEqualTo(Date value) { + addCriterion("CREATE_DATE <>", value, "createDate"); + return (Criteria) this; + } + + public Criteria andCreateDateGreaterThan(Date value) { + addCriterion("CREATE_DATE >", value, "createDate"); + return (Criteria) this; + } + + public Criteria andCreateDateGreaterThanOrEqualTo(Date value) { + addCriterion("CREATE_DATE >=", value, "createDate"); + return (Criteria) this; + } + + public Criteria andCreateDateLessThan(Date value) { + addCriterion("CREATE_DATE <", value, "createDate"); + return (Criteria) this; + } + + public Criteria andCreateDateLessThanOrEqualTo(Date value) { + addCriterion("CREATE_DATE <=", value, "createDate"); + return (Criteria) this; + } + + public Criteria andCreateDateIn(List values) { + addCriterion("CREATE_DATE in", values, "createDate"); + return (Criteria) this; + } + + public Criteria andCreateDateNotIn(List values) { + addCriterion("CREATE_DATE not in", values, "createDate"); + return (Criteria) this; + } + + public Criteria andCreateDateBetween(Date value1, Date value2) { + addCriterion("CREATE_DATE between", value1, value2, "createDate"); + return (Criteria) this; + } + + public Criteria andCreateDateNotBetween(Date value1, Date value2) { + addCriterion("CREATE_DATE not between", value1, value2, "createDate"); + return (Criteria) this; + } + + public Criteria andBuyerIdIsNull() { + addCriterion("BUYER_ID is null"); + return (Criteria) this; + } + + public Criteria andBuyerIdIsNotNull() { + addCriterion("BUYER_ID is not null"); + return (Criteria) this; + } + + public Criteria andBuyerIdEqualTo(Integer value) { + addCriterion("BUYER_ID =", value, "buyerId"); + return (Criteria) this; + } + + public Criteria andBuyerIdNotEqualTo(Integer value) { + addCriterion("BUYER_ID <>", value, "buyerId"); + return (Criteria) this; + } + + public Criteria andBuyerIdGreaterThan(Integer value) { + addCriterion("BUYER_ID >", value, "buyerId"); + return (Criteria) this; + } + + public Criteria andBuyerIdGreaterThanOrEqualTo(Integer value) { + addCriterion("BUYER_ID >=", value, "buyerId"); + return (Criteria) this; + } + + public Criteria andBuyerIdLessThan(Integer value) { + addCriterion("BUYER_ID <", value, "buyerId"); + return (Criteria) this; + } + + public Criteria andBuyerIdLessThanOrEqualTo(Integer value) { + addCriterion("BUYER_ID <=", value, "buyerId"); + return (Criteria) this; + } + + public Criteria andBuyerIdIn(List values) { + addCriterion("BUYER_ID in", values, "buyerId"); + return (Criteria) this; + } + + public Criteria andBuyerIdNotIn(List values) { + addCriterion("BUYER_ID not in", values, "buyerId"); + return (Criteria) this; + } + + public Criteria andBuyerIdBetween(Integer value1, Integer value2) { + addCriterion("BUYER_ID between", value1, value2, "buyerId"); + return (Criteria) this; + } + + public Criteria andBuyerIdNotBetween(Integer value1, Integer value2) { + addCriterion("BUYER_ID not between", value1, value2, "buyerId"); + return (Criteria) this; + } + + public Criteria andTotalWeightIsNull() { + addCriterion("TOTAL_WEIGHT is null"); + return (Criteria) this; + } + + public Criteria andTotalWeightIsNotNull() { + addCriterion("TOTAL_WEIGHT is not null"); + return (Criteria) this; + } + + public Criteria andTotalWeightEqualTo(BigDecimal value) { + addCriterion("TOTAL_WEIGHT =", value, "totalWeight"); + return (Criteria) this; + } + + public Criteria andTotalWeightNotEqualTo(BigDecimal value) { + addCriterion("TOTAL_WEIGHT <>", value, "totalWeight"); + return (Criteria) this; + } + + public Criteria andTotalWeightGreaterThan(BigDecimal value) { + addCriterion("TOTAL_WEIGHT >", value, "totalWeight"); + return (Criteria) this; + } + + public Criteria andTotalWeightGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("TOTAL_WEIGHT >=", value, "totalWeight"); + return (Criteria) this; + } + + public Criteria andTotalWeightLessThan(BigDecimal value) { + addCriterion("TOTAL_WEIGHT <", value, "totalWeight"); + return (Criteria) this; + } + + public Criteria andTotalWeightLessThanOrEqualTo(BigDecimal value) { + addCriterion("TOTAL_WEIGHT <=", value, "totalWeight"); + return (Criteria) this; + } + + public Criteria andTotalWeightIn(List values) { + addCriterion("TOTAL_WEIGHT in", values, "totalWeight"); + return (Criteria) this; + } + + public Criteria andTotalWeightNotIn(List values) { + addCriterion("TOTAL_WEIGHT not in", values, "totalWeight"); + return (Criteria) this; + } + + public Criteria andTotalWeightBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("TOTAL_WEIGHT between", value1, value2, "totalWeight"); + return (Criteria) this; + } + + public Criteria andTotalWeightNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("TOTAL_WEIGHT not between", value1, value2, "totalWeight"); + return (Criteria) this; + } + + public Criteria andDistributeValueIsNull() { + addCriterion("DISTRIBUTE_VALUE is null"); + return (Criteria) this; + } + + public Criteria andDistributeValueIsNotNull() { + addCriterion("DISTRIBUTE_VALUE is not null"); + return (Criteria) this; + } + + public Criteria andDistributeValueEqualTo(Integer value) { + addCriterion("DISTRIBUTE_VALUE =", value, "distributeValue"); + return (Criteria) this; + } + + public Criteria andDistributeValueNotEqualTo(Integer value) { + addCriterion("DISTRIBUTE_VALUE <>", value, "distributeValue"); + return (Criteria) this; + } + + public Criteria andDistributeValueGreaterThan(Integer value) { + addCriterion("DISTRIBUTE_VALUE >", value, "distributeValue"); + return (Criteria) this; + } + + public Criteria andDistributeValueGreaterThanOrEqualTo(Integer value) { + addCriterion("DISTRIBUTE_VALUE >=", value, "distributeValue"); + return (Criteria) this; + } + + public Criteria andDistributeValueLessThan(Integer value) { + addCriterion("DISTRIBUTE_VALUE <", value, "distributeValue"); + return (Criteria) this; + } + + public Criteria andDistributeValueLessThanOrEqualTo(Integer value) { + addCriterion("DISTRIBUTE_VALUE <=", value, "distributeValue"); + return (Criteria) this; + } + + public Criteria andDistributeValueIn(List values) { + addCriterion("DISTRIBUTE_VALUE in", values, "distributeValue"); + return (Criteria) this; + } + + public Criteria andDistributeValueNotIn(List values) { + addCriterion("DISTRIBUTE_VALUE not in", values, "distributeValue"); + return (Criteria) this; + } + + public Criteria andDistributeValueBetween(Integer value1, Integer value2) { + addCriterion("DISTRIBUTE_VALUE between", value1, value2, "distributeValue"); + return (Criteria) this; + } + + public Criteria andDistributeValueNotBetween(Integer value1, Integer value2) { + addCriterion("DISTRIBUTE_VALUE not between", value1, value2, "distributeValue"); + return (Criteria) this; + } + + public Criteria andPackageValueIsNull() { + addCriterion("PACKAGE_VALUE is null"); + return (Criteria) this; + } + + public Criteria andPackageValueIsNotNull() { + addCriterion("PACKAGE_VALUE is not null"); + return (Criteria) this; + } + + public Criteria andPackageValueEqualTo(Integer value) { + addCriterion("PACKAGE_VALUE =", value, "packageValue"); + return (Criteria) this; + } + + public Criteria andPackageValueNotEqualTo(Integer value) { + addCriterion("PACKAGE_VALUE <>", value, "packageValue"); + return (Criteria) this; + } + + public Criteria andPackageValueGreaterThan(Integer value) { + addCriterion("PACKAGE_VALUE >", value, "packageValue"); + return (Criteria) this; + } + + public Criteria andPackageValueGreaterThanOrEqualTo(Integer value) { + addCriterion("PACKAGE_VALUE >=", value, "packageValue"); + return (Criteria) this; + } + + public Criteria andPackageValueLessThan(Integer value) { + addCriterion("PACKAGE_VALUE <", value, "packageValue"); + return (Criteria) this; + } + + public Criteria andPackageValueLessThanOrEqualTo(Integer value) { + addCriterion("PACKAGE_VALUE <=", value, "packageValue"); + return (Criteria) this; + } + + public Criteria andPackageValueIn(List values) { + addCriterion("PACKAGE_VALUE in", values, "packageValue"); + return (Criteria) this; + } + + public Criteria andPackageValueNotIn(List values) { + addCriterion("PACKAGE_VALUE not in", values, "packageValue"); + return (Criteria) this; + } + + public Criteria andPackageValueBetween(Integer value1, Integer value2) { + addCriterion("PACKAGE_VALUE between", value1, value2, "packageValue"); + return (Criteria) this; + } + + public Criteria andPackageValueNotBetween(Integer value1, Integer value2) { + addCriterion("PACKAGE_VALUE not between", value1, value2, "packageValue"); + return (Criteria) this; + } + + public Criteria andPackingValueIsNull() { + addCriterion("PACKING_VALUE is null"); + return (Criteria) this; + } + + public Criteria andPackingValueIsNotNull() { + addCriterion("PACKING_VALUE is not null"); + return (Criteria) this; + } + + public Criteria andPackingValueEqualTo(Integer value) { + addCriterion("PACKING_VALUE =", value, "packingValue"); + return (Criteria) this; + } + + public Criteria andPackingValueNotEqualTo(Integer value) { + addCriterion("PACKING_VALUE <>", value, "packingValue"); + return (Criteria) this; + } + + public Criteria andPackingValueGreaterThan(Integer value) { + addCriterion("PACKING_VALUE >", value, "packingValue"); + return (Criteria) this; + } + + public Criteria andPackingValueGreaterThanOrEqualTo(Integer value) { + addCriterion("PACKING_VALUE >=", value, "packingValue"); + return (Criteria) this; + } + + public Criteria andPackingValueLessThan(Integer value) { + addCriterion("PACKING_VALUE <", value, "packingValue"); + return (Criteria) this; + } + + public Criteria andPackingValueLessThanOrEqualTo(Integer value) { + addCriterion("PACKING_VALUE <=", value, "packingValue"); + return (Criteria) this; + } + + public Criteria andPackingValueIn(List values) { + addCriterion("PACKING_VALUE in", values, "packingValue"); + return (Criteria) this; + } + + public Criteria andPackingValueNotIn(List values) { + addCriterion("PACKING_VALUE not in", values, "packingValue"); + return (Criteria) this; + } + + public Criteria andPackingValueBetween(Integer value1, Integer value2) { + addCriterion("PACKING_VALUE between", value1, value2, "packingValue"); + return (Criteria) this; + } + + public Criteria andPackingValueNotBetween(Integer value1, Integer value2) { + addCriterion("PACKING_VALUE not between", value1, value2, "packingValue"); + return (Criteria) this; + } + + public Criteria andPurchaseStatusIsNull() { + addCriterion("PURCHASE_STATUS is null"); + return (Criteria) this; + } + + public Criteria andPurchaseStatusIsNotNull() { + addCriterion("PURCHASE_STATUS is not null"); + return (Criteria) this; + } + + public Criteria andPurchaseStatusEqualTo(Integer value) { + addCriterion("PURCHASE_STATUS =", value, "purchaseStatus"); + return (Criteria) this; + } + + public Criteria andPurchaseStatusNotEqualTo(Integer value) { + addCriterion("PURCHASE_STATUS <>", value, "purchaseStatus"); + return (Criteria) this; + } + + public Criteria andPurchaseStatusGreaterThan(Integer value) { + addCriterion("PURCHASE_STATUS >", value, "purchaseStatus"); + return (Criteria) this; + } + + public Criteria andPurchaseStatusGreaterThanOrEqualTo(Integer value) { + addCriterion("PURCHASE_STATUS >=", value, "purchaseStatus"); + return (Criteria) this; + } + + public Criteria andPurchaseStatusLessThan(Integer value) { + addCriterion("PURCHASE_STATUS <", value, "purchaseStatus"); + return (Criteria) this; + } + + public Criteria andPurchaseStatusLessThanOrEqualTo(Integer value) { + addCriterion("PURCHASE_STATUS <=", value, "purchaseStatus"); + return (Criteria) this; + } + + public Criteria andPurchaseStatusIn(List values) { + addCriterion("PURCHASE_STATUS in", values, "purchaseStatus"); + return (Criteria) this; + } + + public Criteria andPurchaseStatusNotIn(List values) { + addCriterion("PURCHASE_STATUS not in", values, "purchaseStatus"); + return (Criteria) this; + } + + public Criteria andPurchaseStatusBetween(Integer value1, Integer value2) { + addCriterion("PURCHASE_STATUS between", value1, value2, "purchaseStatus"); + return (Criteria) this; + } + + public Criteria andPurchaseStatusNotBetween(Integer value1, Integer value2) { + addCriterion("PURCHASE_STATUS not between", value1, value2, "purchaseStatus"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/order/entity/TbReturnOrder.java b/src/main/java/com/xmomen/module/order/entity/TbReturnOrder.java new file mode 100644 index 0000000..f66b7ca --- /dev/null +++ b/src/main/java/com/xmomen/module/order/entity/TbReturnOrder.java @@ -0,0 +1,245 @@ +package com.xmomen.module.order.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import java.math.BigDecimal; +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "tb_return_order") +public class TbReturnOrder extends BaseMybatisModel { + /** + * 主键 + */ + private Integer id; + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 退货时间 + */ + private Date returnTime; + + /** + * 订单退货状态(10-申请退货,11-退货中,14-退货运输中,15-退货完成) + */ + private Integer returnStatus; + + /** + * 审核状态(0-不同意,1-同意) + */ + private Integer auditStatus; + + /** + * 审核时间 + */ + private Date auditDate; + + /** + * 审核人 + */ + private Integer auditUserId; + + /** + * 拿货时间 + */ + private Date takeGoodsDate; + + /** + * 拿货人 + */ + private Integer takeGoodsUserId; + + /** + * 拿货人手机号 + */ + private String takeGoodsPhone; + + /** + * 退款金额 + */ + private BigDecimal returnTotalAmount; + + /** + * 0-正常退货,1-超时退货, + */ + private Integer isNormal; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "ORDER_NO") + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + if(orderNo == null){ + removeValidField("orderNo"); + return; + } + addValidField("orderNo"); + } + + @Column(name = "RETURN_TIME") + public Date getReturnTime() { + return returnTime; + } + + public void setReturnTime(Date returnTime) { + this.returnTime = returnTime; + if(returnTime == null){ + removeValidField("returnTime"); + return; + } + addValidField("returnTime"); + } + + @Column(name = "RETURN_STATUS") + public Integer getReturnStatus() { + return returnStatus; + } + + public void setReturnStatus(Integer returnStatus) { + this.returnStatus = returnStatus; + if(returnStatus == null){ + removeValidField("returnStatus"); + return; + } + addValidField("returnStatus"); + } + + @Column(name = "AUDIT_STATUS") + public Integer getAuditStatus() { + return auditStatus; + } + + public void setAuditStatus(Integer auditStatus) { + this.auditStatus = auditStatus; + if(auditStatus == null){ + removeValidField("auditStatus"); + return; + } + addValidField("auditStatus"); + } + + @Column(name = "AUDIT_DATE") + public Date getAuditDate() { + return auditDate; + } + + public void setAuditDate(Date auditDate) { + this.auditDate = auditDate; + if(auditDate == null){ + removeValidField("auditDate"); + return; + } + addValidField("auditDate"); + } + + @Column(name = "AUDIT_USER_ID") + public Integer getAuditUserId() { + return auditUserId; + } + + public void setAuditUserId(Integer auditUserId) { + this.auditUserId = auditUserId; + if(auditUserId == null){ + removeValidField("auditUserId"); + return; + } + addValidField("auditUserId"); + } + + @Column(name = "TAKE_GOODS_DATE") + public Date getTakeGoodsDate() { + return takeGoodsDate; + } + + public void setTakeGoodsDate(Date takeGoodsDate) { + this.takeGoodsDate = takeGoodsDate; + if(takeGoodsDate == null){ + removeValidField("takeGoodsDate"); + return; + } + addValidField("takeGoodsDate"); + } + + @Column(name = "TAKE_GOODS_USER_ID") + public Integer getTakeGoodsUserId() { + return takeGoodsUserId; + } + + public void setTakeGoodsUserId(Integer takeGoodsUserId) { + this.takeGoodsUserId = takeGoodsUserId; + if(takeGoodsUserId == null){ + removeValidField("takeGoodsUserId"); + return; + } + addValidField("takeGoodsUserId"); + } + + @Column(name = "TAKE_GOODS_PHONE") + public String getTakeGoodsPhone() { + return takeGoodsPhone; + } + + public void setTakeGoodsPhone(String takeGoodsPhone) { + this.takeGoodsPhone = takeGoodsPhone; + if(takeGoodsPhone == null){ + removeValidField("takeGoodsPhone"); + return; + } + addValidField("takeGoodsPhone"); + } + + @Column(name = "RETURN_TOTAL_AMOUNT") + public BigDecimal getReturnTotalAmount() { + return returnTotalAmount; + } + + public void setReturnTotalAmount(BigDecimal returnTotalAmount) { + this.returnTotalAmount = returnTotalAmount; + if(returnTotalAmount == null){ + removeValidField("returnTotalAmount"); + return; + } + addValidField("returnTotalAmount"); + } + + @Column(name = "IS_NORMAL") + public Integer getIsNormal() { + return isNormal; + } + + public void setIsNormal(Integer isNormal) { + this.isNormal = isNormal; + if(isNormal == null){ + removeValidField("isNormal"); + return; + } + addValidField("isNormal"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/order/entity/TbTradeRecordExample.java b/src/main/java/com/xmomen/module/order/entity/TbTradeRecordExample.java new file mode 100644 index 0000000..38c0df7 --- /dev/null +++ b/src/main/java/com/xmomen/module/order/entity/TbTradeRecordExample.java @@ -0,0 +1,653 @@ +package com.xmomen.module.order.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisExample; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class TbTradeRecordExample extends BaseMybatisExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public TbTradeRecordExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("ID is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("ID is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Integer value) { + addCriterion("ID =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Integer value) { + addCriterion("ID <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Integer value) { + addCriterion("ID >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Integer value) { + addCriterion("ID >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Integer value) { + addCriterion("ID <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Integer value) { + addCriterion("ID <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("ID in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("ID not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Integer value1, Integer value2) { + addCriterion("ID between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Integer value1, Integer value2) { + addCriterion("ID not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andAmountIsNull() { + addCriterion("AMOUNT is null"); + return (Criteria) this; + } + + public Criteria andAmountIsNotNull() { + addCriterion("AMOUNT is not null"); + return (Criteria) this; + } + + public Criteria andAmountEqualTo(BigDecimal value) { + addCriterion("AMOUNT =", value, "amount"); + return (Criteria) this; + } + + public Criteria andAmountNotEqualTo(BigDecimal value) { + addCriterion("AMOUNT <>", value, "amount"); + return (Criteria) this; + } + + public Criteria andAmountGreaterThan(BigDecimal value) { + addCriterion("AMOUNT >", value, "amount"); + return (Criteria) this; + } + + public Criteria andAmountGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("AMOUNT >=", value, "amount"); + return (Criteria) this; + } + + public Criteria andAmountLessThan(BigDecimal value) { + addCriterion("AMOUNT <", value, "amount"); + return (Criteria) this; + } + + public Criteria andAmountLessThanOrEqualTo(BigDecimal value) { + addCriterion("AMOUNT <=", value, "amount"); + return (Criteria) this; + } + + public Criteria andAmountIn(List values) { + addCriterion("AMOUNT in", values, "amount"); + return (Criteria) this; + } + + public Criteria andAmountNotIn(List values) { + addCriterion("AMOUNT not in", values, "amount"); + return (Criteria) this; + } + + public Criteria andAmountBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("AMOUNT between", value1, value2, "amount"); + return (Criteria) this; + } + + public Criteria andAmountNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("AMOUNT not between", value1, value2, "amount"); + return (Criteria) this; + } + + public Criteria andTradeNoIsNull() { + addCriterion("TRADE_NO is null"); + return (Criteria) this; + } + + public Criteria andTradeNoIsNotNull() { + addCriterion("TRADE_NO is not null"); + return (Criteria) this; + } + + public Criteria andTradeNoEqualTo(String value) { + addCriterion("TRADE_NO =", value, "tradeNo"); + return (Criteria) this; + } + + public Criteria andTradeNoNotEqualTo(String value) { + addCriterion("TRADE_NO <>", value, "tradeNo"); + return (Criteria) this; + } + + public Criteria andTradeNoGreaterThan(String value) { + addCriterion("TRADE_NO >", value, "tradeNo"); + return (Criteria) this; + } + + public Criteria andTradeNoGreaterThanOrEqualTo(String value) { + addCriterion("TRADE_NO >=", value, "tradeNo"); + return (Criteria) this; + } + + public Criteria andTradeNoLessThan(String value) { + addCriterion("TRADE_NO <", value, "tradeNo"); + return (Criteria) this; + } + + public Criteria andTradeNoLessThanOrEqualTo(String value) { + addCriterion("TRADE_NO <=", value, "tradeNo"); + return (Criteria) this; + } + + public Criteria andTradeNoLike(String value) { + addCriterion("TRADE_NO like", value, "tradeNo"); + return (Criteria) this; + } + + public Criteria andTradeNoNotLike(String value) { + addCriterion("TRADE_NO not like", value, "tradeNo"); + return (Criteria) this; + } + + public Criteria andTradeNoIn(List values) { + addCriterion("TRADE_NO in", values, "tradeNo"); + return (Criteria) this; + } + + public Criteria andTradeNoNotIn(List values) { + addCriterion("TRADE_NO not in", values, "tradeNo"); + return (Criteria) this; + } + + public Criteria andTradeNoBetween(String value1, String value2) { + addCriterion("TRADE_NO between", value1, value2, "tradeNo"); + return (Criteria) this; + } + + public Criteria andTradeNoNotBetween(String value1, String value2) { + addCriterion("TRADE_NO not between", value1, value2, "tradeNo"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNull() { + addCriterion("CREATE_TIME is null"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNotNull() { + addCriterion("CREATE_TIME is not null"); + return (Criteria) this; + } + + public Criteria andCreateTimeEqualTo(Date value) { + addCriterion("CREATE_TIME =", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotEqualTo(Date value) { + addCriterion("CREATE_TIME <>", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThan(Date value) { + addCriterion("CREATE_TIME >", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) { + addCriterion("CREATE_TIME >=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThan(Date value) { + addCriterion("CREATE_TIME <", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThanOrEqualTo(Date value) { + addCriterion("CREATE_TIME <=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeIn(List values) { + addCriterion("CREATE_TIME in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotIn(List values) { + addCriterion("CREATE_TIME not in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeBetween(Date value1, Date value2) { + addCriterion("CREATE_TIME between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotBetween(Date value1, Date value2) { + addCriterion("CREATE_TIME not between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andTradeTypeIsNull() { + addCriterion("TRADE_TYPE is null"); + return (Criteria) this; + } + + public Criteria andTradeTypeIsNotNull() { + addCriterion("TRADE_TYPE is not null"); + return (Criteria) this; + } + + public Criteria andTradeTypeEqualTo(String value) { + addCriterion("TRADE_TYPE =", value, "tradeType"); + return (Criteria) this; + } + + public Criteria andTradeTypeNotEqualTo(String value) { + addCriterion("TRADE_TYPE <>", value, "tradeType"); + return (Criteria) this; + } + + public Criteria andTradeTypeGreaterThan(String value) { + addCriterion("TRADE_TYPE >", value, "tradeType"); + return (Criteria) this; + } + + public Criteria andTradeTypeGreaterThanOrEqualTo(String value) { + addCriterion("TRADE_TYPE >=", value, "tradeType"); + return (Criteria) this; + } + + public Criteria andTradeTypeLessThan(String value) { + addCriterion("TRADE_TYPE <", value, "tradeType"); + return (Criteria) this; + } + + public Criteria andTradeTypeLessThanOrEqualTo(String value) { + addCriterion("TRADE_TYPE <=", value, "tradeType"); + return (Criteria) this; + } + + public Criteria andTradeTypeLike(String value) { + addCriterion("TRADE_TYPE like", value, "tradeType"); + return (Criteria) this; + } + + public Criteria andTradeTypeNotLike(String value) { + addCriterion("TRADE_TYPE not like", value, "tradeType"); + return (Criteria) this; + } + + public Criteria andTradeTypeIn(List values) { + addCriterion("TRADE_TYPE in", values, "tradeType"); + return (Criteria) this; + } + + public Criteria andTradeTypeNotIn(List values) { + addCriterion("TRADE_TYPE not in", values, "tradeType"); + return (Criteria) this; + } + + public Criteria andTradeTypeBetween(String value1, String value2) { + addCriterion("TRADE_TYPE between", value1, value2, "tradeType"); + return (Criteria) this; + } + + public Criteria andTradeTypeNotBetween(String value1, String value2) { + addCriterion("TRADE_TYPE not between", value1, value2, "tradeType"); + return (Criteria) this; + } + + public Criteria andRemarkIsNull() { + addCriterion("REMARK is null"); + return (Criteria) this; + } + + public Criteria andRemarkIsNotNull() { + addCriterion("REMARK is not null"); + return (Criteria) this; + } + + public Criteria andRemarkEqualTo(String value) { + addCriterion("REMARK =", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotEqualTo(String value) { + addCriterion("REMARK <>", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThan(String value) { + addCriterion("REMARK >", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThanOrEqualTo(String value) { + addCriterion("REMARK >=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThan(String value) { + addCriterion("REMARK <", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThanOrEqualTo(String value) { + addCriterion("REMARK <=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLike(String value) { + addCriterion("REMARK like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotLike(String value) { + addCriterion("REMARK not like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkIn(List values) { + addCriterion("REMARK in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotIn(List values) { + addCriterion("REMARK not in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkBetween(String value1, String value2) { + addCriterion("REMARK between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotBetween(String value1, String value2) { + addCriterion("REMARK not between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andRecordUserIsNull() { + addCriterion("RECORD_USER is null"); + return (Criteria) this; + } + + public Criteria andRecordUserIsNotNull() { + addCriterion("RECORD_USER is not null"); + return (Criteria) this; + } + + public Criteria andRecordUserEqualTo(Integer value) { + addCriterion("RECORD_USER =", value, "recordUser"); + return (Criteria) this; + } + + public Criteria andRecordUserNotEqualTo(Integer value) { + addCriterion("RECORD_USER <>", value, "recordUser"); + return (Criteria) this; + } + + public Criteria andRecordUserGreaterThan(Integer value) { + addCriterion("RECORD_USER >", value, "recordUser"); + return (Criteria) this; + } + + public Criteria andRecordUserGreaterThanOrEqualTo(Integer value) { + addCriterion("RECORD_USER >=", value, "recordUser"); + return (Criteria) this; + } + + public Criteria andRecordUserLessThan(Integer value) { + addCriterion("RECORD_USER <", value, "recordUser"); + return (Criteria) this; + } + + public Criteria andRecordUserLessThanOrEqualTo(Integer value) { + addCriterion("RECORD_USER <=", value, "recordUser"); + return (Criteria) this; + } + + public Criteria andRecordUserIn(List values) { + addCriterion("RECORD_USER in", values, "recordUser"); + return (Criteria) this; + } + + public Criteria andRecordUserNotIn(List values) { + addCriterion("RECORD_USER not in", values, "recordUser"); + return (Criteria) this; + } + + public Criteria andRecordUserBetween(Integer value1, Integer value2) { + addCriterion("RECORD_USER between", value1, value2, "recordUser"); + return (Criteria) this; + } + + public Criteria andRecordUserNotBetween(Integer value1, Integer value2) { + addCriterion("RECORD_USER not between", value1, value2, "recordUser"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/order/entity/mapper/TbOrderItemMapper.java b/src/main/java/com/xmomen/module/order/entity/mapper/TbOrderItemMapper.java new file mode 100644 index 0000000..203e664 --- /dev/null +++ b/src/main/java/com/xmomen/module/order/entity/mapper/TbOrderItemMapper.java @@ -0,0 +1,16 @@ +package com.xmomen.module.order.entity.mapper; + +import com.xmomen.framework.mybatis.mapper.MybatisMapper; +import com.xmomen.module.order.entity.TbOrderItem; +import com.xmomen.module.order.entity.TbOrderItemExample; +import org.apache.ibatis.annotations.Param; + +public interface TbOrderItemMapper extends MybatisMapper { + int countByExample(TbOrderItemExample example); + + int deleteByExample(TbOrderItemExample example); + + int insertSelective(TbOrderItem record); + + int updateByExampleSelective(@Param("record") TbOrderItem record, @Param("example") TbOrderItemExample example); +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/order/entity/mapper/TbOrderSendLogMapper.java b/src/main/java/com/xmomen/module/order/entity/mapper/TbOrderSendLogMapper.java new file mode 100644 index 0000000..c1799ff --- /dev/null +++ b/src/main/java/com/xmomen/module/order/entity/mapper/TbOrderSendLogMapper.java @@ -0,0 +1,16 @@ +package com.xmomen.module.order.entity.mapper; + +import com.xmomen.framework.mybatis.mapper.MybatisMapper; +import com.xmomen.module.order.entity.TbOrderSendLog; +import com.xmomen.module.order.entity.TbOrderSendLogExample; +import org.apache.ibatis.annotations.Param; + +public interface TbOrderSendLogMapper extends MybatisMapper { + int countByExample(TbOrderSendLogExample example); + + int deleteByExample(TbOrderSendLogExample example); + + int insertSelective(TbOrderSendLog record); + + int updateByExampleSelective(@Param("record") TbOrderSendLog record, @Param("example") TbOrderSendLogExample example); +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/order/entity/mapper/TbTradeRecordMapper.java b/src/main/java/com/xmomen/module/order/entity/mapper/TbTradeRecordMapper.java new file mode 100644 index 0000000..222a74d --- /dev/null +++ b/src/main/java/com/xmomen/module/order/entity/mapper/TbTradeRecordMapper.java @@ -0,0 +1,16 @@ +package com.xmomen.module.order.entity.mapper; + +import com.xmomen.framework.mybatis.mapper.MybatisMapper; +import com.xmomen.module.order.entity.TbTradeRecord; +import com.xmomen.module.order.entity.TbTradeRecordExample; +import org.apache.ibatis.annotations.Param; + +public interface TbTradeRecordMapper extends MybatisMapper { + int countByExample(TbTradeRecordExample example); + + int deleteByExample(TbTradeRecordExample example); + + int insertSelective(TbTradeRecord record); + + int updateByExampleSelective(@Param("record") TbTradeRecord record, @Param("example") TbTradeRecordExample example); +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/order/mapper/OrderMapper.xml b/src/main/java/com/xmomen/module/order/mapper/OrderMapper.xml new file mode 100644 index 0000000..f57842f --- /dev/null +++ b/src/main/java/com/xmomen/module/order/mapper/OrderMapper.xml @@ -0,0 +1,748 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/java/com/xmomen/module/order/mapper/TradeRecordMapper.xml b/src/main/java/com/xmomen/module/order/mapper/TradeRecordMapper.xml new file mode 100644 index 0000000..bbeed16 --- /dev/null +++ b/src/main/java/com/xmomen/module/order/mapper/TradeRecordMapper.xml @@ -0,0 +1,20 @@ + + + + + + \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/order/model/CreateOrder.java b/src/main/java/com/xmomen/module/order/model/CreateOrder.java new file mode 100644 index 0000000..3da98ad --- /dev/null +++ b/src/main/java/com/xmomen/module/order/model/CreateOrder.java @@ -0,0 +1,329 @@ +package com.xmomen.module.order.model; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +import javax.validation.constraints.NotNull; + +import lombok.Data; +import org.hibernate.validator.constraints.NotBlank; +import org.hibernate.validator.constraints.NotEmpty; + +/** + * Created by Jeng on 16/4/5. + */ +public +@Data +class CreateOrder implements Serializable { + + /** + * 1-卡,2-劵,3-常规 + */ + @NotNull + private Integer orderType; + + /** + * 批量下单数 + */ + private Integer batchNumber; + + /** + * 订单编号 + */ + private String orderNo; + + private String batchNo; + + /** + * 1-微信订单,2-商城订单,3-客服下单,4-采摘订单 + */ + private Integer orderSource; + + /** + * 客户名称 + */ + private String name; + + /** + * 客户代码 + */ + private String memberCode; + + /** + * 客户联系方式 + */ + private String phone; + + /** + * 付款方式 + */ + @NotNull + private Integer paymentMode; + + /** + * 附加付款方式 + */ + private Integer otherPaymentMode; + + /** + * 支付关系编号(卡号/券号) + */ + private String paymentRelationNo; + + /** + * 收货人手机 + */ + @NotNull + @NotBlank + private String consigneePhone; + + /** + * 收货人姓名 + */ + @NotNull + @NotBlank + private String consigneeName; + + /** + * 收货人地址 + */ + @NotNull + @NotBlank + private String consigneeAddress; + + /** + * 订单备注 + */ + private String remark; + + /** + * 折扣 + */ + private Double discount; + + /** + * 是否显示金额 + */ + private Integer isShowAmount; + + /** + * 操作人 + */ + private Integer createUserId; + + /** + * 单位 + */ + private Integer companyId; + + /** + * 客户经理 + */ + private Integer managerId; + + private Date appointmentTime; + /** + * 折扣金额 + */ + private BigDecimal discountPrice; + /** + * 订单总金额(劵直接取,卡、常规订单后台在计算金额) + */ + private BigDecimal totalPrice; + @NotNull + @NotEmpty + private List orderItemList; + + public static class OrderItem implements Serializable { + @NotNull + private Integer orderItemId; + @NotNull + private BigDecimal itemQty; + + public Integer getOrderItemId() { + return orderItemId; + } + + public void setOrderItemId(Integer orderItemId) { + this.orderItemId = orderItemId; + } + + public BigDecimal getItemQty() { + return itemQty; + } + + public void setItemQty(BigDecimal itemQty) { + this.itemQty = itemQty; + } + } + + public String getMemberCode() { + return memberCode; + } + + public void setMemberCode(String memberCode) { + this.memberCode = memberCode; + } + + public Integer getOrderType() { + return orderType; + } + + public void setOrderType(Integer orderType) { + this.orderType = orderType; + } + + public Integer getOrderSource() { + return orderSource; + } + + public void setOrderSource(Integer orderSource) { + this.orderSource = orderSource; + } + + public String getConsigneePhone() { + return consigneePhone; + } + + public void setConsigneePhone(String consigneePhone) { + this.consigneePhone = consigneePhone; + } + + public String getConsigneeName() { + return consigneeName; + } + + public void setConsigneeName(String consigneeName) { + this.consigneeName = consigneeName; + } + + public String getConsigneeAddress() { + return consigneeAddress; + } + + public void setConsigneeAddress(String consigneeAddress) { + this.consigneeAddress = consigneeAddress; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public Integer getPaymentMode() { + return paymentMode; + } + + public void setPaymentMode(Integer paymentMode) { + this.paymentMode = paymentMode; + } + + public Double getDiscount() { + return discount; + } + + public void setDiscount(Double discount) { + this.discount = discount; + } + + public Integer getIsShowAmount() { + return isShowAmount; + } + + public void setIsShowAmount(Integer isShowAmount) { + this.isShowAmount = isShowAmount; + } + + public List getOrderItemList() { + return orderItemList; + } + + public void setOrderItemList(List orderItemList) { + this.orderItemList = orderItemList; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public Integer getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(Integer createUserId) { + this.createUserId = createUserId; + } + + public String getPaymentRelationNo() { + return paymentRelationNo; + } + + public void setPaymentRelationNo(String paymentRelationNo) { + this.paymentRelationNo = paymentRelationNo; + } + + public Date getAppointmentTime() { + return appointmentTime; + } + + public void setAppointmentTime(Date appointmentTime) { + this.appointmentTime = appointmentTime; + } + + public Integer getCompanyId() { + return companyId; + } + + public void setCompanyId(Integer companyId) { + this.companyId = companyId; + } + + public BigDecimal getDiscountPrice() { + return discountPrice; + } + + public void setDiscountPrice(BigDecimal discountPrice) { + this.discountPrice = discountPrice; + } + + public BigDecimal getTotalPrice() { + return totalPrice; + } + + public void setTotalPrice(BigDecimal totalPrice) { + this.totalPrice = totalPrice; + } + + public Integer getManagerId() { + return managerId; + } + + public void setManagerId(Integer managerId) { + this.managerId = managerId; + } + + public Integer getOtherPaymentMode() { + return otherPaymentMode; + } + + public void setOtherPaymentMode(Integer otherPaymentMode) { + this.otherPaymentMode = otherPaymentMode; + } +} diff --git a/src/main/java/com/xmomen/module/order/model/CreatePacking.java b/src/main/java/com/xmomen/module/order/model/CreatePacking.java new file mode 100644 index 0000000..39aefb2 --- /dev/null +++ b/src/main/java/com/xmomen/module/order/model/CreatePacking.java @@ -0,0 +1,21 @@ +package com.xmomen.module.order.model; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * Created by Jeng on 16/4/5. + */ +public class CreatePacking implements Serializable { + + @NotNull + private String orderNo; + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } +} diff --git a/src/main/java/com/xmomen/module/order/model/OrderQuery.java b/src/main/java/com/xmomen/module/order/model/OrderQuery.java new file mode 100644 index 0000000..b6c3476 --- /dev/null +++ b/src/main/java/com/xmomen/module/order/model/OrderQuery.java @@ -0,0 +1,44 @@ +package com.xmomen.module.order.model; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * Created by Jeng on 2016/5/19. + */ +public @Data +class OrderQuery implements Serializable { + + private Integer id; + private String orderNo; + private String[] orderNos; + private String keyword; + private Integer orderStatus; + private Integer packingTaskStatus; + private Integer packingTaskUserId; + private String packingTaskCreateTimeStart; + private String packingTaskCreateTimeEnd; + private Integer createUserId; + private boolean isHasPackingTaskUserId; + private Integer managerId; + private Integer companyId; + private String consigneeName; + private boolean hasNoShowCancel; + private Integer showDespatch; + private Integer showPackingAssigns; + + private String orderCreateTimeStart; + private String orderCreateTimeEnd; + private String despatchExpressCode; + + private Integer despatchExpressId; + + private String couponNumber; + + private String appointmentTimeStart; + private String appointmentTimeEnd; + + private Integer isTwoSend; +} diff --git a/src/main/java/com/xmomen/module/order/model/PackingModel.java b/src/main/java/com/xmomen/module/order/model/PackingModel.java new file mode 100644 index 0000000..9b8ae3f --- /dev/null +++ b/src/main/java/com/xmomen/module/order/model/PackingModel.java @@ -0,0 +1,20 @@ +package com.xmomen.module.order.model; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * Created by Jeng on 16/4/6. + */ +public @Data +class PackingModel implements Serializable { + + private Integer id; + private String orderNo; + private String packingNo; + private Date packingTime; + private Integer packingStatus; + private String packingStatusDesc; +} diff --git a/src/main/java/com/xmomen/module/order/model/PackingOrderItemModel.java b/src/main/java/com/xmomen/module/order/model/PackingOrderItemModel.java new file mode 100644 index 0000000..06c9a9e --- /dev/null +++ b/src/main/java/com/xmomen/module/order/model/PackingOrderItemModel.java @@ -0,0 +1,20 @@ +package com.xmomen.module.order.model; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * Created by Jeng on 2016/5/21. + */ +public @Data +class PackingOrderItemModel implements Serializable { + + private String itemCode; + private String itemName; + private String packingStatusDesc; + private BigDecimal itemQty; + private BigDecimal packedItemQty; + +} diff --git a/src/main/java/com/xmomen/module/order/model/PackingOrderModel.java b/src/main/java/com/xmomen/module/order/model/PackingOrderModel.java new file mode 100644 index 0000000..881af99 --- /dev/null +++ b/src/main/java/com/xmomen/module/order/model/PackingOrderModel.java @@ -0,0 +1,23 @@ +package com.xmomen.module.order.model; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * Created by Jeng on 2016/5/21. + */ +public @Data +class PackingOrderModel implements Serializable { + + private Integer orderItemId; + private String orderNo; + private String packingNo; + private String itemCode; + private String itemName; + private String packingStatusDesc; + private BigDecimal itemQty; + private BigDecimal packedItemQty; + +} diff --git a/src/main/java/com/xmomen/module/order/model/PackingOrderQuery.java b/src/main/java/com/xmomen/module/order/model/PackingOrderQuery.java new file mode 100644 index 0000000..a804c95 --- /dev/null +++ b/src/main/java/com/xmomen/module/order/model/PackingOrderQuery.java @@ -0,0 +1,19 @@ +package com.xmomen.module.order.model; + +import lombok.Data; + +import java.io.Serializable; + +/** + * Created by Jeng on 2016/5/21. + */ +public @Data +class PackingOrderQuery implements Serializable { + + private Integer orderId; + private String orderNo; + private Integer orderItemId; + private String keyword; + private String itemCode; + private String[] orderNos; +} diff --git a/src/main/java/com/xmomen/module/order/model/PackingRecordQuery.java b/src/main/java/com/xmomen/module/order/model/PackingRecordQuery.java new file mode 100644 index 0000000..41a55be --- /dev/null +++ b/src/main/java/com/xmomen/module/order/model/PackingRecordQuery.java @@ -0,0 +1,22 @@ +package com.xmomen.module.order.model; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * Created by Jeng on 2016/5/21. + */ +public @Data +class PackingRecordQuery implements Serializable { + /** + * ID + */ + private Integer id; + + private String keyword; + + private Integer orderItemId; + +} diff --git a/src/main/java/com/xmomen/module/order/model/PackingTask.java b/src/main/java/com/xmomen/module/order/model/PackingTask.java new file mode 100644 index 0000000..ac8f6b6 --- /dev/null +++ b/src/main/java/com/xmomen/module/order/model/PackingTask.java @@ -0,0 +1,28 @@ +package com.xmomen.module.order.model; + +import lombok.Data; +import org.hibernate.validator.constraints.NotEmpty; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.List; + +/** + * Created by Jeng on 16/5/25. + */ +public @Data +class PackingTask implements Serializable { + + /** + * 订单号集合 + */ + @NotNull + @NotEmpty + private List orderNos; + /** + * 装箱任务负责人ID + */ + @NotNull + private Integer packingTaskUserId; + +} diff --git a/src/main/java/com/xmomen/module/order/model/PurchaseModel.java b/src/main/java/com/xmomen/module/order/model/PurchaseModel.java new file mode 100644 index 0000000..6a18abf --- /dev/null +++ b/src/main/java/com/xmomen/module/order/model/PurchaseModel.java @@ -0,0 +1,36 @@ +package com.xmomen.module.order.model; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +import lombok.Data; + +import org.jeecgframework.poi.excel.annotation.Excel; + +/** + * Created by Jeng on 2016/4/25. + */ +public @Data +class PurchaseModel implements Serializable { + + private int purchaseId; + @Excel(name="采购单号") + private String purchaseCode; + private Integer purchaseStatus; + private String purchaseStatusDesc; + private int cdItemId; + @Excel(name="商品名称") + private String itemName; + private String itemCode; + private String itemUnit; + @Excel(name="采购总数") + private BigDecimal totalItemQty; + private BigDecimal totalWeight; + private int distributeValue; + private int packageValue; + private int packingValue; + private String sellUnit; + private String spec; + private Date createDate; +} diff --git a/src/main/java/com/xmomen/module/order/model/ReturnOrder.java b/src/main/java/com/xmomen/module/order/model/ReturnOrder.java new file mode 100644 index 0000000..b3d8368 --- /dev/null +++ b/src/main/java/com/xmomen/module/order/model/ReturnOrder.java @@ -0,0 +1,22 @@ +package com.xmomen.module.order.model; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +/** + * Created by tanxinzheng on 16/8/17. + */ +public @Data class ReturnOrder implements Serializable { + + private String orderNo; + + private List itemList; + + public static @Data class Item implements Serializable { + private String itemCode; + private Integer itemNumber; + } +} diff --git a/src/main/java/com/xmomen/module/order/model/UpdateOrder.java b/src/main/java/com/xmomen/module/order/model/UpdateOrder.java new file mode 100644 index 0000000..7b05186 --- /dev/null +++ b/src/main/java/com/xmomen/module/order/model/UpdateOrder.java @@ -0,0 +1,164 @@ +package com.xmomen.module.order.model; + +import lombok.Data; + +import org.hibernate.validator.constraints.NotBlank; +import org.hibernate.validator.constraints.NotEmpty; + +import javax.validation.constraints.NotNull; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * Created by Jeng on 16/4/5. + */ +public @Data class UpdateOrder implements Serializable { + + private String orderNo; + + @NotNull + private Integer id; + /** + * 1-卡,2-劵,3-常规 + */ + @NotNull + private Integer orderType; + + private String batchNo; + + /** + * 1-微信订单,2-商城订单,3-客服下单,4-采摘订单 + */ + private Integer orderSource; + + /** + * 客户名称 + */ + private String name; + + /** + * 客户代码 + */ + private String memberCode; + + /** + * 客户联系方式 + */ + private String phone; + + /** + * 付款方式 + */ + @NotNull + private Integer paymentMode; + + /** + * 附加付款方式 + */ + private Integer otherPaymentMode; + + /** + * 支付关系编号(卡号/券号) + */ + private String paymentRelationNo; + + /** + * 收货人手机 + */ + @NotNull + @NotBlank + private String consigneePhone; + + /** + * 收货人姓名 + */ + @NotNull + @NotBlank + private String consigneeName; + + /** + * 收货人地址 + */ + @NotNull + @NotBlank + private String consigneeAddress; + + /** + * 订单备注 + */ + private String remark; + + /** + * 折扣 + */ + private Double discount; + + /** + * 是否显示金额 + */ + private Integer isShowAmount; + + /** + * 操作人 + */ + private Integer createUserId; + + /** + * 单位 + */ + private Integer companyId; + /** + * 客户经理 + */ + private Integer managerId; + /** + * 折扣金额 + */ + private BigDecimal discountPrice; + /** + * 订单总金额(劵直接取,卡、常规订单后台在计算金额) + */ + private BigDecimal totalPrice; + + private Date appointmentTime; + @NotNull + @NotEmpty + private List orderItemList; + + public static class OrderItem implements Serializable { + @NotNull + private String itemCode; + @NotNull + private Integer orderItemId; + @NotNull + private BigDecimal itemQty; + + public String getItemCode() { + return itemCode; + } + + public void setItemCode(String itemCode) { + this.itemCode = itemCode; + } + + public Integer getOrderItemId() { + return orderItemId; + } + + public void setOrderItemId(Integer orderItemId) { + this.orderItemId = orderItemId; + } + + public BigDecimal getItemQty() { + return itemQty; + } + + public void setItemQty(BigDecimal itemQty) { + this.itemQty = itemQty; + } + } + +} diff --git a/src/main/java/com/xmomen/module/order/service/PackingService.java b/src/main/java/com/xmomen/module/order/service/PackingService.java new file mode 100644 index 0000000..85edfd8 --- /dev/null +++ b/src/main/java/com/xmomen/module/order/service/PackingService.java @@ -0,0 +1,297 @@ +package com.xmomen.module.order.service; + +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.framework.utils.DateUtils; +import com.xmomen.framework.utils.StringUtilsExt; +import com.xmomen.module.base.entity.CdItem; +import com.xmomen.module.order.entity.*; +import com.xmomen.module.order.mapper.OrderMapper; +import com.xmomen.module.order.model.*; +import com.xmomen.module.system.entity.SysTask; +import com.xmomen.module.system.model.CreateTask; +import com.xmomen.module.system.service.TaskService; + +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.math.BigDecimal; +import java.text.MessageFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Created by Jeng on 16/4/5. + */ +@Service +public class PackingService { + + @Autowired + MybatisDao mybatisDao; + + @Autowired + TaskService taskService; + + @Autowired + OrderService orderService; + + public Page getPackingTaskCountList(Object o, Integer limit, Integer offset){ + Map map = new HashMap(); + map.put("roleType", "zhuangxiangzu"); + return (Page) mybatisDao.selectPage(OrderMapper.ORDER_MAPPER_NAMESPACE + "countPackingTask", map, limit, offset); + } + + public Page getPackingList(PackingQuery packingQuery, Integer limit, Integer offset){ + return (Page) mybatisDao.selectPage(OrderMapper.ORDER_MAPPER_NAMESPACE + "queryPackingModel", packingQuery, limit, offset); + } + + public List getPackingList(PackingQuery packingQuery){ + return mybatisDao.getSqlSessionTemplate().selectList(OrderMapper.ORDER_MAPPER_NAMESPACE + "queryPackingModel", packingQuery); + } + + @Transactional + /***新增装箱记录****/ + public TbPacking create(CreatePacking createPacking){ + //生成一个装箱码 + TbPacking tbPacking = new TbPacking(); + tbPacking.setPackingNo(DateUtils.getDateTimeString()); + tbPacking.setPackingStatus(0); + tbPacking = mybatisDao.insertByModel(tbPacking); + //记录订单的装箱码 + TbOrderRelation tbOrderRelation = new TbOrderRelation(); + tbOrderRelation.setOrderNo(createPacking.getOrderNo()); + tbOrderRelation.setRefType(OrderMapper.ORDER_PACKING_RELATION_CODE); + tbOrderRelation.setRefValue(tbPacking.getPackingNo()); + mybatisDao.insert(tbOrderRelation); + //更新订单的总箱数 + TbOrder order = new TbOrder(); + order.setOrderNo(createPacking.getOrderNo()); + order = mybatisDao.selectOneByModel(order); + order.setTotalBoxNum(order.getTotalBoxNum() + 1); + mybatisDao.update(order); + return tbPacking; + } + + /** + * 生成装箱任务 + * @param packingTask + */ + @Transactional + public void dispatchPackingTask(PackingTask packingTask){ + for (String orderNo : packingTask.getOrderNos()) { + //生成装箱任务 + CreateTask createTask = new CreateTask(); + createTask.setTaskHeadId(1); + createTask.setExecutorId(packingTask.getPackingTaskUserId()); + SysTask sysTask = taskService.createTask(createTask); + //任务和订单关联关系 + TbOrderRelation tbOrderRelation = new TbOrderRelation(); + tbOrderRelation.setOrderNo(orderNo); + tbOrderRelation.setRefType(OrderMapper.ORDER_PACKING_TASK_RELATION_CODE); + tbOrderRelation.setRefValue(String.valueOf(sysTask.getId())); + mybatisDao.insert(tbOrderRelation); + //更新订单状态为待装箱 + orderService.updateOrderStatus(orderNo, "13"); + } + } + + @Transactional + public void cancelPackingTask(String[] orderNoArray){ + TbOrderRelationExample tbOrderRelationExample = new TbOrderRelationExample(); + tbOrderRelationExample.createCriteria().andOrderNoIn(CollectionUtils.arrayToList(orderNoArray)).andRefTypeEqualTo(OrderMapper.ORDER_PACKING_TASK_RELATION_CODE); + List tbOrderRelationList = mybatisDao.selectByExample(tbOrderRelationExample); + Integer[] taskIds = new Integer[tbOrderRelationList.size()]; + for (int i = 0; i < tbOrderRelationList.size(); i++) { + TbOrderRelation tbOrderRelation = tbOrderRelationList.get(i); + mybatisDao.deleteByPrimaryKey(TbOrderRelation.class, tbOrderRelation.getId()); + taskIds[i] = Integer.valueOf(tbOrderRelation.getRefValue()); + //订单状态变为采购中 + orderService.updateOrderStatus(tbOrderRelation.getOrderNo(), "2"); + } + taskService.cancelTask(taskIds); + } + + @Transactional + public ScanModel createRecord(CreatePackingRecord createPackingRecord) { + // 根据UPC查询匹配的商品信息,若无则表示UPC不正确 + String itemCode = createPackingRecord.getUpc().substring(0, 7); + CdItem cdItem = new CdItem(); + cdItem.setItemCode(itemCode); + cdItem = mybatisDao.selectOneByModel(cdItem); + if(cdItem == null){ + throw new IllegalArgumentException("非法的UPC号码,未找到匹配商品编号"); + } + Map packingInfo = createPackingRecord.getPackingInfo(); + + // 查询装箱订单中是否有匹配的产品,且未商品装箱数未达到上限 + PackingOrderQuery packingOrderQuery = new PackingOrderQuery(); + packingOrderQuery.setOrderNos(packingInfo.keySet().toArray(new String[packingInfo.keySet().size()])); + packingOrderQuery.setItemCode(itemCode); + List packingRecordModels = queryPackingOrder(packingOrderQuery); + if(packingRecordModels == null || packingRecordModels.size() == 0){ + throw new IllegalArgumentException("所选装箱订单中未订购此商品"); + } + PackingOrderModel currentPackingOrder = null; + for (PackingOrderModel packingOrderModel : packingRecordModels) { + if(packingOrderModel.getPackedItemQty().compareTo(packingOrderModel.getItemQty()) < 0){ + // 商品已装箱数小于商品订购数则放入此装箱订单中 + currentPackingOrder = packingOrderModel; + break; + } + } + if(currentPackingOrder == null){ + throw new IllegalArgumentException("所选装箱订单中已全部完成此商品装箱"); + } + TbOrderRelation tbOrderRelation = new TbOrderRelation(); + tbOrderRelation.setOrderNo(currentPackingOrder.getOrderNo()); + tbOrderRelation.setRefType(OrderMapper.ORDER_PACKING_TASK_RELATION_CODE); + tbOrderRelation = mybatisDao.selectOneByModel(tbOrderRelation); + if(tbOrderRelation == null){ + throw new IllegalArgumentException(MessageFormat.format("此订单未分配装箱任务,订单编号:{0}", currentPackingOrder.getOrderNo())); + } + SysTask sysTask = mybatisDao.selectByPrimaryKey(SysTask.class, Integer.valueOf(tbOrderRelation.getRefValue())); + if(sysTask == null){ + throw new IllegalArgumentException(MessageFormat.format("此订单未分配装箱任务,订单编号:{0}", currentPackingOrder.getOrderNo())); + }else if(sysTask.getTaskStatus() == 0){ + sysTask.setTaskStatus(1); + sysTask.setStartTime(mybatisDao.getSysdate()); + mybatisDao.update(sysTask); + } + packingOrderQuery.setOrderItemId(currentPackingOrder.getOrderItemId()); + PackingOrderModel packingRecordModel = getOnePackingOrder(packingOrderQuery); + if(packingRecordModel != null && packingRecordModel.getItemQty().compareTo(packingRecordModel.getPackedItemQty()) == 0){ + throw new IllegalArgumentException("装箱数量已到达订单采购数量"); + } + + //计重产品要判断相同条形码 条形码不能多次扫描 + if("0".equals(cdItem.getSellUnit())){ + // 判断UPC是否已被扫描,若已扫描则做删除操作 + TbPackingRecordExample tbPackingRecordExample = new TbPackingRecordExample(); + tbPackingRecordExample.createCriteria().andUpcEqualTo(createPackingRecord.getUpc()) + .andPackingIdEqualTo(packingInfo.get(currentPackingOrder.getOrderNo())); + TbPackingRecord removePackingRecord = mybatisDao.selectOneByExample(tbPackingRecordExample); + if(removePackingRecord != null){ + //deleteRecord(removePackingRecord.getId()); + throw new IllegalArgumentException("订单号【"+currentPackingOrder.getOrderNo()+"】,UPC编号:【" + createPackingRecord.getUpc() + "】已经存在!"); + } + } + + TbPackingRecord tbPackingRecord = new TbPackingRecord(); + //获取订单ID + tbPackingRecord.setPackingId(packingInfo.get(currentPackingOrder.getOrderNo())); + tbPackingRecord.setScanTime(mybatisDao.getSysdate()); + tbPackingRecord.setUpc(createPackingRecord.getUpc()); + tbPackingRecord.setOrderItemId(currentPackingOrder.getOrderItemId()); + tbPackingRecord = mybatisDao.insertByModel(tbPackingRecord); + PackingOrderQuery packingOrderQuery1 = new PackingOrderQuery(); + packingOrderQuery1.setOrderNo(currentPackingOrder.getOrderNo()); + List packingOrderModelList = queryPackingOrder(packingOrderQuery1); + boolean isFinished = true; + for (PackingOrderModel packingOrderModel : packingOrderModelList) { + if(!"已完成".equals(packingOrderModel.getPackingStatusDesc())){ + isFinished = false; + break; + } + } + if(isFinished){ + sysTask.setFinishTime(mybatisDao.getSysdate()); + sysTask.setTaskStatus(2);//已完成装箱 + mybatisDao.update(sysTask); + // 完成装箱,订单状态扭转到待配送:4 + orderService.updateOrderStatus(currentPackingOrder.getOrderNo(), "4"); + }else if(!isFinished){ + sysTask.setTaskStatus(1);//待完成装箱 + mybatisDao.update(sysTask); + //订单状态装箱中 + orderService.updateOrderStatus(currentPackingOrder.getOrderNo(), "3"); + } + ScanModel scanModel = new ScanModel(); + BeanUtils.copyProperties(tbPackingRecord, scanModel); + scanModel.setOrderNo(currentPackingOrder.getOrderNo()); + scanModel.setTaskStatus(sysTask.getTaskStatus()); + return scanModel; + } + + + public List autoPacking(String orderNo, Integer packingId){ + List scanModelList = new ArrayList<>(); + // 查询当前订单未装箱商品 + PackingOrderQuery packingOrderQuery = new PackingOrderQuery(); + packingOrderQuery.setOrderNo(orderNo); + List packingOrderModelList = queryPackingOrder(packingOrderQuery); + for (PackingOrderModel packingOrderModel : packingOrderModelList) { + if(!"已完成".equals(packingOrderModel.getPackingStatusDesc())){ + BigDecimal total = packingOrderModel.getItemQty(); + BigDecimal need = packingOrderModel.getPackedItemQty(); + BigDecimal num = total.subtract(need); + if(BigDecimal.ZERO.compareTo(num) < 0){ + int n = num.intValue(); + for (int i = 0; i < n; i++) { + //自动装箱 条码默认为商品编码 + String upc = packingOrderModel.getItemCode(); + Map map = new HashMap<>(); + map.put(orderNo, packingId); + CreatePackingRecord createPackingRecord = new CreatePackingRecord(); + createPackingRecord.setPackingInfo(map); + createPackingRecord.setUpc(upc+String.valueOf((int)((Math.random()*9+1)*100000))); + ScanModel scanModel = createRecord(createPackingRecord); + scanModelList.add(scanModel); + } + } + } + } + return scanModelList; + } + + @Transactional + public void delete(Integer packingId){ + TbPackingRecordExample tbPackingRecordExample = new TbPackingRecordExample(); + tbPackingRecordExample.createCriteria().andPackingIdEqualTo(packingId); + mybatisDao.deleteByExample(tbPackingRecordExample); + } + + @Transactional + public void deleteRecord(Integer recordId){ + TbPackingRecord tbPackingRecord = mybatisDao.selectByPrimaryKey(TbPackingRecord.class, recordId); + if(tbPackingRecord != null){ + TbOrderItem tbOrderItem = mybatisDao.selectByPrimaryKey(TbOrderItem.class, tbPackingRecord.getOrderItemId()); + TbOrderRelation tbOrderRelation = new TbOrderRelation(); + tbOrderRelation.setOrderNo(tbOrderItem.getOrderNo()); + tbOrderRelation.setRefType(OrderMapper.ORDER_PACKING_TASK_RELATION_CODE); + tbOrderRelation = mybatisDao.selectOneByModel(tbOrderRelation); + SysTask sysTask = mybatisDao.selectByPrimaryKey(SysTask.class, Integer.valueOf(tbOrderRelation.getRefValue())); + sysTask.setTaskStatus(1); + mybatisDao.update(sysTask); + } + mybatisDao.deleteByPrimaryKey(TbPackingRecord.class, recordId); + } + + public PackingOrderModel getOnePackingOrder(PackingOrderQuery packingOrderQuery){ + return mybatisDao.getSqlSessionTemplate().selectOne(OrderMapper.ORDER_MAPPER_NAMESPACE + "queryPackingOrderItemModel", packingOrderQuery); + } + + public List queryPackingOrder(PackingOrderQuery packingOrderQuery){ + return mybatisDao.getSqlSessionTemplate().selectList(OrderMapper.ORDER_MAPPER_NAMESPACE + "queryPackingOrderItemModel", packingOrderQuery); + } + + public Page queryPackingOrder(PackingOrderQuery packingOrderQuery, Integer limit, Integer offset){ + return (Page) mybatisDao.selectPage(OrderMapper.ORDER_MAPPER_NAMESPACE + "queryPackingOrderItemModel", packingOrderQuery, limit, offset); + } + + public Page queryPackingOrderItem(PackingOrderQuery packingOrderQuery, Integer limit, Integer offset){ + return (Page) mybatisDao.selectPage(OrderMapper.ORDER_MAPPER_NAMESPACE + "queryCountPackingOrderItemModel", packingOrderQuery, limit, offset); + } + + public List queryPackingRecord(PackingRecordQuery queryPackingRecord){ + return mybatisDao.getSqlSessionTemplate().selectList(OrderMapper.ORDER_MAPPER_NAMESPACE + "queryPackingRecordModel", queryPackingRecord); + } + + public Page queryPackingRecord(PackingRecordQuery queryPackingRecord, Integer limit, Integer offset){ + return (Page) mybatisDao.selectPage(OrderMapper.ORDER_MAPPER_NAMESPACE + "queryPackingRecordModel", queryPackingRecord, limit, offset); + } +} diff --git a/src/main/java/com/xmomen/module/order/service/PurchaseService.java b/src/main/java/com/xmomen/module/order/service/PurchaseService.java new file mode 100644 index 0000000..6d16028 --- /dev/null +++ b/src/main/java/com/xmomen/module/order/service/PurchaseService.java @@ -0,0 +1,155 @@ +package com.xmomen.module.order.service; + +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; + +import org.apache.commons.collections.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.framework.utils.DateUtils; +import com.xmomen.framework.utils.StringUtilsExt; +import com.xmomen.module.order.entity.TbOrder; +import com.xmomen.module.order.entity.TbOrderExample; +import com.xmomen.module.order.entity.TbOrderRelation; +import com.xmomen.module.order.entity.TbPurchase; +import com.xmomen.module.order.entity.TbPurchaseExample; +import com.xmomen.module.order.mapper.OrderMapper; +import com.xmomen.module.order.model.CreatePurchase; +import com.xmomen.module.order.model.OrderPurchaseModel; +import com.xmomen.module.order.model.PurchaseModel; + +/** + * Created by Jeng on 16/4/5. + */ +@Service +public class PurchaseService { + + @Autowired + MybatisDao mybatisDao; + + /** + * 查询采购单 + * + * @param keyword + * @param limit + * @param offset + * @return + */ + public Page getPurchaseList(Map param, Integer limit, Integer offset) { + return (Page) mybatisDao.selectPage(OrderMapper.ORDER_MAPPER_NAMESPACE + "getPurchaseList", param, limit, offset); + } + + /** + * 查询采购单 + * + * @param keyword + * @param limit + * @param offset + * @return + */ + public List getPurchaseList(Map param) { + return mybatisDao.getSqlSessionTemplate().selectList(OrderMapper.ORDER_MAPPER_NAMESPACE + "getPurchaseList", param); + } + + /** + * 创建采购单 + * + * @param createPurchase + * @return + */ + @Transactional + public synchronized void createPurchase(CreatePurchase createPurchase) { + Map param = new HashMap(); + + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + if (createPurchase.getAppointmentTimeStart() != null) { + param.put("startTime", format.format(createPurchase.getAppointmentTimeStart())); + param.put("endTime", format.format(createPurchase.getAppointmentTimeEnd())); + } + else { + param.put("startTime", format.format(createPurchase.getOrderDate())); + param.put("endTime", format.format(new Date(createPurchase.getOrderDate().getTime() + 24 * 3600 * 1000))); + } + List purchaseModelList = mybatisDao.getSqlSessionTemplate().selectList(OrderMapper.ORDER_MAPPER_NAMESPACE + "getOrderPurchaseList", param); + if (CollectionUtils.isEmpty(purchaseModelList)) { + if (createPurchase.getAppointmentTimeStart() != null) { + throw new IllegalArgumentException("选定的配送日期内没有需要生成采购计划的订单"); + } + else { + throw new IllegalArgumentException("今天没有需要生成采购计划的订单"); + } + } + Map tbPurchaseMap = new HashMap(); + List orderNoList = new ArrayList(); + String purchaseCode = DateUtils.getDateTimeString(); + for (OrderPurchaseModel purchaseModel : purchaseModelList) { + if (tbPurchaseMap.get(purchaseModel.getItemCode()) == null) { + TbPurchase tbPurchase = new TbPurchase(); + tbPurchase.setPurchaseCode(purchaseCode); + tbPurchase.setCreateDate(mybatisDao.getSysdate()); + tbPurchase.setPurchaseStatus(0); + tbPurchase.setItemCode(purchaseModel.getItemCode()); + tbPurchase.setTotal(purchaseModel.getTotalItemQty()); + tbPurchase.setTotalWeight(purchaseModel.getTotalWeight()); + tbPurchaseMap.put(purchaseModel.getItemCode(), tbPurchase); + } + else { + BigDecimal total = tbPurchaseMap.get(purchaseModel.getItemCode()).getTotal().add(purchaseModel.getTotalItemQty()); + BigDecimal totalWeight = tbPurchaseMap.get(purchaseModel.getItemCode()).getTotalWeight().add(purchaseModel.getTotalWeight()); + tbPurchaseMap.get(purchaseModel.getItemCode()).setTotal(total); + tbPurchaseMap.get(purchaseModel.getItemCode()).setTotalWeight(totalWeight); + } + orderNoList.add(purchaseModel.getOrderNo()); + } + for (TbPurchase tbPurchase : tbPurchaseMap.values()) { + mybatisDao.insert(tbPurchase); + } + //去除重复的订单号 + HashSet h = new HashSet(orderNoList); + orderNoList.clear(); + orderNoList.addAll(h); + TbOrder tbOrder = new TbOrder(); + tbOrder.setOrderStatus("2");//待采购 + TbOrderExample tbOrderExample = new TbOrderExample(); + tbOrderExample.createCriteria() + .andOrderStatusEqualTo("1") + .andOrderNoIn(orderNoList); + mybatisDao.updateByExampleSelective(tbOrder, tbOrderExample); + for (String orderNo : orderNoList) { + TbOrderRelation tbOrderRelation = new TbOrderRelation(); + tbOrderRelation.setRefType("ORDER_PURCHASE_CODE"); + tbOrderRelation.setOrderNo(orderNo); + tbOrderRelation.setRefValue(purchaseCode); + mybatisDao.insert(tbOrderRelation); + } + } + + @Transactional + public void updatePurchaseStatus(Integer id, Integer purchaseStatus) { + TbPurchaseExample tbPurchaseExample = new TbPurchaseExample(); + tbPurchaseExample.createCriteria().andIdEqualTo(id); + TbPurchase tbPurchase = new TbPurchase(); + tbPurchase.setPurchaseStatus(purchaseStatus); + mybatisDao.updateOneByExampleSelective(tbPurchase, tbPurchaseExample); + } + + /** + * 删除采购单 + * + * @param id + */ + public void deletePurchase(Integer id) { + mybatisDao.deleteByPrimaryKey(TbPurchase.class, id); + } + +} diff --git a/src/main/java/com/xmomen/module/pick/controller/PickController.java b/src/main/java/com/xmomen/module/pick/controller/PickController.java new file mode 100644 index 0000000..87c2c4a --- /dev/null +++ b/src/main/java/com/xmomen/module/pick/controller/PickController.java @@ -0,0 +1,53 @@ +package com.xmomen.module.pick.controller; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.framework.web.exceptions.ArgumentValidException; +import com.xmomen.module.logger.Log; +import com.xmomen.module.pick.model.CreateMember; +import com.xmomen.module.pick.model.PickVo; +import com.xmomen.module.pick.service.PickService; + +/** + */ +@RestController +public class PickController { + + @Autowired + PickService pickService; + + @Autowired + MybatisDao mybatisDao; + + /** + * 采摘结算 + * @param createPurchase + * @param bindingResult + * @return + */ + @RequestMapping(value = "/pick/settleAccounts", method = RequestMethod.PUT) + @Log(actionName = "采摘结算") + public void settleAccounts(@RequestBody @Valid PickVo pickVo, BindingResult bindingResult) throws ArgumentValidException { + if(bindingResult != null && bindingResult.hasErrors()){ + throw new ArgumentValidException(bindingResult); + } + pickService.pick(pickVo); + } + + @RequestMapping(value = "/pick/pickCard", method = RequestMethod.PUT) + @Log(actionName = "办新卡") + public void pickCard(@RequestBody @Valid CreateMember createMember, BindingResult bindingResult) throws ArgumentValidException { + if(bindingResult != null && bindingResult.hasErrors()){ + throw new ArgumentValidException(bindingResult); + } + pickService.pickCard(createMember); + } +} diff --git a/src/main/java/com/xmomen/module/pick/entity/TbExchangeCardLog.java b/src/main/java/com/xmomen/module/pick/entity/TbExchangeCardLog.java new file mode 100644 index 0000000..2613b09 --- /dev/null +++ b/src/main/java/com/xmomen/module/pick/entity/TbExchangeCardLog.java @@ -0,0 +1,148 @@ +package com.xmomen.module.pick.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "tb_exchange_card_log") +public class TbExchangeCardLog extends BaseMybatisModel { + /** + * 主键 + */ + private Integer id; + + /** + * 旧卡ID + */ + private Integer oldCouponId; + + /** + * 旧卡卡号 + */ + private String oldCouponNo; + + /** + * + */ + private Integer newCouponId; + + /** + * + */ + private String newCouponNo; + + /** + * 换卡操作者 + */ + private Integer rechargeUser; + + /** + * 换卡采摘点 + */ + private Integer rechargePlace; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "OLD_COUPON_ID") + public Integer getOldCouponId() { + return oldCouponId; + } + + public void setOldCouponId(Integer oldCouponId) { + this.oldCouponId = oldCouponId; + if(oldCouponId == null){ + removeValidField("oldCouponId"); + return; + } + addValidField("oldCouponId"); + } + + @Column(name = "OLD_COUPON_NO") + public String getOldCouponNo() { + return oldCouponNo; + } + + public void setOldCouponNo(String oldCouponNo) { + this.oldCouponNo = oldCouponNo; + if(oldCouponNo == null){ + removeValidField("oldCouponNo"); + return; + } + addValidField("oldCouponNo"); + } + + @Column(name = "NEW_COUPON_ID") + public Integer getNewCouponId() { + return newCouponId; + } + + public void setNewCouponId(Integer newCouponId) { + this.newCouponId = newCouponId; + if(newCouponId == null){ + removeValidField("newCouponId"); + return; + } + addValidField("newCouponId"); + } + + @Column(name = "NEW_COUPON_NO") + public String getNewCouponNo() { + return newCouponNo; + } + + public void setNewCouponNo(String newCouponNo) { + this.newCouponNo = newCouponNo; + if(newCouponNo == null){ + removeValidField("newCouponNo"); + return; + } + addValidField("newCouponNo"); + } + + @Column(name = "RECHARGE_USER") + public Integer getRechargeUser() { + return rechargeUser; + } + + public void setRechargeUser(Integer rechargeUser) { + this.rechargeUser = rechargeUser; + if(rechargeUser == null){ + removeValidField("rechargeUser"); + return; + } + addValidField("rechargeUser"); + } + + @Column(name = "RECHARGE_PLACE") + public Integer getRechargePlace() { + return rechargePlace; + } + + public void setRechargePlace(Integer rechargePlace) { + this.rechargePlace = rechargePlace; + if(rechargePlace == null){ + removeValidField("rechargePlace"); + return; + } + addValidField("rechargePlace"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/pick/entity/TbExchangeCardLogExample.java b/src/main/java/com/xmomen/module/pick/entity/TbExchangeCardLogExample.java new file mode 100644 index 0000000..35f6f7d --- /dev/null +++ b/src/main/java/com/xmomen/module/pick/entity/TbExchangeCardLogExample.java @@ -0,0 +1,641 @@ +package com.xmomen.module.pick.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisExample; +import java.util.ArrayList; +import java.util.List; + +public class TbExchangeCardLogExample extends BaseMybatisExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public TbExchangeCardLogExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("ID is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("ID is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Integer value) { + addCriterion("ID =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Integer value) { + addCriterion("ID <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Integer value) { + addCriterion("ID >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Integer value) { + addCriterion("ID >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Integer value) { + addCriterion("ID <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Integer value) { + addCriterion("ID <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("ID in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("ID not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Integer value1, Integer value2) { + addCriterion("ID between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Integer value1, Integer value2) { + addCriterion("ID not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andOldCouponIdIsNull() { + addCriterion("OLD_COUPON_ID is null"); + return (Criteria) this; + } + + public Criteria andOldCouponIdIsNotNull() { + addCriterion("OLD_COUPON_ID is not null"); + return (Criteria) this; + } + + public Criteria andOldCouponIdEqualTo(Integer value) { + addCriterion("OLD_COUPON_ID =", value, "oldCouponId"); + return (Criteria) this; + } + + public Criteria andOldCouponIdNotEqualTo(Integer value) { + addCriterion("OLD_COUPON_ID <>", value, "oldCouponId"); + return (Criteria) this; + } + + public Criteria andOldCouponIdGreaterThan(Integer value) { + addCriterion("OLD_COUPON_ID >", value, "oldCouponId"); + return (Criteria) this; + } + + public Criteria andOldCouponIdGreaterThanOrEqualTo(Integer value) { + addCriterion("OLD_COUPON_ID >=", value, "oldCouponId"); + return (Criteria) this; + } + + public Criteria andOldCouponIdLessThan(Integer value) { + addCriterion("OLD_COUPON_ID <", value, "oldCouponId"); + return (Criteria) this; + } + + public Criteria andOldCouponIdLessThanOrEqualTo(Integer value) { + addCriterion("OLD_COUPON_ID <=", value, "oldCouponId"); + return (Criteria) this; + } + + public Criteria andOldCouponIdIn(List values) { + addCriterion("OLD_COUPON_ID in", values, "oldCouponId"); + return (Criteria) this; + } + + public Criteria andOldCouponIdNotIn(List values) { + addCriterion("OLD_COUPON_ID not in", values, "oldCouponId"); + return (Criteria) this; + } + + public Criteria andOldCouponIdBetween(Integer value1, Integer value2) { + addCriterion("OLD_COUPON_ID between", value1, value2, "oldCouponId"); + return (Criteria) this; + } + + public Criteria andOldCouponIdNotBetween(Integer value1, Integer value2) { + addCriterion("OLD_COUPON_ID not between", value1, value2, "oldCouponId"); + return (Criteria) this; + } + + public Criteria andOldCouponNoIsNull() { + addCriterion("OLD_COUPON_NO is null"); + return (Criteria) this; + } + + public Criteria andOldCouponNoIsNotNull() { + addCriterion("OLD_COUPON_NO is not null"); + return (Criteria) this; + } + + public Criteria andOldCouponNoEqualTo(String value) { + addCriterion("OLD_COUPON_NO =", value, "oldCouponNo"); + return (Criteria) this; + } + + public Criteria andOldCouponNoNotEqualTo(String value) { + addCriterion("OLD_COUPON_NO <>", value, "oldCouponNo"); + return (Criteria) this; + } + + public Criteria andOldCouponNoGreaterThan(String value) { + addCriterion("OLD_COUPON_NO >", value, "oldCouponNo"); + return (Criteria) this; + } + + public Criteria andOldCouponNoGreaterThanOrEqualTo(String value) { + addCriterion("OLD_COUPON_NO >=", value, "oldCouponNo"); + return (Criteria) this; + } + + public Criteria andOldCouponNoLessThan(String value) { + addCriterion("OLD_COUPON_NO <", value, "oldCouponNo"); + return (Criteria) this; + } + + public Criteria andOldCouponNoLessThanOrEqualTo(String value) { + addCriterion("OLD_COUPON_NO <=", value, "oldCouponNo"); + return (Criteria) this; + } + + public Criteria andOldCouponNoLike(String value) { + addCriterion("OLD_COUPON_NO like", value, "oldCouponNo"); + return (Criteria) this; + } + + public Criteria andOldCouponNoNotLike(String value) { + addCriterion("OLD_COUPON_NO not like", value, "oldCouponNo"); + return (Criteria) this; + } + + public Criteria andOldCouponNoIn(List values) { + addCriterion("OLD_COUPON_NO in", values, "oldCouponNo"); + return (Criteria) this; + } + + public Criteria andOldCouponNoNotIn(List values) { + addCriterion("OLD_COUPON_NO not in", values, "oldCouponNo"); + return (Criteria) this; + } + + public Criteria andOldCouponNoBetween(String value1, String value2) { + addCriterion("OLD_COUPON_NO between", value1, value2, "oldCouponNo"); + return (Criteria) this; + } + + public Criteria andOldCouponNoNotBetween(String value1, String value2) { + addCriterion("OLD_COUPON_NO not between", value1, value2, "oldCouponNo"); + return (Criteria) this; + } + + public Criteria andNewCouponIdIsNull() { + addCriterion("NEW_COUPON_ID is null"); + return (Criteria) this; + } + + public Criteria andNewCouponIdIsNotNull() { + addCriterion("NEW_COUPON_ID is not null"); + return (Criteria) this; + } + + public Criteria andNewCouponIdEqualTo(Integer value) { + addCriterion("NEW_COUPON_ID =", value, "newCouponId"); + return (Criteria) this; + } + + public Criteria andNewCouponIdNotEqualTo(Integer value) { + addCriterion("NEW_COUPON_ID <>", value, "newCouponId"); + return (Criteria) this; + } + + public Criteria andNewCouponIdGreaterThan(Integer value) { + addCriterion("NEW_COUPON_ID >", value, "newCouponId"); + return (Criteria) this; + } + + public Criteria andNewCouponIdGreaterThanOrEqualTo(Integer value) { + addCriterion("NEW_COUPON_ID >=", value, "newCouponId"); + return (Criteria) this; + } + + public Criteria andNewCouponIdLessThan(Integer value) { + addCriterion("NEW_COUPON_ID <", value, "newCouponId"); + return (Criteria) this; + } + + public Criteria andNewCouponIdLessThanOrEqualTo(Integer value) { + addCriterion("NEW_COUPON_ID <=", value, "newCouponId"); + return (Criteria) this; + } + + public Criteria andNewCouponIdIn(List values) { + addCriterion("NEW_COUPON_ID in", values, "newCouponId"); + return (Criteria) this; + } + + public Criteria andNewCouponIdNotIn(List values) { + addCriterion("NEW_COUPON_ID not in", values, "newCouponId"); + return (Criteria) this; + } + + public Criteria andNewCouponIdBetween(Integer value1, Integer value2) { + addCriterion("NEW_COUPON_ID between", value1, value2, "newCouponId"); + return (Criteria) this; + } + + public Criteria andNewCouponIdNotBetween(Integer value1, Integer value2) { + addCriterion("NEW_COUPON_ID not between", value1, value2, "newCouponId"); + return (Criteria) this; + } + + public Criteria andNewCouponNoIsNull() { + addCriterion("NEW_COUPON_NO is null"); + return (Criteria) this; + } + + public Criteria andNewCouponNoIsNotNull() { + addCriterion("NEW_COUPON_NO is not null"); + return (Criteria) this; + } + + public Criteria andNewCouponNoEqualTo(String value) { + addCriterion("NEW_COUPON_NO =", value, "newCouponNo"); + return (Criteria) this; + } + + public Criteria andNewCouponNoNotEqualTo(String value) { + addCriterion("NEW_COUPON_NO <>", value, "newCouponNo"); + return (Criteria) this; + } + + public Criteria andNewCouponNoGreaterThan(String value) { + addCriterion("NEW_COUPON_NO >", value, "newCouponNo"); + return (Criteria) this; + } + + public Criteria andNewCouponNoGreaterThanOrEqualTo(String value) { + addCriterion("NEW_COUPON_NO >=", value, "newCouponNo"); + return (Criteria) this; + } + + public Criteria andNewCouponNoLessThan(String value) { + addCriterion("NEW_COUPON_NO <", value, "newCouponNo"); + return (Criteria) this; + } + + public Criteria andNewCouponNoLessThanOrEqualTo(String value) { + addCriterion("NEW_COUPON_NO <=", value, "newCouponNo"); + return (Criteria) this; + } + + public Criteria andNewCouponNoLike(String value) { + addCriterion("NEW_COUPON_NO like", value, "newCouponNo"); + return (Criteria) this; + } + + public Criteria andNewCouponNoNotLike(String value) { + addCriterion("NEW_COUPON_NO not like", value, "newCouponNo"); + return (Criteria) this; + } + + public Criteria andNewCouponNoIn(List values) { + addCriterion("NEW_COUPON_NO in", values, "newCouponNo"); + return (Criteria) this; + } + + public Criteria andNewCouponNoNotIn(List values) { + addCriterion("NEW_COUPON_NO not in", values, "newCouponNo"); + return (Criteria) this; + } + + public Criteria andNewCouponNoBetween(String value1, String value2) { + addCriterion("NEW_COUPON_NO between", value1, value2, "newCouponNo"); + return (Criteria) this; + } + + public Criteria andNewCouponNoNotBetween(String value1, String value2) { + addCriterion("NEW_COUPON_NO not between", value1, value2, "newCouponNo"); + return (Criteria) this; + } + + public Criteria andRechargeUserIsNull() { + addCriterion("RECHARGE_USER is null"); + return (Criteria) this; + } + + public Criteria andRechargeUserIsNotNull() { + addCriterion("RECHARGE_USER is not null"); + return (Criteria) this; + } + + public Criteria andRechargeUserEqualTo(Integer value) { + addCriterion("RECHARGE_USER =", value, "rechargeUser"); + return (Criteria) this; + } + + public Criteria andRechargeUserNotEqualTo(Integer value) { + addCriterion("RECHARGE_USER <>", value, "rechargeUser"); + return (Criteria) this; + } + + public Criteria andRechargeUserGreaterThan(Integer value) { + addCriterion("RECHARGE_USER >", value, "rechargeUser"); + return (Criteria) this; + } + + public Criteria andRechargeUserGreaterThanOrEqualTo(Integer value) { + addCriterion("RECHARGE_USER >=", value, "rechargeUser"); + return (Criteria) this; + } + + public Criteria andRechargeUserLessThan(Integer value) { + addCriterion("RECHARGE_USER <", value, "rechargeUser"); + return (Criteria) this; + } + + public Criteria andRechargeUserLessThanOrEqualTo(Integer value) { + addCriterion("RECHARGE_USER <=", value, "rechargeUser"); + return (Criteria) this; + } + + public Criteria andRechargeUserIn(List values) { + addCriterion("RECHARGE_USER in", values, "rechargeUser"); + return (Criteria) this; + } + + public Criteria andRechargeUserNotIn(List values) { + addCriterion("RECHARGE_USER not in", values, "rechargeUser"); + return (Criteria) this; + } + + public Criteria andRechargeUserBetween(Integer value1, Integer value2) { + addCriterion("RECHARGE_USER between", value1, value2, "rechargeUser"); + return (Criteria) this; + } + + public Criteria andRechargeUserNotBetween(Integer value1, Integer value2) { + addCriterion("RECHARGE_USER not between", value1, value2, "rechargeUser"); + return (Criteria) this; + } + + public Criteria andRechargePlaceIsNull() { + addCriterion("RECHARGE_PLACE is null"); + return (Criteria) this; + } + + public Criteria andRechargePlaceIsNotNull() { + addCriterion("RECHARGE_PLACE is not null"); + return (Criteria) this; + } + + public Criteria andRechargePlaceEqualTo(Integer value) { + addCriterion("RECHARGE_PLACE =", value, "rechargePlace"); + return (Criteria) this; + } + + public Criteria andRechargePlaceNotEqualTo(Integer value) { + addCriterion("RECHARGE_PLACE <>", value, "rechargePlace"); + return (Criteria) this; + } + + public Criteria andRechargePlaceGreaterThan(Integer value) { + addCriterion("RECHARGE_PLACE >", value, "rechargePlace"); + return (Criteria) this; + } + + public Criteria andRechargePlaceGreaterThanOrEqualTo(Integer value) { + addCriterion("RECHARGE_PLACE >=", value, "rechargePlace"); + return (Criteria) this; + } + + public Criteria andRechargePlaceLessThan(Integer value) { + addCriterion("RECHARGE_PLACE <", value, "rechargePlace"); + return (Criteria) this; + } + + public Criteria andRechargePlaceLessThanOrEqualTo(Integer value) { + addCriterion("RECHARGE_PLACE <=", value, "rechargePlace"); + return (Criteria) this; + } + + public Criteria andRechargePlaceIn(List values) { + addCriterion("RECHARGE_PLACE in", values, "rechargePlace"); + return (Criteria) this; + } + + public Criteria andRechargePlaceNotIn(List values) { + addCriterion("RECHARGE_PLACE not in", values, "rechargePlace"); + return (Criteria) this; + } + + public Criteria andRechargePlaceBetween(Integer value1, Integer value2) { + addCriterion("RECHARGE_PLACE between", value1, value2, "rechargePlace"); + return (Criteria) this; + } + + public Criteria andRechargePlaceNotBetween(Integer value1, Integer value2) { + addCriterion("RECHARGE_PLACE not between", value1, value2, "rechargePlace"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/pick/entity/TbPick.java b/src/main/java/com/xmomen/module/pick/entity/TbPick.java new file mode 100644 index 0000000..f4e9914 --- /dev/null +++ b/src/main/java/com/xmomen/module/pick/entity/TbPick.java @@ -0,0 +1,207 @@ +package com.xmomen.module.pick.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import java.math.BigDecimal; +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "tb_pick") +public class TbPick extends BaseMybatisModel { + /** + * 主键 + */ + private Integer id; + + /** + * 卡号 + */ + private String couponNo; + + /** + * 采摘重量 + */ + private BigDecimal pickWeight; + + /** + * 采摘付款方式(1-刷卡,2-现金+刷卡,3-现金) + */ + private Integer pickPayType; + + /** + * 采摘总金额(刷卡+现金) + */ + private BigDecimal pickTotalPrice; + + /** + * 刷卡金额 + */ + private BigDecimal pickCradPrice; + + /** + * 现金 + */ + private BigDecimal pickCasePrice; + + /** + * 采摘日期 + */ + private Date pickDate; + + /** + * 采摘点 + */ + private Integer pickPlace; + + /** + * 结算人 + */ + private Integer pickPlaceUser; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "COUPON_NO") + public String getCouponNo() { + return couponNo; + } + + public void setCouponNo(String couponNo) { + this.couponNo = couponNo; + if(couponNo == null){ + removeValidField("couponNo"); + return; + } + addValidField("couponNo"); + } + + @Column(name = "PICK_WEIGHT") + public BigDecimal getPickWeight() { + return pickWeight; + } + + public void setPickWeight(BigDecimal pickWeight) { + this.pickWeight = pickWeight; + if(pickWeight == null){ + removeValidField("pickWeight"); + return; + } + addValidField("pickWeight"); + } + + @Column(name = "PICK_PAY_TYPE") + public Integer getPickPayType() { + return pickPayType; + } + + public void setPickPayType(Integer pickPayType) { + this.pickPayType = pickPayType; + if(pickPayType == null){ + removeValidField("pickPayType"); + return; + } + addValidField("pickPayType"); + } + + @Column(name = "PICK_TOTAL_PRICE") + public BigDecimal getPickTotalPrice() { + return pickTotalPrice; + } + + public void setPickTotalPrice(BigDecimal pickTotalPrice) { + this.pickTotalPrice = pickTotalPrice; + if(pickTotalPrice == null){ + removeValidField("pickTotalPrice"); + return; + } + addValidField("pickTotalPrice"); + } + + @Column(name = "PICK_CRAD_PRICE") + public BigDecimal getPickCradPrice() { + return pickCradPrice; + } + + public void setPickCradPrice(BigDecimal pickCradPrice) { + this.pickCradPrice = pickCradPrice; + if(pickCradPrice == null){ + removeValidField("pickCradPrice"); + return; + } + addValidField("pickCradPrice"); + } + + @Column(name = "PICK_CASE_PRICE") + public BigDecimal getPickCasePrice() { + return pickCasePrice; + } + + public void setPickCasePrice(BigDecimal pickCasePrice) { + this.pickCasePrice = pickCasePrice; + if(pickCasePrice == null){ + removeValidField("pickCasePrice"); + return; + } + addValidField("pickCasePrice"); + } + + @Column(name = "PICK_DATE") + public Date getPickDate() { + return pickDate; + } + + public void setPickDate(Date pickDate) { + this.pickDate = pickDate; + if(pickDate == null){ + removeValidField("pickDate"); + return; + } + addValidField("pickDate"); + } + + @Column(name = "PICK_PLACE") + public Integer getPickPlace() { + return pickPlace; + } + + public void setPickPlace(Integer pickPlace) { + this.pickPlace = pickPlace; + if(pickPlace == null){ + removeValidField("pickPlace"); + return; + } + addValidField("pickPlace"); + } + + @Column(name = "PICK_PLACE_USER") + public Integer getPickPlaceUser() { + return pickPlaceUser; + } + + public void setPickPlaceUser(Integer pickPlaceUser) { + this.pickPlaceUser = pickPlaceUser; + if(pickPlaceUser == null){ + removeValidField("pickPlaceUser"); + return; + } + addValidField("pickPlaceUser"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/pick/entity/TbPickExample.java b/src/main/java/com/xmomen/module/pick/entity/TbPickExample.java new file mode 100644 index 0000000..20f6a77 --- /dev/null +++ b/src/main/java/com/xmomen/module/pick/entity/TbPickExample.java @@ -0,0 +1,813 @@ +package com.xmomen.module.pick.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisExample; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class TbPickExample extends BaseMybatisExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public TbPickExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("ID is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("ID is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Integer value) { + addCriterion("ID =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Integer value) { + addCriterion("ID <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Integer value) { + addCriterion("ID >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Integer value) { + addCriterion("ID >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Integer value) { + addCriterion("ID <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Integer value) { + addCriterion("ID <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("ID in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("ID not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Integer value1, Integer value2) { + addCriterion("ID between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Integer value1, Integer value2) { + addCriterion("ID not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andCouponNoIsNull() { + addCriterion("COUPON_NO is null"); + return (Criteria) this; + } + + public Criteria andCouponNoIsNotNull() { + addCriterion("COUPON_NO is not null"); + return (Criteria) this; + } + + public Criteria andCouponNoEqualTo(String value) { + addCriterion("COUPON_NO =", value, "couponNo"); + return (Criteria) this; + } + + public Criteria andCouponNoNotEqualTo(String value) { + addCriterion("COUPON_NO <>", value, "couponNo"); + return (Criteria) this; + } + + public Criteria andCouponNoGreaterThan(String value) { + addCriterion("COUPON_NO >", value, "couponNo"); + return (Criteria) this; + } + + public Criteria andCouponNoGreaterThanOrEqualTo(String value) { + addCriterion("COUPON_NO >=", value, "couponNo"); + return (Criteria) this; + } + + public Criteria andCouponNoLessThan(String value) { + addCriterion("COUPON_NO <", value, "couponNo"); + return (Criteria) this; + } + + public Criteria andCouponNoLessThanOrEqualTo(String value) { + addCriterion("COUPON_NO <=", value, "couponNo"); + return (Criteria) this; + } + + public Criteria andCouponNoLike(String value) { + addCriterion("COUPON_NO like", value, "couponNo"); + return (Criteria) this; + } + + public Criteria andCouponNoNotLike(String value) { + addCriterion("COUPON_NO not like", value, "couponNo"); + return (Criteria) this; + } + + public Criteria andCouponNoIn(List values) { + addCriterion("COUPON_NO in", values, "couponNo"); + return (Criteria) this; + } + + public Criteria andCouponNoNotIn(List values) { + addCriterion("COUPON_NO not in", values, "couponNo"); + return (Criteria) this; + } + + public Criteria andCouponNoBetween(String value1, String value2) { + addCriterion("COUPON_NO between", value1, value2, "couponNo"); + return (Criteria) this; + } + + public Criteria andCouponNoNotBetween(String value1, String value2) { + addCriterion("COUPON_NO not between", value1, value2, "couponNo"); + return (Criteria) this; + } + + public Criteria andPickWeightIsNull() { + addCriterion("PICK_WEIGHT is null"); + return (Criteria) this; + } + + public Criteria andPickWeightIsNotNull() { + addCriterion("PICK_WEIGHT is not null"); + return (Criteria) this; + } + + public Criteria andPickWeightEqualTo(BigDecimal value) { + addCriterion("PICK_WEIGHT =", value, "pickWeight"); + return (Criteria) this; + } + + public Criteria andPickWeightNotEqualTo(BigDecimal value) { + addCriterion("PICK_WEIGHT <>", value, "pickWeight"); + return (Criteria) this; + } + + public Criteria andPickWeightGreaterThan(BigDecimal value) { + addCriterion("PICK_WEIGHT >", value, "pickWeight"); + return (Criteria) this; + } + + public Criteria andPickWeightGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("PICK_WEIGHT >=", value, "pickWeight"); + return (Criteria) this; + } + + public Criteria andPickWeightLessThan(BigDecimal value) { + addCriterion("PICK_WEIGHT <", value, "pickWeight"); + return (Criteria) this; + } + + public Criteria andPickWeightLessThanOrEqualTo(BigDecimal value) { + addCriterion("PICK_WEIGHT <=", value, "pickWeight"); + return (Criteria) this; + } + + public Criteria andPickWeightIn(List values) { + addCriterion("PICK_WEIGHT in", values, "pickWeight"); + return (Criteria) this; + } + + public Criteria andPickWeightNotIn(List values) { + addCriterion("PICK_WEIGHT not in", values, "pickWeight"); + return (Criteria) this; + } + + public Criteria andPickWeightBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("PICK_WEIGHT between", value1, value2, "pickWeight"); + return (Criteria) this; + } + + public Criteria andPickWeightNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("PICK_WEIGHT not between", value1, value2, "pickWeight"); + return (Criteria) this; + } + + public Criteria andPickPayTypeIsNull() { + addCriterion("PICK_PAY_TYPE is null"); + return (Criteria) this; + } + + public Criteria andPickPayTypeIsNotNull() { + addCriterion("PICK_PAY_TYPE is not null"); + return (Criteria) this; + } + + public Criteria andPickPayTypeEqualTo(Integer value) { + addCriterion("PICK_PAY_TYPE =", value, "pickPayType"); + return (Criteria) this; + } + + public Criteria andPickPayTypeNotEqualTo(Integer value) { + addCriterion("PICK_PAY_TYPE <>", value, "pickPayType"); + return (Criteria) this; + } + + public Criteria andPickPayTypeGreaterThan(Integer value) { + addCriterion("PICK_PAY_TYPE >", value, "pickPayType"); + return (Criteria) this; + } + + public Criteria andPickPayTypeGreaterThanOrEqualTo(Integer value) { + addCriterion("PICK_PAY_TYPE >=", value, "pickPayType"); + return (Criteria) this; + } + + public Criteria andPickPayTypeLessThan(Integer value) { + addCriterion("PICK_PAY_TYPE <", value, "pickPayType"); + return (Criteria) this; + } + + public Criteria andPickPayTypeLessThanOrEqualTo(Integer value) { + addCriterion("PICK_PAY_TYPE <=", value, "pickPayType"); + return (Criteria) this; + } + + public Criteria andPickPayTypeIn(List values) { + addCriterion("PICK_PAY_TYPE in", values, "pickPayType"); + return (Criteria) this; + } + + public Criteria andPickPayTypeNotIn(List values) { + addCriterion("PICK_PAY_TYPE not in", values, "pickPayType"); + return (Criteria) this; + } + + public Criteria andPickPayTypeBetween(Integer value1, Integer value2) { + addCriterion("PICK_PAY_TYPE between", value1, value2, "pickPayType"); + return (Criteria) this; + } + + public Criteria andPickPayTypeNotBetween(Integer value1, Integer value2) { + addCriterion("PICK_PAY_TYPE not between", value1, value2, "pickPayType"); + return (Criteria) this; + } + + public Criteria andPickTotalPriceIsNull() { + addCriterion("PICK_TOTAL_PRICE is null"); + return (Criteria) this; + } + + public Criteria andPickTotalPriceIsNotNull() { + addCriterion("PICK_TOTAL_PRICE is not null"); + return (Criteria) this; + } + + public Criteria andPickTotalPriceEqualTo(BigDecimal value) { + addCriterion("PICK_TOTAL_PRICE =", value, "pickTotalPrice"); + return (Criteria) this; + } + + public Criteria andPickTotalPriceNotEqualTo(BigDecimal value) { + addCriterion("PICK_TOTAL_PRICE <>", value, "pickTotalPrice"); + return (Criteria) this; + } + + public Criteria andPickTotalPriceGreaterThan(BigDecimal value) { + addCriterion("PICK_TOTAL_PRICE >", value, "pickTotalPrice"); + return (Criteria) this; + } + + public Criteria andPickTotalPriceGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("PICK_TOTAL_PRICE >=", value, "pickTotalPrice"); + return (Criteria) this; + } + + public Criteria andPickTotalPriceLessThan(BigDecimal value) { + addCriterion("PICK_TOTAL_PRICE <", value, "pickTotalPrice"); + return (Criteria) this; + } + + public Criteria andPickTotalPriceLessThanOrEqualTo(BigDecimal value) { + addCriterion("PICK_TOTAL_PRICE <=", value, "pickTotalPrice"); + return (Criteria) this; + } + + public Criteria andPickTotalPriceIn(List values) { + addCriterion("PICK_TOTAL_PRICE in", values, "pickTotalPrice"); + return (Criteria) this; + } + + public Criteria andPickTotalPriceNotIn(List values) { + addCriterion("PICK_TOTAL_PRICE not in", values, "pickTotalPrice"); + return (Criteria) this; + } + + public Criteria andPickTotalPriceBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("PICK_TOTAL_PRICE between", value1, value2, "pickTotalPrice"); + return (Criteria) this; + } + + public Criteria andPickTotalPriceNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("PICK_TOTAL_PRICE not between", value1, value2, "pickTotalPrice"); + return (Criteria) this; + } + + public Criteria andPickCradPriceIsNull() { + addCriterion("PICK_CRAD_PRICE is null"); + return (Criteria) this; + } + + public Criteria andPickCradPriceIsNotNull() { + addCriterion("PICK_CRAD_PRICE is not null"); + return (Criteria) this; + } + + public Criteria andPickCradPriceEqualTo(BigDecimal value) { + addCriterion("PICK_CRAD_PRICE =", value, "pickCradPrice"); + return (Criteria) this; + } + + public Criteria andPickCradPriceNotEqualTo(BigDecimal value) { + addCriterion("PICK_CRAD_PRICE <>", value, "pickCradPrice"); + return (Criteria) this; + } + + public Criteria andPickCradPriceGreaterThan(BigDecimal value) { + addCriterion("PICK_CRAD_PRICE >", value, "pickCradPrice"); + return (Criteria) this; + } + + public Criteria andPickCradPriceGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("PICK_CRAD_PRICE >=", value, "pickCradPrice"); + return (Criteria) this; + } + + public Criteria andPickCradPriceLessThan(BigDecimal value) { + addCriterion("PICK_CRAD_PRICE <", value, "pickCradPrice"); + return (Criteria) this; + } + + public Criteria andPickCradPriceLessThanOrEqualTo(BigDecimal value) { + addCriterion("PICK_CRAD_PRICE <=", value, "pickCradPrice"); + return (Criteria) this; + } + + public Criteria andPickCradPriceIn(List values) { + addCriterion("PICK_CRAD_PRICE in", values, "pickCradPrice"); + return (Criteria) this; + } + + public Criteria andPickCradPriceNotIn(List values) { + addCriterion("PICK_CRAD_PRICE not in", values, "pickCradPrice"); + return (Criteria) this; + } + + public Criteria andPickCradPriceBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("PICK_CRAD_PRICE between", value1, value2, "pickCradPrice"); + return (Criteria) this; + } + + public Criteria andPickCradPriceNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("PICK_CRAD_PRICE not between", value1, value2, "pickCradPrice"); + return (Criteria) this; + } + + public Criteria andPickCasePriceIsNull() { + addCriterion("PICK_CASE_PRICE is null"); + return (Criteria) this; + } + + public Criteria andPickCasePriceIsNotNull() { + addCriterion("PICK_CASE_PRICE is not null"); + return (Criteria) this; + } + + public Criteria andPickCasePriceEqualTo(BigDecimal value) { + addCriterion("PICK_CASE_PRICE =", value, "pickCasePrice"); + return (Criteria) this; + } + + public Criteria andPickCasePriceNotEqualTo(BigDecimal value) { + addCriterion("PICK_CASE_PRICE <>", value, "pickCasePrice"); + return (Criteria) this; + } + + public Criteria andPickCasePriceGreaterThan(BigDecimal value) { + addCriterion("PICK_CASE_PRICE >", value, "pickCasePrice"); + return (Criteria) this; + } + + public Criteria andPickCasePriceGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("PICK_CASE_PRICE >=", value, "pickCasePrice"); + return (Criteria) this; + } + + public Criteria andPickCasePriceLessThan(BigDecimal value) { + addCriterion("PICK_CASE_PRICE <", value, "pickCasePrice"); + return (Criteria) this; + } + + public Criteria andPickCasePriceLessThanOrEqualTo(BigDecimal value) { + addCriterion("PICK_CASE_PRICE <=", value, "pickCasePrice"); + return (Criteria) this; + } + + public Criteria andPickCasePriceIn(List values) { + addCriterion("PICK_CASE_PRICE in", values, "pickCasePrice"); + return (Criteria) this; + } + + public Criteria andPickCasePriceNotIn(List values) { + addCriterion("PICK_CASE_PRICE not in", values, "pickCasePrice"); + return (Criteria) this; + } + + public Criteria andPickCasePriceBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("PICK_CASE_PRICE between", value1, value2, "pickCasePrice"); + return (Criteria) this; + } + + public Criteria andPickCasePriceNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("PICK_CASE_PRICE not between", value1, value2, "pickCasePrice"); + return (Criteria) this; + } + + public Criteria andPickDateIsNull() { + addCriterion("PICK_DATE is null"); + return (Criteria) this; + } + + public Criteria andPickDateIsNotNull() { + addCriterion("PICK_DATE is not null"); + return (Criteria) this; + } + + public Criteria andPickDateEqualTo(Date value) { + addCriterion("PICK_DATE =", value, "pickDate"); + return (Criteria) this; + } + + public Criteria andPickDateNotEqualTo(Date value) { + addCriterion("PICK_DATE <>", value, "pickDate"); + return (Criteria) this; + } + + public Criteria andPickDateGreaterThan(Date value) { + addCriterion("PICK_DATE >", value, "pickDate"); + return (Criteria) this; + } + + public Criteria andPickDateGreaterThanOrEqualTo(Date value) { + addCriterion("PICK_DATE >=", value, "pickDate"); + return (Criteria) this; + } + + public Criteria andPickDateLessThan(Date value) { + addCriterion("PICK_DATE <", value, "pickDate"); + return (Criteria) this; + } + + public Criteria andPickDateLessThanOrEqualTo(Date value) { + addCriterion("PICK_DATE <=", value, "pickDate"); + return (Criteria) this; + } + + public Criteria andPickDateIn(List values) { + addCriterion("PICK_DATE in", values, "pickDate"); + return (Criteria) this; + } + + public Criteria andPickDateNotIn(List values) { + addCriterion("PICK_DATE not in", values, "pickDate"); + return (Criteria) this; + } + + public Criteria andPickDateBetween(Date value1, Date value2) { + addCriterion("PICK_DATE between", value1, value2, "pickDate"); + return (Criteria) this; + } + + public Criteria andPickDateNotBetween(Date value1, Date value2) { + addCriterion("PICK_DATE not between", value1, value2, "pickDate"); + return (Criteria) this; + } + + public Criteria andPickPlaceIsNull() { + addCriterion("PICK_PLACE is null"); + return (Criteria) this; + } + + public Criteria andPickPlaceIsNotNull() { + addCriterion("PICK_PLACE is not null"); + return (Criteria) this; + } + + public Criteria andPickPlaceEqualTo(Integer value) { + addCriterion("PICK_PLACE =", value, "pickPlace"); + return (Criteria) this; + } + + public Criteria andPickPlaceNotEqualTo(Integer value) { + addCriterion("PICK_PLACE <>", value, "pickPlace"); + return (Criteria) this; + } + + public Criteria andPickPlaceGreaterThan(Integer value) { + addCriterion("PICK_PLACE >", value, "pickPlace"); + return (Criteria) this; + } + + public Criteria andPickPlaceGreaterThanOrEqualTo(Integer value) { + addCriterion("PICK_PLACE >=", value, "pickPlace"); + return (Criteria) this; + } + + public Criteria andPickPlaceLessThan(Integer value) { + addCriterion("PICK_PLACE <", value, "pickPlace"); + return (Criteria) this; + } + + public Criteria andPickPlaceLessThanOrEqualTo(Integer value) { + addCriterion("PICK_PLACE <=", value, "pickPlace"); + return (Criteria) this; + } + + public Criteria andPickPlaceIn(List values) { + addCriterion("PICK_PLACE in", values, "pickPlace"); + return (Criteria) this; + } + + public Criteria andPickPlaceNotIn(List values) { + addCriterion("PICK_PLACE not in", values, "pickPlace"); + return (Criteria) this; + } + + public Criteria andPickPlaceBetween(Integer value1, Integer value2) { + addCriterion("PICK_PLACE between", value1, value2, "pickPlace"); + return (Criteria) this; + } + + public Criteria andPickPlaceNotBetween(Integer value1, Integer value2) { + addCriterion("PICK_PLACE not between", value1, value2, "pickPlace"); + return (Criteria) this; + } + + public Criteria andPickPlaceUserIsNull() { + addCriterion("PICK_PLACE_USER is null"); + return (Criteria) this; + } + + public Criteria andPickPlaceUserIsNotNull() { + addCriterion("PICK_PLACE_USER is not null"); + return (Criteria) this; + } + + public Criteria andPickPlaceUserEqualTo(Integer value) { + addCriterion("PICK_PLACE_USER =", value, "pickPlaceUser"); + return (Criteria) this; + } + + public Criteria andPickPlaceUserNotEqualTo(Integer value) { + addCriterion("PICK_PLACE_USER <>", value, "pickPlaceUser"); + return (Criteria) this; + } + + public Criteria andPickPlaceUserGreaterThan(Integer value) { + addCriterion("PICK_PLACE_USER >", value, "pickPlaceUser"); + return (Criteria) this; + } + + public Criteria andPickPlaceUserGreaterThanOrEqualTo(Integer value) { + addCriterion("PICK_PLACE_USER >=", value, "pickPlaceUser"); + return (Criteria) this; + } + + public Criteria andPickPlaceUserLessThan(Integer value) { + addCriterion("PICK_PLACE_USER <", value, "pickPlaceUser"); + return (Criteria) this; + } + + public Criteria andPickPlaceUserLessThanOrEqualTo(Integer value) { + addCriterion("PICK_PLACE_USER <=", value, "pickPlaceUser"); + return (Criteria) this; + } + + public Criteria andPickPlaceUserIn(List values) { + addCriterion("PICK_PLACE_USER in", values, "pickPlaceUser"); + return (Criteria) this; + } + + public Criteria andPickPlaceUserNotIn(List values) { + addCriterion("PICK_PLACE_USER not in", values, "pickPlaceUser"); + return (Criteria) this; + } + + public Criteria andPickPlaceUserBetween(Integer value1, Integer value2) { + addCriterion("PICK_PLACE_USER between", value1, value2, "pickPlaceUser"); + return (Criteria) this; + } + + public Criteria andPickPlaceUserNotBetween(Integer value1, Integer value2) { + addCriterion("PICK_PLACE_USER not between", value1, value2, "pickPlaceUser"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/pick/entity/TbRechargeLog.java b/src/main/java/com/xmomen/module/pick/entity/TbRechargeLog.java new file mode 100644 index 0000000..01bd1e8 --- /dev/null +++ b/src/main/java/com/xmomen/module/pick/entity/TbRechargeLog.java @@ -0,0 +1,131 @@ +package com.xmomen.module.pick.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import java.math.BigDecimal; +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "tb_recharge_log") +public class TbRechargeLog extends BaseMybatisModel { + /** + * 充值记录 + */ + private Integer id; + + /** + * 充值的卡号 + */ + private String couponNo; + + /** + * 充值金额 + */ + private BigDecimal rechargePrice; + + /** + * 充值时间 + */ + private Date rechargeDate; + + /** + * 充值人 + */ + private Integer rechargeUser; + + /** + * 充值地点 + */ + private Integer rechargePlace; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "COUPON_NO") + public String getCouponNo() { + return couponNo; + } + + public void setCouponNo(String couponNo) { + this.couponNo = couponNo; + if(couponNo == null){ + removeValidField("couponNo"); + return; + } + addValidField("couponNo"); + } + + @Column(name = "RECHARGE_PRICE") + public BigDecimal getRechargePrice() { + return rechargePrice; + } + + public void setRechargePrice(BigDecimal rechargePrice) { + this.rechargePrice = rechargePrice; + if(rechargePrice == null){ + removeValidField("rechargePrice"); + return; + } + addValidField("rechargePrice"); + } + + @Column(name = "RECHARGE_DATE") + public Date getRechargeDate() { + return rechargeDate; + } + + public void setRechargeDate(Date rechargeDate) { + this.rechargeDate = rechargeDate; + if(rechargeDate == null){ + removeValidField("rechargeDate"); + return; + } + addValidField("rechargeDate"); + } + + @Column(name = "RECHARGE_USER") + public Integer getRechargeUser() { + return rechargeUser; + } + + public void setRechargeUser(Integer rechargeUser) { + this.rechargeUser = rechargeUser; + if(rechargeUser == null){ + removeValidField("rechargeUser"); + return; + } + addValidField("rechargeUser"); + } + + @Column(name = "RECHARGE_PLACE") + public Integer getRechargePlace() { + return rechargePlace; + } + + public void setRechargePlace(Integer rechargePlace) { + this.rechargePlace = rechargePlace; + if(rechargePlace == null){ + removeValidField("rechargePlace"); + return; + } + addValidField("rechargePlace"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/pick/entity/TbRechargeLogExample.java b/src/main/java/com/xmomen/module/pick/entity/TbRechargeLogExample.java new file mode 100644 index 0000000..e64309f --- /dev/null +++ b/src/main/java/com/xmomen/module/pick/entity/TbRechargeLogExample.java @@ -0,0 +1,573 @@ +package com.xmomen.module.pick.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisExample; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class TbRechargeLogExample extends BaseMybatisExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public TbRechargeLogExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("ID is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("ID is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Integer value) { + addCriterion("ID =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Integer value) { + addCriterion("ID <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Integer value) { + addCriterion("ID >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Integer value) { + addCriterion("ID >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Integer value) { + addCriterion("ID <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Integer value) { + addCriterion("ID <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("ID in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("ID not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Integer value1, Integer value2) { + addCriterion("ID between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Integer value1, Integer value2) { + addCriterion("ID not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andCouponNoIsNull() { + addCriterion("COUPON_NO is null"); + return (Criteria) this; + } + + public Criteria andCouponNoIsNotNull() { + addCriterion("COUPON_NO is not null"); + return (Criteria) this; + } + + public Criteria andCouponNoEqualTo(String value) { + addCriterion("COUPON_NO =", value, "couponNo"); + return (Criteria) this; + } + + public Criteria andCouponNoNotEqualTo(String value) { + addCriterion("COUPON_NO <>", value, "couponNo"); + return (Criteria) this; + } + + public Criteria andCouponNoGreaterThan(String value) { + addCriterion("COUPON_NO >", value, "couponNo"); + return (Criteria) this; + } + + public Criteria andCouponNoGreaterThanOrEqualTo(String value) { + addCriterion("COUPON_NO >=", value, "couponNo"); + return (Criteria) this; + } + + public Criteria andCouponNoLessThan(String value) { + addCriterion("COUPON_NO <", value, "couponNo"); + return (Criteria) this; + } + + public Criteria andCouponNoLessThanOrEqualTo(String value) { + addCriterion("COUPON_NO <=", value, "couponNo"); + return (Criteria) this; + } + + public Criteria andCouponNoLike(String value) { + addCriterion("COUPON_NO like", value, "couponNo"); + return (Criteria) this; + } + + public Criteria andCouponNoNotLike(String value) { + addCriterion("COUPON_NO not like", value, "couponNo"); + return (Criteria) this; + } + + public Criteria andCouponNoIn(List values) { + addCriterion("COUPON_NO in", values, "couponNo"); + return (Criteria) this; + } + + public Criteria andCouponNoNotIn(List values) { + addCriterion("COUPON_NO not in", values, "couponNo"); + return (Criteria) this; + } + + public Criteria andCouponNoBetween(String value1, String value2) { + addCriterion("COUPON_NO between", value1, value2, "couponNo"); + return (Criteria) this; + } + + public Criteria andCouponNoNotBetween(String value1, String value2) { + addCriterion("COUPON_NO not between", value1, value2, "couponNo"); + return (Criteria) this; + } + + public Criteria andRechargePriceIsNull() { + addCriterion("RECHARGE_PRICE is null"); + return (Criteria) this; + } + + public Criteria andRechargePriceIsNotNull() { + addCriterion("RECHARGE_PRICE is not null"); + return (Criteria) this; + } + + public Criteria andRechargePriceEqualTo(BigDecimal value) { + addCriterion("RECHARGE_PRICE =", value, "rechargePrice"); + return (Criteria) this; + } + + public Criteria andRechargePriceNotEqualTo(BigDecimal value) { + addCriterion("RECHARGE_PRICE <>", value, "rechargePrice"); + return (Criteria) this; + } + + public Criteria andRechargePriceGreaterThan(BigDecimal value) { + addCriterion("RECHARGE_PRICE >", value, "rechargePrice"); + return (Criteria) this; + } + + public Criteria andRechargePriceGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("RECHARGE_PRICE >=", value, "rechargePrice"); + return (Criteria) this; + } + + public Criteria andRechargePriceLessThan(BigDecimal value) { + addCriterion("RECHARGE_PRICE <", value, "rechargePrice"); + return (Criteria) this; + } + + public Criteria andRechargePriceLessThanOrEqualTo(BigDecimal value) { + addCriterion("RECHARGE_PRICE <=", value, "rechargePrice"); + return (Criteria) this; + } + + public Criteria andRechargePriceIn(List values) { + addCriterion("RECHARGE_PRICE in", values, "rechargePrice"); + return (Criteria) this; + } + + public Criteria andRechargePriceNotIn(List values) { + addCriterion("RECHARGE_PRICE not in", values, "rechargePrice"); + return (Criteria) this; + } + + public Criteria andRechargePriceBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("RECHARGE_PRICE between", value1, value2, "rechargePrice"); + return (Criteria) this; + } + + public Criteria andRechargePriceNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("RECHARGE_PRICE not between", value1, value2, "rechargePrice"); + return (Criteria) this; + } + + public Criteria andRechargeDateIsNull() { + addCriterion("RECHARGE_DATE is null"); + return (Criteria) this; + } + + public Criteria andRechargeDateIsNotNull() { + addCriterion("RECHARGE_DATE is not null"); + return (Criteria) this; + } + + public Criteria andRechargeDateEqualTo(Date value) { + addCriterion("RECHARGE_DATE =", value, "rechargeDate"); + return (Criteria) this; + } + + public Criteria andRechargeDateNotEqualTo(Date value) { + addCriterion("RECHARGE_DATE <>", value, "rechargeDate"); + return (Criteria) this; + } + + public Criteria andRechargeDateGreaterThan(Date value) { + addCriterion("RECHARGE_DATE >", value, "rechargeDate"); + return (Criteria) this; + } + + public Criteria andRechargeDateGreaterThanOrEqualTo(Date value) { + addCriterion("RECHARGE_DATE >=", value, "rechargeDate"); + return (Criteria) this; + } + + public Criteria andRechargeDateLessThan(Date value) { + addCriterion("RECHARGE_DATE <", value, "rechargeDate"); + return (Criteria) this; + } + + public Criteria andRechargeDateLessThanOrEqualTo(Date value) { + addCriterion("RECHARGE_DATE <=", value, "rechargeDate"); + return (Criteria) this; + } + + public Criteria andRechargeDateIn(List values) { + addCriterion("RECHARGE_DATE in", values, "rechargeDate"); + return (Criteria) this; + } + + public Criteria andRechargeDateNotIn(List values) { + addCriterion("RECHARGE_DATE not in", values, "rechargeDate"); + return (Criteria) this; + } + + public Criteria andRechargeDateBetween(Date value1, Date value2) { + addCriterion("RECHARGE_DATE between", value1, value2, "rechargeDate"); + return (Criteria) this; + } + + public Criteria andRechargeDateNotBetween(Date value1, Date value2) { + addCriterion("RECHARGE_DATE not between", value1, value2, "rechargeDate"); + return (Criteria) this; + } + + public Criteria andRechargeUserIsNull() { + addCriterion("RECHARGE_USER is null"); + return (Criteria) this; + } + + public Criteria andRechargeUserIsNotNull() { + addCriterion("RECHARGE_USER is not null"); + return (Criteria) this; + } + + public Criteria andRechargeUserEqualTo(Integer value) { + addCriterion("RECHARGE_USER =", value, "rechargeUser"); + return (Criteria) this; + } + + public Criteria andRechargeUserNotEqualTo(Integer value) { + addCriterion("RECHARGE_USER <>", value, "rechargeUser"); + return (Criteria) this; + } + + public Criteria andRechargeUserGreaterThan(Integer value) { + addCriterion("RECHARGE_USER >", value, "rechargeUser"); + return (Criteria) this; + } + + public Criteria andRechargeUserGreaterThanOrEqualTo(Integer value) { + addCriterion("RECHARGE_USER >=", value, "rechargeUser"); + return (Criteria) this; + } + + public Criteria andRechargeUserLessThan(Integer value) { + addCriterion("RECHARGE_USER <", value, "rechargeUser"); + return (Criteria) this; + } + + public Criteria andRechargeUserLessThanOrEqualTo(Integer value) { + addCriterion("RECHARGE_USER <=", value, "rechargeUser"); + return (Criteria) this; + } + + public Criteria andRechargeUserIn(List values) { + addCriterion("RECHARGE_USER in", values, "rechargeUser"); + return (Criteria) this; + } + + public Criteria andRechargeUserNotIn(List values) { + addCriterion("RECHARGE_USER not in", values, "rechargeUser"); + return (Criteria) this; + } + + public Criteria andRechargeUserBetween(Integer value1, Integer value2) { + addCriterion("RECHARGE_USER between", value1, value2, "rechargeUser"); + return (Criteria) this; + } + + public Criteria andRechargeUserNotBetween(Integer value1, Integer value2) { + addCriterion("RECHARGE_USER not between", value1, value2, "rechargeUser"); + return (Criteria) this; + } + + public Criteria andRechargePlaceIsNull() { + addCriterion("RECHARGE_PLACE is null"); + return (Criteria) this; + } + + public Criteria andRechargePlaceIsNotNull() { + addCriterion("RECHARGE_PLACE is not null"); + return (Criteria) this; + } + + public Criteria andRechargePlaceEqualTo(Integer value) { + addCriterion("RECHARGE_PLACE =", value, "rechargePlace"); + return (Criteria) this; + } + + public Criteria andRechargePlaceNotEqualTo(Integer value) { + addCriterion("RECHARGE_PLACE <>", value, "rechargePlace"); + return (Criteria) this; + } + + public Criteria andRechargePlaceGreaterThan(Integer value) { + addCriterion("RECHARGE_PLACE >", value, "rechargePlace"); + return (Criteria) this; + } + + public Criteria andRechargePlaceGreaterThanOrEqualTo(Integer value) { + addCriterion("RECHARGE_PLACE >=", value, "rechargePlace"); + return (Criteria) this; + } + + public Criteria andRechargePlaceLessThan(Integer value) { + addCriterion("RECHARGE_PLACE <", value, "rechargePlace"); + return (Criteria) this; + } + + public Criteria andRechargePlaceLessThanOrEqualTo(Integer value) { + addCriterion("RECHARGE_PLACE <=", value, "rechargePlace"); + return (Criteria) this; + } + + public Criteria andRechargePlaceIn(List values) { + addCriterion("RECHARGE_PLACE in", values, "rechargePlace"); + return (Criteria) this; + } + + public Criteria andRechargePlaceNotIn(List values) { + addCriterion("RECHARGE_PLACE not in", values, "rechargePlace"); + return (Criteria) this; + } + + public Criteria andRechargePlaceBetween(Integer value1, Integer value2) { + addCriterion("RECHARGE_PLACE between", value1, value2, "rechargePlace"); + return (Criteria) this; + } + + public Criteria andRechargePlaceNotBetween(Integer value1, Integer value2) { + addCriterion("RECHARGE_PLACE not between", value1, value2, "rechargePlace"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/pick/entity/mapper/TbExchangeCardLogMapper.java b/src/main/java/com/xmomen/module/pick/entity/mapper/TbExchangeCardLogMapper.java new file mode 100644 index 0000000..78cfac5 --- /dev/null +++ b/src/main/java/com/xmomen/module/pick/entity/mapper/TbExchangeCardLogMapper.java @@ -0,0 +1,16 @@ +package com.xmomen.module.pick.entity.mapper; + +import com.xmomen.framework.mybatis.mapper.MybatisMapper; +import com.xmomen.module.pick.entity.TbExchangeCardLog; +import com.xmomen.module.pick.entity.TbExchangeCardLogExample; +import org.apache.ibatis.annotations.Param; + +public interface TbExchangeCardLogMapper extends MybatisMapper { + int countByExample(TbExchangeCardLogExample example); + + int deleteByExample(TbExchangeCardLogExample example); + + int insertSelective(TbExchangeCardLog record); + + int updateByExampleSelective(@Param("record") TbExchangeCardLog record, @Param("example") TbExchangeCardLogExample example); +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/pick/entity/mapper/TbRechargeLogMapper.java b/src/main/java/com/xmomen/module/pick/entity/mapper/TbRechargeLogMapper.java new file mode 100644 index 0000000..da7f6e5 --- /dev/null +++ b/src/main/java/com/xmomen/module/pick/entity/mapper/TbRechargeLogMapper.java @@ -0,0 +1,16 @@ +package com.xmomen.module.pick.entity.mapper; + +import com.xmomen.framework.mybatis.mapper.MybatisMapper; +import com.xmomen.module.pick.entity.TbRechargeLog; +import com.xmomen.module.pick.entity.TbRechargeLogExample; +import org.apache.ibatis.annotations.Param; + +public interface TbRechargeLogMapper extends MybatisMapper { + int countByExample(TbRechargeLogExample example); + + int deleteByExample(TbRechargeLogExample example); + + int insertSelective(TbRechargeLog record); + + int updateByExampleSelective(@Param("record") TbRechargeLog record, @Param("example") TbRechargeLogExample example); +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/pick/model/PickVo.java b/src/main/java/com/xmomen/module/pick/model/PickVo.java new file mode 100644 index 0000000..b23cb83 --- /dev/null +++ b/src/main/java/com/xmomen/module/pick/model/PickVo.java @@ -0,0 +1,15 @@ +package com.xmomen.module.pick.model; + +import java.io.Serializable; +import java.math.BigDecimal; + +import lombok.Data; + +public @Data +class PickVo implements Serializable{ + private BigDecimal pickWeight; + private BigDecimal pickPrice; + private Integer pickPayType; + private BigDecimal pickCasePrice; + private String couponNo; +} diff --git a/src/main/java/com/xmomen/module/pick/service/PickService.java b/src/main/java/com/xmomen/module/pick/service/PickService.java new file mode 100644 index 0000000..e464830 --- /dev/null +++ b/src/main/java/com/xmomen/module/pick/service/PickService.java @@ -0,0 +1,10 @@ +package com.xmomen.module.pick.service; + +import com.xmomen.module.pick.model.CreateMember; +import com.xmomen.module.pick.model.PickVo; + +public interface PickService { + public void pick(PickVo pickVo); + + public void pickCard(CreateMember createMember); +} diff --git a/src/main/java/com/xmomen/module/plan/controller/TablePlanController.java b/src/main/java/com/xmomen/module/plan/controller/TablePlanController.java new file mode 100644 index 0000000..e48f737 --- /dev/null +++ b/src/main/java/com/xmomen/module/plan/controller/TablePlanController.java @@ -0,0 +1,139 @@ +package com.xmomen.module.plan.controller; + +import java.util.HashMap; +import java.util.Map; + +import javax.validation.Valid; + +import org.apache.commons.lang.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.framework.web.exceptions.ArgumentValidException; +import com.xmomen.module.base.constant.AppConstants; +import com.xmomen.module.logger.Log; +import com.xmomen.module.plan.entity.TbTablePlan; +import com.xmomen.module.plan.mapper.TablePlanMapper; +import com.xmomen.module.plan.model.CreateTablePlan; +import com.xmomen.module.plan.model.TablePlanModel; +import com.xmomen.module.plan.model.UpdateTablePlan; +import com.xmomen.module.plan.service.TablePlanSercvice; +import com.xmomen.module.user.entity.SysUsers; + +/** + * Created by ted on 16/3/28. + */ +@RestController +public class TablePlanController { + + @Autowired + TablePlanSercvice tablePlanService; + @Autowired + TablePlanMapper tablePlanMapper; + @Autowired + MybatisDao mybatisDao; + /** + * 查询餐桌信息 + * @param id + * @return + */ + @RequestMapping(value = "/tablePlan", method = RequestMethod.GET) + @Log(actionName = "查询餐桌信息") + public Page getTablePlanList(@RequestParam(value = "limit") Integer limit, + @RequestParam(value = "offset") Integer offset, + @RequestParam(value = "id", required = false) Integer id, + @RequestParam(value = "keyword", required = false) String keyword, + @RequestParam(value = "phoneNumber", required = false) String phoneNumber){ + Map map = new HashMap(); + map.put("id", id); + map.put("keyword", keyword); + if(StringUtils.trimToNull(phoneNumber) != null){ + map.put("phoneNumber", phoneNumber); + } + //客服经理过滤 如果有客服组权限则不过滤 + if(SecurityUtils.getSubject().hasRole(AppConstants.CUSTOMER_MANAGER_PERMISSION_CODE) && !SecurityUtils.getSubject().hasRole(AppConstants.CUSTOMER_PERMISSION_CODE)){ + Integer userId = (Integer) SecurityUtils.getSubject().getSession().getAttribute(AppConstants.SESSION_USER_ID_KEY); + map.put("userId",userId); + } + return (Page) mybatisDao.selectPage(TablePlanMapper.TablePlanMapperNameSpace + "getTablePlanList", map, limit, offset); + } + + + @RequestMapping(value = "/tablePlan", method = RequestMethod.POST) + @Log(actionName = "新增餐桌") + public void createTablePlan(@RequestBody @Valid CreateTablePlan createTablePlan, BindingResult bindingResult) throws ArgumentValidException { + if(bindingResult != null && bindingResult.hasErrors()){ + throw new ArgumentValidException(bindingResult); + } + tablePlanService.createTablePlan(createTablePlan); + } + + /** + * 根据ID查询餐桌信息 + * @param id + */ + @RequestMapping(value = "/tablePlan/{id}", method = RequestMethod.GET) + @Log(actionName = "根据ID查询餐桌信息") + public TablePlanModel getTablePlan(@PathVariable(value = "id") Integer id){ + Map map = new HashMap(); + map.put("id", id); + return mybatisDao.getSqlSessionTemplate().selectOne(TablePlanMapper.TablePlanMapperNameSpace + "getTablePlanList", map); + } + + /** + * 修改 + * @param id + */ + @RequestMapping(value = "/tablePlan/{id}", method = RequestMethod.PUT) + @Log(actionName = "修改餐桌信息") + public void updateTablePlan(@PathVariable(value = "id") Integer id, + @RequestBody @Valid UpdateTablePlan updateTablePlan, BindingResult bindingResult) throws ArgumentValidException { + if(bindingResult != null && bindingResult.hasErrors()){ + throw new ArgumentValidException(bindingResult); + } + tablePlanService.updateTablePlan(id,updateTablePlan); + } + + /** + * 删除 + * @param id + */ + @RequestMapping(value = "/tablePlan/{id}", method = RequestMethod.DELETE) + @Log(actionName = "删除餐桌信息") + public void deleteTablePlan(@PathVariable(value = "id") Integer id){ + tablePlanService.delete(id); + } + + /** + * 暂停配送 + * @param id + */ + @RequestMapping(value = "/tablePlan/{id}/stop", method = RequestMethod.PUT) + @Log(actionName = "暂停配送") + public void stop(@PathVariable(value = "id") Integer id, + @RequestParam(value = "locked") Boolean locked){ + TbTablePlan tablePlan = new TbTablePlan(); + tablePlan.setIsStop(locked ? 1 : 0); + tablePlan.setId(id); + mybatisDao.update(tablePlan); + } + + /** + * 暂停配送 + * @param id + */ + @RequestMapping(value = "/tablePlan/createPlanOrder", method = RequestMethod.PUT) + @Log(actionName = "手工调用") + public void createPlanOrder(){ + tablePlanService.createTablePlanOrder(); + } +} diff --git a/src/main/java/com/xmomen/module/plan/entity/TbTablePlan.java b/src/main/java/com/xmomen/module/plan/entity/TbTablePlan.java new file mode 100644 index 0000000..7e54f32 --- /dev/null +++ b/src/main/java/com/xmomen/module/plan/entity/TbTablePlan.java @@ -0,0 +1,339 @@ +package com.xmomen.module.plan.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "tb_table_plan") +public class TbTablePlan extends BaseMybatisModel { + /** + * + */ + private Integer id; + + /** + * 餐桌计划 + */ + private Integer cdPlanId; + + /** + * 审核状态(0-未审核,1-审核通过) + */ + private Integer auditStatus; + + /** + * 是否暂停 0-不暂停,1-暂停 + */ + private Integer isStop; + + /** + * + */ + private Integer cdMemberId; + + /** + * 卡号 + */ + private String couponNumber; + + /** + * 客户编号 + */ + private String memberCode; + + /** + * 手机号 + */ + private String consigneePhone; + + /** + * 收货人姓名 + */ + private String consigneeName; + + /** + * 收货人地址 + */ + private String consigneeAddress; + + /** + * 邮政编码 + */ + private String postcode; + + /** + * 星期几配送 + */ + private String sendWeekDay; + + /** + * 总配送次数 + */ + private Integer totalSendValue; + + /** + * 已配送次数 + */ + private Integer sendValue; + + /** + * 上次配送时间 + */ + private Date lastSendDate; + + /** + * 下次配送时间 + */ + private Date nextSendDate; + + /** + * 生效时间 + */ + private Date beginTime; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "CD_PLAN_ID") + public Integer getCdPlanId() { + return cdPlanId; + } + + public void setCdPlanId(Integer cdPlanId) { + this.cdPlanId = cdPlanId; + if(cdPlanId == null){ + removeValidField("cdPlanId"); + return; + } + addValidField("cdPlanId"); + } + + @Column(name = "AUDIT_STATUS") + public Integer getAuditStatus() { + return auditStatus; + } + + public void setAuditStatus(Integer auditStatus) { + this.auditStatus = auditStatus; + if(auditStatus == null){ + removeValidField("auditStatus"); + return; + } + addValidField("auditStatus"); + } + + @Column(name = "IS_STOP") + public Integer getIsStop() { + return isStop; + } + + public void setIsStop(Integer isStop) { + this.isStop = isStop; + if(isStop == null){ + removeValidField("isStop"); + return; + } + addValidField("isStop"); + } + + @Column(name = "CD_MEMBER_ID") + public Integer getCdMemberId() { + return cdMemberId; + } + + public void setCdMemberId(Integer cdMemberId) { + this.cdMemberId = cdMemberId; + if(cdMemberId == null){ + removeValidField("cdMemberId"); + return; + } + addValidField("cdMemberId"); + } + + @Column(name = "COUPON_NUMBER") + public String getCouponNumber() { + return couponNumber; + } + + public void setCouponNumber(String couponNumber) { + this.couponNumber = couponNumber; + if(couponNumber == null){ + removeValidField("couponNumber"); + return; + } + addValidField("couponNumber"); + } + + @Column(name = "MEMBER_CODE") + public String getMemberCode() { + return memberCode; + } + + public void setMemberCode(String memberCode) { + this.memberCode = memberCode; + if(memberCode == null){ + removeValidField("memberCode"); + return; + } + addValidField("memberCode"); + } + + @Column(name = "CONSIGNEE_PHONE") + public String getConsigneePhone() { + return consigneePhone; + } + + public void setConsigneePhone(String consigneePhone) { + this.consigneePhone = consigneePhone; + if(consigneePhone == null){ + removeValidField("consigneePhone"); + return; + } + addValidField("consigneePhone"); + } + + @Column(name = "CONSIGNEE_NAME") + public String getConsigneeName() { + return consigneeName; + } + + public void setConsigneeName(String consigneeName) { + this.consigneeName = consigneeName; + if(consigneeName == null){ + removeValidField("consigneeName"); + return; + } + addValidField("consigneeName"); + } + + @Column(name = "CONSIGNEE_ADDRESS") + public String getConsigneeAddress() { + return consigneeAddress; + } + + public void setConsigneeAddress(String consigneeAddress) { + this.consigneeAddress = consigneeAddress; + if(consigneeAddress == null){ + removeValidField("consigneeAddress"); + return; + } + addValidField("consigneeAddress"); + } + + @Column(name = "POSTCODE") + public String getPostcode() { + return postcode; + } + + public void setPostcode(String postcode) { + this.postcode = postcode; + if(postcode == null){ + removeValidField("postcode"); + return; + } + addValidField("postcode"); + } + + @Column(name = "SEND_WEEK_DAY") + public String getSendWeekDay() { + return sendWeekDay; + } + + public void setSendWeekDay(String sendWeekDay) { + this.sendWeekDay = sendWeekDay; + if(sendWeekDay == null){ + removeValidField("sendWeekDay"); + return; + } + addValidField("sendWeekDay"); + } + + @Column(name = "TOTAL_SEND_VALUE") + public Integer getTotalSendValue() { + return totalSendValue; + } + + public void setTotalSendValue(Integer totalSendValue) { + this.totalSendValue = totalSendValue; + if(totalSendValue == null){ + removeValidField("totalSendValue"); + return; + } + addValidField("totalSendValue"); + } + + @Column(name = "SEND_VALUE") + public Integer getSendValue() { + return sendValue; + } + + public void setSendValue(Integer sendValue) { + this.sendValue = sendValue; + if(sendValue == null){ + removeValidField("sendValue"); + return; + } + addValidField("sendValue"); + } + + @Column(name = "LAST_SEND_DATE") + public Date getLastSendDate() { + return lastSendDate; + } + + public void setLastSendDate(Date lastSendDate) { + this.lastSendDate = lastSendDate; + if(lastSendDate == null){ + removeValidField("lastSendDate"); + return; + } + addValidField("lastSendDate"); + } + + @Column(name = "NEXT_SEND_DATE") + public Date getNextSendDate() { + return nextSendDate; + } + + public void setNextSendDate(Date nextSendDate) { + this.nextSendDate = nextSendDate; + if(nextSendDate == null){ + removeValidField("nextSendDate"); + return; + } + addValidField("nextSendDate"); + } + + @Column(name = "BEGIN_TIME") + public Date getBeginTime() { + return beginTime; + } + + public void setBeginTime(Date beginTime) { + this.beginTime = beginTime; + if(beginTime == null){ + removeValidField("beginTime"); + return; + } + addValidField("beginTime"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/plan/entity/mapper/TbTablePlanMapper.java b/src/main/java/com/xmomen/module/plan/entity/mapper/TbTablePlanMapper.java new file mode 100644 index 0000000..0ee0f68 --- /dev/null +++ b/src/main/java/com/xmomen/module/plan/entity/mapper/TbTablePlanMapper.java @@ -0,0 +1,16 @@ +package com.xmomen.module.plan.entity.mapper; + +import com.xmomen.framework.mybatis.mapper.MybatisMapper; +import com.xmomen.module.plan.entity.TbTablePlan; +import com.xmomen.module.plan.entity.TbTablePlanExample; +import org.apache.ibatis.annotations.Param; + +public interface TbTablePlanMapper extends MybatisMapper { + int countByExample(TbTablePlanExample example); + + int deleteByExample(TbTablePlanExample example); + + int insertSelective(TbTablePlan record); + + int updateByExampleSelective(@Param("record") TbTablePlan record, @Param("example") TbTablePlanExample example); +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/plan/mapper/TablePlanMapper.xml b/src/main/java/com/xmomen/module/plan/mapper/TablePlanMapper.xml new file mode 100644 index 0000000..67cd388 --- /dev/null +++ b/src/main/java/com/xmomen/module/plan/mapper/TablePlanMapper.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/plan/model/UpdateTablePlan.java b/src/main/java/com/xmomen/module/plan/model/UpdateTablePlan.java new file mode 100644 index 0000000..6044600 --- /dev/null +++ b/src/main/java/com/xmomen/module/plan/model/UpdateTablePlan.java @@ -0,0 +1,60 @@ +package com.xmomen.module.plan.model; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +import javax.validation.constraints.NotNull; + +import lombok.Data; + +import org.hibernate.validator.constraints.NotBlank; + +public @Data class UpdateTablePlan implements Serializable{ + /** + * 餐桌计划 + */ + private Integer cdPlanId; + + /** + * 审核状态(0-未审核,1-审核通过) + */ + private Integer auditStatus; + + /** + * 是否暂停 0-不暂停,1-暂停 + */ + private Integer isStop; + + /** + * + */ + private Integer cdMemberId; + + /** + * 卡号 + */ + private String couponNumber; + + /** + * 手机号 + */ + private String consigneePhone; + + /** + * 收货人姓名 + */ + private String consigneeName; + + /** + * 收货人地址 + */ + private String consigneeAddress; + /** + * 生效时间 + */ + private Date beginTime; + + private String sendWeekDay; +} diff --git a/src/main/java/com/xmomen/module/plan/service/TablePlanSercvice.java b/src/main/java/com/xmomen/module/plan/service/TablePlanSercvice.java new file mode 100644 index 0000000..c7aecb4 --- /dev/null +++ b/src/main/java/com/xmomen/module/plan/service/TablePlanSercvice.java @@ -0,0 +1,17 @@ +package com.xmomen.module.plan.service; + +import com.xmomen.module.plan.model.CreateTablePlan; +import com.xmomen.module.plan.model.UpdateTablePlan; + +public interface TablePlanSercvice { + public void createTablePlan(CreateTablePlan createTablePlan); + + public void updateTablePlan(Integer id,UpdateTablePlan updateTablePlan); + + public void delete(Integer id); + + /** + * 生成餐桌计划订单 + */ + public void createTablePlanOrder(); +} diff --git a/src/main/java/com/xmomen/module/plan/service/impl/TablePlanSercviceImpl.java b/src/main/java/com/xmomen/module/plan/service/impl/TablePlanSercviceImpl.java new file mode 100644 index 0000000..3c5eb6e --- /dev/null +++ b/src/main/java/com/xmomen/module/plan/service/impl/TablePlanSercviceImpl.java @@ -0,0 +1,241 @@ +package com.xmomen.module.plan.service.impl; + +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.framework.utils.DateUtils; +import com.xmomen.module.base.entity.CdPlan; +import com.xmomen.module.base.entity.CdPlanItem; +import com.xmomen.module.order.entity.TbOrderRef; +import com.xmomen.module.order.model.CreateOrder; +import com.xmomen.module.order.model.CreateOrder.OrderItem; +import com.xmomen.module.order.service.OrderService; +import com.xmomen.module.plan.entity.TbTablePlan; +import com.xmomen.module.plan.entity.TbTablePlanExample; +import com.xmomen.module.plan.mapper.TablePlanMapper; +import com.xmomen.module.plan.model.CreateTablePlan; +import com.xmomen.module.plan.model.TablePlanModel; +import com.xmomen.module.plan.model.UpdateTablePlan; +import com.xmomen.module.plan.service.TablePlanSercvice; + +@Service +public class TablePlanSercviceImpl implements TablePlanSercvice { + @Autowired + MybatisDao mybatisDao; + + @Autowired + OrderService orderService; + + @Override + @Transactional + public void createTablePlan(CreateTablePlan createTablePlan) { + for(TbTablePlan tablePlan :createTablePlan.getTablePlans()){ + tablePlan.setAuditStatus(1); + tablePlan.setCdMemberId(createTablePlan.getCdMemberId()); + tablePlan.setConsigneeAddress(createTablePlan.getConsigneeAddress()); + tablePlan.setConsigneeName(createTablePlan.getConsigneeName()); + tablePlan.setConsigneePhone(createTablePlan.getConsigneePhone()); + tablePlan.setCouponNumber(createTablePlan.getCouponNumber()); + tablePlan.setSendValue(0); + CdPlan plan = mybatisDao.selectByPrimaryKey(CdPlan.class,tablePlan.getCdPlanId()); + tablePlan.setTotalSendValue(plan.getDeliverCount()); + mybatisDao.saveByModel(tablePlan); + } + } + + @Transactional + public void updateTablePlan(Integer id,UpdateTablePlan updateTablePlan) { + TbTablePlan tablePlan = new TbTablePlan(); + tablePlan.setId(id); + tablePlan.setCdPlanId(updateTablePlan.getCdPlanId()); + tablePlan.setCdMemberId(updateTablePlan.getCdMemberId()); + tablePlan.setConsigneeAddress(updateTablePlan.getConsigneeAddress()); + tablePlan.setConsigneeName(updateTablePlan.getConsigneeName()); + tablePlan.setConsigneePhone(updateTablePlan.getConsigneePhone()); + tablePlan.setCouponNumber(updateTablePlan.getCouponNumber()); + tablePlan.setSendWeekDay(updateTablePlan.getSendWeekDay()); + CdPlan plan = mybatisDao.selectByPrimaryKey(CdPlan.class,updateTablePlan.getCdPlanId()); + tablePlan.setTotalSendValue(plan.getDeliverCount()); + mybatisDao.saveByModel(tablePlan); + } + + @Transactional + public void delete(Integer id){ + mybatisDao.deleteByPrimaryKey(TbTablePlan.class, id); + } + + /** + * 生成餐桌计划订单 + */ + @Override + @Transactional + public void createTablePlanOrder() { + //获取今天星期几 + Date currentDate = new Date(); + Calendar cal = Calendar.getInstance(); + cal.setTime(currentDate); + //查找后一天的送货计划 + int weekday = cal.get(Calendar.DAY_OF_WEEK); + System.out.println(weekday); + SimpleDateFormat dateFm = new SimpleDateFormat("YYYY-MM-dd"); + //查询出所有未暂停的餐桌计划 + Map map = new HashMap(); + map.put("currentDate", dateFm.format(new Date())); + map.put("weekDay",weekday); + List tablePlanList = mybatisDao.getSqlSessionTemplate().selectList(TablePlanMapper.TablePlanMapperNameSpace + "getNormalTablePlanList", map); + if(tablePlanList.size() == 0){ + return ; + } + //拼装订单 + Map> tablePlanMap = new HashMap>(); + for(TablePlanModel tablePlanModel:tablePlanList){ + //先判断是否是要配送的订单 + //下次配送时间 + Date nextSendDate = tablePlanModel.getNextSendDate(); + if(nextSendDate != null){ + //下次配送时间不等于当前时间 + if (!dateFm.format(currentDate).equals(dateFm.format(nextSendDate))) { + continue; + } + } + //有效订单 (卡和手机号地址相同的合并成一个订单) + if(tablePlanMap.containsKey(tablePlanModel.getConsigneePhone()+tablePlanModel.getCouponNumber()+tablePlanModel.getConsigneeAddress())){ + tablePlanMap.get(tablePlanModel.getConsigneePhone()+tablePlanModel.getCouponNumber()+tablePlanModel.getConsigneeAddress()).add(tablePlanModel); + }else{ + List tablePlanModels = new ArrayList(); + tablePlanModels.add(tablePlanModel); + tablePlanMap.put(tablePlanModel.getConsigneePhone()+tablePlanModel.getCouponNumber()+tablePlanModel.getConsigneeAddress(), tablePlanModels); + } + + //计算下次配送时间 + //获取送货频次 + Integer deliveryType = tablePlanModel.getDeliveryType(); + //获取间隔天数 + Integer day = deliveryType * 7; + //一星期配送几次 + String[] sendWeekDays = tablePlanModel.getSendWeekDay().split(","); + //一星期配送一次 则直接加上间隔天数就行 + if(sendWeekDays.length == 1){ + nextSendDate = addDate(currentDate,day); + } + //一星期配送多次场合 + else{ + int i = 0; + for(String sendWeekDay : sendWeekDays){ + if(weekday == Integer.parseInt(sendWeekDay)){ + break; + } + i++; + } + //第一个或者中间的日期 + if(i == 0 || (i > 0 && i< (sendWeekDays.length -1))){ + day = Integer.parseInt(sendWeekDays[i+1]) - Integer.parseInt(sendWeekDays[i]); + nextSendDate = addDate(currentDate,day); + } + //最后一个 + else if(i == (sendWeekDays.length - 1)){ + day = day - (Integer.parseInt(sendWeekDays[i]) - Integer.parseInt(sendWeekDays[0])); + nextSendDate = addDate(currentDate,day); + } + } + + //更新订单的最后次送货时间 和次数 + TbTablePlanExample tbTablePlanExample = new TbTablePlanExample(); + tbTablePlanExample.createCriteria() + .andIdEqualTo(tablePlanModel.getId()); + TbTablePlan tbTablePlan = new TbTablePlan(); + tbTablePlan.setLastSendDate(currentDate); + tbTablePlan.setNextSendDate(nextSendDate); + tbTablePlan.setSendValue(tablePlanModel.getSendValue()+1); + mybatisDao.updateOneByExampleSelective(tbTablePlan, tbTablePlanExample); + } + //下单 + if(tablePlanMap.size() > 0){ + createOrderFormTablePlan(tablePlanMap); + } + } + + //餐桌计划下单 + private void createOrderFormTablePlan(Map> tablePlanMap){ + //一个一个手机号下单 + for(String key :tablePlanMap.keySet()){ + List tablePlanModels = tablePlanMap.get(key); + TablePlanModel tablePlanModelHead =tablePlanModels.get(0); + CreateOrder createOrder = new CreateOrder(); + String orderNo = DateUtils.getDateTimeString(); + createOrder.setOrderNo(orderNo); + createOrder.setConsigneeName(tablePlanModelHead.getConsigneeName()); + createOrder.setConsigneeAddress(tablePlanModelHead.getConsigneeAddress()); + createOrder.setConsigneePhone(tablePlanModelHead.getConsigneePhone()); + //卡号 + createOrder.setPaymentRelationNo(tablePlanModelHead.getCouponNumber()); + createOrder.setOrderSource(4); + //其他付款方式 + createOrder.setPaymentMode(6); + createOrder.setOrderType(3); + createOrder.setCreateUserId(tablePlanModelHead.getManagerId()); + createOrder.setManagerId(tablePlanModelHead.getManagerId()); + createOrder.setCompanyId(tablePlanModelHead.getCompanyId()); + createOrder.setAppointmentTime(addDate(mybatisDao.getSysdate(),1)); + //计算金额 + BigDecimal totalAmount = BigDecimal.ZERO; + List orderItemList = new ArrayList(); + //查找商品 + for(TablePlanModel tablePlanModel:tablePlanModels){ + List planItems = new ArrayList(); + //随机送产品 + if(tablePlanModel.getIsRandom() == 1){ + //随机取出对应产品类型的商品 + Map map = new HashMap(); + map.put("categoryId", tablePlanModel.getCdCategoryId()); + map.put("limit",tablePlanModel.getRandomNum()); + planItems = mybatisDao.getSqlSessionTemplate().selectList(TablePlanMapper.TablePlanMapperNameSpace + "getRandItem", map); + } + else{ + CdPlanItem cdPlanItem = new CdPlanItem(); + cdPlanItem.setCdPlanId(tablePlanModel.getCdPlanId()); + planItems = mybatisDao.selectByModel(cdPlanItem); + } + + for(CdPlanItem planItem : planItems){ + OrderItem orderItem = new OrderItem(); + orderItem.setOrderItemId(planItem.getCdItemId()); + orderItem.setItemQty(new BigDecimal(planItem.getCountValue())); + orderItemList.add(orderItem); + } + + BigDecimal taotalPrice = tablePlanModel.getPrice() == null ?BigDecimal.ZERO:tablePlanModel.getPrice(); + + totalAmount = totalAmount.add(taotalPrice.divide(new BigDecimal(tablePlanModel.getTotalSendValue()),2, BigDecimal.ROUND_DOWN)); + //生成餐桌计划和订单的关联关系 + TbOrderRef orderRef = new TbOrderRef(); + orderRef.setOrderNo(orderNo); + orderRef.setRefType("ORDER_TABLE_PLAN"); + orderRef.setRefValue(tablePlanModel.getId()+""); + mybatisDao.insert(orderRef); + } + + createOrder.setOrderItemList(orderItemList); + createOrder.setTotalPrice(totalAmount); + //下单 + orderService.createOrder(createOrder); + } + } + + public static Date addDate(Date d,long day) { + long time = d.getTime(); + day = day*24*60*60*1000; + time += day; + return new Date(time); + }} diff --git a/src/main/java/com/xmomen/module/product/mapper/ProductCategoryMapper.xml b/src/main/java/com/xmomen/module/product/mapper/ProductCategoryMapper.xml new file mode 100644 index 0000000..3b507de --- /dev/null +++ b/src/main/java/com/xmomen/module/product/mapper/ProductCategoryMapper.xml @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/product/model/ProductLabel.java b/src/main/java/com/xmomen/module/product/model/ProductLabel.java new file mode 100644 index 0000000..9c18da5 --- /dev/null +++ b/src/main/java/com/xmomen/module/product/model/ProductLabel.java @@ -0,0 +1,30 @@ +package com.xmomen.module.product.model; + +public enum ProductLabel { + + XIAN_SHI_QIANG_GOU("xianShiQiangGou", "XIAN_SHI_QIANG_GOU"), + XIN_PIN_CHANG_XIAN("xinPinChangXian", "XIN_PIN_CHANG_XIAN"), + RE_MAI_TUI_JIAN("reMaiTuiJian", "RE_MAI_TUI_JIAN"); + String desc; + String entityField; + public String getEntityField() { + return this.entityField; + } + public String getDesc() { + return this.desc; + } + ProductLabel(String desc, String entityField) { + this.desc = desc; + this.entityField = entityField; + }; + + public static ProductLabel enumOf(String desc) { + ProductLabel[] labels = ProductLabel.values(); + int length = labels.length; + for(int i = 0; i < length; i++) { + ProductLabel label = labels[i]; + if(label.desc.equalsIgnoreCase(desc)) return label; + } + return null; + } +} diff --git a/src/main/java/com/xmomen/module/product/model/ProductModel.java b/src/main/java/com/xmomen/module/product/model/ProductModel.java new file mode 100644 index 0000000..b8f94f2 --- /dev/null +++ b/src/main/java/com/xmomen/module/product/model/ProductModel.java @@ -0,0 +1,40 @@ +package com.xmomen.module.product.model; + +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +import lombok.Data; + +public @Data class ProductModel { + + private Integer id; + private String itemCode; + private String itemName; + private Integer categoryId; + private String categoryName; + private String itemDescribe; + private Integer itemType; + private String yieldly; + private String spec; + private Double basePrice; + private Double memberPrice; + private String priceManner; + private Boolean sellStatus; + private String sellUnit; + private Double sellPrice; + private Integer sellNum; + private Integer stockNum; + + private Boolean xianShiQiangGou; + private Boolean xinPinChangXian; + private Boolean reMaiTuiJian; + + private String picUrl; + private Boolean isDefaultPath; + + private List picUrls; + private String detailContent; + + private Integer itemQty; +} diff --git a/src/main/java/com/xmomen/module/product/model/ProductQuery.java b/src/main/java/com/xmomen/module/product/model/ProductQuery.java new file mode 100644 index 0000000..31c2c69 --- /dev/null +++ b/src/main/java/com/xmomen/module/product/model/ProductQuery.java @@ -0,0 +1,18 @@ +package com.xmomen.module.product.model; + +import java.util.List; + +import lombok.Data; + +public @Data class ProductQuery { + + private Integer categoryId; + private String keyword; + private String orderField; + private Boolean isAsc = true; + private List filterLabels; + + private List productIds; + private String memberCode; + +} diff --git a/src/main/java/com/xmomen/module/product/service/impl/CategoryServiceImpl.java b/src/main/java/com/xmomen/module/product/service/impl/CategoryServiceImpl.java new file mode 100644 index 0000000..a379757 --- /dev/null +++ b/src/main/java/com/xmomen/module/product/service/impl/CategoryServiceImpl.java @@ -0,0 +1,58 @@ +package com.xmomen.module.product.service.impl; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.module.product.entity.Category; +import com.xmomen.module.product.mapper.ProductCategoryMapper; +import com.xmomen.module.product.model.CategoryModel; +import com.xmomen.module.product.service.CategoryService; + +/** + * + * @author xiao + * + */ +@Service +public class CategoryServiceImpl implements CategoryService { + + @Autowired + MybatisDao mybatisDao; + + public List getAllProductCategory() { + List categoryList = mybatisDao.getSqlSessionTemplate().selectList(ProductCategoryMapper.ProductCategoryMapperNameSpace + "getProductCategoryList"); + List categories = new ArrayList(); + if(categoryList != null) { + Map topCategories = new TreeMap(); + for(Category category: categoryList) { + CategoryModel model = new CategoryModel(); + model.setId(category.getId()); + model.setLeaf(true); + model.setName(category.getName()); + if(category.getParentId() == null) { + topCategories.put(String.valueOf(category.getId()), model); + } else { + CategoryModel parentCategory = topCategories.get(String.valueOf(category.getParentId())); + if(parentCategory != null) { + parentCategory.setLeaf(false); + model.setParentId(parentCategory.getId()); + model.setParentName(parentCategory.getName()); + if(parentCategory.getNodes() == null) { + parentCategory.setNodes(new ArrayList()); + } + parentCategory.getNodes().add(model); + } + } + + } + categories.addAll(topCategories.values()); + } + return categories; + } +} diff --git a/src/main/java/com/xmomen/module/product/service/impl/ProductServiceImpl.java b/src/main/java/com/xmomen/module/product/service/impl/ProductServiceImpl.java new file mode 100644 index 0000000..713ce55 --- /dev/null +++ b/src/main/java/com/xmomen/module/product/service/impl/ProductServiceImpl.java @@ -0,0 +1,104 @@ +package com.xmomen.module.product.service.impl; + +import java.util.ArrayList; +import java.util.List; + +import com.xmomen.module.resource.service.ResourceUtilsService; +import org.apache.commons.collections.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.module.product.mapper.ProductMapper; +import com.xmomen.module.product.model.ProductModel; +import com.xmomen.module.product.model.ProductQuery; +import com.xmomen.module.product.service.ProductService; +import com.xmomen.module.resource.service.ResourceService; + +@Service +public class ProductServiceImpl implements ProductService { + + @Autowired + MybatisDao mybatisDao; + + @SuppressWarnings("unchecked") + @Override + public Page getProductList(ProductQuery productQuery, Integer limit, Integer offset) { + Page pageModel = (Page) mybatisDao.selectPage(ProductMapper.ProductMapperNameSpace + "getProductList", productQuery, limit, offset); + List products = pageModel.getResult(); + if (products != null) { + for (ProductModel product : products) { + product.setBasePrice(null);//隐藏商品原价 + if (StringUtils.isEmpty(product.getPicUrl())) { + product.setPicUrl(ResourceUtilsService.getDefaultPicPath()); + } + else { + product.setPicUrl(ResourceUtilsService.getWholeHttpPath(product.getPicUrl())); + } + } + } + return pageModel; + } + + @Override + public ProductModel getDetailById(Integer id) { + List products = mybatisDao.getSqlSessionTemplate().selectList(ProductMapper.ProductMapperNameSpace + "getProductDetail", id); + List picUrls = new ArrayList(); + String defaultPicUrl = null; + if (products != null && !products.isEmpty()) { + for (ProductModel product : products) { + if (!StringUtils.isEmpty(product.getPicUrl())) { + if (product.getIsDefaultPath()) { + defaultPicUrl = product.getPicUrl(); + } + //else { + picUrls.add(ResourceUtilsService.getWholeHttpPath(product.getPicUrl())); + //} + } + } + ProductModel detail = products.get(0); + if(picUrls.isEmpty()) { + picUrls.add(ResourceUtilsService.getDefaultPicPath()); + } + detail.setPicUrls(picUrls); + detail.setBasePrice(null);//隐藏商品原价 + if (defaultPicUrl == null) { + if (StringUtils.isEmpty(detail.getPicUrl())) { + detail.setPicUrl(ResourceUtilsService.getDefaultPicPath()); + } + else { + detail.setPicUrl(ResourceUtilsService.getWholeHttpPath(detail.getPicUrl())); + } + } + else { + detail.setPicUrl(ResourceUtilsService.getWholeHttpPath(defaultPicUrl)); + } + return detail; + } + return null; + } + + @Override + public List getProducts(List itemIds) { + if (CollectionUtils.isEmpty(itemIds)) { + return new ArrayList(); + } + ProductQuery productQuery = new ProductQuery(); + productQuery.setProductIds(itemIds); + List products = mybatisDao.getSqlSessionTemplate().selectList(ProductMapper.ProductMapperNameSpace + "getProductsByIds", productQuery); + if (products != null && !products.isEmpty()) { + for (ProductModel product : products) { + product.setBasePrice(null);//隐藏商品原价 + if (StringUtils.isEmpty(product.getPicUrl())) { + product.setPicUrl(ResourceUtilsService.getDefaultPicPath()); + } + else { + product.setPicUrl(ResourceUtilsService.getWholeHttpPath(product.getPicUrl())); + } + } + } + return products; + } +} diff --git a/src/main/java/com/xmomen/module/receipt/controller/ReceivingCodeRequestController.java b/src/main/java/com/xmomen/module/receipt/controller/ReceivingCodeRequestController.java new file mode 100644 index 0000000..7261828 --- /dev/null +++ b/src/main/java/com/xmomen/module/receipt/controller/ReceivingCodeRequestController.java @@ -0,0 +1,44 @@ +package com.xmomen.module.receipt.controller; + +import java.util.HashMap; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.module.logger.Log; +import com.xmomen.module.receipt.entity.TbReceivingCodeRequest; +import com.xmomen.module.receipt.mapper.ReceivingCodeRequestMapper; + +@RestController +public class ReceivingCodeRequestController { + @Autowired + MybatisDao mybatisDao; + + /** + * 查询收货码请求 + * @param id + * @return + */ + @RequestMapping(value = "/receivingCodeRequest", method = RequestMethod.GET) + @Log(actionName = "查询收货码请求") + public Page getExpressList(@RequestParam(value = "limit") Integer limit, + @RequestParam(value = "offset") Integer offset, + @RequestParam(value = "orderNo", required = false) String orderNo, + @RequestParam(value = "requestTimeStart", required = false) String requestTimeStart, + @RequestParam(value = "requestTimeEnd", required = false) String requestTimeEnd, + @RequestParam(value = "keyword", required = false) String keyword){ + Map map = new HashMap(); + map.put("orderNo", orderNo); + map.put("keyword", keyword); + map.put("requestTimeStart", requestTimeStart); + map.put("requestTimeEnd", requestTimeEnd); + return (Page) mybatisDao.selectPage(ReceivingCodeRequestMapper.ReceivingCodeRequestMapperNameSpace + "getReceivingCodeRequestList", map, limit, offset); + } + +} diff --git a/src/main/java/com/xmomen/module/receipt/controller/ReturnOrderController.java b/src/main/java/com/xmomen/module/receipt/controller/ReturnOrderController.java new file mode 100644 index 0000000..2e41b6b --- /dev/null +++ b/src/main/java/com/xmomen/module/receipt/controller/ReturnOrderController.java @@ -0,0 +1,119 @@ +package com.xmomen.module.receipt.controller; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.framework.utils.StringUtilsExt; +import com.xmomen.module.logger.Log; +import com.xmomen.module.order.entity.TbOrderItem; +import com.xmomen.module.order.entity.TbReturnOrderItem; +import com.xmomen.module.order.model.OrderModel; +import com.xmomen.module.order.model.OrderQuery; +import com.xmomen.module.receipt.model.ReturnOrderModel; +import com.xmomen.module.receipt.model.ReturnOrderQuery; +import com.xmomen.module.receipt.service.ReturnOrderService; + +/** + * Created by Jeng on 2016/3/30. + */ +@RestController +public class ReturnOrderController { + + @Autowired + ReturnOrderService returnOrderService; + + @Autowired + MybatisDao mybatisDao; + + /** + * 退货订单列表 + * @param limit + * @param offset + * @param keyword + * @return + */ + @RequestMapping(value = "/returnOrder", method = RequestMethod.GET) + @Log(actionName = "查询退货订单列表") + public Page getUserList(@RequestParam(value = "limit") Integer limit, + @RequestParam(value = "offset") Integer offset, + @RequestParam(value = "orderStatus", required = false) Integer orderStatus, + @RequestParam(value = "keyword", required = false) String keyword, + @RequestParam(value = "returnTimeStart",required = false) String returnTimeStart, + @RequestParam(value = "returnTimeEnd",required = false) String returnTimeEnd + ){ + ReturnOrderQuery orderQuery = new ReturnOrderQuery(); + orderQuery.setKeyword(keyword); + if(StringUtilsExt.isNotBlank(returnTimeStart)){ + orderQuery.setReturnTimeStart(returnTimeStart); + } + + if(StringUtilsExt.isNotBlank(returnTimeEnd)){ + orderQuery.setReturnTimeEnd(returnTimeEnd); + } + //客服经理过滤 如果有客服组权限则不过滤 +// if(SecurityUtils.getSubject().hasRole(AppConstants.CUSTOMER_MANAGER_PERMISSION_CODE) && !SecurityUtils.getSubject().hasRole(AppConstants.CUSTOMER_PERMISSION_CODE)){ +// Integer userId = (Integer) SecurityUtils.getSubject().getSession().getAttribute(AppConstants.SESSION_USER_ID_KEY); +// orderQuery.setCreateUserId(userId); +// } + return returnOrderService.getReturnOrderList(orderQuery, limit, offset); + } + /** + * 查询退货订单商品列表 + * @param limit + * @param offset + * @param orderNo + * @return + */ + @RequestMapping(value = "/returnOrder/{id}/item", method = RequestMethod.GET) + @Log(actionName = "查询退货订单商品列表") + public Page getUserList(@RequestParam(value = "limit") Integer limit, + @RequestParam(value = "offset") Integer offset, + @PathVariable(value = "id") Integer id){ + TbReturnOrderItem returnOrderItem = new TbReturnOrderItem(); + returnOrderItem.setReturnOrderId(id); + return mybatisDao.selectPageByModel(returnOrderItem, limit, offset); + } + + /** + * 审核退货订单 + * @param orderNo + * @param statusCd + * @return + */ + @RequestMapping(value = "/returnOrder/{id}/audit", method = RequestMethod.POST) + @Log(actionName = "审核退货订单") + public void auditReturnOrder(@PathVariable(value = "id") Integer id, + @RequestParam(value="statusCd") Integer statusCd) { + this.returnOrderService.auditReturnOrder(id,statusCd); + } + + /** + * 退货收货扫描操作 + * @param boxNo 箱号 + */ + @RequestMapping(value ="/returnOrder/returnOrderShouhuo",method = RequestMethod.PUT) + @Log(actionName = "退货收货扫描操作") + public ReturnOrderModel returnOrderShouhuo(@RequestParam(value = "boxNo")String boxNo){ + return this.returnOrderService.returnOrderShouhuo(boxNo); + } + + /** + * 退货收货操作 + * @param boxNo 箱号 + */ + @RequestMapping(value ="/returnOrder/shouhuo",method = RequestMethod.PUT) + @Log(actionName = "退货收货操作") + public void orderNo(@RequestParam(value = "orderNo")String orderNo){ + this.returnOrderService.shouhuo(orderNo); + } + +} diff --git a/src/main/java/com/xmomen/module/receipt/model/ReceivingCodeRequestModel.java b/src/main/java/com/xmomen/module/receipt/model/ReceivingCodeRequestModel.java new file mode 100644 index 0000000..f3fb5ed --- /dev/null +++ b/src/main/java/com/xmomen/module/receipt/model/ReceivingCodeRequestModel.java @@ -0,0 +1,48 @@ +package com.xmomen.module.receipt.model; + +import java.util.Date; + +import lombok.Data; + + +public @Data class ReceivingCodeRequestModel { + /** + * 主键 + */ + private Integer id; + + /** + * 订单号 + */ + private String orderNo; + + /** + * 请求人 + */ + private String requestUser; + + /** + * 请求时间 + */ + private Date requestTime; + + /** + * 请求人手机号 + */ + private String requestPhone; + + /** + * 快递商名称 + */ + private String expressName; + + /** + * 收货码 + */ + private String receivingCode; + + /** + * 收货人 + */ + private String consigneeName; +} diff --git a/src/main/java/com/xmomen/module/receipt/model/ReturnOrderQuery.java b/src/main/java/com/xmomen/module/receipt/model/ReturnOrderQuery.java new file mode 100644 index 0000000..1271e06 --- /dev/null +++ b/src/main/java/com/xmomen/module/receipt/model/ReturnOrderQuery.java @@ -0,0 +1,25 @@ +package com.xmomen.module.receipt.model; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + */ +public @Data +class ReturnOrderQuery implements Serializable { + private Integer id; + private String orderNo; + private String returnTimeStart; + private String returnTimeEnd; + private String keyword; + private String returnStatus; + + private String managerId; + private String consigneeName; + private int hasNoShowCancel; + private int showDespatch; + private int createUserId; + private int despatchExpressId; +} diff --git a/src/main/java/com/xmomen/module/report/controller/OrderReportController.java b/src/main/java/com/xmomen/module/report/controller/OrderReportController.java new file mode 100644 index 0000000..e90f895 --- /dev/null +++ b/src/main/java/com/xmomen/module/report/controller/OrderReportController.java @@ -0,0 +1,192 @@ +package com.xmomen.module.report.controller; + +import com.xmomen.framework.utils.StringUtilsExt; +import com.xmomen.module.base.constant.AppConstants; +import com.xmomen.module.order.model.OrderQuery; +import com.xmomen.module.order.service.OrderService; +import com.xmomen.module.report.model.*; +import com.xmomen.module.report.service.ReportOrderService; +import com.xmomen.module.stockdaily.model.StockDailyModel; +import com.xmomen.module.stockdaily.service.StockDailyService; +import org.apache.shiro.SecurityUtils; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.vo.NormalExcelConstants; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.List; + +/** + * Created by tanxinzheng on 16/9/3. + */ +@Controller +public class OrderReportController { + + @Autowired + ReportOrderService reportOrderService; + + @Autowired + StockDailyService stockDailyService; + + /** + * 订单导出 + * + * @param modelMap + * @return + */ + @RequestMapping(value = "/report/order", method = RequestMethod.GET) + public String exportOrder( + @RequestParam(value = "beginTime", required = false) String beginTime, + @RequestParam(value = "endTime", required = false) String endTime, + @RequestParam(value = "companyId", required = false) Integer companyId, + @RequestParam(value = "managerId", required = false) Integer managerId, + ModelMap modelMap) { + ReportQuery reportQuery = new ReportQuery(); + if (StringUtilsExt.isNotBlank(beginTime)) { + reportQuery.setBeginTime(beginTime); + } + if (StringUtilsExt.isNotBlank(endTime)) { + reportQuery.setEndTime(endTime); + } + reportQuery.setCompanyId(companyId); + reportQuery.setManagerId(managerId); + //客服经理过滤 如果有客服组权限则不过滤 + if (SecurityUtils.getSubject().hasRole(AppConstants.CUSTOMER_MANAGER_PERMISSION_CODE) + && !SecurityUtils.getSubject().hasRole(AppConstants.CUSTOMER_PERMISSION_CODE) + && !SecurityUtils.getSubject().hasRole(AppConstants.HOU_TAI_CODE) + && !SecurityUtils.getSubject().hasRole(AppConstants.ADMIN) + && !SecurityUtils.getSubject().hasRole(AppConstants.SUPER_ADMIN) + && !SecurityUtils.getSubject().hasRole(AppConstants.CWU) + && !SecurityUtils.getSubject().hasRole(AppConstants.WULIUZXB)) { + Integer userId = (Integer) SecurityUtils.getSubject().getSession().getAttribute(AppConstants.SESSION_USER_ID_KEY); + reportQuery.setManagerId(userId); + } + List list = reportOrderService.getOrderReportList(reportQuery); + String[] beginTimes = beginTime.split("-"); + String[] endTimes = endTime.split("-"); + modelMap.put(NormalExcelConstants.FILE_NAME, beginTimes[0] + "年" + beginTimes[1] + "月" + beginTimes[2] + "日-" + endTimes[0] + "年" + endTimes[1] + "月" + endTimes[2] + "日订单报表"); + modelMap.put(NormalExcelConstants.PARAMS, new ExportParams()); + modelMap.put(NormalExcelConstants.CLASS, OrderReport.class); + modelMap.put(NormalExcelConstants.DATA_LIST, list); + return NormalExcelConstants.JEECG_EXCEL_VIEW; + } + + /** + * 物流导出 + * + * @param modelMap + * @return + */ + @RequestMapping(value = "/report/express", method = RequestMethod.GET) + public String exportExpress( + @RequestParam(value = "beginTime", required = false) String beginTime, + @RequestParam(value = "endTime", required = false) String endTime, + @RequestParam(value = "companyId", required = false) Integer companyId, + @RequestParam(value = "managerId", required = false) Integer managerId, + ModelMap modelMap) { + ReportQuery reportQuery = new ReportQuery(); + if (StringUtilsExt.isNotBlank(beginTime)) { + reportQuery.setBeginTime(beginTime); + } + if (StringUtilsExt.isNotBlank(endTime)) { + reportQuery.setEndTime(endTime); + } + reportQuery.setCompanyId(companyId); + reportQuery.setManagerId(managerId); + //客服经理过滤 如果有客服组权限则不过滤 + if (SecurityUtils.getSubject().hasRole(AppConstants.CUSTOMER_MANAGER_PERMISSION_CODE) + && !SecurityUtils.getSubject().hasRole(AppConstants.CUSTOMER_PERMISSION_CODE) + && !SecurityUtils.getSubject().hasRole(AppConstants.HOU_TAI_CODE) + && !SecurityUtils.getSubject().hasRole(AppConstants.ADMIN) + && !SecurityUtils.getSubject().hasRole(AppConstants.SUPER_ADMIN) + && !SecurityUtils.getSubject().hasRole(AppConstants.CWU) + && !SecurityUtils.getSubject().hasRole(AppConstants.WULIUZXB)) { + Integer userId = (Integer) SecurityUtils.getSubject().getSession().getAttribute(AppConstants.SESSION_USER_ID_KEY); + reportQuery.setManagerId(userId); + } + List list = reportOrderService.getExpressReportList(reportQuery); + String[] beginTimes = beginTime.split("-"); + String[] endTimes = endTime.split("-"); + modelMap.put(NormalExcelConstants.FILE_NAME, beginTimes[0] + "年" + beginTimes[1] + "月" + beginTimes[2] + "日-" + endTimes[0] + "年" + endTimes[1] + "月" + endTimes[2] + "日物流报表"); + modelMap.put(NormalExcelConstants.PARAMS, new ExportParams()); + modelMap.put(NormalExcelConstants.CLASS, ExpressReport.class); + modelMap.put(NormalExcelConstants.DATA_LIST, list); + return NormalExcelConstants.JEECG_EXCEL_VIEW; + } + + /** + * 财务导出 + * + * @param modelMap + * @return + */ + @RequestMapping(value = "/report/finance", method = RequestMethod.GET) + public String exportFinance( + @RequestParam(value = "beginTime", required = false) String beginTime, + @RequestParam(value = "endTime", required = false) String endTime, + @RequestParam(value = "companyId", required = false) Integer companyId, + @RequestParam(value = "managerId", required = false) Integer managerId, + ModelMap modelMap) { + ReportQuery reportQuery = new ReportQuery(); + if (StringUtilsExt.isNotBlank(beginTime)) { + reportQuery.setBeginTime(beginTime); + } + if (StringUtilsExt.isNotBlank(endTime)) { + reportQuery.setEndTime(endTime); + } + reportQuery.setCompanyId(companyId); + reportQuery.setManagerId(managerId); + //客服经理过滤 如果有客服组权限则不过滤 + if (SecurityUtils.getSubject().hasRole(AppConstants.CUSTOMER_MANAGER_PERMISSION_CODE) + && !SecurityUtils.getSubject().hasRole(AppConstants.CUSTOMER_PERMISSION_CODE) + && !SecurityUtils.getSubject().hasRole(AppConstants.HOU_TAI_CODE) + && !SecurityUtils.getSubject().hasRole(AppConstants.ADMIN) + && !SecurityUtils.getSubject().hasRole(AppConstants.SUPER_ADMIN) + && !SecurityUtils.getSubject().hasRole(AppConstants.CWU) + && !SecurityUtils.getSubject().hasRole(AppConstants.WULIUZXB)) { + Integer userId = (Integer) SecurityUtils.getSubject().getSession().getAttribute(AppConstants.SESSION_USER_ID_KEY); + reportQuery.setManagerId(userId); + } + List list = reportOrderService.getFinanceReportList(reportQuery); + String[] beginTimes = beginTime.split("-"); + String[] endTimes = endTime.split("-"); + modelMap.put(NormalExcelConstants.FILE_NAME, beginTimes[0] + "年" + beginTimes[1] + "月" + beginTimes[2] + "日-" + endTimes[0] + "年" + endTimes[1] + "月" + endTimes[2] + "日财务报表"); + modelMap.put(NormalExcelConstants.PARAMS, new ExportParams()); + modelMap.put(NormalExcelConstants.CLASS, FinanceReport.class); + modelMap.put(NormalExcelConstants.DATA_LIST, list); + return NormalExcelConstants.JEECG_EXCEL_VIEW; + } + + /** + * 库存快照导出 + * + * @param modelMap + * @return + */ + @RequestMapping(value = "/report/stockDaily", method = RequestMethod.GET) + public String exportStockDaily( + @RequestParam(value = "beginTime", required = false) String beginTime, + @RequestParam(value = "endTime", required = false) String endTime, + ModelMap modelMap) { + ReportQuery reportQuery = new ReportQuery(); + if (StringUtilsExt.isNotBlank(beginTime)) { + reportQuery.setBeginTime(beginTime); + } + if (StringUtilsExt.isNotBlank(endTime)) { + reportQuery.setEndTime(endTime); + } + + List list = stockDailyService.getStockDailyReport(reportQuery); + String[] beginTimes = beginTime.split("-"); + String[] endTimes = endTime.split("-"); + modelMap.put(NormalExcelConstants.FILE_NAME, beginTimes[0] + "年" + beginTimes[1] + "月" + beginTimes[2] + "日-" + endTimes[0] + "年" + endTimes[1] + "月" + endTimes[2] + "日库存快照报表"); + modelMap.put(NormalExcelConstants.PARAMS, new ExportParams()); + modelMap.put(NormalExcelConstants.CLASS, StockDailyReport.class); + modelMap.put(NormalExcelConstants.DATA_LIST, list); + return NormalExcelConstants.JEECG_EXCEL_VIEW; + } +} diff --git a/src/main/java/com/xmomen/module/report/mapper/ReportOrderMapper.java b/src/main/java/com/xmomen/module/report/mapper/ReportOrderMapper.java new file mode 100644 index 0000000..c4a173f --- /dev/null +++ b/src/main/java/com/xmomen/module/report/mapper/ReportOrderMapper.java @@ -0,0 +1,9 @@ +package com.xmomen.module.report.mapper; + +/** + * Created by Jeng on 16/4/13. + */ +public interface ReportOrderMapper { + + public static final String REPORT_ORDER_MAPPER_NAMESPACE = "com.xmomen.module.report.mapper.ReportOrderMapper."; +} diff --git a/src/main/java/com/xmomen/module/report/mapper/ReportOrderMapper.xml b/src/main/java/com/xmomen/module/report/mapper/ReportOrderMapper.xml new file mode 100644 index 0000000..49905fa --- /dev/null +++ b/src/main/java/com/xmomen/module/report/mapper/ReportOrderMapper.xml @@ -0,0 +1,513 @@ + + + + + + + + + + + + + + diff --git a/src/main/java/com/xmomen/module/report/model/ReportQuery.java b/src/main/java/com/xmomen/module/report/model/ReportQuery.java new file mode 100644 index 0000000..ab5a481 --- /dev/null +++ b/src/main/java/com/xmomen/module/report/model/ReportQuery.java @@ -0,0 +1,15 @@ +package com.xmomen.module.report.model; + +import lombok.Data; + +import java.io.Serializable; + +/** + */ +public @Data +class ReportQuery implements Serializable { + private String beginTime; + private String endTime; + private Integer managerId; + private Integer companyId; +} diff --git a/src/main/java/com/xmomen/module/report/service/ReportOrderService.java b/src/main/java/com/xmomen/module/report/service/ReportOrderService.java new file mode 100644 index 0000000..6594a6b --- /dev/null +++ b/src/main/java/com/xmomen/module/report/service/ReportOrderService.java @@ -0,0 +1,135 @@ +package com.xmomen.module.report.service; + +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.framework.utils.AssertExt; +import com.xmomen.framework.utils.StringUtilsExt; +import com.xmomen.module.base.constant.AppConstants; +import com.xmomen.module.base.service.ItemService; +import com.xmomen.module.order.entity.*; +import com.xmomen.module.order.mapper.OrderMapper; +import com.xmomen.module.receipt.mapper.ReturnOrderMapper; +import com.xmomen.module.receipt.model.ReturnOrderModel; +import com.xmomen.module.receipt.model.ReturnOrderQuery; +import com.xmomen.module.report.mapper.ReportOrderMapper; +import com.xmomen.module.report.model.ExpressReport; +import com.xmomen.module.report.model.FinanceReport; +import com.xmomen.module.report.model.OrderReport; +import com.xmomen.module.report.model.ReportQuery; +import com.xmomen.module.wx.model.AjaxResult; +import org.apache.shiro.SecurityUtils; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * Created by Jeng on 16/4/5. + */ +@Service +public class ReportOrderService { + + @Autowired + MybatisDao mybatisDao; + + /** + * 查询订单报表 + * + * @param reportQuery + * @return + */ + public List getOrderReportList(ReportQuery reportQuery) { + List orderReportList = mybatisDao.getSqlSessionTemplate().selectList(ReportOrderMapper.REPORT_ORDER_MAPPER_NAMESPACE + "getReportOrderList", reportQuery); + for (OrderReport orderReport : orderReportList) { + if ("0".equals(orderReport.getPaymentMode())) { + orderReport.setHuiKuiAmount(orderReport.getPayAmount()); + } + if ("1".equals(orderReport.getPaymentMode())) { + orderReport.setManagerAmount(orderReport.getPayAmount()); + } + else if ("4".equals(orderReport.getPaymentMode())) { + orderReport.setExpressAmount(orderReport.getPayAmount()); + } + else if ("5".equals(orderReport.getPaymentMode())) { + orderReport.setCouponAmount(orderReport.getPayAmount()); + } + else if ("7".equals(orderReport.getPaymentMode())) { + orderReport.setQuanAmount(orderReport.getPayAmount()); + } + else if ("2".equals(orderReport.getPaymentMode())) { + orderReport.setPosAmount(orderReport.getPayAmount()); + } + else if ("3".equals(orderReport.getPaymentMode())) { + orderReport.setZhuanZhanAmount(orderReport.getPayAmount()); + } + else if ("6".equals(orderReport.getPaymentMode())) { + orderReport.setOtherAmount(orderReport.getPayAmount()); + } + else if ("8".equals(orderReport.getPaymentMode())) { + orderReport.setHuiKuiAmount(orderReport.getPayAmount()); + } + //其他付款方式 + if ("1".equals(orderReport.getOtherPaymentMode())) { + orderReport.setManagerAmount(orderReport.getOtherPayAmount()); + } + else if ("4".equals(orderReport.getOtherPaymentMode())) { + orderReport.setExpressAmount(orderReport.getOtherPayAmount()); + } + else if ("5".equals(orderReport.getOtherPaymentMode())) { + orderReport.setCouponAmount(orderReport.getOtherPayAmount()); + } + else if ("7".equals(orderReport.getOtherPaymentMode())) { + orderReport.setQuanAmount(orderReport.getOtherPayAmount()); + } + else if ("2".equals(orderReport.getOtherPaymentMode())) { + orderReport.setPosAmount(orderReport.getOtherPayAmount()); + } + else if ("3".equals(orderReport.getOtherPaymentMode())) { + orderReport.setZhuanZhanAmount(orderReport.getOtherPayAmount()); + } + else if ("6".equals(orderReport.getOtherPaymentMode())) { + orderReport.setOtherAmount(orderReport.getOtherPayAmount()); + } + else if ("8".equals(orderReport.getOtherPaymentMode())) { + orderReport.setHuiKuiAmount(orderReport.getOtherPayAmount()); + } + } + + return orderReportList; + } + + /** + * 查询物流报表 + * + * @param reportQuery + * @return + */ + public List getExpressReportList(ReportQuery reportQuery) { + List expressReportList = mybatisDao.getSqlSessionTemplate().selectList(ReportOrderMapper.REPORT_ORDER_MAPPER_NAMESPACE + "getReportExpressList", reportQuery); + for (ExpressReport expressReport : expressReportList) { + if (expressReport.getIsReject() == 0) { + expressReport.setIsNormal(1); + expressReport.setIsNoNormal(0); + } + else { + expressReport.setIsNormal(0); + expressReport.setIsNoNormal(1); + } + } + return expressReportList; + } + + /** + * 查询财务报表 + * + * @param reportQuery + * @return + */ + public List getFinanceReportList(ReportQuery reportQuery) { + List financeReportList = mybatisDao.getSqlSessionTemplate().selectList(ReportOrderMapper.REPORT_ORDER_MAPPER_NAMESPACE + "getReportFinanceList", reportQuery); + return financeReportList; + } + +} diff --git a/src/main/java/com/xmomen/module/resource/api/DfsPath.java b/src/main/java/com/xmomen/module/resource/api/DfsPath.java new file mode 100644 index 0000000..20ae18f --- /dev/null +++ b/src/main/java/com/xmomen/module/resource/api/DfsPath.java @@ -0,0 +1,45 @@ +package com.xmomen.module.resource.api; + +public class DfsPath { + + /** + * whole url, just like http://.../bucketName/remotePath + */ + private String httpPath; + + /** + * file path on storage server + */ + private String remotePath; + + public DfsPath() { + + } + + /** + * Constructor with httpPath and remotePath + * + * @param httpPath + * @param remotePath + */ + public DfsPath(String httpPath, String remotePath) { + this.httpPath = httpPath; + this.remotePath = remotePath; + } + + public String getHttpPath() { + return httpPath; + } + + public void setHttpPath(String httpPath) { + this.httpPath = httpPath; + } + + public String getRemotePath() { + return remotePath; + } + + public void setRemotePath(String remotePath) { + this.remotePath = remotePath; + } +} diff --git a/src/main/java/com/xmomen/module/resource/api/DfsSdk.java b/src/main/java/com/xmomen/module/resource/api/DfsSdk.java new file mode 100644 index 0000000..431a6f8 --- /dev/null +++ b/src/main/java/com/xmomen/module/resource/api/DfsSdk.java @@ -0,0 +1,18 @@ +package com.xmomen.module.resource.api; + +import java.io.File; + +public class DfsSdk { + + public static DfsService getDfsInstance(String dfsType, String bucketName) { + if ("FastDFS".equalsIgnoreCase(dfsType)) { + DfsService dfsService = FastDfsService.getInstance(bucketName); + return dfsService; + } + return null; + } + + public static DfsService getDfsInstance() { + return getDfsInstance("FastDFS", "group1"); + } +} diff --git a/src/main/java/com/xmomen/module/resource/api/FastDfsService.java b/src/main/java/com/xmomen/module/resource/api/FastDfsService.java new file mode 100644 index 0000000..cc7b3fc --- /dev/null +++ b/src/main/java/com/xmomen/module/resource/api/FastDfsService.java @@ -0,0 +1,362 @@ +package com.xmomen.module.resource.api; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.net.URISyntaxException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.log4j.Logger; +import org.csource.common.IniFileReader; +import org.csource.common.MyException; +import org.csource.common.NameValuePair; +import org.csource.fastdfs.ClientGlobal; +import org.csource.fastdfs.StorageClient; +import org.csource.fastdfs.StorageServer; +import org.csource.fastdfs.TrackerClient; +import org.csource.fastdfs.TrackerServer; + +public class FastDfsService implements DfsService { + + private static FastDfsService instance = null; + + private String baseUrl = ""; + private String dmsBaseUrl = ""; + private String defaultPicUrl = ""; + + //private static Logger logger = Logger.getLogger(FastDfsService.class.getName()); + + private static String BASE_URL = "httpBaseUrl"; + + private static String DMS_BASE_URL = "dmsBaseUrl"; + + private static String DEFAULT_PIC_URL = "defaultPicUrl"; + + private static String FAST_DFS_KEY = "FastDfsKey"; + + /** + * bucket name + */ + private final String bucketName; + + /** + * constructor with bucketName + * + * @param bucketName bucket name + */ + private FastDfsService(String bucketName) { + this.bucketName = bucketName; + String configFilePath = null; + try { + configFilePath = FastDfsService.class.getResource("/").toURI().getPath() + "fdfs_client.conf"; + } catch (URISyntaxException e1) { + Exception e = new Exception("Cann't found fdfs_client.conf file under " + FastDfsService.class.getResource("/")); + handleException(e); + } + try { + ClientGlobal.init(configFilePath); + IniFileReader reader = new IniFileReader(configFilePath); + setBaseUrl(reader.getStrValue(BASE_URL)); + setDmsBaseUrl(reader.getStrValue(DMS_BASE_URL)); + setDefaultPicUrl(reader.getStrValue(DEFAULT_PIC_URL)); + } catch (Exception e) { + handleException(e); + } + } + + /** + * Get instance of FastDfsService, for Singleton + * @param bucketName bucket name + * @return instance of FastDfsService + */ + public static synchronized FastDfsService getInstance(String bucketName) { + if (null == instance) { + instance = new FastDfsService(bucketName); + } + return instance; + } + + /** + * Delete file on file system. + * + * @param remotePath remote file path + * @param key Key, not used in FastDFS + * @return true|false + */ + @Override + public boolean deleteObject(String remotePath, String key) { + int result = 0; + TrackerClient trackerClient = new TrackerClient(); + TrackerServer trackerServer = null; + try { + trackerServer = trackerClient.getConnection(); + StorageClient storageClient = new StorageClient(trackerServer, null); + result = storageClient.delete_file(bucketName, remotePath); + } catch(Exception e) { + handleException(e); + } finally { + if (null != trackerServer) { + try { + trackerServer.close(); + } catch (Exception e) { + handleException(e); + } + } + } + if (0 != result) { + //logger.info("delete faild, the faild code is: " + result); + return false; + } + return true; + } + + /** + * Find the whole url + * + * @param remotePath remote path + * @return the whole url + */ + @Override + public String getHttpPath(String remotePath) { + return baseUrl + "/" + bucketName + "/" + remotePath; + } + + @Override + public String getDmsHttpPath(String dmsFilePath) { + return dmsBaseUrl + dmsFilePath; + } + /** + * Get the file, and return DfsFile object + * + * @param remotePath remote path + * @param key Key, not used in FastDFS, can be null + * @return DfsFile object or null if fail + */ + @Override + public DfsFile getObject(String remotePath, String key) { + TrackerClient trackerClient = new TrackerClient(); + TrackerServer trackerServer = null; + StorageServer storageServer = null; + try { + trackerServer = trackerClient.getConnection(); + storageServer = trackerClient.getFetchStorage(trackerServer, bucketName, remotePath); + StorageClient storageClient = new StorageClient(trackerServer, storageServer); + byte[] bytes = storageClient.download_file(this.bucketName, remotePath); + if (null != bytes) { + NameValuePair[] value_pairs = storageClient.get_metadata(bucketName, remotePath); + Map metadata = new HashMap(); + for (int i = 0; i < value_pairs.length; i++) { + metadata.put(value_pairs[i].getName(), value_pairs[i].getValue()); + } + DfsFile dfsFile = new DfsFile(metadata.get(FAST_DFS_KEY), bytes, metadata); + return dfsFile; + } + } catch (Exception e){ + handleException(e); + } finally { + if (null != storageServer) { + try { + storageServer.close(); + } catch (Exception e) { + handleException(e); + } + } + if (null != trackerServer) { + try { + trackerServer.close(); + } catch (Exception e) { + handleException(e); + } + } + } + //logger.info("Get object failed, get null object"); + return null; + } + + /** + * Get the file list of file system. + * Not implement at the moment, because FastDFS API not support. + */ + @Override + public List listObjects() { + //to do + //Because fastDFS api do not support list object method. + return null; + } + + /** + * Upload the file to file system by file path + * + * @param filePath local file path. + * @param key Key, not used in FastDFS, can be null + * @param metadata metadata for file, can be null + * @return DfsFile object or null if fail + */ + @Override + public DfsPath putObject(String filePath, String key, Map metadata) { + File file = new File(filePath); + return putObject(file, key, metadata); + } + + /** + * Upload the file to file system by bytes + * + * @param bytes bytes + * @param key Key, not used in FastDFS + * @param metadata metadata for file, can be null + * @param extName extName for file, can be null + * @return DfsPath object or null if fail + */ + @Override + public DfsPath putObject(byte[] bytes, String key, Map metadata, String extName) { + TrackerClient trackerClient = new TrackerClient(); + TrackerServer trackerServer = null; + StorageServer storageServer = null; + try { + trackerServer = trackerClient.getConnection(); + StorageServer[] storageServers = trackerClient.getStoreStorages(trackerServer, bucketName); + if (null != storageServers) { + storageServer = storageServers[0]; + StorageClient storageClient = new StorageClient(trackerServer, storageServer); + + NameValuePair[] meta_list; + int i = 0; + if (null == metadata) { + meta_list = new NameValuePair[1]; + } else { + meta_list = new NameValuePair[metadata.size() + 1]; + for (Map.Entry entry : metadata.entrySet()) { + meta_list[i++] = new NameValuePair(entry.getKey(), entry.getValue()); + } + } + meta_list[i] = new NameValuePair(FAST_DFS_KEY, key); + + String[] results = storageClient.upload_file(bytes, extName, meta_list); + + if (null == results) { + //logger.info("upload file fail, error codes: " + storageClient.getErrorCode()); + return null; + } else { + String remote_fileName = results[1]; + String httpPath = this.getHttpPath(remote_fileName); + DfsPath dfsPath = new DfsPath(httpPath, remote_fileName); + return dfsPath; + } + } + } catch (Exception e) { + handleException(e); + } finally { + if (null != storageServer) { + try { + storageServer.close(); + } catch (Exception e) { + handleException(e); + } + } + if (null != trackerServer) { + try { + trackerServer.close(); + } catch (Exception e) { + handleException(e); + } + } + } + //logger.info("Upload file faild, because can not get storage servers!"); + return null; + + } + + /** + * Upload the file to file system + * + * @param file file + * @param key Key, not used in FastDFS, can be null + * @param metadata metadata for file , can be null + * @return DfsPath object or null if fail + */ + @Override + public DfsPath putObject(File file, String key, Map metadata) { + FileInputStream in = null; + byte[] file_buff = null; + try { + in = new FileInputStream(file); + if (null != in) { + int len = in.available(); + file_buff = new byte[len]; + in.read(file_buff); + } + } catch (Exception e) { + handleException(e); + } finally { + if (null != in) { + try { + in.close(); + } catch (Exception e) { + handleException(e); + } + } + } + String file_ext_name = ""; + if (file.getName().lastIndexOf(".") > 0) { + file_ext_name = file.getName().substring(file.getName().lastIndexOf(".") + 1); + } + return putObject(file_buff, key, metadata, file_ext_name); + } + + public String getBaseUrl() { + return baseUrl; + } + + private void setBaseUrl(String baseUrl) { + this.baseUrl = baseUrl; + } + + public String getDmsBaseUrl() { + return dmsBaseUrl; + } + public void setDmsBaseUrl(String dmsBaseUrl) { + this.dmsBaseUrl = dmsBaseUrl; + } + + public String getDefaultPicUrl() { + return defaultPicUrl; + } + public void setDefaultPicUrl(String defaultPicUrl) { + this.defaultPicUrl = defaultPicUrl; + } + + /** + * Handle Exception + * @param e exception + */ + private void handleException(Exception e) { + if (e instanceof IOException) { + //logger.error("Exception occured : DFSException code: 100," + " exception message :" + e.getMessage()); + throw new DfsException("100", e.getMessage()); + } else if (e instanceof FileNotFoundException) { + //logger.error("Exception occured : DFSException code: 200," + " exception message : file not found." + e.getMessage()); + throw new DfsException("200", e.getMessage()); + } else if (e instanceof MyException) { + //logger.error("Exception occured : DFSException code: 300," + " exception message :" + e.getMessage()); + throw new DfsException("300", e.getMessage()); + } else if (e instanceof Exception) { + //logger.error("Exception occured : DFSException code: 400," + " exception message :" + e.getMessage()); + throw new DfsException("400", e.getMessage()); + } + } + + @Override + public String getDefaultPath(String type) { + if("PICTURE".equalsIgnoreCase(type)) { + return defaultPicUrl; + } + return defaultPicUrl; + } + + + + +} diff --git a/src/main/java/com/xmomen/module/resource/controller/ResourceController.java b/src/main/java/com/xmomen/module/resource/controller/ResourceController.java new file mode 100644 index 0000000..fcc48f5 --- /dev/null +++ b/src/main/java/com/xmomen/module/resource/controller/ResourceController.java @@ -0,0 +1,130 @@ +package com.xmomen.module.resource.controller; + +import com.xmomen.framework.exception.BusinessException; +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.module.logger.Log; +import com.xmomen.module.resource.model.ResourceQuery; +import com.xmomen.module.resource.model.ResourceModel; +import com.xmomen.module.resource.service.ResourceService; + +import org.apache.commons.io.IOUtils; +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.entity.result.ExcelImportResult; +import org.jeecgframework.poi.excel.entity.vo.NormalExcelConstants; +import org.jeecgframework.poi.exception.excel.ExcelImportException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.ui.ModelMap; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.servlet.ModelAndView; + +import javax.validation.Valid; +import java.io.Serializable; +import java.io.IOException; +import java.io.InputStream; +import java.util.List; + +/** + * @author tanxinzheng + * @version 1.0.0 + * @date 2017-4-10 23:26:20 + */ +@RestController +@RequestMapping(value = "/resource") +public class ResourceController { + + @Autowired + ResourceService resourceService; + + /** + * 资源目录列表 + * + * @param limit 每页结果数 + * @param offset 页码 + * @param id 主键 + * @param ids 主键数组 + * @param excludeIds 不包含主键数组 + * @return Page 资源目录领域分页对象 + */ + @RequestMapping(method = RequestMethod.GET) + @Log(actionName = "查询资源目录列表") + public Page getResourceList(@RequestParam(value = "limit") Integer limit, + @RequestParam(value = "offset") Integer offset, + @RequestParam(value = "id", required = false) String id, + @RequestParam(value = "entityType", required = false) String entityType, + @RequestParam(value = "entityId", required = false) String entityId, + @RequestParam(value = "ids", required = false) String[] ids, + @RequestParam(value = "excludeIds", required = false) String[] excludeIds) { + ResourceQuery resourceQuery = new ResourceQuery(); + resourceQuery.setId(id); + resourceQuery.setExcludeIds(excludeIds); + resourceQuery.setIds(ids); + resourceQuery.setEntityType(entityType); + resourceQuery.setEntityId(entityId); + return resourceService.getResourceModelPage(limit, offset, resourceQuery); + } + + /** + * 查询单个资源目录 + * + * @param id 主键 + * @return ResourceModel 资源目录领域对象 + */ + @RequestMapping(value = "/{id}", method = RequestMethod.GET) + @Log(actionName = "查询资源目录") + public ResourceModel getResourceById(@PathVariable(value = "id") String id) { + return resourceService.getOneResourceModel(id); + } + + /** + * 新增资源目录 + * + * @param resourceModel 新增对象参数 + * @return ResourceModel 资源目录领域对象 + */ + @RequestMapping(method = RequestMethod.POST) + @Log(actionName = "新增资源目录") + public ResourceModel createResource(@RequestBody @Valid ResourceModel resourceModel) { + return resourceService.createResource(resourceModel); + } + + /** + * 更新资源目录 + * + * @param id 主键 + * @param resourceModel 更新对象参数 + */ + @RequestMapping(value = "/{id}", method = RequestMethod.PUT) + @Log(actionName = "更新资源目录") + public void updateResource(@PathVariable(value = "id") String id, + @RequestBody @Valid ResourceModel resourceModel) { + resourceService.updateResource(resourceModel); + } + + /** + * 删除资源目录 + * + * @param id 主键 + */ + @RequestMapping(value = "/{id}", method = RequestMethod.DELETE) + @Log(actionName = "删除单个资源目录") + public void deleteResource(@PathVariable(value = "id") String id) { + resourceService.deleteResource(id); + } + + /** + * 删除资源目录 + * + * @param ids 主键 + */ + @RequestMapping(method = RequestMethod.DELETE) + @Log(actionName = "批量删除资源目录") + public void deleteResources(@RequestParam(value = "ids") String[] ids) { + resourceService.deleteResource(ids); + } + + +} diff --git a/src/main/java/com/xmomen/module/resource/entity/Resource.java b/src/main/java/com/xmomen/module/resource/entity/Resource.java new file mode 100644 index 0000000..aaddc97 --- /dev/null +++ b/src/main/java/com/xmomen/module/resource/entity/Resource.java @@ -0,0 +1,129 @@ +package com.xmomen.module.resource.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "cd_resource") +public class Resource extends BaseMybatisModel { + /** + * + */ + private String id; + + /** + * + */ + private String entityType; + + /** + * + */ + private String entityId; + + /** + * + */ + private String path; + + /** + * + */ + private String resourceType; + + /** + * + */ + private Integer isDefault; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "ENTITY_TYPE") + public String getEntityType() { + return entityType; + } + + public void setEntityType(String entityType) { + this.entityType = entityType; + if(entityType == null){ + removeValidField("entityType"); + return; + } + addValidField("entityType"); + } + + @Column(name = "ENTITY_ID") + public String getEntityId() { + return entityId; + } + + public void setEntityId(String entityId) { + this.entityId = entityId; + if(entityId == null){ + removeValidField("entityId"); + return; + } + addValidField("entityId"); + } + + @Column(name = "PATH") + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + if(path == null){ + removeValidField("path"); + return; + } + addValidField("path"); + } + + @Column(name = "RESOURCE_TYPE") + public String getResourceType() { + return resourceType; + } + + public void setResourceType(String resourceType) { + this.resourceType = resourceType; + if(resourceType == null){ + removeValidField("resourceType"); + return; + } + addValidField("resourceType"); + } + + @Column(name = "IS_DEFAULT") + public Integer getIsDefault() { + return isDefault; + } + + public void setIsDefault(Integer isDefault) { + this.isDefault = isDefault; + if(isDefault == null){ + removeValidField("isDefault"); + return; + } + addValidField("isDefault"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/resource/entity/mapper/ResourceMapper.java b/src/main/java/com/xmomen/module/resource/entity/mapper/ResourceMapper.java new file mode 100644 index 0000000..2da0f1b --- /dev/null +++ b/src/main/java/com/xmomen/module/resource/entity/mapper/ResourceMapper.java @@ -0,0 +1,16 @@ +package com.xmomen.module.resource.entity.mapper; + +import com.xmomen.framework.mybatis.mapper.MybatisMapper; +import com.xmomen.module.resource.entity.Resource; +import com.xmomen.module.resource.entity.ResourceExample; +import org.apache.ibatis.annotations.Param; + +public interface ResourceMapper extends MybatisMapper { + int countByExample(ResourceExample example); + + int deleteByExample(ResourceExample example); + + int insertSelective(Resource record); + + int updateByExampleSelective(@Param("record") Resource record, @Param("example") ResourceExample example); +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/resource/mapper/ResourceMapperExt.java b/src/main/java/com/xmomen/module/resource/mapper/ResourceMapperExt.java new file mode 100644 index 0000000..5407628 --- /dev/null +++ b/src/main/java/com/xmomen/module/resource/mapper/ResourceMapperExt.java @@ -0,0 +1,12 @@ +package com.xmomen.module.resource.mapper; + +/** + * @author tanxinzheng + * @date 2017-4-10 23:26:20 + * @version 1.0.0 + */ +public interface ResourceMapperExt { + + public static final String ResourceMapperNameSpace = "com.xmomen.module.resource.mapper.ResourceMapperExt."; + +} diff --git a/src/main/java/com/xmomen/module/resource/model/ResourceQuery.java b/src/main/java/com/xmomen/module/resource/model/ResourceQuery.java new file mode 100644 index 0000000..4fc5774 --- /dev/null +++ b/src/main/java/com/xmomen/module/resource/model/ResourceQuery.java @@ -0,0 +1,32 @@ +package com.xmomen.module.resource.model; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author tanxinzheng + * @version 1.0.0 + * @date 2017-4-10 23:26:20 + */ +public +@Data +class ResourceQuery implements Serializable { + /** + * 主键 + */ + private String id; + /** + * 包含主键集 + */ + private String[] ids; + /** + * 排除主键集 + */ + private String[] excludeIds; + + private String entityType; + + private String entityId; + +} diff --git a/src/main/java/com/xmomen/module/resource/service/impl/ResourceServiceImpl.java b/src/main/java/com/xmomen/module/resource/service/impl/ResourceServiceImpl.java new file mode 100644 index 0000000..30571b6 --- /dev/null +++ b/src/main/java/com/xmomen/module/resource/service/impl/ResourceServiceImpl.java @@ -0,0 +1,216 @@ +package com.xmomen.module.resource.service.impl; + +import com.xmomen.module.resource.api.DfsPath; +import com.xmomen.module.resource.api.DfsSdk; +import com.xmomen.module.resource.api.DfsService; +import com.xmomen.module.resource.entity.Resource; +import com.xmomen.module.resource.entity.ResourceExample; +import com.xmomen.module.resource.mapper.ResourceMapperExt; +import com.xmomen.module.resource.model.ResourceCreate; +import com.xmomen.module.resource.model.ResourceQuery; +import com.xmomen.module.resource.model.ResourceUpdate; +import com.xmomen.module.resource.model.ResourceModel; +import com.xmomen.module.resource.service.ResourceService; +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.framework.mybatis.page.Page; +import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.exceptions.TooManyResultsException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.File; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * @author tanxinzheng + * @version 1.0.0 + * @date 2017-4-10 23:26:20 + */ +@Service +public class ResourceServiceImpl implements ResourceService { + + @Autowired + MybatisDao mybatisDao; + + /** + * 新增资源目录 + * + * @param resourceModel 新增资源目录对象参数 + * @return ResourceModel 资源目录领域对象 + */ + @Override + @Transactional + public ResourceModel createResource(ResourceModel resourceModel) { + Resource resource = createResource(resourceModel.getEntity()); + if (resource != null) { + return getOneResourceModel(resource.getId()); + } + return null; + } + + /** + * 新增资源目录实体对象 + * + * @param resource 新增资源目录实体对象参数 + * @return Resource 资源目录实体对象 + */ + @Override + @Transactional + public Resource createResource(Resource resource) { + return mybatisDao.insertByModel(resource); + } + + /** + * 批量新增资源目录 + * + * @param resourceModels 新增资源目录对象集合参数 + * @return List 资源目录领域对象集合 + */ + @Override + @Transactional + public List createResources(List resourceModels) { + List resourceModelList = null; + for (ResourceModel resourceModel : resourceModels) { + resourceModel = createResource(resourceModel); + if (resourceModel != null) { + if (resourceModelList == null) { + resourceModelList = new ArrayList<>(); + } + resourceModelList.add(resourceModel); + } + } + return resourceModelList; + } + + /** + * 更新资源目录 + * + * @param resourceModel 更新资源目录对象参数 + */ + @Override + @Transactional + public void updateResource(ResourceModel resourceModel) { + mybatisDao.update(resourceModel.getEntity()); + } + + /** + * 更新资源目录实体对象 + * + * @param resource 新增资源目录实体对象参数 + * @return Resource 资源目录实体对象 + */ + @Override + @Transactional + public void updateResource(Resource resource) { + mybatisDao.update(resource); + } + + /** + * 删除资源目录 + * + * @param ids 主键数组 + */ + @Override + @Transactional + public void deleteResource(String[] ids) { + ResourceExample resourceExample = new ResourceExample(); + resourceExample.createCriteria().andIdIn(Arrays.asList((String[]) ids)); + mybatisDao.deleteByExample(resourceExample); + } + + /** + * 删除资源目录 + * + * @param id 主键 + */ + @Override + @Transactional + public void deleteResource(String id) { + mybatisDao.deleteByPrimaryKey(Resource.class, id); + } + + /** + * 查询资源目录领域分页对象(带参数条件) + * + * @param limit 每页最大数 + * @param offset 页码 + * @param resourceQuery 查询参数 + * @return Page 资源目录参数对象 + */ + @Override + public Page getResourceModelPage(int limit, int offset, ResourceQuery resourceQuery) { + return (Page) mybatisDao.selectPage(ResourceMapperExt.ResourceMapperNameSpace + "getResourceModel", resourceQuery, limit, offset); + } + + /** + * 查询资源目录领域分页对象(无参数条件) + * + * @param limit 每页最大数 + * @param offset 页码 + * @return Page 资源目录领域对象 + */ + @Override + public Page getResourceModelPage(int limit, int offset) { + return (Page) mybatisDao.selectPage(ResourceMapperExt.ResourceMapperNameSpace + "getResourceModel", null, limit, offset); + } + + /** + * 查询资源目录领域集合对象(带参数条件) + * + * @param resourceQuery 查询参数对象 + * @return List 资源目录领域集合对象 + */ + @Override + public List getResourceModelList(ResourceQuery resourceQuery) { + return mybatisDao.getSqlSessionTemplate().selectList(ResourceMapperExt.ResourceMapperNameSpace + "getResourceModel", resourceQuery); + } + + /** + * 查询资源目录领域集合对象(无参数条件) + * + * @return List 资源目录领域集合对象 + */ + @Override + public List getResourceModelList() { + return mybatisDao.getSqlSessionTemplate().selectList(ResourceMapperExt.ResourceMapperNameSpace + "getResourceModel"); + } + + /** + * 查询资源目录实体对象 + * + * @param id 主键 + * @return Resource 资源目录实体对象 + */ + @Override + public Resource getOneResource(String id) { + return mybatisDao.selectByPrimaryKey(Resource.class, id); + } + + /** + * 根据主键查询单个对象 + * + * @param id 主键 + * @return ResourceModel 资源目录领域对象 + */ + @Override + public ResourceModel getOneResourceModel(String id) { + ResourceQuery resourceQuery = new ResourceQuery(); + resourceQuery.setId(id); + return mybatisDao.getSqlSessionTemplate().selectOne(ResourceMapperExt.ResourceMapperNameSpace + "getResourceModel", resourceQuery); + } + + /** + * 根据查询参数查询单个对象(此方法只用于提供精确查询单个对象,若结果数超过1,则会报错) + * + * @param resourceQuery 资源目录查询参数对象 + * @return ResourceModel 资源目录领域对象 + */ + @Override + public ResourceModel getOneResourceModel(ResourceQuery resourceQuery) throws TooManyResultsException { + return mybatisDao.getSqlSessionTemplate().selectOne(ResourceMapperExt.ResourceMapperNameSpace + "getResourceModel", resourceQuery); + } +} diff --git a/src/main/java/com/xmomen/module/schedule/ItemPurchaseJob.java b/src/main/java/com/xmomen/module/schedule/ItemPurchaseJob.java new file mode 100644 index 0000000..d710288 --- /dev/null +++ b/src/main/java/com/xmomen/module/schedule/ItemPurchaseJob.java @@ -0,0 +1,34 @@ +package com.xmomen.module.schedule; + + +import com.xmomen.framework.support.SpringContextUtil; +import com.xmomen.module.order.model.CreatePurchase; +import com.xmomen.module.order.service.PurchaseService; +import org.quartz.Job; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * Created by Jeng on 2016/2/23. + */ +@Component(value = "itemPurchaseJob") +public class ItemPurchaseJob implements Job { + + @Autowired + PurchaseService purchaseService; + + @Override + public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { + if(purchaseService == null){ + purchaseService = (PurchaseService) SpringContextUtil.getApplicationContext().getBean(PurchaseService.class); + CreatePurchase createPurchase = new CreatePurchase(); + createPurchase.setOrderDate(new Date()); + purchaseService.createPurchase(createPurchase); + } + } +} diff --git a/src/main/java/com/xmomen/module/schedule/controller/vo/AddQuartzJob.java b/src/main/java/com/xmomen/module/schedule/controller/vo/AddQuartzJob.java new file mode 100644 index 0000000..29b9242 --- /dev/null +++ b/src/main/java/com/xmomen/module/schedule/controller/vo/AddQuartzJob.java @@ -0,0 +1,83 @@ +package com.xmomen.module.schedule.controller.vo; + +import org.hibernate.validator.constraints.NotBlank; + +import javax.validation.constraints.NotNull; + +/** + * Created by Jeng on 2016/2/23. + */ +public class AddQuartzJob { + + // 任务名称 + @NotNull + @NotBlank + private String jobName; + // 任务分组 + @NotNull + @NotBlank + private String jobGroup; + // 任务触发器ID + @NotNull + @NotBlank + private String jobTriggerId; + // 任务状态 0-禁用,1-启用,2-删除 + @NotNull + private Boolean started; + // 运行时间表达式 + @NotNull + @NotBlank + private String cronExpression; + // 任务描述 + @NotNull + @NotBlank + private String description; + + public String getJobName() { + return jobName; + } + + public void setJobName(String jobName) { + this.jobName = jobName; + } + + public Boolean getStarted() { + return started; + } + + public void setStarted(Boolean started) { + this.started = started; + } + + public String getJobGroup() { + return jobGroup; + } + + public void setJobGroup(String jobGroup) { + this.jobGroup = jobGroup; + } + + public String getJobTriggerId() { + return jobTriggerId; + } + + public void setJobTriggerId(String jobTriggerId) { + this.jobTriggerId = jobTriggerId; + } + + public String getCronExpression() { + return cronExpression; + } + + public void setCronExpression(String cronExpression) { + this.cronExpression = cronExpression; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } +} diff --git a/src/main/java/com/xmomen/module/schedule/entity/ScheduleJob.java b/src/main/java/com/xmomen/module/schedule/entity/ScheduleJob.java new file mode 100644 index 0000000..7129d8c --- /dev/null +++ b/src/main/java/com/xmomen/module/schedule/entity/ScheduleJob.java @@ -0,0 +1,144 @@ +package com.xmomen.module.schedule.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; + +import javax.persistence.*; + +@Entity +@Table(name = "schedule_job") +public class ScheduleJob extends BaseMybatisModel { + /** + * 物理主键 + */ + private Integer id; + + /** + * 任务名称 + */ + private String jobName; + + /** + * 任务属组 + */ + private String jobGroup; + + /** + * 任务状态:0-禁用,1-启用,2-删除 + */ + private Integer jobStatus; + + /** + * 任务描述 + */ + private String jobDescription; + + /** + * CRON表达式 + */ + private String cronExpression; + + /** + * 触发器ID + */ + private String triggerId; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "JOB_NAME") + public String getJobName() { + return jobName; + } + + public void setJobName(String jobName) { + this.jobName = jobName; + if(jobName == null){ + removeValidField("jobName"); + return; + } + addValidField("jobName"); + } + + @Column(name = "JOB_GROUP") + public String getJobGroup() { + return jobGroup; + } + + public void setJobGroup(String jobGroup) { + this.jobGroup = jobGroup; + if(jobGroup == null){ + removeValidField("jobGroup"); + return; + } + addValidField("jobGroup"); + } + + @Column(name = "JOB_STATUS") + public Integer getJobStatus() { + return jobStatus; + } + + public void setJobStatus(Integer jobStatus) { + this.jobStatus = jobStatus; + if(jobStatus == null){ + removeValidField("jobStatus"); + return; + } + addValidField("jobStatus"); + } + + @Column(name = "JOB_DESCRIPTION") + public String getJobDescription() { + return jobDescription; + } + + public void setJobDescription(String jobDescription) { + this.jobDescription = jobDescription; + if(jobDescription == null){ + removeValidField("jobDescription"); + return; + } + addValidField("jobDescription"); + } + + @Column(name = "CRON_EXPRESSION") + public String getCronExpression() { + return cronExpression; + } + + public void setCronExpression(String cronExpression) { + this.cronExpression = cronExpression; + if(cronExpression == null){ + removeValidField("cronExpression"); + return; + } + addValidField("cronExpression"); + } + + @Column(name = "TRIGGER_ID") + public String getTriggerId() { + return triggerId; + } + + public void setTriggerId(String triggerId) { + this.triggerId = triggerId; + if(triggerId == null){ + removeValidField("triggerId"); + return; + } + addValidField("triggerId"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/schedule/entity/ScheduleJobExample.java b/src/main/java/com/xmomen/module/schedule/entity/ScheduleJobExample.java new file mode 100644 index 0000000..2cb11f8 --- /dev/null +++ b/src/main/java/com/xmomen/module/schedule/entity/ScheduleJobExample.java @@ -0,0 +1,672 @@ +package com.xmomen.module.schedule.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisExample; + +import java.util.ArrayList; +import java.util.List; + +public class ScheduleJobExample extends BaseMybatisExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public ScheduleJobExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("ID is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("ID is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Integer value) { + addCriterion("ID =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Integer value) { + addCriterion("ID <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Integer value) { + addCriterion("ID >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Integer value) { + addCriterion("ID >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Integer value) { + addCriterion("ID <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Integer value) { + addCriterion("ID <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("ID in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("ID not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Integer value1, Integer value2) { + addCriterion("ID between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Integer value1, Integer value2) { + addCriterion("ID not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andJobNameIsNull() { + addCriterion("JOB_NAME is null"); + return (Criteria) this; + } + + public Criteria andJobNameIsNotNull() { + addCriterion("JOB_NAME is not null"); + return (Criteria) this; + } + + public Criteria andJobNameEqualTo(String value) { + addCriterion("JOB_NAME =", value, "jobName"); + return (Criteria) this; + } + + public Criteria andJobNameNotEqualTo(String value) { + addCriterion("JOB_NAME <>", value, "jobName"); + return (Criteria) this; + } + + public Criteria andJobNameGreaterThan(String value) { + addCriterion("JOB_NAME >", value, "jobName"); + return (Criteria) this; + } + + public Criteria andJobNameGreaterThanOrEqualTo(String value) { + addCriterion("JOB_NAME >=", value, "jobName"); + return (Criteria) this; + } + + public Criteria andJobNameLessThan(String value) { + addCriterion("JOB_NAME <", value, "jobName"); + return (Criteria) this; + } + + public Criteria andJobNameLessThanOrEqualTo(String value) { + addCriterion("JOB_NAME <=", value, "jobName"); + return (Criteria) this; + } + + public Criteria andJobNameLike(String value) { + addCriterion("JOB_NAME like", value, "jobName"); + return (Criteria) this; + } + + public Criteria andJobNameNotLike(String value) { + addCriterion("JOB_NAME not like", value, "jobName"); + return (Criteria) this; + } + + public Criteria andJobNameIn(List values) { + addCriterion("JOB_NAME in", values, "jobName"); + return (Criteria) this; + } + + public Criteria andJobNameNotIn(List values) { + addCriterion("JOB_NAME not in", values, "jobName"); + return (Criteria) this; + } + + public Criteria andJobNameBetween(String value1, String value2) { + addCriterion("JOB_NAME between", value1, value2, "jobName"); + return (Criteria) this; + } + + public Criteria andJobNameNotBetween(String value1, String value2) { + addCriterion("JOB_NAME not between", value1, value2, "jobName"); + return (Criteria) this; + } + + public Criteria andJobGroupIsNull() { + addCriterion("JOB_GROUP is null"); + return (Criteria) this; + } + + public Criteria andJobGroupIsNotNull() { + addCriterion("JOB_GROUP is not null"); + return (Criteria) this; + } + + public Criteria andJobGroupEqualTo(String value) { + addCriterion("JOB_GROUP =", value, "jobGroup"); + return (Criteria) this; + } + + public Criteria andJobGroupNotEqualTo(String value) { + addCriterion("JOB_GROUP <>", value, "jobGroup"); + return (Criteria) this; + } + + public Criteria andJobGroupGreaterThan(String value) { + addCriterion("JOB_GROUP >", value, "jobGroup"); + return (Criteria) this; + } + + public Criteria andJobGroupGreaterThanOrEqualTo(String value) { + addCriterion("JOB_GROUP >=", value, "jobGroup"); + return (Criteria) this; + } + + public Criteria andJobGroupLessThan(String value) { + addCriterion("JOB_GROUP <", value, "jobGroup"); + return (Criteria) this; + } + + public Criteria andJobGroupLessThanOrEqualTo(String value) { + addCriterion("JOB_GROUP <=", value, "jobGroup"); + return (Criteria) this; + } + + public Criteria andJobGroupLike(String value) { + addCriterion("JOB_GROUP like", value, "jobGroup"); + return (Criteria) this; + } + + public Criteria andJobGroupNotLike(String value) { + addCriterion("JOB_GROUP not like", value, "jobGroup"); + return (Criteria) this; + } + + public Criteria andJobGroupIn(List values) { + addCriterion("JOB_GROUP in", values, "jobGroup"); + return (Criteria) this; + } + + public Criteria andJobGroupNotIn(List values) { + addCriterion("JOB_GROUP not in", values, "jobGroup"); + return (Criteria) this; + } + + public Criteria andJobGroupBetween(String value1, String value2) { + addCriterion("JOB_GROUP between", value1, value2, "jobGroup"); + return (Criteria) this; + } + + public Criteria andJobGroupNotBetween(String value1, String value2) { + addCriterion("JOB_GROUP not between", value1, value2, "jobGroup"); + return (Criteria) this; + } + + public Criteria andJobStatusIsNull() { + addCriterion("JOB_STATUS is null"); + return (Criteria) this; + } + + public Criteria andJobStatusIsNotNull() { + addCriterion("JOB_STATUS is not null"); + return (Criteria) this; + } + + public Criteria andJobStatusEqualTo(Integer value) { + addCriterion("JOB_STATUS =", value, "jobStatus"); + return (Criteria) this; + } + + public Criteria andJobStatusNotEqualTo(Integer value) { + addCriterion("JOB_STATUS <>", value, "jobStatus"); + return (Criteria) this; + } + + public Criteria andJobStatusGreaterThan(Integer value) { + addCriterion("JOB_STATUS >", value, "jobStatus"); + return (Criteria) this; + } + + public Criteria andJobStatusGreaterThanOrEqualTo(Integer value) { + addCriterion("JOB_STATUS >=", value, "jobStatus"); + return (Criteria) this; + } + + public Criteria andJobStatusLessThan(Integer value) { + addCriterion("JOB_STATUS <", value, "jobStatus"); + return (Criteria) this; + } + + public Criteria andJobStatusLessThanOrEqualTo(Integer value) { + addCriterion("JOB_STATUS <=", value, "jobStatus"); + return (Criteria) this; + } + + public Criteria andJobStatusIn(List values) { + addCriterion("JOB_STATUS in", values, "jobStatus"); + return (Criteria) this; + } + + public Criteria andJobStatusNotIn(List values) { + addCriterion("JOB_STATUS not in", values, "jobStatus"); + return (Criteria) this; + } + + public Criteria andJobStatusBetween(Integer value1, Integer value2) { + addCriterion("JOB_STATUS between", value1, value2, "jobStatus"); + return (Criteria) this; + } + + public Criteria andJobStatusNotBetween(Integer value1, Integer value2) { + addCriterion("JOB_STATUS not between", value1, value2, "jobStatus"); + return (Criteria) this; + } + + public Criteria andJobDescriptionIsNull() { + addCriterion("JOB_DESCRIPTION is null"); + return (Criteria) this; + } + + public Criteria andJobDescriptionIsNotNull() { + addCriterion("JOB_DESCRIPTION is not null"); + return (Criteria) this; + } + + public Criteria andJobDescriptionEqualTo(String value) { + addCriterion("JOB_DESCRIPTION =", value, "jobDescription"); + return (Criteria) this; + } + + public Criteria andJobDescriptionNotEqualTo(String value) { + addCriterion("JOB_DESCRIPTION <>", value, "jobDescription"); + return (Criteria) this; + } + + public Criteria andJobDescriptionGreaterThan(String value) { + addCriterion("JOB_DESCRIPTION >", value, "jobDescription"); + return (Criteria) this; + } + + public Criteria andJobDescriptionGreaterThanOrEqualTo(String value) { + addCriterion("JOB_DESCRIPTION >=", value, "jobDescription"); + return (Criteria) this; + } + + public Criteria andJobDescriptionLessThan(String value) { + addCriterion("JOB_DESCRIPTION <", value, "jobDescription"); + return (Criteria) this; + } + + public Criteria andJobDescriptionLessThanOrEqualTo(String value) { + addCriterion("JOB_DESCRIPTION <=", value, "jobDescription"); + return (Criteria) this; + } + + public Criteria andJobDescriptionLike(String value) { + addCriterion("JOB_DESCRIPTION like", value, "jobDescription"); + return (Criteria) this; + } + + public Criteria andJobDescriptionNotLike(String value) { + addCriterion("JOB_DESCRIPTION not like", value, "jobDescription"); + return (Criteria) this; + } + + public Criteria andJobDescriptionIn(List values) { + addCriterion("JOB_DESCRIPTION in", values, "jobDescription"); + return (Criteria) this; + } + + public Criteria andJobDescriptionNotIn(List values) { + addCriterion("JOB_DESCRIPTION not in", values, "jobDescription"); + return (Criteria) this; + } + + public Criteria andJobDescriptionBetween(String value1, String value2) { + addCriterion("JOB_DESCRIPTION between", value1, value2, "jobDescription"); + return (Criteria) this; + } + + public Criteria andJobDescriptionNotBetween(String value1, String value2) { + addCriterion("JOB_DESCRIPTION not between", value1, value2, "jobDescription"); + return (Criteria) this; + } + + public Criteria andCronExpressionIsNull() { + addCriterion("CRON_EXPRESSION is null"); + return (Criteria) this; + } + + public Criteria andCronExpressionIsNotNull() { + addCriterion("CRON_EXPRESSION is not null"); + return (Criteria) this; + } + + public Criteria andCronExpressionEqualTo(String value) { + addCriterion("CRON_EXPRESSION =", value, "cronExpression"); + return (Criteria) this; + } + + public Criteria andCronExpressionNotEqualTo(String value) { + addCriterion("CRON_EXPRESSION <>", value, "cronExpression"); + return (Criteria) this; + } + + public Criteria andCronExpressionGreaterThan(String value) { + addCriterion("CRON_EXPRESSION >", value, "cronExpression"); + return (Criteria) this; + } + + public Criteria andCronExpressionGreaterThanOrEqualTo(String value) { + addCriterion("CRON_EXPRESSION >=", value, "cronExpression"); + return (Criteria) this; + } + + public Criteria andCronExpressionLessThan(String value) { + addCriterion("CRON_EXPRESSION <", value, "cronExpression"); + return (Criteria) this; + } + + public Criteria andCronExpressionLessThanOrEqualTo(String value) { + addCriterion("CRON_EXPRESSION <=", value, "cronExpression"); + return (Criteria) this; + } + + public Criteria andCronExpressionLike(String value) { + addCriterion("CRON_EXPRESSION like", value, "cronExpression"); + return (Criteria) this; + } + + public Criteria andCronExpressionNotLike(String value) { + addCriterion("CRON_EXPRESSION not like", value, "cronExpression"); + return (Criteria) this; + } + + public Criteria andCronExpressionIn(List values) { + addCriterion("CRON_EXPRESSION in", values, "cronExpression"); + return (Criteria) this; + } + + public Criteria andCronExpressionNotIn(List values) { + addCriterion("CRON_EXPRESSION not in", values, "cronExpression"); + return (Criteria) this; + } + + public Criteria andCronExpressionBetween(String value1, String value2) { + addCriterion("CRON_EXPRESSION between", value1, value2, "cronExpression"); + return (Criteria) this; + } + + public Criteria andCronExpressionNotBetween(String value1, String value2) { + addCriterion("CRON_EXPRESSION not between", value1, value2, "cronExpression"); + return (Criteria) this; + } + + public Criteria andTriggerIdIsNull() { + addCriterion("TRIGGER_ID is null"); + return (Criteria) this; + } + + public Criteria andTriggerIdIsNotNull() { + addCriterion("TRIGGER_ID is not null"); + return (Criteria) this; + } + + public Criteria andTriggerIdEqualTo(String value) { + addCriterion("TRIGGER_ID =", value, "triggerId"); + return (Criteria) this; + } + + public Criteria andTriggerIdNotEqualTo(String value) { + addCriterion("TRIGGER_ID <>", value, "triggerId"); + return (Criteria) this; + } + + public Criteria andTriggerIdGreaterThan(String value) { + addCriterion("TRIGGER_ID >", value, "triggerId"); + return (Criteria) this; + } + + public Criteria andTriggerIdGreaterThanOrEqualTo(String value) { + addCriterion("TRIGGER_ID >=", value, "triggerId"); + return (Criteria) this; + } + + public Criteria andTriggerIdLessThan(String value) { + addCriterion("TRIGGER_ID <", value, "triggerId"); + return (Criteria) this; + } + + public Criteria andTriggerIdLessThanOrEqualTo(String value) { + addCriterion("TRIGGER_ID <=", value, "triggerId"); + return (Criteria) this; + } + + public Criteria andTriggerIdLike(String value) { + addCriterion("TRIGGER_ID like", value, "triggerId"); + return (Criteria) this; + } + + public Criteria andTriggerIdNotLike(String value) { + addCriterion("TRIGGER_ID not like", value, "triggerId"); + return (Criteria) this; + } + + public Criteria andTriggerIdIn(List values) { + addCriterion("TRIGGER_ID in", values, "triggerId"); + return (Criteria) this; + } + + public Criteria andTriggerIdNotIn(List values) { + addCriterion("TRIGGER_ID not in", values, "triggerId"); + return (Criteria) this; + } + + public Criteria andTriggerIdBetween(String value1, String value2) { + addCriterion("TRIGGER_ID between", value1, value2, "triggerId"); + return (Criteria) this; + } + + public Criteria andTriggerIdNotBetween(String value1, String value2) { + addCriterion("TRIGGER_ID not between", value1, value2, "triggerId"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/schedule/entity/mapper/ScheduleJobMapper.java b/src/main/java/com/xmomen/module/schedule/entity/mapper/ScheduleJobMapper.java new file mode 100644 index 0000000..6e93598 --- /dev/null +++ b/src/main/java/com/xmomen/module/schedule/entity/mapper/ScheduleJobMapper.java @@ -0,0 +1,16 @@ +package com.xmomen.module.schedule.entity.mapper; + +import com.xmomen.module.schedule.entity.ScheduleJob; +import com.xmomen.module.schedule.entity.ScheduleJobExample; +import com.xmomen.framework.mybatis.mapper.MybatisMapper; +import org.apache.ibatis.annotations.Param; + +public interface ScheduleJobMapper extends MybatisMapper { + int countByExample(ScheduleJobExample example); + + int deleteByExample(ScheduleJobExample example); + + int insertSelective(ScheduleJob record); + + int updateByExampleSelective(@Param("record") ScheduleJob record, @Param("example") ScheduleJobExample example); +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/schedule/service/ScheduleJobService.java b/src/main/java/com/xmomen/module/schedule/service/ScheduleJobService.java new file mode 100644 index 0000000..e17bde3 --- /dev/null +++ b/src/main/java/com/xmomen/module/schedule/service/ScheduleJobService.java @@ -0,0 +1,161 @@ +package com.xmomen.module.schedule.service; + +import com.xmomen.module.schedule.QuartzManager; +import com.xmomen.module.schedule.controller.vo.ScheduleJobVo; +import com.xmomen.module.schedule.controller.vo.UpdateQuartzJob; +import com.xmomen.module.schedule.entity.ScheduleJob; +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.framework.support.SpringContextUtil; +import com.xmomen.module.schedule.mapper.ScheduleMapper; +import org.apache.commons.lang.StringUtils; +import org.quartz.Job; +import org.quartz.JobDetail; +import org.quartz.SchedulerException; +import org.quartz.Trigger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.text.ParseException; +import java.util.List; + +/** + * Created by Jeng on 2016/2/23. + */ +@Service +public class ScheduleJobService { + + @Autowired + MybatisDao mybatisDao; + + /** + * 添加计划任务 + * @param scheduleJob + */ + @Transactional + public void addScheduleJob(ScheduleJob scheduleJob){ + mybatisDao.insert(scheduleJob); + } + + public void initScheduleJobs(){ + ScheduleJob scheduleJob = new ScheduleJob(); + //scheduleJob.setJobStatus(0); + List scheduleJobList = mybatisDao.selectByModel(scheduleJob); + for (ScheduleJob job : scheduleJobList) { + Object obj = SpringContextUtil.getBean(job.getTriggerId()); + if(obj instanceof Job){ + Job trigger = (Job) obj; + try { + if(Trigger.STATE_NORMAL == job.getJobStatus()){ + QuartzManager.addJob(job.getJobName(), job.getJobGroup(), trigger.getClass(), job.getCronExpression()); + }else if(Trigger.STATE_PAUSED == job.getJobStatus()){ + QuartzManager.addJob(job.getJobName(), job.getJobGroup(), trigger.getClass(), job.getCronExpression()); + QuartzManager.pauseJob(job.getJobName(), job.getJobGroup()); + } + } catch (SchedulerException e) { + e.printStackTrace(); + } catch (ParseException e) { + e.printStackTrace(); + } + } + } + } + + /** + * 查询计划任务 + * @param keyword + * @param pageSize + * @param pageNum + * @return + */ + public Page queryScheduleJobs(String keyword, Integer pageSize, Integer pageNum){ + String string = StringUtils.trimToEmpty(keyword); + return (Page) mybatisDao.selectPage(ScheduleMapper.ScheduleMapperNameSpace + "queryScheduleJobs", string, pageSize, pageNum); + } + + /** + * 更新定时脚本 + * @param scheduleId + * @param updateQuartzJob + */ + @Transactional + public void updateScheduleJob(Integer scheduleId, UpdateQuartzJob updateQuartzJob){ + if(scheduleId == null){ + throw new IllegalArgumentException("scheduleId must be not null"); + } + try { + ScheduleJob oldSchedule = mybatisDao.selectByPrimaryKey(ScheduleJob.class, scheduleId); + String jobName = oldSchedule.getJobName(); + String jobGroup = oldSchedule.getJobGroup(); + String triggerId = oldSchedule.getTriggerId(); + String cronExpression = oldSchedule.getCronExpression(); + ScheduleJob scheduleJob = new ScheduleJob(); + scheduleJob.setJobName(updateQuartzJob.getJobName()); + scheduleJob.setJobGroup(updateQuartzJob.getJobGroup()); + scheduleJob.setTriggerId(updateQuartzJob.getJobTriggerId()); + scheduleJob.setJobDescription(updateQuartzJob.getDescription()); + scheduleJob.setCronExpression(updateQuartzJob.getCronExpression()); + scheduleJob.setId(scheduleId); + if((StringUtils.isNotBlank(updateQuartzJob.getJobName()) && !jobName.equals(updateQuartzJob.getJobName())) + || (StringUtils.isNotBlank(updateQuartzJob.getJobGroup()) && !jobGroup.equals(updateQuartzJob.getJobGroup())) + || (StringUtils.isNotBlank(updateQuartzJob.getJobTriggerId()) && !triggerId.equals(updateQuartzJob.getJobTriggerId()) + || (StringUtils.isNotBlank(updateQuartzJob.getCronExpression()) && !cronExpression.equals(updateQuartzJob.getJobTriggerId())))){ + QuartzManager.removeJob(jobName, jobGroup); + Job job = (Job) SpringContextUtil.getApplicationContext().getBean(updateQuartzJob.getJobTriggerId()); + jobName = updateQuartzJob.getJobName(); + jobGroup = updateQuartzJob.getJobGroup(); + QuartzManager.addJob(jobName, jobGroup, job.getClass(), updateQuartzJob.getCronExpression()); + if(Trigger.STATE_NORMAL != oldSchedule.getJobStatus()){ + QuartzManager.pauseJob(jobName, jobGroup); + } + } + QuartzManager.getScheduler().getTriggerState(jobName, jobGroup); + if(UpdateQuartzJob.ACTION_START.equalsIgnoreCase(updateQuartzJob.getAction())){ + scheduleJob.setJobStatus(Trigger.STATE_NORMAL); + QuartzManager.resumeJob(jobName, jobGroup); + }else if(UpdateQuartzJob.ACTION_RESTART.equalsIgnoreCase(updateQuartzJob.getAction())){ + scheduleJob.setJobStatus(Trigger.STATE_NORMAL); + QuartzManager.resumeJob(jobName, jobGroup); + }else if(UpdateQuartzJob.ACTION_PAUSE.equalsIgnoreCase(updateQuartzJob.getAction())){ + scheduleJob.setJobStatus(Trigger.STATE_PAUSED); + QuartzManager.pauseJob(jobName, jobGroup); + }else if(UpdateQuartzJob.ACTION_STOP.equalsIgnoreCase(updateQuartzJob.getAction())){ + scheduleJob.setJobStatus(Trigger.STATE_NONE); + QuartzManager.unscheduleJob(jobName, jobGroup); + } + mybatisDao.updateByModel(scheduleJob); + } catch (SchedulerException e) { + e.printStackTrace(); + throw new IllegalArgumentException(e); + } catch (ParseException e) { + e.printStackTrace(); + throw new IllegalArgumentException(e); + } + } + + /** + * 删除定时任务 + * @param scheduleId + */ + public void deleteScheduleJob(Integer scheduleId){ + ScheduleJob scheduleJob = mybatisDao.selectByPrimaryKey(ScheduleJob.class, scheduleId); + if(scheduleJob != null){ + try { + String jobName = scheduleJob.getJobName(); + String jobGroup = scheduleJob.getJobGroup(); + JobDetail jobDetail = QuartzManager.getJobDetail(jobName, jobGroup); + if(jobDetail == null){ + return; + } + if(QuartzManager.isRunning(jobName, jobGroup)){ + throw new IllegalArgumentException("此任务正在运行,请关闭任务再重新操作!"); + } + } catch (SchedulerException e) { + e.printStackTrace(); + throw new IllegalArgumentException(e); + } + mybatisDao.deleteByPrimaryKey(ScheduleJob.class, scheduleId); + } + } +} diff --git a/src/main/java/com/xmomen/module/sms/api/Client.java b/src/main/java/com/xmomen/module/sms/api/Client.java new file mode 100644 index 0000000..68318a3 --- /dev/null +++ b/src/main/java/com/xmomen/module/sms/api/Client.java @@ -0,0 +1,94 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package com.xmomen.module.sms.api; + +import com.xmomen.module.sms.util.HttpUtil; + +/** + * Client + */ +public class Client { + /** + * 发送请求 + * + * @param request request对象 + * @return Response + * @throws Exception + */ + public static Response execute(Request request) throws Exception { + switch (request.getMethod()) { + case GET: + return HttpUtil.httpGet(request.getHost(), request.getPath(), + request.getTimeout(), + request.getHeaders(), + request.getQuerys(), + request.getSignHeaderPrefixList(), + request.getAppKey(), request.getAppSecret()); + case POST_FORM: + return HttpUtil.httpPost(request.getHost(), request.getPath(), + request.getTimeout(), + request.getHeaders(), + request.getQuerys(), + request.getBodys(), + request.getSignHeaderPrefixList(), + request.getAppKey(), request.getAppSecret()); + case POST_STRING: + return HttpUtil.httpPost(request.getHost(), request.getPath(), + request.getTimeout(), + request.getHeaders(), + request.getQuerys(), + request.getStringBody(), + request.getSignHeaderPrefixList(), + request.getAppKey(), request.getAppSecret()); + case POST_BYTES: + return HttpUtil.httpPost(request.getHost(), request.getPath(), + request.getTimeout(), + request.getHeaders(), + request.getQuerys(), + request.getBytesBody(), + request.getSignHeaderPrefixList(), + request.getAppKey(), request.getAppSecret()); + case PUT_STRING: + return HttpUtil.httpPut(request.getHost(), request.getPath(), + request.getTimeout(), + request.getHeaders(), + request.getQuerys(), + request.getStringBody(), + request.getSignHeaderPrefixList(), + request.getAppKey(), request.getAppSecret()); + case PUT_BYTES: + return HttpUtil.httpPut(request.getHost(), request.getPath(), + request.getTimeout(), + request.getHeaders(), + request.getQuerys(), + request.getBytesBody(), + request.getSignHeaderPrefixList(), + request.getAppKey(), request.getAppSecret()); + case DELETE: + return HttpUtil.httpDelete(request.getHost(), request.getPath(), + request.getTimeout(), + request.getHeaders(), + request.getQuerys(), + request.getSignHeaderPrefixList(), + request.getAppKey(), request.getAppSecret()); + default: + throw new IllegalArgumentException(String.format("unsupported method:%s", request.getMethod())); + } + } +} diff --git a/src/main/java/com/xmomen/module/sms/api/SmsMessageService.java b/src/main/java/com/xmomen/module/sms/api/SmsMessageService.java new file mode 100644 index 0000000..c39e5ac --- /dev/null +++ b/src/main/java/com/xmomen/module/sms/api/SmsMessageService.java @@ -0,0 +1,130 @@ +//package com.xmomen.module.sms.api; +// +//import org.apache.shiro.ShiroException; +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +//import org.springframework.beans.factory.InitializingBean; +//import org.springframework.stereotype.Component; +// +//import com.aliyun.mns.client.CloudAccount; +//import com.aliyun.mns.client.CloudTopic; +//import com.aliyun.mns.client.MNSClient; +//import com.aliyun.mns.common.ServiceException; +//import com.aliyun.mns.model.BatchSmsAttributes; +//import com.aliyun.mns.model.MessageAttributes; +//import com.aliyun.mns.model.RawTopicMessage; +//import com.aliyun.mns.model.TopicMessage; +//import com.xmomen.framework.exception.BusinessException; +//import com.xmomen.module.sms.util.GlobalIdentifyCodeManager; +//import com.xmomen.module.wx.pay.common.RandomStringGenerator; +// +//@Component +//public class SmsMessageService implements InitializingBean { +// +// static Logger log = LoggerFactory.getLogger(SmsService.class); +// +// private MNSClient client; +// +// public void startUp() { +// CloudAccount account = new CloudAccount("LTAI1klbIDX7r7cw", +// "YIy5b9LtvfRvboEXhJjztmJCY7eO2I", +// "http://1478678502173333.mns.cn-hangzhou.aliyuncs.com/"); +// client = account.getMNSClient(); +// } +// public SmsResponse sendSingleRequest(String phoneNumber) throws Exception { +// if(client == null || !client.isOpen()) { +// log.info("client已关闭,重新创建连接"); +// startUp(); +// } +// CloudTopic topic = client.getTopicRef("sms.topic-cn-hangzhou"); +// +// /** +// * Step 2. 设置SMS消息体(必须) +// * +// * 注:目前暂时不支持消息内容为空,需要指定消息内容,不为空即可。 +// */ +// RawTopicMessage msg = new RawTopicMessage(); +// msg.setMessageBody("sms-message"); +// +// +// /** +// * Step 3. 生成SMS消息属性 +// */ +// MessageAttributes messageAttributes = new MessageAttributes(); +// BatchSmsAttributes batchSmsAttributes = new BatchSmsAttributes(); +// // 3.1 设置发送短信的签名(SMSSignName) +// batchSmsAttributes.setFreeSignName("益谷上禾"); +// // 3.2 设置发送短信使用的模板(SMSTempateCode) +// batchSmsAttributes.setTemplateCode("SMS_67180402"); +// // 3.3 设置发送短信所使用的模板中参数对应的值(在短信模板中定义的,没有可以不用设置) +// BatchSmsAttributes.SmsReceiverParams smsReceiverParams = new BatchSmsAttributes.SmsReceiverParams(); +// String identifyCode = RandomStringGenerator.getRandomNumberStrByLength(6); +// smsReceiverParams.setParam("code", identifyCode); +// // 3.4 增加接收短信的号码 +// batchSmsAttributes.addSmsReceiver(phoneNumber, smsReceiverParams); +// messageAttributes.setBatchSmsAttributes(batchSmsAttributes); +// +// try { +// /** +// * Step 4. 发布SMS消息 +// */ +// TopicMessage ret = topic.publishMessage(msg, messageAttributes); +// log.info("MessageId:" + ret.getMessageId()); +// GlobalIdentifyCodeManager.updateIdenfifyCode(phoneNumber, identifyCode); +// SmsResponse response = new SmsResponse(); +// response.setSuccess(true); +// return response; +// } catch (ServiceException se) { +// log.error("API异常:" + se.getMessage()); +// throw new BusinessException("执行SMS API 异常:ErrorCode=" + se.getErrorCode() + ", RequestId=" + se.getRequestId()); +// } catch (Exception e) { +// log.error("系统异常", e.getMessage()); +// client.close(); +// client = null; +// return null; +// } +// } +// +// public SmsResponse sendPasswordInfo(String phoneNumber, String plainPassword) { +// if(client == null || !client.isOpen()) { +// log.info("client已关闭,重新创建连接"); +// startUp(); +// } +// CloudTopic topic = client.getTopicRef("sms.topic-cn-hangzhou"); +// MessageAttributes messageAttributes = new MessageAttributes(); +// BatchSmsAttributes batchSmsAttributes = new BatchSmsAttributes(); +// // 3.1 设置发送短信的签名(SMSSignName) +// batchSmsAttributes.setFreeSignName("益谷上禾"); +// // TODO 密码重置的模板 +// batchSmsAttributes.setTemplateCode("SMS_67180402"); +// // 3.3 设置发送短信所使用的模板中参数对应的值(在短信模板中定义的,没有可以不用设置) +// BatchSmsAttributes.SmsReceiverParams smsReceiverParams = new BatchSmsAttributes.SmsReceiverParams(); +// smsReceiverParams.setParam("code", plainPassword); +// // 3.4 增加接收短信的号码 +// batchSmsAttributes.addSmsReceiver(phoneNumber, smsReceiverParams); +// messageAttributes.setBatchSmsAttributes(batchSmsAttributes); +// +// RawTopicMessage msg = new RawTopicMessage(); +// msg.setMessageBody("sms-message"); +// try { +// TopicMessage ret = topic.publishMessage(msg, messageAttributes); +// log.info("MessageId:" + ret.getMessageId()); +// SmsResponse response = new SmsResponse(); +// response.setSuccess(true); +// return response; +// } catch (ServiceException se) { +// log.error("API异常:" + se.getMessage()); +// throw new BusinessException("执行SMS API 异常:ErrorCode=" + se.getErrorCode() + ", RequestId=" + se.getRequestId()); +// } catch (Exception e) { +// log.error("系统异常", e.getMessage()); +// client.close(); +// client = null; +// return null; +// } +// } +// +// @Override +// public void afterPropertiesSet() throws Exception { +// startUp(); +// } +//} diff --git a/src/main/java/com/xmomen/module/sms/constant/Constants.java b/src/main/java/com/xmomen/module/sms/constant/Constants.java new file mode 100644 index 0000000..dfcd205 --- /dev/null +++ b/src/main/java/com/xmomen/module/sms/constant/Constants.java @@ -0,0 +1,47 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package com.xmomen.module.sms.constant; + +/** + * 通用常量 + */ +public class Constants { + //签名算法HmacSha256 + public static final String HMAC_SHA256 = "HmacSHA256"; + //编码UTF-8 + public static final String ENCODING = "UTF-8"; + //UserAgent + public static final String USER_AGENT = "demo/aliyun/java"; + //换行符 + public static final String LF = "\n"; + //串联符 + public static final String SPE1 = ","; + //示意符 + public static final String SPE2 = ":"; + //连接符 + public static final String SPE3 = "&"; + //赋值符 + public static final String SPE4 = "="; + //问号符 + public static final String SPE5 = "?"; + //默认请求超时时间,单位毫秒 + public static final int DEFAULT_TIMEOUT = 1000; + //参与签名的系统Header前缀,只有指定前缀的Header才会参与到签名中 + public static final String CA_HEADER_TO_SIGN_PREFIX_SYSTEM = "X-Ca-"; +} diff --git a/src/main/java/com/xmomen/module/sms/constant/HttpMethod.java b/src/main/java/com/xmomen/module/sms/constant/HttpMethod.java new file mode 100644 index 0000000..3c7bacd --- /dev/null +++ b/src/main/java/com/xmomen/module/sms/constant/HttpMethod.java @@ -0,0 +1,33 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package com.xmomen.module.sms.constant; + +/** + * HTTP方法常量 + */ +public class HttpMethod { + //GET + public static final String GET = "GET"; + //POST + public static final String POST = "POST"; + //PUT + public static final String PUT = "PUT"; + //DELETE + public static final String DELETE = "DELETE"; +} diff --git a/src/main/java/com/xmomen/module/sms/enums/Method.java b/src/main/java/com/xmomen/module/sms/enums/Method.java new file mode 100644 index 0000000..8af04f7 --- /dev/null +++ b/src/main/java/com/xmomen/module/sms/enums/Method.java @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package com.xmomen.module.sms.enums; + +/** + * Http请求方法 + * Created by lipengfei on 16/3/17. + */ +public enum Method { + GET, POST_FORM, POST_STRING, POST_BYTES, PUT_FORM, PUT_STRING, PUT_BYTES, DELETE; +} diff --git a/src/main/java/com/xmomen/module/sms/model/IdentifyCodeModel.java b/src/main/java/com/xmomen/module/sms/model/IdentifyCodeModel.java new file mode 100644 index 0000000..1e72113 --- /dev/null +++ b/src/main/java/com/xmomen/module/sms/model/IdentifyCodeModel.java @@ -0,0 +1,58 @@ +package com.xmomen.module.sms.model; + +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.concurrent.TimeUnit; + +import lombok.Data; + +public @Data class IdentifyCodeModel { + + private String identifyCode; + private Date createTime; + private Date expiredTime; + + public IdentifyCodeModel(String identifyCode, Long validTime, TimeUnit timeUnit) { + this.identifyCode = identifyCode; + Calendar calendar = new GregorianCalendar(); + createTime = calendar.getTime(); + if(validTime != null) { + if(validTime > 0) { + switch(timeUnit) { + case SECONDS: { + expiredTime = new Date(createTime.getTime() + validTime * 1000); + break; + } + case MINUTES: { + expiredTime = new Date(createTime.getTime() + validTime * 1000 * 60); + break; + } + default: { + throw new IllegalArgumentException("不支持其他时间类型"); + } + } + } else { + throw new IllegalArgumentException("不合法有效时间值"); + } + + } + } + + public IdentifyCodeModel(String identifyCode, Long validTime) { + this(identifyCode, validTime, TimeUnit.SECONDS); + } + public IdentifyCodeModel(String identifyCode) { + this(identifyCode, null); + } + + public boolean isExpired() { + Date now = new Date(); + if(expiredTime == null) return false; + if(now.getTime() > expiredTime.getTime()) { + return true; + } + return false; + } + +} diff --git a/src/main/java/com/xmomen/module/sms/util/HttpUtil.java b/src/main/java/com/xmomen/module/sms/util/HttpUtil.java new file mode 100644 index 0000000..24e6792 --- /dev/null +++ b/src/main/java/com/xmomen/module/sms/util/HttpUtil.java @@ -0,0 +1,491 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package com.xmomen.module.sms.util; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; +import java.net.MalformedURLException; +import java.net.URLEncoder; +import java.nio.ByteBuffer; +import java.nio.channels.Channels; +import java.nio.channels.ReadableByteChannel; +import java.nio.channels.WritableByteChannel; +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; +import java.security.cert.X509Certificate; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.net.ssl.SSLContext; +import javax.net.ssl.TrustManager; +import javax.net.ssl.X509TrustManager; + +import org.apache.commons.lang.StringUtils; +import org.apache.http.Header; +import org.apache.http.HttpResponse; +import org.apache.http.NameValuePair; +import org.apache.http.client.HttpClient; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.HttpDelete; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.client.methods.HttpPut; +import org.apache.http.conn.ClientConnectionManager; +import org.apache.http.conn.scheme.Scheme; +import org.apache.http.conn.scheme.SchemeRegistry; +import org.apache.http.conn.ssl.SSLSocketFactory; +import org.apache.http.entity.ByteArrayEntity; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.message.BasicNameValuePair; +import org.apache.http.params.CoreConnectionPNames; + +import com.xmomen.module.sms.api.Response; +import com.xmomen.module.sms.constant.Constants; +import com.xmomen.module.sms.constant.ContentType; +import com.xmomen.module.sms.constant.HttpHeader; +import com.xmomen.module.sms.constant.HttpMethod; +import com.xmomen.module.sms.constant.SystemHeader; + +/** + * Http工具类 + */ +public class HttpUtil { + /** + * HTTP GET + * @param host + * @param path + * @param connectTimeout + * @param headers + * @param querys + * @param signHeaderPrefixList + * @param appKey + * @param appSecret + * @return + * @throws Exception + */ + public static Response httpGet(String host, String path, int connectTimeout, Map headers, Map querys, List signHeaderPrefixList, String appKey, String appSecret) + throws Exception { + headers = initialBasicHeader(HttpMethod.GET, path, headers, querys, null, signHeaderPrefixList, appKey, appSecret); + + HttpClient httpClient = wrapClient(host); + httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, getTimeout(connectTimeout)); + + HttpGet get = new HttpGet(initUrl(host, path, querys)); + + for (Map.Entry e : headers.entrySet()) { + get.addHeader(e.getKey(), MessageDigestUtil.utf8ToIso88591(e.getValue())); + } + + return convert(httpClient.execute(get)); + } + + /** + * HTTP POST表单 + * @param host + * @param path + * @param connectTimeout + * @param headers + * @param querys + * @param bodys + * @param signHeaderPrefixList + * @param appKey + * @param appSecret + * @return + * @throws Exception + */ + public static Response httpPost(String host, String path, int connectTimeout, Map headers, Map querys, Map bodys, List signHeaderPrefixList, String appKey, String appSecret) + throws Exception { + if (headers == null) { + headers = new HashMap(); + } + + headers.put(HttpHeader.HTTP_HEADER_CONTENT_TYPE, ContentType.CONTENT_TYPE_FORM); + + headers = initialBasicHeader(HttpMethod.POST, path, headers, querys, bodys, signHeaderPrefixList, appKey, appSecret); + + HttpClient httpClient = wrapClient(host); + httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, getTimeout(connectTimeout)); + + HttpPost post = new HttpPost(initUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + post.addHeader(e.getKey(), MessageDigestUtil.utf8ToIso88591(e.getValue())); + } + + UrlEncodedFormEntity formEntity = buildFormEntity(bodys); + if (formEntity != null) { + post.setEntity(formEntity); + } + + return convert(httpClient.execute(post)); + } + + /** + * Http POST 字符串 + * @param host + * @param path + * @param connectTimeout + * @param headers + * @param querys + * @param body + * @param signHeaderPrefixList + * @param appKey + * @param appSecret + * @return + * @throws Exception + */ + public static Response httpPost(String host, String path, int connectTimeout, Map headers, Map querys, String body, List signHeaderPrefixList, String appKey, String appSecret) + throws Exception { + headers = initialBasicHeader(HttpMethod.POST, path, headers, querys, null, signHeaderPrefixList, appKey, appSecret); + + HttpClient httpClient = wrapClient(host); + httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, getTimeout(connectTimeout)); + + HttpPost post = new HttpPost(initUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + post.addHeader(e.getKey(), MessageDigestUtil.utf8ToIso88591(e.getValue())); + } + + if (StringUtils.isNotBlank(body)) { + post.setEntity(new StringEntity(body, Constants.ENCODING)); + + } + + return convert(httpClient.execute(post)); + } + + /** + * HTTP POST 字节数组 + * @param host + * @param path + * @param connectTimeout + * @param headers + * @param querys + * @param bodys + * @param signHeaderPrefixList + * @param appKey + * @param appSecret + * @return + * @throws Exception + */ + public static Response httpPost(String host, String path, int connectTimeout, Map headers, Map querys, byte[] bodys, List signHeaderPrefixList, String appKey, String appSecret) + throws Exception { + headers = initialBasicHeader(HttpMethod.POST, path, headers, querys, null, signHeaderPrefixList, appKey, appSecret); + + HttpClient httpClient = wrapClient(host); + httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, getTimeout(connectTimeout)); + + HttpPost post = new HttpPost(initUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + post.addHeader(e.getKey(), MessageDigestUtil.utf8ToIso88591(e.getValue())); + } + + if (bodys != null) { + post.setEntity(new ByteArrayEntity(bodys)); + } + + return convert(httpClient.execute(post)); + } + + /** + * HTTP PUT 字符串 + * @param host + * @param path + * @param connectTimeout + * @param headers + * @param querys + * @param body + * @param signHeaderPrefixList + * @param appKey + * @param appSecret + * @return + * @throws Exception + */ + public static Response httpPut(String host, String path, int connectTimeout, Map headers, Map querys, String body, List signHeaderPrefixList, String appKey, String appSecret) + throws Exception { + headers = initialBasicHeader(HttpMethod.PUT, path, headers, querys, null, signHeaderPrefixList, appKey, appSecret); + + HttpClient httpClient = wrapClient(host); + httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, getTimeout(connectTimeout)); + + HttpPut put = new HttpPut(initUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + put.addHeader(e.getKey(), MessageDigestUtil.utf8ToIso88591(e.getValue())); + } + + if (StringUtils.isNotBlank(body)) { + put.setEntity(new StringEntity(body, Constants.ENCODING)); + + } + + return convert(httpClient.execute(put)); + } + + /** + * HTTP PUT字节数组 + * @param host + * @param path + * @param connectTimeout + * @param headers + * @param querys + * @param bodys + * @param signHeaderPrefixList + * @param appKey + * @param appSecret + * @return + * @throws Exception + */ + public static Response httpPut(String host, String path, int connectTimeout, Map headers, Map querys, byte[] bodys, List signHeaderPrefixList, String appKey, String appSecret) + throws Exception { + headers = initialBasicHeader(HttpMethod.PUT, path, headers, querys, null, signHeaderPrefixList, appKey, appSecret); + + HttpClient httpClient = wrapClient(host); + httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, getTimeout(connectTimeout)); + + HttpPut put = new HttpPut(initUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + put.addHeader(e.getKey(), MessageDigestUtil.utf8ToIso88591(e.getValue())); + } + + if (bodys != null) { + put.setEntity(new ByteArrayEntity(bodys)); + } + + return convert(httpClient.execute(put)); + } + + /** + * HTTP DELETE + * @param host + * @param path + * @param connectTimeout + * @param headers + * @param querys + * @param signHeaderPrefixList + * @param appKey + * @param appSecret + * @return + * @throws Exception + */ + public static Response httpDelete(String host, String path, int connectTimeout, Map headers, Map querys, List signHeaderPrefixList, String appKey, String appSecret) + throws Exception { + headers = initialBasicHeader(HttpMethod.DELETE, path, headers, querys, null, signHeaderPrefixList, appKey, appSecret); + + HttpClient httpClient = wrapClient(host); + httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, getTimeout(connectTimeout)); + + HttpDelete delete = new HttpDelete(initUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + delete.addHeader(e.getKey(), MessageDigestUtil.utf8ToIso88591(e.getValue())); + } + + return convert(httpClient.execute(delete)); + } + + /** + * 构建FormEntity + * + * @param formParam + * @return + * @throws UnsupportedEncodingException + */ + private static UrlEncodedFormEntity buildFormEntity(Map formParam) + throws UnsupportedEncodingException { + if (formParam != null) { + List nameValuePairList = new ArrayList(); + + for (String key : formParam.keySet()) { + nameValuePairList.add(new BasicNameValuePair(key, formParam.get(key))); + } + UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairList, Constants.ENCODING); + formEntity.setContentType(ContentType.CONTENT_TYPE_FORM); + return formEntity; + } + + return null; + } + + private static String initUrl(String host, String path, Map querys) throws UnsupportedEncodingException { + StringBuilder sbUrl = new StringBuilder(); + sbUrl.append(host); + if (!StringUtils.isBlank(path)) { + sbUrl.append(path); + } + if (null != querys) { + StringBuilder sbQuery = new StringBuilder(); + for (Map.Entry query : querys.entrySet()) { + if (0 < sbQuery.length()) { + sbQuery.append(Constants.SPE3); + } + if (StringUtils.isBlank(query.getKey()) && !StringUtils.isBlank(query.getValue())) { + sbQuery.append(query.getValue()); + } + if (!StringUtils.isBlank(query.getKey())) { + sbQuery.append(query.getKey()); + if (!StringUtils.isBlank(query.getValue())) { + sbQuery.append(Constants.SPE4); + sbQuery.append(URLEncoder.encode(query.getValue(), Constants.ENCODING)); + } + } + } + if (0 < sbQuery.length()) { + sbUrl.append(Constants.SPE5).append(sbQuery); + } + } + + return sbUrl.toString(); + } + + + /** + * 初始化基础Header + * @param method + * @param path + * @param headers + * @param querys + * @param bodys + * @param signHeaderPrefixList + * @param appKey + * @param appSecret + * @return + * @throws MalformedURLException + */ + private static Map initialBasicHeader(String method, String path, + Map headers, + Map querys, + Map bodys, + List signHeaderPrefixList, + String appKey, String appSecret) + throws MalformedURLException { + if (headers == null) { + headers = new HashMap(); + } + + headers.put(SystemHeader.X_CA_TIMESTAMP, String.valueOf(new Date().getTime())); + //headers.put(SystemHeader.X_CA_NONCE, UUID.randomUUID().toString()); + headers.put(SystemHeader.X_CA_KEY, appKey); + headers.put(SystemHeader.X_CA_SIGNATURE, + SignUtil.sign(appSecret, method, path, headers, querys, bodys, signHeaderPrefixList)); + + return headers; + } + + /** + * 读取超时时间 + * + * @param timeout + * @return + */ + private static int getTimeout(int timeout) { + if (timeout == 0) { + return Constants.DEFAULT_TIMEOUT; + } + + return timeout; + } + + private static Response convert(HttpResponse response) throws IOException { + Response res = new Response(); + + if (null != response) { + res.setStatusCode(response.getStatusLine().getStatusCode()); + for (Header header : response.getAllHeaders()) { + res.setHeader(header.getName(), MessageDigestUtil.iso88591ToUtf8(header.getValue())); + } + + res.setContentType(res.getHeader("Content-Type")); + res.setRequestId(res.getHeader("X-Ca-Request-Id")); + res.setErrorMessage(res.getHeader("X-Ca-Error-Message")); + res.setBody(readStreamAsStr(response.getEntity().getContent())); + + } else { + //服务器无回应 + res.setStatusCode(500); + res.setErrorMessage("No Response"); + } + + return res; + } + + + /** + * 将流转换为字符串 + * + * @param is + * @return + * @throws IOException + */ + public static String readStreamAsStr(InputStream is) throws IOException { + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + WritableByteChannel dest = Channels.newChannel(bos); + ReadableByteChannel src = Channels.newChannel(is); + ByteBuffer bb = ByteBuffer.allocate(4096); + + while (src.read(bb) != -1) { + bb.flip(); + dest.write(bb); + bb.clear(); + } + src.close(); + dest.close(); + + return new String(bos.toByteArray(), Constants.ENCODING); + } + + private static HttpClient wrapClient(String host) { + HttpClient httpClient = new DefaultHttpClient(); + if (host.startsWith("https://")) { + sslClient(httpClient); + } + + return httpClient; + } + + private static void sslClient(HttpClient httpClient) { + try { + SSLContext ctx = SSLContext.getInstance("TLS"); + X509TrustManager tm = new X509TrustManager() { + public X509Certificate[] getAcceptedIssuers() { + return null; + } + public void checkClientTrusted(X509Certificate[] xcs, String str) { + + } + public void checkServerTrusted(X509Certificate[] xcs, String str) { + + } + }; + ctx.init(null, new TrustManager[] { tm }, null); + SSLSocketFactory ssf = new SSLSocketFactory(ctx); + ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); + ClientConnectionManager ccm = httpClient.getConnectionManager(); + SchemeRegistry registry = ccm.getSchemeRegistry(); + registry.register(new Scheme("https", 443, ssf)); + } catch (KeyManagementException ex) { + throw new RuntimeException(ex); + } catch (NoSuchAlgorithmException ex) { + throw new RuntimeException(ex); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/sms/util/SignUtil.java b/src/main/java/com/xmomen/module/sms/util/SignUtil.java new file mode 100644 index 0000000..1f3706f --- /dev/null +++ b/src/main/java/com/xmomen/module/sms/util/SignUtil.java @@ -0,0 +1,229 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package com.xmomen.module.sms.util; + +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + +import javax.crypto.Mac; +import javax.crypto.spec.SecretKeySpec; + +import org.apache.commons.codec.binary.Base64; +import org.apache.commons.lang.StringUtils; + +import com.xmomen.module.sms.constant.Constants; +import com.xmomen.module.sms.constant.HttpHeader; +import com.xmomen.module.sms.constant.SystemHeader; + +/** + * 签名工具 + */ +public class SignUtil { + + /** + * 计算签名 + * + * @param secret APP密钥 + * @param method HttpMethod + * @param path + * @param headers + * @param querys + * @param bodys + * @param signHeaderPrefixList 自定义参与签名Header前缀 + * @return 签名后的字符串 + */ + public static String sign(String secret, String method, String path, + Map headers, + Map querys, + Map bodys, + List signHeaderPrefixList) { + try { + Mac hmacSha256 = Mac.getInstance(Constants.HMAC_SHA256); + byte[] keyBytes = secret.getBytes(Constants.ENCODING); + hmacSha256.init(new SecretKeySpec(keyBytes, 0, keyBytes.length, Constants.HMAC_SHA256)); + + return new String(Base64.encodeBase64( + hmacSha256.doFinal(buildStringToSign(method, path, headers, querys, bodys, signHeaderPrefixList) + .getBytes(Constants.ENCODING))), + Constants.ENCODING); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + /** + * 构建待签名字符串 + * @param method + * @param path + * @param headers + * @param querys + * @param bodys + * @param signHeaderPrefixList + * @return + */ + private static String buildStringToSign(String method, String path, + Map headers, + Map querys, + Map bodys, + List signHeaderPrefixList) { + StringBuilder sb = new StringBuilder(); + + sb.append(method.toUpperCase()).append(Constants.LF); + if (null != headers) { + if (null != headers.get(HttpHeader.HTTP_HEADER_ACCEPT)) { + sb.append(headers.get(HttpHeader.HTTP_HEADER_ACCEPT)); + } + sb.append(Constants.LF); + if (null != headers.get(HttpHeader.HTTP_HEADER_CONTENT_MD5)) { + sb.append(headers.get(HttpHeader.HTTP_HEADER_CONTENT_MD5)); + } + sb.append(Constants.LF); + if (null != headers.get(HttpHeader.HTTP_HEADER_CONTENT_TYPE)) { + sb.append(headers.get(HttpHeader.HTTP_HEADER_CONTENT_TYPE)); + } + sb.append(Constants.LF); + if (null != headers.get(HttpHeader.HTTP_HEADER_DATE)) { + sb.append(headers.get(HttpHeader.HTTP_HEADER_DATE)); + } + } + sb.append(Constants.LF); + sb.append(buildHeaders(headers, signHeaderPrefixList)); + sb.append(buildResource(path, querys, bodys)); + + return sb.toString(); + } + + /** + * 构建待签名Path+Query+BODY + * + * @param path + * @param querys + * @param bodys + * @return 待签名 + */ + private static String buildResource(String path, Map querys, Map bodys) { + StringBuilder sb = new StringBuilder(); + + if (!StringUtils.isBlank(path)) { + sb.append(path); + } + Map sortMap = new TreeMap(); + if (null != querys) { + for (Map.Entry query : querys.entrySet()) { + if (!StringUtils.isBlank(query.getKey())) { + sortMap.put(query.getKey(), query.getValue()); + } + } + } + + if (null != bodys) { + for (Map.Entry body : bodys.entrySet()) { + if (!StringUtils.isBlank(body.getKey())) { + sortMap.put(body.getKey(), body.getValue()); + } + } + } + + StringBuilder sbParam = new StringBuilder(); + for (Map.Entry item : sortMap.entrySet()) { + if (!StringUtils.isBlank(item.getKey())) { + if (0 < sbParam.length()) { + sbParam.append(Constants.SPE3); + } + sbParam.append(item.getKey()); + if (!StringUtils.isBlank(item.getValue())) { + sbParam.append(Constants.SPE4).append(item.getValue()); + } + } + } + if (0 < sbParam.length()) { + sb.append(Constants.SPE5); + sb.append(sbParam); + } + + return sb.toString(); + } + + /** + * 构建待签名Http头 + * + * @param headers 请求中所有的Http头 + * @param signHeaderPrefixList 自定义参与签名Header前缀 + * @return 待签名Http头 + */ + private static String buildHeaders(Map headers, List signHeaderPrefixList) { + StringBuilder sb = new StringBuilder(); + + if (null != signHeaderPrefixList) { + signHeaderPrefixList.remove(SystemHeader.X_CA_SIGNATURE); + signHeaderPrefixList.remove(HttpHeader.HTTP_HEADER_ACCEPT); + signHeaderPrefixList.remove(HttpHeader.HTTP_HEADER_CONTENT_MD5); + signHeaderPrefixList.remove(HttpHeader.HTTP_HEADER_CONTENT_TYPE); + signHeaderPrefixList.remove(HttpHeader.HTTP_HEADER_DATE); + Collections.sort(signHeaderPrefixList); + if (null != headers) { + Map sortMap = new TreeMap(); + sortMap.putAll(headers); + StringBuilder signHeadersStringBuilder = new StringBuilder(); + for (Map.Entry header : sortMap.entrySet()) { + if (isHeaderToSign(header.getKey(), signHeaderPrefixList)) { + sb.append(header.getKey()); + sb.append(Constants.SPE2); + if (!StringUtils.isBlank(header.getValue())) { + sb.append(header.getValue()); + } + sb.append(Constants.LF); + if (0 < signHeadersStringBuilder.length()) { + signHeadersStringBuilder.append(Constants.SPE1); + } + signHeadersStringBuilder.append(header.getKey()); + } + } + headers.put(SystemHeader.X_CA_SIGNATURE_HEADERS, signHeadersStringBuilder.toString()); + } + } + + return sb.toString(); + } + + /** + * Http头是否参与签名 return + */ + private static boolean isHeaderToSign(String headerName, List signHeaderPrefixList) { + if (StringUtils.isBlank(headerName)) { + return false; + } + + if (headerName.startsWith(Constants.CA_HEADER_TO_SIGN_PREFIX_SYSTEM)) { + return true; + } + + if (null != signHeaderPrefixList) { + for (String signHeaderPrefix : signHeaderPrefixList) { + if (headerName.equalsIgnoreCase(signHeaderPrefix)) { + return true; + } + } + } + + return false; + } +} diff --git a/src/main/java/com/xmomen/module/stock/controller/StockController.java b/src/main/java/com/xmomen/module/stock/controller/StockController.java new file mode 100644 index 0000000..a2f4e23 --- /dev/null +++ b/src/main/java/com/xmomen/module/stock/controller/StockController.java @@ -0,0 +1,170 @@ +package com.xmomen.module.stock.controller; + +import com.xmomen.framework.exception.BusinessException; +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.framework.utils.StringUtils; +import com.xmomen.module.core.web.controller.DmsBaseController; +import com.xmomen.module.logger.Log; +import com.xmomen.module.stock.model.StockChange; +import com.xmomen.module.stock.model.StockQuery; +import com.xmomen.module.stock.model.StockModel; +import com.xmomen.module.stock.service.StockService; + +import com.xmomen.module.wx.model.AjaxResult; +import org.apache.commons.io.IOUtils; +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.entity.result.ExcelImportResult; +import org.jeecgframework.poi.excel.entity.vo.NormalExcelConstants; +import org.jeecgframework.poi.exception.excel.ExcelImportException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.ui.ModelMap; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.servlet.ModelAndView; + +import javax.validation.Valid; +import java.io.Serializable; +import java.io.IOException; +import java.io.InputStream; +import java.util.Date; +import java.util.List; + +/** + * @author tanxinzheng + * @version 1.0.0 + * @date 2017-5-13 12:49:20 + */ +@RestController +@RequestMapping(value = "/stock") +public class StockController extends DmsBaseController { + + @Autowired + StockService stockService; + + /** + * 商品库存记录列表 + * + * @param limit 每页结果数 + * @param offset 页码 + * @param id 主键 + * @param ids 主键数组 + * @param excludeIds 不包含主键数组 + * @return Page 商品库存记录领域分页对象 + */ + @RequestMapping(method = RequestMethod.GET) + @Log(actionName = "查询商品库存记录列表") + public Page getStockList(@RequestParam(value = "limit") Integer limit, + @RequestParam(value = "offset") Integer offset, + @RequestParam(value = "keyword", required = false) String keyword, + @RequestParam(value = "id", required = false) String id, + @RequestParam(value = "ids", required = false) String[] ids, + @RequestParam(value = "excludeIds", required = false) String[] excludeIds, + @RequestParam(value = "itemName", required = false) String itemName, + @RequestParam(value = "itemCode", required = false) String itemCode) { + StockQuery stockQuery = new StockQuery(); + stockQuery.setKeyword(StringUtils.trimToEmpty(keyword)); + stockQuery.setId(id); + stockQuery.setExcludeIds(excludeIds); + stockQuery.setIds(ids); + stockQuery.setItemCode(itemCode); + stockQuery.setItemName(itemName); + return stockService.getStockModelPage(limit, offset, stockQuery); + } + + /** + * 查询单个商品库存记录 + * + * @param id 主键 + * @return StockModel 商品库存记录领域对象 + */ + @RequestMapping(value = "/{id}", method = RequestMethod.GET) + @Log(actionName = "查询商品库存记录") + public StockModel getStockById(@PathVariable(value = "id") String id) { + return stockService.getOneStockModel(id); + } + + /** + * 新增商品库存记录 + * + * @param stockModel 新增对象参数 + * @return StockModel 商品库存记录领域对象 + */ + @RequestMapping(method = RequestMethod.POST) + @Log(actionName = "新增商品库存记录") + public StockModel createStock(@RequestBody @Valid StockModel stockModel) { + stockModel.setInsertUserId(getCurrentUserId()); + stockModel.setUpdateUserId(getCurrentUserId()); + return stockService.createStock(stockModel); + } + + /** + * 更新商品库存记录 + * + * @param id 主键 + * @param stockModel 更新对象参数 + */ + @RequestMapping(value = "/{id}", method = RequestMethod.PUT) + @Log(actionName = "更新商品库存记录") + public void updateStock(@PathVariable(value = "id") String id, + @RequestBody @Valid StockModel stockModel) { + stockModel.setUpdateUserId(getCurrentUserId()); + stockService.updateStock(stockModel); + } + + /** + * 库存变更 + * + * @param id + * @param stockChange + */ + @RequestMapping(value = "/{id}/change", method = RequestMethod.PUT) + @Log(actionName = "更新商品库存记录") + public void updateStock(@PathVariable(value = "id") String id, + @RequestBody @Valid StockChange stockChange) { + stockChange.setActionBy(getCurrentUserId()); + stockChange.setStockId(id); + stockService.changeStock(stockChange); + } + + + /** + * 删除商品库存记录 + * + * @param id 主键 + */ + @RequestMapping(value = "/{id}", method = RequestMethod.DELETE) + @Log(actionName = "删除单个商品库存记录") + public void deleteStock(@PathVariable(value = "id") String id) { + stockService.deleteStock(id); + } + + /** + * 删除商品库存记录 + * + * @param ids 主键 + */ + @RequestMapping(method = RequestMethod.DELETE) + @Log(actionName = "批量删除商品库存记录") + public void deleteStocks(@RequestParam(value = "ids") String[] ids) { + stockService.deleteStock(ids); + } + + /** + * 预包装库存变化 + */ + @RequestMapping(value = "/beforehandPackageChangeStock", method = RequestMethod.GET) + @Log + public AjaxResult beforehandPackageChangeStock(@RequestParam(value = "itemId") Integer itemId, @RequestParam(value = "changeStockNum") Integer changeStockNum) { + AjaxResult ajaxResult = new AjaxResult(); + try { + ajaxResult = this.stockService.changeStockNum(itemId, changeStockNum, "预包装入库", 1); + } catch (Exception e) { + ajaxResult.setResult(0); + ajaxResult.setMessage(e.getMessage()); + } + return ajaxResult; + } +} diff --git a/src/main/java/com/xmomen/module/stock/controller/StockRecordController.java b/src/main/java/com/xmomen/module/stock/controller/StockRecordController.java new file mode 100644 index 0000000..e503ce0 --- /dev/null +++ b/src/main/java/com/xmomen/module/stock/controller/StockRecordController.java @@ -0,0 +1,132 @@ +package com.xmomen.module.stock.controller; + +import com.xmomen.framework.exception.BusinessException; +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.module.logger.Log; +import com.xmomen.module.stock.model.StockRecordQuery; +import com.xmomen.module.stock.model.StockRecordModel; +import com.xmomen.module.stock.service.StockRecordService; + +import org.apache.commons.io.IOUtils; +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.entity.result.ExcelImportResult; +import org.jeecgframework.poi.excel.entity.vo.NormalExcelConstants; +import org.jeecgframework.poi.exception.excel.ExcelImportException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.ui.ModelMap; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.servlet.ModelAndView; + +import javax.validation.Valid; +import java.io.Serializable; +import java.io.IOException; +import java.io.InputStream; +import java.util.List; + +/** + * @author tanxinzheng + * @version 1.0.0 + * @date 2017-5-13 12:48:23 + */ +@RestController +@RequestMapping(value = "/stockRecord") +public class StockRecordController { + + @Autowired + StockRecordService stockRecordService; + + /** + * 商品库存列表 + * + * @param limit 每页结果数 + * @param offset 页码 + * @param id 主键 + * @param ids 主键数组 + * @param excludeIds 不包含主键数组 + * @return Page 商品库存领域分页对象 + */ + @RequestMapping(method = RequestMethod.GET) + @Log(actionName = "查询商品库存列表") + public Page getStockRecordList(@RequestParam(value = "limit") Integer limit, + @RequestParam(value = "offset") Integer offset, + @RequestParam(value = "id", required = false) String id, + @RequestParam(value = "ids", required = false) String[] ids, + @RequestParam(value = "stockId", required = false) String stockId, + @RequestParam(value = "changeType", required = false) Integer changeType, + @RequestParam(value = "dailyDate", required = false) String dailyDate, + @RequestParam(value = "excludeIds", required = false) String[] excludeIds) { + StockRecordQuery stockRecordQuery = new StockRecordQuery(); + stockRecordQuery.setId(id); + stockRecordQuery.setExcludeIds(excludeIds); + stockRecordQuery.setIds(ids); + stockRecordQuery.setStockId(stockId); + stockRecordQuery.setChangeType(changeType); + stockRecordQuery.setDailyDate(dailyDate); + return stockRecordService.getStockRecordModelPage(limit, offset, stockRecordQuery); + } + + /** + * 查询单个商品库存 + * + * @param id 主键 + * @return StockRecordModel 商品库存领域对象 + */ + @RequestMapping(value = "/{id}", method = RequestMethod.GET) + @Log(actionName = "查询商品库存") + public StockRecordModel getStockRecordById(@PathVariable(value = "id") String id) { + return stockRecordService.getOneStockRecordModel(id); + } + + /** + * 新增商品库存 + * + * @param stockRecordModel 新增对象参数 + * @return StockRecordModel 商品库存领域对象 + */ + @RequestMapping(method = RequestMethod.POST) + @Log(actionName = "新增商品库存") + public StockRecordModel createStockRecord(@RequestBody @Valid StockRecordModel stockRecordModel) { + return stockRecordService.createStockRecord(stockRecordModel); + } + + /** + * 更新商品库存 + * + * @param id 主键 + * @param stockRecordModel 更新对象参数 + */ + @RequestMapping(value = "/{id}", method = RequestMethod.PUT) + @Log(actionName = "更新商品库存") + public void updateStockRecord(@PathVariable(value = "id") String id, + @RequestBody @Valid StockRecordModel stockRecordModel) { + stockRecordService.updateStockRecord(stockRecordModel); + } + + /** + * 删除商品库存 + * + * @param id 主键 + */ + @RequestMapping(value = "/{id}", method = RequestMethod.DELETE) + @Log(actionName = "删除单个商品库存") + public void deleteStockRecord(@PathVariable(value = "id") String id) { + stockRecordService.deleteStockRecord(id); + } + + /** + * 删除商品库存 + * + * @param ids 主键 + */ + @RequestMapping(method = RequestMethod.DELETE) + @Log(actionName = "批量删除商品库存") + public void deleteStockRecords(@RequestParam(value = "ids") String[] ids) { + stockRecordService.deleteStockRecord(ids); + } + + +} diff --git a/src/main/java/com/xmomen/module/stock/entity/Stock.java b/src/main/java/com/xmomen/module/stock/entity/Stock.java new file mode 100644 index 0000000..e6f8153 --- /dev/null +++ b/src/main/java/com/xmomen/module/stock/entity/Stock.java @@ -0,0 +1,168 @@ +package com.xmomen.module.stock.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "cd_stock") +public class Stock extends BaseMybatisModel { + /** + * 主键 + */ + private String id; + + /** + * 商品ID + */ + private Integer itemId; + + /** + * 库存数 + */ + private Integer stockNum; + + /** + * 预警数量 + */ + private Integer warningNum; + + /** + * 创建时间 + */ + private Date insertDate; + + /** + * 创建人 + */ + private Integer insertUserId; + + /** + * 更新时间 + */ + private Date updateDate; + + /** + * 更新人 + */ + private Integer updateUserId; + + @Column(name = "id") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "item_id") + public Integer getItemId() { + return itemId; + } + + public void setItemId(Integer itemId) { + this.itemId = itemId; + if(itemId == null){ + removeValidField("itemId"); + return; + } + addValidField("itemId"); + } + + @Column(name = "stock_num") + public Integer getStockNum() { + return stockNum; + } + + public void setStockNum(Integer stockNum) { + this.stockNum = stockNum; + if(stockNum == null){ + removeValidField("stockNum"); + return; + } + addValidField("stockNum"); + } + + @Column(name = "warning_num") + public Integer getWarningNum() { + return warningNum; + } + + public void setWarningNum(Integer warningNum) { + this.warningNum = warningNum; + if(warningNum == null){ + removeValidField("warningNum"); + return; + } + addValidField("warningNum"); + } + + @Column(name = "insert_date") + public Date getInsertDate() { + return insertDate; + } + + public void setInsertDate(Date insertDate) { + this.insertDate = insertDate; + if(insertDate == null){ + removeValidField("insertDate"); + return; + } + addValidField("insertDate"); + } + + @Column(name = "insert_user_id") + public Integer getInsertUserId() { + return insertUserId; + } + + public void setInsertUserId(Integer insertUserId) { + this.insertUserId = insertUserId; + if(insertUserId == null){ + removeValidField("insertUserId"); + return; + } + addValidField("insertUserId"); + } + + @Column(name = "update_date") + public Date getUpdateDate() { + return updateDate; + } + + public void setUpdateDate(Date updateDate) { + this.updateDate = updateDate; + if(updateDate == null){ + removeValidField("updateDate"); + return; + } + addValidField("updateDate"); + } + + @Column(name = "update_user_id") + public Integer getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(Integer updateUserId) { + this.updateUserId = updateUserId; + if(updateUserId == null){ + removeValidField("updateUserId"); + return; + } + addValidField("updateUserId"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/stock/entity/StockExample.java b/src/main/java/com/xmomen/module/stock/entity/StockExample.java new file mode 100644 index 0000000..02f9697 --- /dev/null +++ b/src/main/java/com/xmomen/module/stock/entity/StockExample.java @@ -0,0 +1,692 @@ +package com.xmomen.module.stock.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisExample; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class StockExample extends BaseMybatisExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public StockExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(String value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(String value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(String value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(String value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(String value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(String value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLike(String value) { + addCriterion("id like", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotLike(String value) { + addCriterion("id not like", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(String value1, String value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(String value1, String value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andItemIdIsNull() { + addCriterion("item_id is null"); + return (Criteria) this; + } + + public Criteria andItemIdIsNotNull() { + addCriterion("item_id is not null"); + return (Criteria) this; + } + + public Criteria andItemIdEqualTo(Integer value) { + addCriterion("item_id =", value, "itemId"); + return (Criteria) this; + } + + public Criteria andItemIdNotEqualTo(Integer value) { + addCriterion("item_id <>", value, "itemId"); + return (Criteria) this; + } + + public Criteria andItemIdGreaterThan(Integer value) { + addCriterion("item_id >", value, "itemId"); + return (Criteria) this; + } + + public Criteria andItemIdGreaterThanOrEqualTo(Integer value) { + addCriterion("item_id >=", value, "itemId"); + return (Criteria) this; + } + + public Criteria andItemIdLessThan(Integer value) { + addCriterion("item_id <", value, "itemId"); + return (Criteria) this; + } + + public Criteria andItemIdLessThanOrEqualTo(Integer value) { + addCriterion("item_id <=", value, "itemId"); + return (Criteria) this; + } + + public Criteria andItemIdIn(List values) { + addCriterion("item_id in", values, "itemId"); + return (Criteria) this; + } + + public Criteria andItemIdNotIn(List values) { + addCriterion("item_id not in", values, "itemId"); + return (Criteria) this; + } + + public Criteria andItemIdBetween(Integer value1, Integer value2) { + addCriterion("item_id between", value1, value2, "itemId"); + return (Criteria) this; + } + + public Criteria andItemIdNotBetween(Integer value1, Integer value2) { + addCriterion("item_id not between", value1, value2, "itemId"); + return (Criteria) this; + } + + public Criteria andStockNumIsNull() { + addCriterion("stock_num is null"); + return (Criteria) this; + } + + public Criteria andStockNumIsNotNull() { + addCriterion("stock_num is not null"); + return (Criteria) this; + } + + public Criteria andStockNumEqualTo(Integer value) { + addCriterion("stock_num =", value, "stockNum"); + return (Criteria) this; + } + + public Criteria andStockNumNotEqualTo(Integer value) { + addCriterion("stock_num <>", value, "stockNum"); + return (Criteria) this; + } + + public Criteria andStockNumGreaterThan(Integer value) { + addCriterion("stock_num >", value, "stockNum"); + return (Criteria) this; + } + + public Criteria andStockNumGreaterThanOrEqualTo(Integer value) { + addCriterion("stock_num >=", value, "stockNum"); + return (Criteria) this; + } + + public Criteria andStockNumLessThan(Integer value) { + addCriterion("stock_num <", value, "stockNum"); + return (Criteria) this; + } + + public Criteria andStockNumLessThanOrEqualTo(Integer value) { + addCriterion("stock_num <=", value, "stockNum"); + return (Criteria) this; + } + + public Criteria andStockNumIn(List values) { + addCriterion("stock_num in", values, "stockNum"); + return (Criteria) this; + } + + public Criteria andStockNumNotIn(List values) { + addCriterion("stock_num not in", values, "stockNum"); + return (Criteria) this; + } + + public Criteria andStockNumBetween(Integer value1, Integer value2) { + addCriterion("stock_num between", value1, value2, "stockNum"); + return (Criteria) this; + } + + public Criteria andStockNumNotBetween(Integer value1, Integer value2) { + addCriterion("stock_num not between", value1, value2, "stockNum"); + return (Criteria) this; + } + + public Criteria andWarningNumIsNull() { + addCriterion("warning_num is null"); + return (Criteria) this; + } + + public Criteria andWarningNumIsNotNull() { + addCriterion("warning_num is not null"); + return (Criteria) this; + } + + public Criteria andWarningNumEqualTo(Integer value) { + addCriterion("warning_num =", value, "warningNum"); + return (Criteria) this; + } + + public Criteria andWarningNumNotEqualTo(Integer value) { + addCriterion("warning_num <>", value, "warningNum"); + return (Criteria) this; + } + + public Criteria andWarningNumGreaterThan(Integer value) { + addCriterion("warning_num >", value, "warningNum"); + return (Criteria) this; + } + + public Criteria andWarningNumGreaterThanOrEqualTo(Integer value) { + addCriterion("warning_num >=", value, "warningNum"); + return (Criteria) this; + } + + public Criteria andWarningNumLessThan(Integer value) { + addCriterion("warning_num <", value, "warningNum"); + return (Criteria) this; + } + + public Criteria andWarningNumLessThanOrEqualTo(Integer value) { + addCriterion("warning_num <=", value, "warningNum"); + return (Criteria) this; + } + + public Criteria andWarningNumIn(List values) { + addCriterion("warning_num in", values, "warningNum"); + return (Criteria) this; + } + + public Criteria andWarningNumNotIn(List values) { + addCriterion("warning_num not in", values, "warningNum"); + return (Criteria) this; + } + + public Criteria andWarningNumBetween(Integer value1, Integer value2) { + addCriterion("warning_num between", value1, value2, "warningNum"); + return (Criteria) this; + } + + public Criteria andWarningNumNotBetween(Integer value1, Integer value2) { + addCriterion("warning_num not between", value1, value2, "warningNum"); + return (Criteria) this; + } + + public Criteria andInsertDateIsNull() { + addCriterion("insert_date is null"); + return (Criteria) this; + } + + public Criteria andInsertDateIsNotNull() { + addCriterion("insert_date is not null"); + return (Criteria) this; + } + + public Criteria andInsertDateEqualTo(Date value) { + addCriterion("insert_date =", value, "insertDate"); + return (Criteria) this; + } + + public Criteria andInsertDateNotEqualTo(Date value) { + addCriterion("insert_date <>", value, "insertDate"); + return (Criteria) this; + } + + public Criteria andInsertDateGreaterThan(Date value) { + addCriterion("insert_date >", value, "insertDate"); + return (Criteria) this; + } + + public Criteria andInsertDateGreaterThanOrEqualTo(Date value) { + addCriterion("insert_date >=", value, "insertDate"); + return (Criteria) this; + } + + public Criteria andInsertDateLessThan(Date value) { + addCriterion("insert_date <", value, "insertDate"); + return (Criteria) this; + } + + public Criteria andInsertDateLessThanOrEqualTo(Date value) { + addCriterion("insert_date <=", value, "insertDate"); + return (Criteria) this; + } + + public Criteria andInsertDateIn(List values) { + addCriterion("insert_date in", values, "insertDate"); + return (Criteria) this; + } + + public Criteria andInsertDateNotIn(List values) { + addCriterion("insert_date not in", values, "insertDate"); + return (Criteria) this; + } + + public Criteria andInsertDateBetween(Date value1, Date value2) { + addCriterion("insert_date between", value1, value2, "insertDate"); + return (Criteria) this; + } + + public Criteria andInsertDateNotBetween(Date value1, Date value2) { + addCriterion("insert_date not between", value1, value2, "insertDate"); + return (Criteria) this; + } + + public Criteria andInsertUserIdIsNull() { + addCriterion("insert_user_id is null"); + return (Criteria) this; + } + + public Criteria andInsertUserIdIsNotNull() { + addCriterion("insert_user_id is not null"); + return (Criteria) this; + } + + public Criteria andInsertUserIdEqualTo(Integer value) { + addCriterion("insert_user_id =", value, "insertUserId"); + return (Criteria) this; + } + + public Criteria andInsertUserIdNotEqualTo(Integer value) { + addCriterion("insert_user_id <>", value, "insertUserId"); + return (Criteria) this; + } + + public Criteria andInsertUserIdGreaterThan(Integer value) { + addCriterion("insert_user_id >", value, "insertUserId"); + return (Criteria) this; + } + + public Criteria andInsertUserIdGreaterThanOrEqualTo(Integer value) { + addCriterion("insert_user_id >=", value, "insertUserId"); + return (Criteria) this; + } + + public Criteria andInsertUserIdLessThan(Integer value) { + addCriterion("insert_user_id <", value, "insertUserId"); + return (Criteria) this; + } + + public Criteria andInsertUserIdLessThanOrEqualTo(Integer value) { + addCriterion("insert_user_id <=", value, "insertUserId"); + return (Criteria) this; + } + + public Criteria andInsertUserIdIn(List values) { + addCriterion("insert_user_id in", values, "insertUserId"); + return (Criteria) this; + } + + public Criteria andInsertUserIdNotIn(List values) { + addCriterion("insert_user_id not in", values, "insertUserId"); + return (Criteria) this; + } + + public Criteria andInsertUserIdBetween(Integer value1, Integer value2) { + addCriterion("insert_user_id between", value1, value2, "insertUserId"); + return (Criteria) this; + } + + public Criteria andInsertUserIdNotBetween(Integer value1, Integer value2) { + addCriterion("insert_user_id not between", value1, value2, "insertUserId"); + return (Criteria) this; + } + + public Criteria andUpdateDateIsNull() { + addCriterion("update_date is null"); + return (Criteria) this; + } + + public Criteria andUpdateDateIsNotNull() { + addCriterion("update_date is not null"); + return (Criteria) this; + } + + public Criteria andUpdateDateEqualTo(Date value) { + addCriterion("update_date =", value, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateNotEqualTo(Date value) { + addCriterion("update_date <>", value, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateGreaterThan(Date value) { + addCriterion("update_date >", value, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateGreaterThanOrEqualTo(Date value) { + addCriterion("update_date >=", value, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateLessThan(Date value) { + addCriterion("update_date <", value, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateLessThanOrEqualTo(Date value) { + addCriterion("update_date <=", value, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateIn(List values) { + addCriterion("update_date in", values, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateNotIn(List values) { + addCriterion("update_date not in", values, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateBetween(Date value1, Date value2) { + addCriterion("update_date between", value1, value2, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateNotBetween(Date value1, Date value2) { + addCriterion("update_date not between", value1, value2, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdIsNull() { + addCriterion("update_user_id is null"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdIsNotNull() { + addCriterion("update_user_id is not null"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdEqualTo(Integer value) { + addCriterion("update_user_id =", value, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdNotEqualTo(Integer value) { + addCriterion("update_user_id <>", value, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdGreaterThan(Integer value) { + addCriterion("update_user_id >", value, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdGreaterThanOrEqualTo(Integer value) { + addCriterion("update_user_id >=", value, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdLessThan(Integer value) { + addCriterion("update_user_id <", value, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdLessThanOrEqualTo(Integer value) { + addCriterion("update_user_id <=", value, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdIn(List values) { + addCriterion("update_user_id in", values, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdNotIn(List values) { + addCriterion("update_user_id not in", values, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdBetween(Integer value1, Integer value2) { + addCriterion("update_user_id between", value1, value2, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdNotBetween(Integer value1, Integer value2) { + addCriterion("update_user_id not between", value1, value2, "updateUserId"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/stock/entity/StockRecordExample.java b/src/main/java/com/xmomen/module/stock/entity/StockRecordExample.java new file mode 100644 index 0000000..2e678cc --- /dev/null +++ b/src/main/java/com/xmomen/module/stock/entity/StockRecordExample.java @@ -0,0 +1,832 @@ +package com.xmomen.module.stock.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisExample; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class StockRecordExample extends BaseMybatisExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public StockRecordExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(String value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(String value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(String value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(String value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(String value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(String value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLike(String value) { + addCriterion("id like", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotLike(String value) { + addCriterion("id not like", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(String value1, String value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(String value1, String value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andStockIdIsNull() { + addCriterion("stock_id is null"); + return (Criteria) this; + } + + public Criteria andStockIdIsNotNull() { + addCriterion("stock_id is not null"); + return (Criteria) this; + } + + public Criteria andStockIdEqualTo(String value) { + addCriterion("stock_id =", value, "stockId"); + return (Criteria) this; + } + + public Criteria andStockIdNotEqualTo(String value) { + addCriterion("stock_id <>", value, "stockId"); + return (Criteria) this; + } + + public Criteria andStockIdGreaterThan(String value) { + addCriterion("stock_id >", value, "stockId"); + return (Criteria) this; + } + + public Criteria andStockIdGreaterThanOrEqualTo(String value) { + addCriterion("stock_id >=", value, "stockId"); + return (Criteria) this; + } + + public Criteria andStockIdLessThan(String value) { + addCriterion("stock_id <", value, "stockId"); + return (Criteria) this; + } + + public Criteria andStockIdLessThanOrEqualTo(String value) { + addCriterion("stock_id <=", value, "stockId"); + return (Criteria) this; + } + + public Criteria andStockIdLike(String value) { + addCriterion("stock_id like", value, "stockId"); + return (Criteria) this; + } + + public Criteria andStockIdNotLike(String value) { + addCriterion("stock_id not like", value, "stockId"); + return (Criteria) this; + } + + public Criteria andStockIdIn(List values) { + addCriterion("stock_id in", values, "stockId"); + return (Criteria) this; + } + + public Criteria andStockIdNotIn(List values) { + addCriterion("stock_id not in", values, "stockId"); + return (Criteria) this; + } + + public Criteria andStockIdBetween(String value1, String value2) { + addCriterion("stock_id between", value1, value2, "stockId"); + return (Criteria) this; + } + + public Criteria andStockIdNotBetween(String value1, String value2) { + addCriterion("stock_id not between", value1, value2, "stockId"); + return (Criteria) this; + } + + public Criteria andChangeNumIsNull() { + addCriterion("change_num is null"); + return (Criteria) this; + } + + public Criteria andChangeNumIsNotNull() { + addCriterion("change_num is not null"); + return (Criteria) this; + } + + public Criteria andChangeNumEqualTo(Integer value) { + addCriterion("change_num =", value, "changeNum"); + return (Criteria) this; + } + + public Criteria andChangeNumNotEqualTo(Integer value) { + addCriterion("change_num <>", value, "changeNum"); + return (Criteria) this; + } + + public Criteria andChangeNumGreaterThan(Integer value) { + addCriterion("change_num >", value, "changeNum"); + return (Criteria) this; + } + + public Criteria andChangeNumGreaterThanOrEqualTo(Integer value) { + addCriterion("change_num >=", value, "changeNum"); + return (Criteria) this; + } + + public Criteria andChangeNumLessThan(Integer value) { + addCriterion("change_num <", value, "changeNum"); + return (Criteria) this; + } + + public Criteria andChangeNumLessThanOrEqualTo(Integer value) { + addCriterion("change_num <=", value, "changeNum"); + return (Criteria) this; + } + + public Criteria andChangeNumIn(List values) { + addCriterion("change_num in", values, "changeNum"); + return (Criteria) this; + } + + public Criteria andChangeNumNotIn(List values) { + addCriterion("change_num not in", values, "changeNum"); + return (Criteria) this; + } + + public Criteria andChangeNumBetween(Integer value1, Integer value2) { + addCriterion("change_num between", value1, value2, "changeNum"); + return (Criteria) this; + } + + public Criteria andChangeNumNotBetween(Integer value1, Integer value2) { + addCriterion("change_num not between", value1, value2, "changeNum"); + return (Criteria) this; + } + + public Criteria andChangTypeIsNull() { + addCriterion("chang_type is null"); + return (Criteria) this; + } + + public Criteria andChangTypeIsNotNull() { + addCriterion("chang_type is not null"); + return (Criteria) this; + } + + public Criteria andChangTypeEqualTo(Integer value) { + addCriterion("chang_type =", value, "changType"); + return (Criteria) this; + } + + public Criteria andChangTypeNotEqualTo(Integer value) { + addCriterion("chang_type <>", value, "changType"); + return (Criteria) this; + } + + public Criteria andChangTypeGreaterThan(Integer value) { + addCriterion("chang_type >", value, "changType"); + return (Criteria) this; + } + + public Criteria andChangTypeGreaterThanOrEqualTo(Integer value) { + addCriterion("chang_type >=", value, "changType"); + return (Criteria) this; + } + + public Criteria andChangTypeLessThan(Integer value) { + addCriterion("chang_type <", value, "changType"); + return (Criteria) this; + } + + public Criteria andChangTypeLessThanOrEqualTo(Integer value) { + addCriterion("chang_type <=", value, "changType"); + return (Criteria) this; + } + + public Criteria andChangTypeIn(List values) { + addCriterion("chang_type in", values, "changType"); + return (Criteria) this; + } + + public Criteria andChangTypeNotIn(List values) { + addCriterion("chang_type not in", values, "changType"); + return (Criteria) this; + } + + public Criteria andChangTypeBetween(Integer value1, Integer value2) { + addCriterion("chang_type between", value1, value2, "changType"); + return (Criteria) this; + } + + public Criteria andChangTypeNotBetween(Integer value1, Integer value2) { + addCriterion("chang_type not between", value1, value2, "changType"); + return (Criteria) this; + } + + public Criteria andRefOrderIdIsNull() { + addCriterion("ref_order_id is null"); + return (Criteria) this; + } + + public Criteria andRefOrderIdIsNotNull() { + addCriterion("ref_order_id is not null"); + return (Criteria) this; + } + + public Criteria andRefOrderIdEqualTo(Integer value) { + addCriterion("ref_order_id =", value, "refOrderId"); + return (Criteria) this; + } + + public Criteria andRefOrderIdNotEqualTo(Integer value) { + addCriterion("ref_order_id <>", value, "refOrderId"); + return (Criteria) this; + } + + public Criteria andRefOrderIdGreaterThan(Integer value) { + addCriterion("ref_order_id >", value, "refOrderId"); + return (Criteria) this; + } + + public Criteria andRefOrderIdGreaterThanOrEqualTo(Integer value) { + addCriterion("ref_order_id >=", value, "refOrderId"); + return (Criteria) this; + } + + public Criteria andRefOrderIdLessThan(Integer value) { + addCriterion("ref_order_id <", value, "refOrderId"); + return (Criteria) this; + } + + public Criteria andRefOrderIdLessThanOrEqualTo(Integer value) { + addCriterion("ref_order_id <=", value, "refOrderId"); + return (Criteria) this; + } + + public Criteria andRefOrderIdIn(List values) { + addCriterion("ref_order_id in", values, "refOrderId"); + return (Criteria) this; + } + + public Criteria andRefOrderIdNotIn(List values) { + addCriterion("ref_order_id not in", values, "refOrderId"); + return (Criteria) this; + } + + public Criteria andRefOrderIdBetween(Integer value1, Integer value2) { + addCriterion("ref_order_id between", value1, value2, "refOrderId"); + return (Criteria) this; + } + + public Criteria andRefOrderIdNotBetween(Integer value1, Integer value2) { + addCriterion("ref_order_id not between", value1, value2, "refOrderId"); + return (Criteria) this; + } + + public Criteria andRemarkIsNull() { + addCriterion("remark is null"); + return (Criteria) this; + } + + public Criteria andRemarkIsNotNull() { + addCriterion("remark is not null"); + return (Criteria) this; + } + + public Criteria andRemarkEqualTo(String value) { + addCriterion("remark =", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotEqualTo(String value) { + addCriterion("remark <>", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThan(String value) { + addCriterion("remark >", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThanOrEqualTo(String value) { + addCriterion("remark >=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThan(String value) { + addCriterion("remark <", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThanOrEqualTo(String value) { + addCriterion("remark <=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLike(String value) { + addCriterion("remark like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotLike(String value) { + addCriterion("remark not like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkIn(List values) { + addCriterion("remark in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotIn(List values) { + addCriterion("remark not in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkBetween(String value1, String value2) { + addCriterion("remark between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotBetween(String value1, String value2) { + addCriterion("remark not between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andInsertUserIdIsNull() { + addCriterion("insert_user_id is null"); + return (Criteria) this; + } + + public Criteria andInsertUserIdIsNotNull() { + addCriterion("insert_user_id is not null"); + return (Criteria) this; + } + + public Criteria andInsertUserIdEqualTo(Integer value) { + addCriterion("insert_user_id =", value, "insertUserId"); + return (Criteria) this; + } + + public Criteria andInsertUserIdNotEqualTo(Integer value) { + addCriterion("insert_user_id <>", value, "insertUserId"); + return (Criteria) this; + } + + public Criteria andInsertUserIdGreaterThan(Integer value) { + addCriterion("insert_user_id >", value, "insertUserId"); + return (Criteria) this; + } + + public Criteria andInsertUserIdGreaterThanOrEqualTo(Integer value) { + addCriterion("insert_user_id >=", value, "insertUserId"); + return (Criteria) this; + } + + public Criteria andInsertUserIdLessThan(Integer value) { + addCriterion("insert_user_id <", value, "insertUserId"); + return (Criteria) this; + } + + public Criteria andInsertUserIdLessThanOrEqualTo(Integer value) { + addCriterion("insert_user_id <=", value, "insertUserId"); + return (Criteria) this; + } + + public Criteria andInsertUserIdIn(List values) { + addCriterion("insert_user_id in", values, "insertUserId"); + return (Criteria) this; + } + + public Criteria andInsertUserIdNotIn(List values) { + addCriterion("insert_user_id not in", values, "insertUserId"); + return (Criteria) this; + } + + public Criteria andInsertUserIdBetween(Integer value1, Integer value2) { + addCriterion("insert_user_id between", value1, value2, "insertUserId"); + return (Criteria) this; + } + + public Criteria andInsertUserIdNotBetween(Integer value1, Integer value2) { + addCriterion("insert_user_id not between", value1, value2, "insertUserId"); + return (Criteria) this; + } + + public Criteria andInsertDateIsNull() { + addCriterion("insert_date is null"); + return (Criteria) this; + } + + public Criteria andInsertDateIsNotNull() { + addCriterion("insert_date is not null"); + return (Criteria) this; + } + + public Criteria andInsertDateEqualTo(Date value) { + addCriterion("insert_date =", value, "insertDate"); + return (Criteria) this; + } + + public Criteria andInsertDateNotEqualTo(Date value) { + addCriterion("insert_date <>", value, "insertDate"); + return (Criteria) this; + } + + public Criteria andInsertDateGreaterThan(Date value) { + addCriterion("insert_date >", value, "insertDate"); + return (Criteria) this; + } + + public Criteria andInsertDateGreaterThanOrEqualTo(Date value) { + addCriterion("insert_date >=", value, "insertDate"); + return (Criteria) this; + } + + public Criteria andInsertDateLessThan(Date value) { + addCriterion("insert_date <", value, "insertDate"); + return (Criteria) this; + } + + public Criteria andInsertDateLessThanOrEqualTo(Date value) { + addCriterion("insert_date <=", value, "insertDate"); + return (Criteria) this; + } + + public Criteria andInsertDateIn(List values) { + addCriterion("insert_date in", values, "insertDate"); + return (Criteria) this; + } + + public Criteria andInsertDateNotIn(List values) { + addCriterion("insert_date not in", values, "insertDate"); + return (Criteria) this; + } + + public Criteria andInsertDateBetween(Date value1, Date value2) { + addCriterion("insert_date between", value1, value2, "insertDate"); + return (Criteria) this; + } + + public Criteria andInsertDateNotBetween(Date value1, Date value2) { + addCriterion("insert_date not between", value1, value2, "insertDate"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdIsNull() { + addCriterion("update_user_id is null"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdIsNotNull() { + addCriterion("update_user_id is not null"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdEqualTo(Integer value) { + addCriterion("update_user_id =", value, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdNotEqualTo(Integer value) { + addCriterion("update_user_id <>", value, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdGreaterThan(Integer value) { + addCriterion("update_user_id >", value, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdGreaterThanOrEqualTo(Integer value) { + addCriterion("update_user_id >=", value, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdLessThan(Integer value) { + addCriterion("update_user_id <", value, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdLessThanOrEqualTo(Integer value) { + addCriterion("update_user_id <=", value, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdIn(List values) { + addCriterion("update_user_id in", values, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdNotIn(List values) { + addCriterion("update_user_id not in", values, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdBetween(Integer value1, Integer value2) { + addCriterion("update_user_id between", value1, value2, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateUserIdNotBetween(Integer value1, Integer value2) { + addCriterion("update_user_id not between", value1, value2, "updateUserId"); + return (Criteria) this; + } + + public Criteria andUpdateDateIsNull() { + addCriterion("update_date is null"); + return (Criteria) this; + } + + public Criteria andUpdateDateIsNotNull() { + addCriterion("update_date is not null"); + return (Criteria) this; + } + + public Criteria andUpdateDateEqualTo(Date value) { + addCriterion("update_date =", value, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateNotEqualTo(Date value) { + addCriterion("update_date <>", value, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateGreaterThan(Date value) { + addCriterion("update_date >", value, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateGreaterThanOrEqualTo(Date value) { + addCriterion("update_date >=", value, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateLessThan(Date value) { + addCriterion("update_date <", value, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateLessThanOrEqualTo(Date value) { + addCriterion("update_date <=", value, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateIn(List values) { + addCriterion("update_date in", values, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateNotIn(List values) { + addCriterion("update_date not in", values, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateBetween(Date value1, Date value2) { + addCriterion("update_date between", value1, value2, "updateDate"); + return (Criteria) this; + } + + public Criteria andUpdateDateNotBetween(Date value1, Date value2) { + addCriterion("update_date not between", value1, value2, "updateDate"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/stock/entity/mapper/StockRecordMapper.java b/src/main/java/com/xmomen/module/stock/entity/mapper/StockRecordMapper.java new file mode 100644 index 0000000..d621b63 --- /dev/null +++ b/src/main/java/com/xmomen/module/stock/entity/mapper/StockRecordMapper.java @@ -0,0 +1,16 @@ +package com.xmomen.module.stock.entity.mapper; + +import com.xmomen.framework.mybatis.mapper.MybatisMapper; +import com.xmomen.module.stock.entity.StockRecord; +import com.xmomen.module.stock.entity.StockRecordExample; +import org.apache.ibatis.annotations.Param; + +public interface StockRecordMapper extends MybatisMapper { + int countByExample(StockRecordExample example); + + int deleteByExample(StockRecordExample example); + + int insertSelective(StockRecord record); + + int updateByExampleSelective(@Param("record") StockRecord record, @Param("example") StockRecordExample example); +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/stock/entity/mapper/StockRecordMapper.xml b/src/main/java/com/xmomen/module/stock/entity/mapper/StockRecordMapper.xml new file mode 100644 index 0000000..84ec1cf --- /dev/null +++ b/src/main/java/com/xmomen/module/stock/entity/mapper/StockRecordMapper.xml @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, stock_id, change_num, chang_type, ref_order_id, remark, insert_user_id, insert_date, + update_user_id, update_date + + + + delete from cd_stock_record + + + + + + + SELECT replace(UUID(),'-','') + + insert into cd_stock_record + + id, + + stock_id, + + + change_num, + + + chang_type, + + + ref_order_id, + + + remark, + + + insert_user_id, + + + insert_date, + + + update_user_id, + + + update_date, + + + + #{id,jdbcType=VARCHAR}, + + #{stockId,jdbcType=VARCHAR}, + + + #{changeNum,jdbcType=INTEGER}, + + + #{changType,jdbcType=INTEGER}, + + + #{refOrderId,jdbcType=INTEGER}, + + + #{remark,jdbcType=VARCHAR}, + + + #{insertUserId,jdbcType=INTEGER}, + + + #{insertDate,jdbcType=TIMESTAMP}, + + + #{updateUserId,jdbcType=INTEGER}, + + + #{updateDate,jdbcType=TIMESTAMP}, + + + + + + update cd_stock_record + + + id = #{record.id,jdbcType=VARCHAR}, + + + stock_id = #{record.stockId,jdbcType=VARCHAR}, + + + change_num = #{record.changeNum,jdbcType=INTEGER}, + + + chang_type = #{record.changType,jdbcType=INTEGER}, + + + ref_order_id = #{record.refOrderId,jdbcType=INTEGER}, + + + remark = #{record.remark,jdbcType=VARCHAR}, + + + insert_user_id = #{record.insertUserId,jdbcType=INTEGER}, + + + insert_date = #{record.insertDate,jdbcType=TIMESTAMP}, + + + update_user_id = #{record.updateUserId,jdbcType=INTEGER}, + + + update_date = #{record.updateDate,jdbcType=TIMESTAMP}, + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/stock/model/StockChange.java b/src/main/java/com/xmomen/module/stock/model/StockChange.java new file mode 100644 index 0000000..2ce2a11 --- /dev/null +++ b/src/main/java/com/xmomen/module/stock/model/StockChange.java @@ -0,0 +1,19 @@ +package com.xmomen.module.stock.model; + +import com.xmomen.framework.model.BaseModel; +import lombok.Data; + +import java.io.Serializable; + +/** + * Created by tanxinzheng on 17/5/17. + */ +@Data +public class StockChange extends BaseModel implements Serializable{ + + private String stockId; + private Integer type;//1-入库,2-破损,3-核销 + private Integer number; + private Integer actionBy; + +} diff --git a/src/main/java/com/xmomen/module/stock/model/StockQuery.java b/src/main/java/com/xmomen/module/stock/model/StockQuery.java new file mode 100644 index 0000000..42f803b --- /dev/null +++ b/src/main/java/com/xmomen/module/stock/model/StockQuery.java @@ -0,0 +1,34 @@ +package com.xmomen.module.stock.model; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author tanxinzheng + * @version 1.0.0 + * @date 2017-5-13 12:49:20 + */ +public +@Data +class StockQuery implements Serializable { + /** + * 主键 + */ + private String id; + /** + * 包含主键集 + */ + private String[] ids; + /** + * 排除主键集 + */ + private String[] excludeIds; + + private String keyword; + + private String itemCode; + + private String itemName; + +} diff --git a/src/main/java/com/xmomen/module/stock/model/StockRecordCreate.java b/src/main/java/com/xmomen/module/stock/model/StockRecordCreate.java new file mode 100644 index 0000000..a6289cf --- /dev/null +++ b/src/main/java/com/xmomen/module/stock/model/StockRecordCreate.java @@ -0,0 +1,45 @@ +package com.xmomen.module.stock.model; + +import lombok.Data; +import com.xmomen.module.stock.entity.StockRecord; +import org.springframework.beans.BeanUtils; + + import java.lang.String; + import java.lang.Integer; + import java.util.Date; +import java.io.Serializable; + +/** + * @author tanxinzheng + * @date 2017-5-13 12:48:23 + * @version 1.0.0 + */ +public @Data class StockRecordCreate implements Serializable { + + /** 主键 */ + private String id; + /** 库存id */ + private String stockId; + /** 变更数量 */ + private Integer changeNum; + /** 1-增加 2-减少 */ + private Integer changType; + /** 如果是订单变更,关联订单ID */ + private Integer refOrderId; + /** 备注(记录变更) */ + private String remark; + /** 创建人 */ + private Integer insertUserId; + /** 创建时间 */ + private Date insertDate; + /** 更新人 */ + private Integer updateUserId; + /** 更新时间 */ + private Date updateDate; + + public StockRecord getEntity(){ + StockRecord stockRecord = new StockRecord(); + BeanUtils.copyProperties(this, stockRecord); + return stockRecord; + } +} diff --git a/src/main/java/com/xmomen/module/stock/model/StockRecordModel.java b/src/main/java/com/xmomen/module/stock/model/StockRecordModel.java new file mode 100644 index 0000000..1903065 --- /dev/null +++ b/src/main/java/com/xmomen/module/stock/model/StockRecordModel.java @@ -0,0 +1,110 @@ +package com.xmomen.module.stock.model; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.xmomen.module.stock.entity.StockRecord; +import lombok.Data; +import org.hibernate.validator.constraints.*; + +import javax.validation.constraints.*; + +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecgframework.poi.excel.annotation.ExcelTarget; +import org.springframework.beans.BeanUtils; + +import java.lang.String; +import java.lang.Integer; +import java.util.Date; +import java.io.Serializable; + +/** + * @author tanxinzheng + * @version 1.0.0 + * @date 2017-5-13 12:48:23 + */ +@ExcelTarget(value = "StockRecordModel") +public +@Data +class StockRecordModel implements Serializable { + + /** + * 主键 + */ + @NotBlank(message = "主键为必填项") + @Length(max = 32, message = "主键字符长度限制[0,32]") + private String id; + /** + * 库存id + */ + @Excel(name = "库存id") + @NotBlank(message = "库存id为必填项") + @Length(max = 32, message = "库存id字符长度限制[0,32]") + private String stockId; + /** + * 变更数量 + */ + @Excel(name = "变更数量") + @NotBlank(message = "变更数量为必填项") + @Range(max = 999999999, min = -999999999, message = "变更数量数值范围[999999999,-999999999]") + private Integer changeNum; + /** + * 1-增加 2-减少 + */ + @Excel(name = "1-增加 2-减少") + @NotBlank(message = "1-增加 2-减少为必填项") + @Range(max = 999999999, min = -999999999, message = "1-增加 2-减少数值范围[999999999,-999999999]") + private Integer changType; + /** + * 如果是订单变更,关联订单ID + */ + @Excel(name = "如果是订单变更,关联订单ID") + @Range(max = 999999999, min = -999999999, message = "如果是订单变更,关联订单ID数值范围[999999999,-999999999]") + private Integer refOrderId; + /** + * 备注(记录变更) + */ + @Excel(name = "备注(记录变更)") + @Length(max = 128, message = "备注(记录变更)字符长度限制[0,128]") + private String remark; + /** + * 创建人 + */ + @Excel(name = "创建人") + @NotBlank(message = "创建人为必填项") + @Range(max = 999999999, min = -999999999, message = "创建人数值范围[999999999,-999999999]") + private Integer insertUserId; + /** + * 创建时间 + */ + @Excel(name = "创建时间") + @NotBlank(message = "创建时间为必填项") + private Date insertDate; + /** + * 更新人 + */ + @Excel(name = "更新人") + @Range(max = 999999999, min = -999999999, message = "更新人数值范围[999999999,-999999999]") + private Integer updateUserId; + /** + * 更新时间 + */ + @Excel(name = "更新时间") + private Date updateDate; + + private String orderNo; + private String itemName; + private String itemCode; + + /** + * Get StockRecord Entity Object + * + * @return + */ + @JsonIgnore + public StockRecord getEntity() { + StockRecord stockRecord = new StockRecord(); + BeanUtils.copyProperties(this, stockRecord); + return stockRecord; + } + + +} diff --git a/src/main/java/com/xmomen/module/stock/service/StockRecordService.java b/src/main/java/com/xmomen/module/stock/service/StockRecordService.java new file mode 100644 index 0000000..3489b81 --- /dev/null +++ b/src/main/java/com/xmomen/module/stock/service/StockRecordService.java @@ -0,0 +1,115 @@ +package com.xmomen.module.stock.service; + +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.module.stock.model.StockRecordQuery; +import com.xmomen.module.stock.model.StockRecordModel; +import com.xmomen.module.stock.entity.StockRecord; +import org.apache.ibatis.exceptions.TooManyResultsException; + +import java.io.Serializable; +import java.util.List; + +/** + * @author tanxinzheng + * @date 2017-5-13 12:48:23 + * @version 1.0.0 + */ +public interface StockRecordService { + + /** + * 新增商品库存 + * @param stockRecordModel 新增商品库存对象参数 + * @return StockRecordModel 商品库存领域对象 + */ + public StockRecordModel createStockRecord(StockRecordModel stockRecordModel); + + /** + * 新增商品库存实体对象 + * @param stockRecord 新增商品库存实体对象参数 + * @return StockRecord 商品库存实体对象 + */ + public StockRecord createStockRecord(StockRecord stockRecord); + + /** + * 批量新增商品库存 + * @param StockRecordModel 新增商品库存对象集合参数 + * @return List 商品库存领域对象集合 + */ + List createStockRecords(List stockRecordModels); + + /** + * 更新商品库存 + * @param stockRecordModel 更新商品库存对象参数 + */ + public void updateStockRecord(StockRecordModel stockRecordModel); + + /** + * 更新商品库存实体对象 + * @param stockRecord 新增商品库存实体对象参数 + * @return StockRecord 商品库存实体对象 + */ + public void updateStockRecord(StockRecord stockRecord); + + /** + * 批量删除商品库存 + * @param ids 主键数组 + */ + public void deleteStockRecord(String[] ids); + + /** + * 删除商品库存 + * @param id 主键 + */ + public void deleteStockRecord(String id); + + /** + * 查询商品库存领域分页对象(带参数条件) + * @param stockRecordQuery 查询参数 + * @param limit 每页最大数 + * @param offset 页码 + * @return Page 商品库存参数对象 + */ + public Page getStockRecordModelPage(int limit, int offset, StockRecordQuery stockRecordQuery); + + /** + * 查询商品库存领域分页对象(无参数条件) + * @param limit 每页最大数 + * @param offset 页码 + * @return Page 商品库存领域对象 + */ + public Page getStockRecordModelPage(int limit, int offset); + + /** + * 查询商品库存领域集合对象(带参数条件) + * @param stockRecordQuery 查询参数对象 + * @return List 商品库存领域集合对象 + */ + public List getStockRecordModelList(StockRecordQuery stockRecordQuery); + + /** + * 查询商品库存领域集合对象(无参数条件) + * @return List 商品库存领域集合对象 + */ + public List getStockRecordModelList(); + + /** + * 查询商品库存实体对象 + * @param id 主键 + * @return StockRecord 商品库存实体对象 + */ + public StockRecord getOneStockRecord(String id); + + /** + * 根据主键查询单个对象 + * @param id 主键 + * @return StockRecordModel 商品库存领域对象 + */ + public StockRecordModel getOneStockRecordModel(String id); + + /** + * 根据查询参数查询单个对象(此方法只用于提供精确查询单个对象,若结果数超过1,则会报错) + * @param stockRecordQuery 商品库存查询参数对象 + * @return StockRecordModel 商品库存领域对象 + */ + public StockRecordModel getOneStockRecordModel(StockRecordQuery stockRecordQuery) throws TooManyResultsException; +} diff --git a/src/main/java/com/xmomen/module/stock/service/StockService.java b/src/main/java/com/xmomen/module/stock/service/StockService.java new file mode 100644 index 0000000..f49aa74 --- /dev/null +++ b/src/main/java/com/xmomen/module/stock/service/StockService.java @@ -0,0 +1,171 @@ +package com.xmomen.module.stock.service; + +import com.xmomen.framework.exception.BusinessException; +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.module.stock.model.StockChange; +import com.xmomen.module.stock.model.StockQuery; +import com.xmomen.module.stock.model.StockModel; +import com.xmomen.module.stock.entity.Stock; +import com.xmomen.module.wx.model.AjaxResult; +import org.apache.ibatis.exceptions.TooManyResultsException; + +import java.io.Serializable; +import java.util.List; + +/** + * @author tanxinzheng + * @version 1.0.0 + * @date 2017-5-13 12:49:20 + */ +public interface StockService { + + /** + * 新增商品库存记录 + * + * @param stockModel 新增商品库存记录对象参数 + * @return StockModel 商品库存记录领域对象 + */ + public StockModel createStock(StockModel stockModel); + + /** + * 新增商品库存记录实体对象 + * + * @param stock 新增商品库存记录实体对象参数 + * @return Stock 商品库存记录实体对象 + */ + public Stock createStock(Stock stock); + + /** + * 批量新增商品库存记录 + * + * @param stockModels 新增商品库存记录对象集合参数 + * @return List 商品库存记录领域对象集合 + */ + List createStocks(List stockModels); + + /** + * 更新商品库存记录 + * + * @param stockModel 更新商品库存记录对象参数 + */ + public void updateStock(StockModel stockModel); + + /** + * 更新商品库存记录实体对象 + * + * @param stock 新增商品库存记录实体对象参数 + * @return Stock 商品库存记录实体对象 + */ + public void updateStock(Stock stock); + + /** + * 库存变更 + * + * @param stockChange + */ + public void changeStock(StockChange stockChange); + + /** + * 批量删除商品库存记录 + * + * @param ids 主键数组 + */ + public void deleteStock(String[] ids); + + /** + * 删除商品库存记录 + * + * @param id 主键 + */ + public void deleteStock(String id); + + /** + * 查询商品库存记录领域分页对象(带参数条件) + * + * @param stockQuery 查询参数 + * @param limit 每页最大数 + * @param offset 页码 + * @return Page 商品库存记录参数对象 + */ + public Page getStockModelPage(int limit, int offset, StockQuery stockQuery); + + /** + * 查询商品库存记录领域分页对象(无参数条件) + * + * @param limit 每页最大数 + * @param offset 页码 + * @return Page 商品库存记录领域对象 + */ + public Page getStockModelPage(int limit, int offset); + + /** + * 查询商品库存记录领域集合对象(带参数条件) + * + * @param stockQuery 查询参数对象 + * @return List 商品库存记录领域集合对象 + */ + public List getStockModelList(StockQuery stockQuery); + + /** + * 查询商品库存记录领域集合对象(无参数条件) + * + * @return List 商品库存记录领域集合对象 + */ + public List getStockModelList(); + + /** + * 查询商品库存记录实体对象 + * + * @param id 主键 + * @return Stock 商品库存记录实体对象 + */ + public Stock getOneStock(String id); + + /** + * 根据主键查询单个对象 + * + * @param id 主键 + * @return StockModel 商品库存记录领域对象 + */ + public StockModel getOneStockModel(String id); + + /** + * 根据查询参数查询单个对象(此方法只用于提供精确查询单个对象,若结果数超过1,则会报错) + * + * @param stockQuery 商品库存记录查询参数对象 + * @return StockModel 商品库存记录领域对象 + */ + public StockModel getOneStockModel(StockQuery stockQuery) throws TooManyResultsException; + + /** + * 库存校验 + * + * @param itemId 商品ID + * @param needNum 数量 + * @return true-库存充足 false-库存不足 + */ + public boolean checkStock(Integer itemId, Integer needNum); + + /** + * 库存变化表(订单) + * + * @param itemId 商品id + * @param changeStockNum 变化数量 负数表示扣除 + * @param orderId 订单id + * @param remark 备注 + * @param changeType 1-入库(预包装,手工入库),2-出库,3-取消退款入库 4-破损 5-核销 + * @return + */ + public AjaxResult changeStockNum(Integer itemId, Integer changeStockNum, Integer orderId, String remark, Integer changeType) throws BusinessException; + + /** + * 库存变化表 + * + * @param itemId 商品id + * @param changeStockNum 变化数量 负数表示扣除 + * @param remark 备注 + * @param changeType 1-入库(预包装,手工入库),2-出库,3-取消退款入库 4-破损 5-核销 + * @return + */ + public AjaxResult changeStockNum(Integer itemId, Integer changeStockNum, String remark, Integer changeType) throws BusinessException; +} diff --git a/src/main/java/com/xmomen/module/stock/service/impl/StockRecordServiceImpl.java b/src/main/java/com/xmomen/module/stock/service/impl/StockRecordServiceImpl.java new file mode 100644 index 0000000..e0a55ad --- /dev/null +++ b/src/main/java/com/xmomen/module/stock/service/impl/StockRecordServiceImpl.java @@ -0,0 +1,211 @@ +package com.xmomen.module.stock.service.impl; + +import com.xmomen.module.stock.entity.StockRecord; +import com.xmomen.module.stock.entity.StockRecordExample; +import com.xmomen.module.stock.mapper.StockRecordMapperExt; +import com.xmomen.module.stock.model.StockRecordCreate; +import com.xmomen.module.stock.model.StockRecordQuery; +import com.xmomen.module.stock.model.StockRecordUpdate; +import com.xmomen.module.stock.model.StockRecordModel; +import com.xmomen.module.stock.service.StockRecordService; +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.framework.mybatis.page.Page; +import org.apache.ibatis.exceptions.TooManyResultsException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * @author tanxinzheng + * @date 2017-5-13 12:48:23 + * @version 1.0.0 + */ +@Service +public class StockRecordServiceImpl implements StockRecordService { + + @Autowired + MybatisDao mybatisDao; + + /** + * 新增商品库存 + * + * @param stockRecordModel 新增商品库存对象参数 + * @return StockRecordModel 商品库存领域对象 + */ + @Override + @Transactional + public StockRecordModel createStockRecord(StockRecordModel stockRecordModel) { + StockRecord stockRecord = createStockRecord(stockRecordModel.getEntity()); + if(stockRecord != null){ + return getOneStockRecordModel(stockRecord.getId()); + } + return null; + } + + /** + * 新增商品库存实体对象 + * + * @param stockRecord 新增商品库存实体对象参数 + * @return StockRecord 商品库存实体对象 + */ + @Override + @Transactional + public StockRecord createStockRecord(StockRecord stockRecord) { + return mybatisDao.insertByModel(stockRecord); + } + + /** + * 批量新增商品库存 + * + * @param stockRecordModels 新增商品库存对象集合参数 + * @return List 商品库存领域对象集合 + */ + @Override + @Transactional + public List createStockRecords(List stockRecordModels) { + List stockRecordModelList = null; + for (StockRecordModel stockRecordModel : stockRecordModels) { + stockRecordModel = createStockRecord(stockRecordModel); + if(stockRecordModel != null){ + if(stockRecordModelList == null){ + stockRecordModelList = new ArrayList<>(); + } + stockRecordModelList.add(stockRecordModel); + } + } + return stockRecordModelList; + } + + /** + * 更新商品库存 + * + * @param stockRecordModel 更新商品库存对象参数 + */ + @Override + @Transactional + public void updateStockRecord(StockRecordModel stockRecordModel) { + mybatisDao.update(stockRecordModel.getEntity()); + } + + /** + * 更新商品库存实体对象 + * + * @param stockRecord 新增商品库存实体对象参数 + * @return StockRecord 商品库存实体对象 + */ + @Override + @Transactional + public void updateStockRecord(StockRecord stockRecord) { + mybatisDao.update(stockRecord); + } + + /** + * 删除商品库存 + * + * @param ids 主键数组 + */ + @Override + @Transactional + public void deleteStockRecord(String[] ids) { + StockRecordExample stockRecordExample = new StockRecordExample(); + stockRecordExample.createCriteria().andIdIn(Arrays.asList((String[]) ids)); + mybatisDao.deleteByExample(stockRecordExample); + } + + /** + * 删除商品库存 + * + * @param id 主键 + */ + @Override + @Transactional + public void deleteStockRecord(String id) { + mybatisDao.deleteByPrimaryKey(StockRecord.class, id); + } + + /** + * 查询商品库存领域分页对象(带参数条件) + * + * @param limit 每页最大数 + * @param offset 页码 + * @param stockRecordQuery 查询参数 + * @return Page 商品库存参数对象 + */ + @Override + public Page getStockRecordModelPage(int limit, int offset, StockRecordQuery stockRecordQuery) { + return (Page) mybatisDao.selectPage(StockRecordMapperExt.StockRecordMapperNameSpace + "getStockRecordModel", stockRecordQuery, limit, offset); + } + + /** + * 查询商品库存领域分页对象(无参数条件) + * + * @param limit 每页最大数 + * @param offset 页码 + * @return Page 商品库存领域对象 + */ + @Override + public Page getStockRecordModelPage(int limit, int offset) { + return (Page) mybatisDao.selectPage(StockRecordMapperExt.StockRecordMapperNameSpace + "getStockRecordModel", null, limit, offset); + } + + /** + * 查询商品库存领域集合对象(带参数条件) + * + * @param stockRecordQuery 查询参数对象 + * @return List 商品库存领域集合对象 + */ + @Override + public List getStockRecordModelList(StockRecordQuery stockRecordQuery) { + return mybatisDao.getSqlSessionTemplate().selectList(StockRecordMapperExt.StockRecordMapperNameSpace + "getStockRecordModel", stockRecordQuery); + } + + /** + * 查询商品库存领域集合对象(无参数条件) + * + * @return List 商品库存领域集合对象 + */ + @Override + public List getStockRecordModelList() { + return mybatisDao.getSqlSessionTemplate().selectList(StockRecordMapperExt.StockRecordMapperNameSpace + "getStockRecordModel"); + } + + /** + * 查询商品库存实体对象 + * + * @param id 主键 + * @return StockRecord 商品库存实体对象 + */ + @Override + public StockRecord getOneStockRecord(String id) { + return mybatisDao.selectByPrimaryKey(StockRecord.class, id); + } + + /** + * 根据主键查询单个对象 + * + * @param id 主键 + * @return StockRecordModel 商品库存领域对象 + */ + @Override + public StockRecordModel getOneStockRecordModel(String id) { + StockRecordQuery stockRecordQuery = new StockRecordQuery(); + stockRecordQuery.setId(id); + return mybatisDao.getSqlSessionTemplate().selectOne(StockRecordMapperExt.StockRecordMapperNameSpace + "getStockRecordModel", stockRecordQuery); + } + + /** + * 根据查询参数查询单个对象(此方法只用于提供精确查询单个对象,若结果数超过1,则会报错) + * + * @param stockRecordQuery 商品库存查询参数对象 + * @return StockRecordModel 商品库存领域对象 + */ + @Override + public StockRecordModel getOneStockRecordModel(StockRecordQuery stockRecordQuery) throws TooManyResultsException { + return mybatisDao.getSqlSessionTemplate().selectOne(StockRecordMapperExt.StockRecordMapperNameSpace + "getStockRecordModel", stockRecordQuery); + } +} diff --git a/src/main/java/com/xmomen/module/stock/service/impl/StockServiceImpl.java b/src/main/java/com/xmomen/module/stock/service/impl/StockServiceImpl.java new file mode 100644 index 0000000..a7d8c3f --- /dev/null +++ b/src/main/java/com/xmomen/module/stock/service/impl/StockServiceImpl.java @@ -0,0 +1,413 @@ +package com.xmomen.module.stock.service.impl; + +import com.xmomen.framework.exception.BusinessException; +import com.xmomen.module.base.constant.AppConstants; +import com.xmomen.module.beforehandpackagerecord.entity.BeforehandPackageRecord; +import com.xmomen.module.stock.entity.Stock; +import com.xmomen.module.stock.entity.StockExample; +import com.xmomen.module.stock.entity.StockRecord; +import com.xmomen.module.stock.mapper.StockMapperExt; +import com.xmomen.module.stock.model.*; +import com.xmomen.module.stock.service.StockRecordService; +import com.xmomen.module.stock.service.StockService; +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.module.wx.model.AjaxResult; +import com.xmomen.module.wx.util.DateUtils; +import org.apache.ibatis.exceptions.TooManyResultsException; +import org.apache.shiro.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +/** + * @author tanxinzheng + * @version 1.0.0 + * @date 2017-5-13 12:49:20 + */ +@Service +public class StockServiceImpl implements StockService { + + @Autowired + MybatisDao mybatisDao; + + @Autowired + StockRecordService stockRecordService; + + /** + * 新增商品库存记录 + * + * @param stockModel 新增商品库存记录对象参数 + * @return StockModel 商品库存记录领域对象 + */ + @Override + @Transactional + public StockModel createStock(StockModel stockModel) { + StockExample stockExample = new StockExample(); + stockExample.createCriteria().andItemIdEqualTo(stockModel.getItemId()); + int num = mybatisDao.countByExample(stockExample); + if (num > 0) { + throw new IllegalArgumentException("此商品已有库存信息"); + } + stockModel.setInsertDate(new Date()); + stockModel.setUpdateDate(new Date()); + Stock stock = createStock(stockModel.getEntity()); + + //添加记录 + StockRecord stockRecord = new StockRecord(); + stockRecord.setInsertDate(new Date()); + stockRecord.setInsertUserId((Integer) SecurityUtils.getSubject().getSession().getAttribute(AppConstants.SESSION_USER_ID_KEY)); + stockRecord.setUpdateDate(new Date()); + stockRecord.setUpdateUserId((Integer) SecurityUtils.getSubject().getSession().getAttribute(AppConstants.SESSION_USER_ID_KEY)); + stockRecord.setStockId(stock.getId()); + stockRecord.setRemark("库存初始化"); + stockRecord.setChangType(1); + stockRecord.setChangeNum(stock.getStockNum()); + this.mybatisDao.save(stockRecord); + + if (stock != null) { + return getOneStockModel(stock.getId()); + } + return null; + } + + /** + * 新增商品库存记录实体对象 + * + * @param stock 新增商品库存记录实体对象参数 + * @return Stock 商品库存记录实体对象 + */ + @Override + @Transactional + public Stock createStock(Stock stock) { + return mybatisDao.insertByModel(stock); + } + + /** + * 批量新增商品库存记录 + * + * @param stockModels 新增商品库存记录对象集合参数 + * @return List 商品库存记录领域对象集合 + */ + @Override + @Transactional + public List createStocks(List stockModels) { + List stockModelList = null; + for (StockModel stockModel : stockModels) { + stockModel = createStock(stockModel); + if (stockModel != null) { + if (stockModelList == null) { + stockModelList = new ArrayList<>(); + } + stockModelList.add(stockModel); + } + } + return stockModelList; + } + + /** + * 更新商品库存记录 + * + * @param stockModel 更新商品库存记录对象参数 + */ + @Override + @Transactional + public void updateStock(StockModel stockModel) { + stockModel.setUpdateDate(new Date()); + mybatisDao.update(stockModel.getEntity()); + } + + /** + * 更新商品库存记录实体对象 + * + * @param stock 新增商品库存记录实体对象参数 + * @return Stock 商品库存记录实体对象 + */ + @Override + @Transactional + public void updateStock(Stock stock) { + mybatisDao.update(stock); + } + + /** + * 库存变更 + * + * @param stockChange + */ + @Transactional + @Override + public void changeStock(StockChange stockChange) { + Stock stock = mybatisDao.selectByPrimaryKey(Stock.class, stockChange.getStockId()); + if (stock == null) { + throw new BusinessException("未找到匹配的库存信息"); + } + stock.setUpdateUserId(stockChange.getActionBy()); + stock.setUpdateDate(new Date()); + StockRecord stockRecord = new StockRecord(); + stockRecord.setInsertDate(new Date()); + stockRecord.setInsertUserId(stockChange.getActionBy()); + stockRecord.setUpdateDate(new Date()); + stockRecord.setUpdateUserId(stockChange.getActionBy()); + stockRecord.setStockId(stockChange.getStockId()); + if (AppConstants.STOCK_CHANGE_TYPE_IN == stockChange.getType()) { + stockRecord.setChangeNum(stockChange.getNumber()); + //1-入库,2-出库,3-取消退款入库 4-破损 5-核销 + stockRecord.setChangType(1); + stockRecord.setRemark("手工入库"); + stock.setStockNum(stock.getStockNum() + stockChange.getNumber()); + } + else if (AppConstants.STOCK_CHANGE_TYPE_BROKEN == stockChange.getType()) { + Integer num = stock.getStockNum() - stockChange.getNumber(); + if (num < 0) { + throw new BusinessException("请输入小于库存数量的破损数值"); + } + //1-入库,2-出库,3-取消退款入库 4-破损 5-核销 + stockRecord.setChangType(4); + stockRecord.setRemark("破损"); + stockRecord.setChangeNum(stockChange.getNumber() * -1); + stock.setStockNum(num); + } + else if (AppConstants.STOCK_CHANGE_TYPE_CANCEL == stockChange.getType()) { + Integer num = stock.getStockNum() - stockChange.getNumber(); + if (num < 0) { + throw new BusinessException("请输入小于库存数量的核销数值"); + } + //1-入库,2-出库,3-取消退款入库 4-破损 5-核销 + stockRecord.setChangType(5); + stockRecord.setRemark("核销"); + stockRecord.setChangeNum(stockChange.getNumber() * -1); + stock.setStockNum(num); + } + mybatisDao.update(stock); + stockRecordService.createStockRecord(stockRecord); + } + + /** + * 删除商品库存记录 + * + * @param ids 主键数组 + */ + @Override + @Transactional + public void deleteStock(String[] ids) { + StockExample stockExample = new StockExample(); + stockExample.createCriteria().andIdIn(Arrays.asList((String[]) ids)); + mybatisDao.deleteByExample(stockExample); + } + + /** + * 删除商品库存记录 + * + * @param id 主键 + */ + @Override + @Transactional + public void deleteStock(String id) { + mybatisDao.deleteByPrimaryKey(Stock.class, id); + } + + /** + * 查询商品库存记录领域分页对象(带参数条件) + * + * @param limit 每页最大数 + * @param offset 页码 + * @param stockQuery 查询参数 + * @return Page 商品库存记录参数对象 + */ + @Override + public Page getStockModelPage(int limit, int offset, StockQuery stockQuery) { + return (Page) mybatisDao.selectPage(StockMapperExt.StockMapperNameSpace + "getStockModel", stockQuery, limit, offset); + } + + /** + * 查询商品库存记录领域分页对象(无参数条件) + * + * @param limit 每页最大数 + * @param offset 页码 + * @return Page 商品库存记录领域对象 + */ + @Override + public Page getStockModelPage(int limit, int offset) { + return (Page) mybatisDao.selectPage(StockMapperExt.StockMapperNameSpace + "getStockModel", null, limit, offset); + } + + /** + * 查询商品库存记录领域集合对象(带参数条件) + * + * @param stockQuery 查询参数对象 + * @return List 商品库存记录领域集合对象 + */ + @Override + public List getStockModelList(StockQuery stockQuery) { + return mybatisDao.getSqlSessionTemplate().selectList(StockMapperExt.StockMapperNameSpace + "getStockModel", stockQuery); + } + + /** + * 查询商品库存记录领域集合对象(无参数条件) + * + * @return List 商品库存记录领域集合对象 + */ + @Override + public List getStockModelList() { + return mybatisDao.getSqlSessionTemplate().selectList(StockMapperExt.StockMapperNameSpace + "getStockModel"); + } + + /** + * 查询商品库存记录实体对象 + * + * @param id 主键 + * @return Stock 商品库存记录实体对象 + */ + @Override + public Stock getOneStock(String id) { + return mybatisDao.selectByPrimaryKey(Stock.class, id); + } + + /** + * 根据主键查询单个对象 + * + * @param id 主键 + * @return StockModel 商品库存记录领域对象 + */ + @Override + public StockModel getOneStockModel(String id) { + StockQuery stockQuery = new StockQuery(); + stockQuery.setId(id); + return mybatisDao.getSqlSessionTemplate().selectOne(StockMapperExt.StockMapperNameSpace + "getStockModel", stockQuery); + } + + /** + * 根据查询参数查询单个对象(此方法只用于提供精确查询单个对象,若结果数超过1,则会报错) + * + * @param stockQuery 商品库存记录查询参数对象 + * @return StockModel 商品库存记录领域对象 + */ + @Override + public StockModel getOneStockModel(StockQuery stockQuery) throws TooManyResultsException { + return mybatisDao.getSqlSessionTemplate().selectOne(StockMapperExt.StockMapperNameSpace + "getStockModel", stockQuery); + } + + /** + * 库存校验 + * + * @param itemId 商品ID + * @param needNum 数量 + * @return true-库存充足 false-库存不足 + */ + public boolean checkStock(Integer itemId, Integer needNum) { + //查询商品库存是否存在 + Stock stock = new Stock(); + stock.setItemId(itemId); + List stockList = mybatisDao.selectByModel(stock); + //库存存在 + if (stockList.size() > 0) { + stock = stockList.get(0); + if (stock.getStockNum() >= needNum) { + return true; + } + return false; + } + else { + return false; + } + } + + /** + * 库存变化表 + * + * @param itemId 商品id + * @param changeStockNum 变化数量 负数表示扣除 + * @param remark 备注 + * @param changeType 1-入库(预包装,手工入库),2-出库,3-取消退款入库 4-破损 5-核销 + * @return + */ + @Transactional + public AjaxResult changeStockNum(Integer itemId, Integer changeStockNum, String remark, Integer changeType) throws BusinessException { + return changeStockNum(itemId, changeStockNum, null, remark, changeType); + } + + /** + * 库存变化表(订单) + * + * @param itemId 商品id + * @param changeStockNum 变化数量 负数表示扣除 + * @param orderId 订单id + * @param remark 备注 + * @param changeType 1-入库(预包装,手工入库),2-出库,3-取消退款入库 4-破损 5-核销 + * @return + */ + @Transactional + public AjaxResult changeStockNum(Integer itemId, Integer changeStockNum, Integer orderId, String remark, Integer changeType) throws BusinessException { + AjaxResult ajaxResult = new AjaxResult(); + //查询商品库存是否存在 + Stock stock = new Stock(); + stock.setItemId(itemId); + List stockList = mybatisDao.selectByModel(stock); + //库存存在 + if (stockList.size() > 0) { + stock = stockList.get(0); + //变更库存 + + //如果是扣除 判断库存是否够 + if (changeStockNum < 0) { + if (stock.getStockNum() + changeStockNum < 0) { + throw new BusinessException("库存不够,下单失败。"); + } + } + stock.setStockNum(stock.getStockNum() + changeStockNum); + mybatisDao.updateByModel(stock); + } + //无库存记录 新增 + else { + if (changeStockNum > 0) { + stock.setInsertDate(DateUtils.getNowDate()); + stock.setInsertUserId((Integer) SecurityUtils.getSubject().getSession().getAttribute(AppConstants.SESSION_USER_ID_KEY)); + stock.setUpdateDate(DateUtils.getNowDate()); + stock.setUpdateUserId((Integer) SecurityUtils.getSubject().getSession().getAttribute(AppConstants.SESSION_USER_ID_KEY)); + stock.setStockNum(changeStockNum); + stock.setWarningNum(0); + mybatisDao.save(stock); + } + else { + throw new BusinessException("无库存不能扣除。"); + } + } + //添加变更记录 + StockRecord stockRecord = new StockRecord(); + stockRecord.setChangeNum(changeStockNum); + //1-入库(预包装,手工入库),2-出库,3-取消退款入库 4-破损 5-核销 + stockRecord.setChangType(changeType); + stockRecord.setInsertDate(DateUtils.getNowDate()); + stockRecord.setInsertUserId((Integer) SecurityUtils.getSubject().getSession().getAttribute(AppConstants.SESSION_USER_ID_KEY)); + stockRecord.setUpdateDate(DateUtils.getNowDate()); + stockRecord.setUpdateUserId((Integer) SecurityUtils.getSubject().getSession().getAttribute(AppConstants.SESSION_USER_ID_KEY)); + stockRecord.setRefOrderId(orderId); + stockRecord.setRemark(remark); + stockRecord.setStockId(stock.getId()); + mybatisDao.save(stockRecord); + + //预包装添加包装记录 + if (remark.equals("预包装入库")) { + //添加预包装记录 + BeforehandPackageRecord beforehandPackageRecord = new BeforehandPackageRecord(); + beforehandPackageRecord.setInsertDate(DateUtils.getNowDate()); + beforehandPackageRecord.setInsertUserId((Integer) SecurityUtils.getSubject().getSession().getAttribute(AppConstants.SESSION_USER_ID_KEY)); + beforehandPackageRecord.setUpdateDate(DateUtils.getNowDate()); + beforehandPackageRecord.setUpdateUserId((Integer) SecurityUtils.getSubject().getSession().getAttribute(AppConstants.SESSION_USER_ID_KEY)); + beforehandPackageRecord.setCdItemId(itemId); + beforehandPackageRecord.setPackageNum(changeStockNum); + mybatisDao.save(beforehandPackageRecord); + } + + ajaxResult.setResult(1); + ajaxResult.setMessage("操作成功"); + return ajaxResult; + } + +} diff --git a/src/main/java/com/xmomen/module/stockdaily/controller/StockDailyController.java b/src/main/java/com/xmomen/module/stockdaily/controller/StockDailyController.java new file mode 100644 index 0000000..b9a3847 --- /dev/null +++ b/src/main/java/com/xmomen/module/stockdaily/controller/StockDailyController.java @@ -0,0 +1,139 @@ +package com.xmomen.module.stockdaily.controller; + +import com.xmomen.framework.exception.BusinessException; +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.module.logger.Log; +import com.xmomen.module.stockdaily.model.StockDailyQuery; +import com.xmomen.module.stockdaily.model.StockDailyModel; +import com.xmomen.module.stockdaily.service.StockDailyService; + +import org.apache.commons.io.IOUtils; +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.entity.result.ExcelImportResult; +import org.jeecgframework.poi.excel.entity.vo.NormalExcelConstants; +import org.jeecgframework.poi.exception.excel.ExcelImportException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.ui.ModelMap; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.servlet.ModelAndView; + +import javax.validation.Valid; +import java.io.Serializable; +import java.io.IOException; +import java.io.InputStream; +import java.util.List; + +/** + * @author tanxinzheng + * @version 1.0.0 + * @date 2017-5-26 21:56:23 + */ +@RestController +@RequestMapping(value = "/stockDaily") +public class StockDailyController { + + @Autowired + StockDailyService stockDailyService; + + /** + * 库存日报列表 + * + * @param limit 每页结果数 + * @param offset 页码 + * @param id 主键 + * @param ids 主键数组 + * @param excludeIds 不包含主键数组 + * @return Page 库存日报领域分页对象 + */ + @RequestMapping(method = RequestMethod.GET) + @Log(actionName = "查询库存日报列表") + public Page getStockDailyList(@RequestParam(value = "limit") Integer limit, + @RequestParam(value = "offset") Integer offset, + @RequestParam(value = "id", required = false) String id, + @RequestParam(value = "ids", required = false) String[] ids, + @RequestParam(value = "dailyDateStart", required = false) String dailyDateStart, + @RequestParam(value = "dailyDateEnd", required = false) String dailyDateEnd, + @RequestParam(value = "keyword", required = false) String keyword, + @RequestParam(value = "excludeIds", required = false) String[] excludeIds) { + StockDailyQuery stockDailyQuery = new StockDailyQuery(); + stockDailyQuery.setId(id); + stockDailyQuery.setExcludeIds(excludeIds); + stockDailyQuery.setIds(ids); + stockDailyQuery.setKeyword(keyword); + stockDailyQuery.setDailyDateStart(dailyDateStart); + stockDailyQuery.setDailyDateEnd(dailyDateEnd); + return stockDailyService.getStockDailyModelPage(limit, offset, stockDailyQuery); + } + + /** + * 查询单个库存日报 + * + * @param id 主键 + * @return StockDailyModel 库存日报领域对象 + */ + @RequestMapping(value = "/{id}", method = RequestMethod.GET) + @Log(actionName = "查询库存日报") + public StockDailyModel getStockDailyById(@PathVariable(value = "id") String id) { + return stockDailyService.getOneStockDailyModel(id); + } + + /** + * 新增库存日报 + * + * @param stockDailyModel 新增对象参数 + * @return StockDailyModel 库存日报领域对象 + */ + @RequestMapping(method = RequestMethod.POST) + @Log(actionName = "新增库存日报") + public StockDailyModel createStockDaily(@RequestBody @Valid StockDailyModel stockDailyModel) { + return stockDailyService.createStockDaily(stockDailyModel); + } + + /** + * 更新库存日报 + * + * @param id 主键 + * @param stockDailyModel 更新对象参数 + */ + @RequestMapping(value = "/{id}", method = RequestMethod.PUT) + @Log(actionName = "更新库存日报") + public void updateStockDaily(@PathVariable(value = "id") String id, + @RequestBody @Valid StockDailyModel stockDailyModel) { + stockDailyService.updateStockDaily(stockDailyModel); + } + + /** + * 删除库存日报 + * + * @param id 主键 + */ + @RequestMapping(value = "/{id}", method = RequestMethod.DELETE) + @Log(actionName = "删除单个库存日报") + public void deleteStockDaily(@PathVariable(value = "id") String id) { + stockDailyService.deleteStockDaily(id); + } + + /** + * 删除库存日报 + * + * @param ids 主键 + */ + @RequestMapping(method = RequestMethod.DELETE) + @Log(actionName = "批量删除库存日报") + public void deleteStockDailys(@RequestParam(value = "ids") String[] ids) { + stockDailyService.deleteStockDaily(ids); + } + + /** + * 手动创建库存快照 + */ + @RequestMapping(value = "/createStockDaily", method = RequestMethod.GET) + @Log(actionName = "手动创建库存快照") + public void createStockDaily() { + stockDailyService.createStockDaily(); + } +} diff --git a/src/main/java/com/xmomen/module/stockdaily/entity/mapper/StockDailyMapper.java b/src/main/java/com/xmomen/module/stockdaily/entity/mapper/StockDailyMapper.java new file mode 100644 index 0000000..6aec105 --- /dev/null +++ b/src/main/java/com/xmomen/module/stockdaily/entity/mapper/StockDailyMapper.java @@ -0,0 +1,16 @@ +package com.xmomen.module.stockdaily.entity.mapper; + +import com.xmomen.framework.mybatis.mapper.MybatisMapper; +import com.xmomen.module.stockdaily.entity.StockDaily; +import com.xmomen.module.stockdaily.entity.StockDailyExample; +import org.apache.ibatis.annotations.Param; + +public interface StockDailyMapper extends MybatisMapper { + int countByExample(StockDailyExample example); + + int deleteByExample(StockDailyExample example); + + int insertSelective(StockDaily record); + + int updateByExampleSelective(@Param("record") StockDaily record, @Param("example") StockDailyExample example); +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/stockdaily/entity/mapper/StockDailyMapper.xml b/src/main/java/com/xmomen/module/stockdaily/entity/mapper/StockDailyMapper.xml new file mode 100644 index 0000000..8f482ff --- /dev/null +++ b/src/main/java/com/xmomen/module/stockdaily/entity/mapper/StockDailyMapper.xml @@ -0,0 +1,228 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, stock_id, item_id, old_stock_num, in_num, return_in_num, out_num, damaged_num, + verification_num, new_stock_num, daily_date, insert_date + + + + delete from cd_stock_daily + + + + + + + SELECT replace(UUID(),'-','') + + insert into cd_stock_daily + + id, + + stock_id, + + + item_id, + + + old_stock_num, + + + in_num, + + + return_in_num, + + + out_num, + + + damaged_num, + + + verification_num, + + + new_stock_num, + + + daily_date, + + + insert_date, + + + + #{id,jdbcType=VARCHAR}, + + #{stockId,jdbcType=VARCHAR}, + + + #{itemId,jdbcType=VARCHAR}, + + + #{oldStockNum,jdbcType=INTEGER}, + + + #{inNum,jdbcType=INTEGER}, + + + #{returnInNum,jdbcType=INTEGER}, + + + #{outNum,jdbcType=INTEGER}, + + + #{damagedNum,jdbcType=INTEGER}, + + + #{verificationNum,jdbcType=INTEGER}, + + + #{newStockNum,jdbcType=INTEGER}, + + + #{dailyDate,jdbcType=DATE}, + + + #{insertDate,jdbcType=TIMESTAMP}, + + + + + + update cd_stock_daily + + + id = #{record.id,jdbcType=VARCHAR}, + + + stock_id = #{record.stockId,jdbcType=VARCHAR}, + + + item_id = #{record.itemId,jdbcType=VARCHAR}, + + + old_stock_num = #{record.oldStockNum,jdbcType=INTEGER}, + + + in_num = #{record.inNum,jdbcType=INTEGER}, + + + return_in_num = #{record.returnInNum,jdbcType=INTEGER}, + + + out_num = #{record.outNum,jdbcType=INTEGER}, + + + damaged_num = #{record.damagedNum,jdbcType=INTEGER}, + + + verification_num = #{record.verificationNum,jdbcType=INTEGER}, + + + new_stock_num = #{record.newStockNum,jdbcType=INTEGER}, + + + daily_date = #{record.dailyDate,jdbcType=DATE}, + + + insert_date = #{record.insertDate,jdbcType=TIMESTAMP}, + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/stockdaily/mapper/StockDailyMapperExt.java b/src/main/java/com/xmomen/module/stockdaily/mapper/StockDailyMapperExt.java new file mode 100644 index 0000000..14c9a20 --- /dev/null +++ b/src/main/java/com/xmomen/module/stockdaily/mapper/StockDailyMapperExt.java @@ -0,0 +1,12 @@ +package com.xmomen.module.stockdaily.mapper; + +/** + * @author tanxinzheng + * @date 2017-5-26 21:56:23 + * @version 1.0.0 + */ +public interface StockDailyMapperExt { + + public static final String StockDailyMapperNameSpace = "com.xmomen.module.stockdaily.mapper.StockDailyMapperExt."; + +} diff --git a/src/main/java/com/xmomen/module/stockdaily/model/StockDailyCreate.java b/src/main/java/com/xmomen/module/stockdaily/model/StockDailyCreate.java new file mode 100644 index 0000000..533c16e --- /dev/null +++ b/src/main/java/com/xmomen/module/stockdaily/model/StockDailyCreate.java @@ -0,0 +1,49 @@ +package com.xmomen.module.stockdaily.model; + +import lombok.Data; +import com.xmomen.module.stockdaily.entity.StockDaily; +import org.springframework.beans.BeanUtils; + + import java.lang.String; + import java.lang.Integer; + import java.util.Date; +import java.io.Serializable; + +/** + * @author tanxinzheng + * @date 2017-5-26 21:56:22 + * @version 1.0.0 + */ +public @Data class StockDailyCreate implements Serializable { + + /** 主键 */ + private String id; + /** */ + private String stockId; + /** */ + private String itemId; + /** 昨日库存 */ + private Integer oldStockNum; + /** 入库库存 */ + private Integer inNum; + /** 取消退货入库数 */ + private Integer returnInNum; + /** 出库库存 */ + private Integer outNum; + /** 破损数 */ + private Integer damagedNum; + /** 核销数 */ + private Integer verificationNum; + /** 现库存 */ + private Integer newStockNum; + /** 快照时间 */ + private Date dailyDate; + /** 插入时间 */ + private Date insertDate; + + public StockDaily getEntity(){ + StockDaily stockDaily = new StockDaily(); + BeanUtils.copyProperties(this, stockDaily); + return stockDaily; + } +} diff --git a/src/main/java/com/xmomen/module/stockdaily/model/StockDailyModel.java b/src/main/java/com/xmomen/module/stockdaily/model/StockDailyModel.java new file mode 100644 index 0000000..917dcbb --- /dev/null +++ b/src/main/java/com/xmomen/module/stockdaily/model/StockDailyModel.java @@ -0,0 +1,123 @@ +package com.xmomen.module.stockdaily.model; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.xmomen.module.stockdaily.entity.StockDaily; +import lombok.Data; +import org.hibernate.validator.constraints.*; + +import javax.validation.constraints.*; + +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecgframework.poi.excel.annotation.ExcelTarget; +import org.springframework.beans.BeanUtils; + +import java.lang.String; +import java.lang.Integer; +import java.util.Date; +import java.io.Serializable; + +/** + * @author tanxinzheng + * @version 1.0.0 + * @date 2017-5-26 21:56:23 + */ +@ExcelTarget(value = "StockDailyModel") +public +@Data +class StockDailyModel implements Serializable { + + /** + * 主键 + */ + @NotBlank(message = "主键为必填项") + @Length(max = 32, message = "主键字符长度限制[0,32]") + private String id; + /** */ + @Excel(name = "") + @NotBlank(message = "为必填项") + @Length(max = 32, message = "字符长度限制[0,32]") + private String stockId; + /** */ + @Excel(name = "") + @NotBlank(message = "为必填项") + @Length(max = 32, message = "字符长度限制[0,32]") + private String itemId; + /** + * 昨日库存 + */ + @Excel(name = "昨日库存") + @Range(max = 999999999, min = -999999999, message = "昨日库存数值范围[999999999,-999999999]") + private Integer oldStockNum; + /** + * 入库库存 + */ + @Excel(name = "入库库存") + @NotBlank(message = "入库库存为必填项") + @Range(max = 999999999, min = -999999999, message = "入库库存数值范围[999999999,-999999999]") + private Integer inNum; + /** + * 取消退货入库数 + */ + @Excel(name = "取消退货入库数") + @NotBlank(message = "取消退货入库数为必填项") + @Range(max = 999999999, min = -999999999, message = "取消退货入库数数值范围[999999999,-999999999]") + private Integer returnInNum; + /** + * 出库库存 + */ + @Excel(name = "出库库存") + @NotBlank(message = "出库库存为必填项") + @Range(max = 999999999, min = -999999999, message = "出库库存数值范围[999999999,-999999999]") + private Integer outNum; + /** + * 破损数 + */ + @Excel(name = "破损数") + @NotBlank(message = "破损数为必填项") + @Range(max = 999999999, min = -999999999, message = "破损数数值范围[999999999,-999999999]") + private Integer damagedNum; + /** + * 核销数 + */ + @Excel(name = "核销数") + @NotBlank(message = "核销数为必填项") + @Range(max = 999999999, min = -999999999, message = "核销数数值范围[999999999,-999999999]") + private Integer verificationNum; + /** + * 现库存 + */ + @Excel(name = "现库存") + @NotBlank(message = "现库存为必填项") + @Range(max = 999999999, min = -999999999, message = "现库存数值范围[999999999,-999999999]") + private Integer newStockNum; + /** + * 快照时间 + */ + @Excel(name = "快照时间") + @NotBlank(message = "快照时间为必填项") + private Date dailyDate; + /** + * 插入时间 + */ + @Excel(name = "插入时间") + @NotBlank(message = "插入时间为必填项") + private Date insertDate; + + private String itemName; + + private String itemCode; + + /** + * Get StockDaily Entity Object + * + * @return + */ + @JsonIgnore + public StockDaily getEntity() { + StockDaily stockDaily = new StockDaily(); + BeanUtils.copyProperties(this, stockDaily); + return stockDaily; + } + + +} diff --git a/src/main/java/com/xmomen/module/stockdaily/model/StockDailyQuery.java b/src/main/java/com/xmomen/module/stockdaily/model/StockDailyQuery.java new file mode 100644 index 0000000..1d1f4d5 --- /dev/null +++ b/src/main/java/com/xmomen/module/stockdaily/model/StockDailyQuery.java @@ -0,0 +1,34 @@ +package com.xmomen.module.stockdaily.model; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author tanxinzheng + * @version 1.0.0 + * @date 2017-5-26 21:56:22 + */ +public +@Data +class StockDailyQuery implements Serializable { + /** + * 主键 + */ + private String id; + /** + * 包含主键集 + */ + private String[] ids; + /** + * 排除主键集 + */ + private String[] excludeIds; + + private String dailyDateStart; + + private String dailyDateEnd; + + private String keyword; + +} diff --git a/src/main/java/com/xmomen/module/stockdaily/model/StockDailyUpdate.java b/src/main/java/com/xmomen/module/stockdaily/model/StockDailyUpdate.java new file mode 100644 index 0000000..85de12b --- /dev/null +++ b/src/main/java/com/xmomen/module/stockdaily/model/StockDailyUpdate.java @@ -0,0 +1,50 @@ +package com.xmomen.module.stockdaily.model; + +import lombok.Data; +import com.xmomen.module.stockdaily.entity.StockDaily; +import org.springframework.beans.BeanUtils; + + import java.lang.String; + import java.lang.Integer; + import java.util.Date; +import java.io.Serializable; + +/** + * @author tanxinzheng + * @date 2017-5-26 21:56:22 + * @version 1.0.0 + */ +public @Data class StockDailyUpdate implements Serializable { + + /** 主键 */ + private String id; + /** */ + private String stockId; + /** */ + private String itemId; + /** 昨日库存 */ + private Integer oldStockNum; + /** 入库库存 */ + private Integer inNum; + /** 取消退货入库数 */ + private Integer returnInNum; + /** 出库库存 */ + private Integer outNum; + /** 破损数 */ + private Integer damagedNum; + /** 核销数 */ + private Integer verificationNum; + /** 现库存 */ + private Integer newStockNum; + /** 快照时间 */ + private Date dailyDate; + /** 插入时间 */ + private Date insertDate; + + + public StockDaily getEntity(){ + StockDaily stockDaily = new StockDaily(); + BeanUtils.copyProperties(this, stockDaily); + return stockDaily; + } +} diff --git a/src/main/java/com/xmomen/module/stockdaily/service/StockDailyService.java b/src/main/java/com/xmomen/module/stockdaily/service/StockDailyService.java new file mode 100644 index 0000000..25bee35 --- /dev/null +++ b/src/main/java/com/xmomen/module/stockdaily/service/StockDailyService.java @@ -0,0 +1,144 @@ +package com.xmomen.module.stockdaily.service; + +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.module.report.model.ReportQuery; +import com.xmomen.module.report.model.StockDailyReport; +import com.xmomen.module.stockdaily.model.StockDailyQuery; +import com.xmomen.module.stockdaily.model.StockDailyModel; +import com.xmomen.module.stockdaily.entity.StockDaily; +import org.apache.ibatis.exceptions.TooManyResultsException; + +import java.io.Serializable; +import java.util.List; + +/** + * @author tanxinzheng + * @version 1.0.0 + * @date 2017-5-26 21:56:23 + */ +public interface StockDailyService { + + /** + * 新增库存日报 + * + * @param stockDailyModel 新增库存日报对象参数 + * @return StockDailyModel 库存日报领域对象 + */ + public StockDailyModel createStockDaily(StockDailyModel stockDailyModel); + + /** + * 新增库存日报实体对象 + * + * @param stockDaily 新增库存日报实体对象参数 + * @return StockDaily 库存日报实体对象 + */ + public StockDaily createStockDaily(StockDaily stockDaily); + + /** + * 批量新增库存日报 + * + * @param StockDailyModel 新增库存日报对象集合参数 + * @return List 库存日报领域对象集合 + */ + List createStockDailys(List stockDailyModels); + + /** + * 更新库存日报 + * + * @param stockDailyModel 更新库存日报对象参数 + */ + public void updateStockDaily(StockDailyModel stockDailyModel); + + /** + * 更新库存日报实体对象 + * + * @param stockDaily 新增库存日报实体对象参数 + * @return StockDaily 库存日报实体对象 + */ + public void updateStockDaily(StockDaily stockDaily); + + /** + * 批量删除库存日报 + * + * @param ids 主键数组 + */ + public void deleteStockDaily(String[] ids); + + /** + * 删除库存日报 + * + * @param id 主键 + */ + public void deleteStockDaily(String id); + + /** + * 查询库存日报领域分页对象(带参数条件) + * + * @param stockDailyQuery 查询参数 + * @param limit 每页最大数 + * @param offset 页码 + * @return Page 库存日报参数对象 + */ + public Page getStockDailyModelPage(int limit, int offset, StockDailyQuery stockDailyQuery); + + /** + * 查询库存日报领域分页对象(无参数条件) + * + * @param limit 每页最大数 + * @param offset 页码 + * @return Page 库存日报领域对象 + */ + public Page getStockDailyModelPage(int limit, int offset); + + /** + * 查询库存日报领域集合对象(带参数条件) + * + * @param stockDailyQuery 查询参数对象 + * @return List 库存日报领域集合对象 + */ + public List getStockDailyModelList(StockDailyQuery stockDailyQuery); + + /** + * 查询库存日报领域集合对象(无参数条件) + * + * @return List 库存日报领域集合对象 + */ + public List getStockDailyModelList(); + + /** + * 查询库存日报实体对象 + * + * @param id 主键 + * @return StockDaily 库存日报实体对象 + */ + public StockDaily getOneStockDaily(String id); + + /** + * 根据主键查询单个对象 + * + * @param id 主键 + * @return StockDailyModel 库存日报领域对象 + */ + public StockDailyModel getOneStockDailyModel(String id); + + /** + * 根据查询参数查询单个对象(此方法只用于提供精确查询单个对象,若结果数超过1,则会报错) + * + * @param stockDailyQuery 库存日报查询参数对象 + * @return StockDailyModel 库存日报领域对象 + */ + public StockDailyModel getOneStockDailyModel(StockDailyQuery stockDailyQuery) throws TooManyResultsException; + + /** + * 定时任务创建库存快照 + */ + public void createStockDaily(); + + /** + * 查询财务报表 + * + * @param reportQuery + * @return + */ + public List getStockDailyReport(ReportQuery reportQuery); +} diff --git a/src/main/java/com/xmomen/module/system/controller/OrganizationController.java b/src/main/java/com/xmomen/module/system/controller/OrganizationController.java new file mode 100644 index 0000000..6d6f1e0 --- /dev/null +++ b/src/main/java/com/xmomen/module/system/controller/OrganizationController.java @@ -0,0 +1,112 @@ +package com.xmomen.module.system.controller; + +import com.xmomen.framework.web.exceptions.ArgumentValidException; +import com.xmomen.module.account.web.controller.vo.CreateUserGroup; +import com.xmomen.module.account.web.controller.vo.UpdateUserGroup; +import com.xmomen.module.logger.Log; +import com.xmomen.module.system.entity.SysOrganization; +import com.xmomen.module.system.model.CreateOrganization; +import com.xmomen.module.system.model.OrganizationModel; +import com.xmomen.module.system.service.OrganizationService; +import com.xmomen.module.user.entity.SysRoles; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; + +/** + * Created by Jeng on 16/3/25. + */ +@RestController +public class OrganizationController { + + @Autowired + OrganizationService organizationService; + + /** + * 查询组织机构信息 + * @param id + * @return + */ + @RequestMapping(value = "/organization", method = RequestMethod.GET) + @Log(actionName = "查询组织机构信息") + public List getOrganizationTree(@RequestParam(value = "id", required = false) Integer id){ + return organizationService.getOrganizationTree(id); + } + + /** + * 新增机构组织 + * @param createOrganization + * @param bindingResult + * @throws ArgumentValidException + */ + @RequestMapping(value = "/organization", method = RequestMethod.POST) + @Log(actionName = "新增组织机构") + public void createOrganization(@RequestBody @Valid CreateOrganization createOrganization, BindingResult bindingResult) throws ArgumentValidException { + if(bindingResult != null && bindingResult.hasErrors()){ + throw new ArgumentValidException(bindingResult); + } + SysOrganization sysOrganization = new SysOrganization(); + sysOrganization.setName(createOrganization.getName()); + sysOrganization.setDescription(createOrganization.getDescription()); + sysOrganization.setParentId(createOrganization.getParentId()); + organizationService.createOrganization(sysOrganization); + } + + /** + * 删除机构组织 + * @param id + */ + @RequestMapping(value = "/organization/{id}", method = RequestMethod.DELETE) + @Log(actionName = "删除组织机构") + public void deleteOrganization(@PathVariable(value = "id") Integer id){ + organizationService.delete(id); + } + + /** + * 修改机构组织 + * @param id + */ + @RequestMapping(value = "/organization/{id}", method = RequestMethod.PUT) + @Log(actionName = "修改组织机构") + public void updateOrganization(@PathVariable(value = "id") Integer id, + @RequestBody @Valid CreateOrganization createOrganization, BindingResult bindingResult) throws ArgumentValidException { + if(bindingResult != null && bindingResult.hasErrors()){ + throw new ArgumentValidException(bindingResult); + } + SysOrganization sysOrganization = new SysOrganization(); + sysOrganization.setId(id); + sysOrganization.setName(createOrganization.getName()); + sysOrganization.setDescription(createOrganization.getDescription()); + sysOrganization.setParentId(createOrganization.getParentId()); + organizationService.updateOrganization(sysOrganization); + } + + /** + * 新增机构组织用户 + * @param id + * @param userIds + */ + @RequestMapping(value = "/organization/{id}/user", method = RequestMethod.POST) + @Log(actionName = "新增组织机构用户") + public void bindOrganizationUser(@PathVariable(value = "id") Integer id, + @RequestParam(value = "userIds") Integer[] userIds) { + + organizationService.bindOrganizationUser(id, userIds); + } + + /** + * 删除机构组织用户 + * @param id + * @param userIds + */ + @RequestMapping(value = "/organization/{id}/user", method = RequestMethod.DELETE) + @Log(actionName = "删除组织机构用户") + public void updateOrganization(@PathVariable(value = "id") Integer id, + @RequestParam(value = "userIds") Integer[] userIds) { + organizationService.unBindOrganizationUser(id, userIds); + } +} diff --git a/src/main/java/com/xmomen/module/system/controller/TaskController.java b/src/main/java/com/xmomen/module/system/controller/TaskController.java new file mode 100644 index 0000000..d7fa5ec --- /dev/null +++ b/src/main/java/com/xmomen/module/system/controller/TaskController.java @@ -0,0 +1,78 @@ +package com.xmomen.module.system.controller; + +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.framework.web.exceptions.ArgumentValidException; +import com.xmomen.module.logger.Log; +import com.xmomen.module.system.entity.SysTask; +import com.xmomen.module.system.model.CreateTask; +import com.xmomen.module.system.model.TaskModel; +import com.xmomen.module.system.model.TaskQuery; +import com.xmomen.module.system.service.TaskService; +import com.xmomen.module.system.service.TaskService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; + +/** + * Created by Jeng on 16/3/25. + */ +@RestController +public class TaskController { + + @Autowired + TaskService taskService; + + /** + * 查询任务信息 + * @param limit + * @param offset + * @param taskStatus + * @param executorIds + * @param keyword + * @return + */ + @RequestMapping(value = "/task", method = RequestMethod.GET) + @Log(actionName = "查询任务信息") + public Page getTaskTree(@RequestParam(value = "limit") Integer limit, + @RequestParam(value = "offset") Integer offset, + @RequestParam(value = "taskStatus", required = false) Integer[] taskStatus, + @RequestParam(value = "executorIds", required = false) Integer[] executorIds, + @RequestParam(value = "keyword", required = false) String keyword){ + TaskQuery taskQuery = new TaskQuery(); + taskQuery.setKeyword(keyword); + taskQuery.setTaskStatus(taskStatus); + taskQuery.setExecutorIds(executorIds); + return taskService.getTaskList(taskQuery, limit, offset); + } + + + /** + * 删除机构组织 + * @param id + */ + @RequestMapping(value = "/task/{id}", method = RequestMethod.DELETE) + @Log(actionName = "删除任务") + public void deleteTask(@PathVariable(value = "id") Integer id){ + taskService.deleteTask(id); + } + + /** + * 修改机构组织 + * @param id + */ + @RequestMapping(value = "/task/{id}", method = RequestMethod.PUT) + @Log(actionName = "修改任务") + public void updateTask(@PathVariable(value = "id") Integer id, + @RequestBody @Valid CreateTask createTask, BindingResult bindingResult) throws ArgumentValidException { + if(bindingResult != null && bindingResult.hasErrors()){ + throw new ArgumentValidException(bindingResult); + } + SysTask sysTask = new SysTask(); + sysTask.setId(id); + taskService.updateTask(sysTask); + } + +} diff --git a/src/main/java/com/xmomen/module/system/entity/SysDictionaryExample.java b/src/main/java/com/xmomen/module/system/entity/SysDictionaryExample.java new file mode 100644 index 0000000..d0d81a3 --- /dev/null +++ b/src/main/java/com/xmomen/module/system/entity/SysDictionaryExample.java @@ -0,0 +1,461 @@ +package com.xmomen.module.system.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisExample; +import java.util.ArrayList; +import java.util.List; + +public class SysDictionaryExample extends BaseMybatisExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public SysDictionaryExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("ID is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("ID is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Integer value) { + addCriterion("ID =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Integer value) { + addCriterion("ID <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Integer value) { + addCriterion("ID >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Integer value) { + addCriterion("ID >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Integer value) { + addCriterion("ID <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Integer value) { + addCriterion("ID <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("ID in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("ID not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Integer value1, Integer value2) { + addCriterion("ID between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Integer value1, Integer value2) { + addCriterion("ID not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andDictionaryCodeIsNull() { + addCriterion("DICTIONARY_CODE is null"); + return (Criteria) this; + } + + public Criteria andDictionaryCodeIsNotNull() { + addCriterion("DICTIONARY_CODE is not null"); + return (Criteria) this; + } + + public Criteria andDictionaryCodeEqualTo(String value) { + addCriterion("DICTIONARY_CODE =", value, "dictionaryCode"); + return (Criteria) this; + } + + public Criteria andDictionaryCodeNotEqualTo(String value) { + addCriterion("DICTIONARY_CODE <>", value, "dictionaryCode"); + return (Criteria) this; + } + + public Criteria andDictionaryCodeGreaterThan(String value) { + addCriterion("DICTIONARY_CODE >", value, "dictionaryCode"); + return (Criteria) this; + } + + public Criteria andDictionaryCodeGreaterThanOrEqualTo(String value) { + addCriterion("DICTIONARY_CODE >=", value, "dictionaryCode"); + return (Criteria) this; + } + + public Criteria andDictionaryCodeLessThan(String value) { + addCriterion("DICTIONARY_CODE <", value, "dictionaryCode"); + return (Criteria) this; + } + + public Criteria andDictionaryCodeLessThanOrEqualTo(String value) { + addCriterion("DICTIONARY_CODE <=", value, "dictionaryCode"); + return (Criteria) this; + } + + public Criteria andDictionaryCodeLike(String value) { + addCriterion("DICTIONARY_CODE like", value, "dictionaryCode"); + return (Criteria) this; + } + + public Criteria andDictionaryCodeNotLike(String value) { + addCriterion("DICTIONARY_CODE not like", value, "dictionaryCode"); + return (Criteria) this; + } + + public Criteria andDictionaryCodeIn(List values) { + addCriterion("DICTIONARY_CODE in", values, "dictionaryCode"); + return (Criteria) this; + } + + public Criteria andDictionaryCodeNotIn(List values) { + addCriterion("DICTIONARY_CODE not in", values, "dictionaryCode"); + return (Criteria) this; + } + + public Criteria andDictionaryCodeBetween(String value1, String value2) { + addCriterion("DICTIONARY_CODE between", value1, value2, "dictionaryCode"); + return (Criteria) this; + } + + public Criteria andDictionaryCodeNotBetween(String value1, String value2) { + addCriterion("DICTIONARY_CODE not between", value1, value2, "dictionaryCode"); + return (Criteria) this; + } + + public Criteria andDictionaryDescIsNull() { + addCriterion("DICTIONARY_DESC is null"); + return (Criteria) this; + } + + public Criteria andDictionaryDescIsNotNull() { + addCriterion("DICTIONARY_DESC is not null"); + return (Criteria) this; + } + + public Criteria andDictionaryDescEqualTo(String value) { + addCriterion("DICTIONARY_DESC =", value, "dictionaryDesc"); + return (Criteria) this; + } + + public Criteria andDictionaryDescNotEqualTo(String value) { + addCriterion("DICTIONARY_DESC <>", value, "dictionaryDesc"); + return (Criteria) this; + } + + public Criteria andDictionaryDescGreaterThan(String value) { + addCriterion("DICTIONARY_DESC >", value, "dictionaryDesc"); + return (Criteria) this; + } + + public Criteria andDictionaryDescGreaterThanOrEqualTo(String value) { + addCriterion("DICTIONARY_DESC >=", value, "dictionaryDesc"); + return (Criteria) this; + } + + public Criteria andDictionaryDescLessThan(String value) { + addCriterion("DICTIONARY_DESC <", value, "dictionaryDesc"); + return (Criteria) this; + } + + public Criteria andDictionaryDescLessThanOrEqualTo(String value) { + addCriterion("DICTIONARY_DESC <=", value, "dictionaryDesc"); + return (Criteria) this; + } + + public Criteria andDictionaryDescLike(String value) { + addCriterion("DICTIONARY_DESC like", value, "dictionaryDesc"); + return (Criteria) this; + } + + public Criteria andDictionaryDescNotLike(String value) { + addCriterion("DICTIONARY_DESC not like", value, "dictionaryDesc"); + return (Criteria) this; + } + + public Criteria andDictionaryDescIn(List values) { + addCriterion("DICTIONARY_DESC in", values, "dictionaryDesc"); + return (Criteria) this; + } + + public Criteria andDictionaryDescNotIn(List values) { + addCriterion("DICTIONARY_DESC not in", values, "dictionaryDesc"); + return (Criteria) this; + } + + public Criteria andDictionaryDescBetween(String value1, String value2) { + addCriterion("DICTIONARY_DESC between", value1, value2, "dictionaryDesc"); + return (Criteria) this; + } + + public Criteria andDictionaryDescNotBetween(String value1, String value2) { + addCriterion("DICTIONARY_DESC not between", value1, value2, "dictionaryDesc"); + return (Criteria) this; + } + + public Criteria andAvailableIsNull() { + addCriterion("AVAILABLE is null"); + return (Criteria) this; + } + + public Criteria andAvailableIsNotNull() { + addCriterion("AVAILABLE is not null"); + return (Criteria) this; + } + + public Criteria andAvailableEqualTo(Integer value) { + addCriterion("AVAILABLE =", value, "available"); + return (Criteria) this; + } + + public Criteria andAvailableNotEqualTo(Integer value) { + addCriterion("AVAILABLE <>", value, "available"); + return (Criteria) this; + } + + public Criteria andAvailableGreaterThan(Integer value) { + addCriterion("AVAILABLE >", value, "available"); + return (Criteria) this; + } + + public Criteria andAvailableGreaterThanOrEqualTo(Integer value) { + addCriterion("AVAILABLE >=", value, "available"); + return (Criteria) this; + } + + public Criteria andAvailableLessThan(Integer value) { + addCriterion("AVAILABLE <", value, "available"); + return (Criteria) this; + } + + public Criteria andAvailableLessThanOrEqualTo(Integer value) { + addCriterion("AVAILABLE <=", value, "available"); + return (Criteria) this; + } + + public Criteria andAvailableIn(List values) { + addCriterion("AVAILABLE in", values, "available"); + return (Criteria) this; + } + + public Criteria andAvailableNotIn(List values) { + addCriterion("AVAILABLE not in", values, "available"); + return (Criteria) this; + } + + public Criteria andAvailableBetween(Integer value1, Integer value2) { + addCriterion("AVAILABLE between", value1, value2, "available"); + return (Criteria) this; + } + + public Criteria andAvailableNotBetween(Integer value1, Integer value2) { + addCriterion("AVAILABLE not between", value1, value2, "available"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/system/entity/SysOrganization.java b/src/main/java/com/xmomen/module/system/entity/SysOrganization.java new file mode 100644 index 0000000..5ba6163 --- /dev/null +++ b/src/main/java/com/xmomen/module/system/entity/SysOrganization.java @@ -0,0 +1,91 @@ +package com.xmomen.module.system.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "sys_organization") +public class SysOrganization extends BaseMybatisModel { + /** + * 物理主键 + */ + private Integer id; + + /** + * 组织名称 + */ + private String name; + + /** + * + */ + private String description; + + /** + * + */ + private Integer parentId; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "NAME") + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + if(name == null){ + removeValidField("name"); + return; + } + addValidField("name"); + } + + @Column(name = "DESCRIPTION") + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + if(description == null){ + removeValidField("description"); + return; + } + addValidField("description"); + } + + @Column(name = "PARENT_ID") + public Integer getParentId() { + return parentId; + } + + public void setParentId(Integer parentId) { + this.parentId = parentId; + if(parentId == null){ + removeValidField("parentId"); + return; + } + addValidField("parentId"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/system/entity/SysTaskHead.java b/src/main/java/com/xmomen/module/system/entity/SysTaskHead.java new file mode 100644 index 0000000..2aff8e9 --- /dev/null +++ b/src/main/java/com/xmomen/module/system/entity/SysTaskHead.java @@ -0,0 +1,72 @@ +package com.xmomen.module.system.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "sys_task_head") +public class SysTaskHead extends BaseMybatisModel { + /** + * 主键 + */ + private Integer id; + + /** + * 任务名称 + */ + private String taskName; + + /** + * 任务描述 + */ + private String taskDesc; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "TASK_NAME") + public String getTaskName() { + return taskName; + } + + public void setTaskName(String taskName) { + this.taskName = taskName; + if(taskName == null){ + removeValidField("taskName"); + return; + } + addValidField("taskName"); + } + + @Column(name = "TASK_DESC") + public String getTaskDesc() { + return taskDesc; + } + + public void setTaskDesc(String taskDesc) { + this.taskDesc = taskDesc; + if(taskDesc == null){ + removeValidField("taskDesc"); + return; + } + addValidField("taskDesc"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/system/entity/SysUserOrganization.java b/src/main/java/com/xmomen/module/system/entity/SysUserOrganization.java new file mode 100644 index 0000000..3cc7e8f --- /dev/null +++ b/src/main/java/com/xmomen/module/system/entity/SysUserOrganization.java @@ -0,0 +1,72 @@ +package com.xmomen.module.system.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "sys_user_organization") +public class SysUserOrganization extends BaseMybatisModel { + /** + * + */ + private Integer id; + + /** + * 部门 + */ + private Integer organizationId; + + /** + * 用户 + */ + private Integer userId; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "ORGANIZATION_ID") + public Integer getOrganizationId() { + return organizationId; + } + + public void setOrganizationId(Integer organizationId) { + this.organizationId = organizationId; + if(organizationId == null){ + removeValidField("organizationId"); + return; + } + addValidField("organizationId"); + } + + @Column(name = "USER_ID") + public Integer getUserId() { + return userId; + } + + public void setUserId(Integer userId) { + this.userId = userId; + if(userId == null){ + removeValidField("userId"); + return; + } + addValidField("userId"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/system/entity/SysUserOrganizationExample.java b/src/main/java/com/xmomen/module/system/entity/SysUserOrganizationExample.java new file mode 100644 index 0000000..6fd0f15 --- /dev/null +++ b/src/main/java/com/xmomen/module/system/entity/SysUserOrganizationExample.java @@ -0,0 +1,381 @@ +package com.xmomen.module.system.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisExample; +import java.util.ArrayList; +import java.util.List; + +public class SysUserOrganizationExample extends BaseMybatisExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public SysUserOrganizationExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("ID is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("ID is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Integer value) { + addCriterion("ID =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Integer value) { + addCriterion("ID <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Integer value) { + addCriterion("ID >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Integer value) { + addCriterion("ID >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Integer value) { + addCriterion("ID <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Integer value) { + addCriterion("ID <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("ID in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("ID not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Integer value1, Integer value2) { + addCriterion("ID between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Integer value1, Integer value2) { + addCriterion("ID not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andOrganizationIdIsNull() { + addCriterion("ORGANIZATION_ID is null"); + return (Criteria) this; + } + + public Criteria andOrganizationIdIsNotNull() { + addCriterion("ORGANIZATION_ID is not null"); + return (Criteria) this; + } + + public Criteria andOrganizationIdEqualTo(Integer value) { + addCriterion("ORGANIZATION_ID =", value, "organizationId"); + return (Criteria) this; + } + + public Criteria andOrganizationIdNotEqualTo(Integer value) { + addCriterion("ORGANIZATION_ID <>", value, "organizationId"); + return (Criteria) this; + } + + public Criteria andOrganizationIdGreaterThan(Integer value) { + addCriterion("ORGANIZATION_ID >", value, "organizationId"); + return (Criteria) this; + } + + public Criteria andOrganizationIdGreaterThanOrEqualTo(Integer value) { + addCriterion("ORGANIZATION_ID >=", value, "organizationId"); + return (Criteria) this; + } + + public Criteria andOrganizationIdLessThan(Integer value) { + addCriterion("ORGANIZATION_ID <", value, "organizationId"); + return (Criteria) this; + } + + public Criteria andOrganizationIdLessThanOrEqualTo(Integer value) { + addCriterion("ORGANIZATION_ID <=", value, "organizationId"); + return (Criteria) this; + } + + public Criteria andOrganizationIdIn(List values) { + addCriterion("ORGANIZATION_ID in", values, "organizationId"); + return (Criteria) this; + } + + public Criteria andOrganizationIdNotIn(List values) { + addCriterion("ORGANIZATION_ID not in", values, "organizationId"); + return (Criteria) this; + } + + public Criteria andOrganizationIdBetween(Integer value1, Integer value2) { + addCriterion("ORGANIZATION_ID between", value1, value2, "organizationId"); + return (Criteria) this; + } + + public Criteria andOrganizationIdNotBetween(Integer value1, Integer value2) { + addCriterion("ORGANIZATION_ID not between", value1, value2, "organizationId"); + return (Criteria) this; + } + + public Criteria andUserIdIsNull() { + addCriterion("USER_ID is null"); + return (Criteria) this; + } + + public Criteria andUserIdIsNotNull() { + addCriterion("USER_ID is not null"); + return (Criteria) this; + } + + public Criteria andUserIdEqualTo(Integer value) { + addCriterion("USER_ID =", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdNotEqualTo(Integer value) { + addCriterion("USER_ID <>", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdGreaterThan(Integer value) { + addCriterion("USER_ID >", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdGreaterThanOrEqualTo(Integer value) { + addCriterion("USER_ID >=", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdLessThan(Integer value) { + addCriterion("USER_ID <", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdLessThanOrEqualTo(Integer value) { + addCriterion("USER_ID <=", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdIn(List values) { + addCriterion("USER_ID in", values, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdNotIn(List values) { + addCriterion("USER_ID not in", values, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdBetween(Integer value1, Integer value2) { + addCriterion("USER_ID between", value1, value2, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdNotBetween(Integer value1, Integer value2) { + addCriterion("USER_ID not between", value1, value2, "userId"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/system/entity/mapper/SysDictionaryParameterMapper.java b/src/main/java/com/xmomen/module/system/entity/mapper/SysDictionaryParameterMapper.java new file mode 100644 index 0000000..02d6993 --- /dev/null +++ b/src/main/java/com/xmomen/module/system/entity/mapper/SysDictionaryParameterMapper.java @@ -0,0 +1,16 @@ +package com.xmomen.module.system.entity.mapper; + +import com.xmomen.framework.mybatis.mapper.MybatisMapper; +import com.xmomen.module.system.entity.SysDictionaryParameter; +import com.xmomen.module.system.entity.SysDictionaryParameterExample; +import org.apache.ibatis.annotations.Param; + +public interface SysDictionaryParameterMapper extends MybatisMapper { + int countByExample(SysDictionaryParameterExample example); + + int deleteByExample(SysDictionaryParameterExample example); + + int insertSelective(SysDictionaryParameter record); + + int updateByExampleSelective(@Param("record") SysDictionaryParameter record, @Param("example") SysDictionaryParameterExample example); +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/system/entity/mapper/SysOrganizationMapper.java b/src/main/java/com/xmomen/module/system/entity/mapper/SysOrganizationMapper.java new file mode 100644 index 0000000..26d3724 --- /dev/null +++ b/src/main/java/com/xmomen/module/system/entity/mapper/SysOrganizationMapper.java @@ -0,0 +1,16 @@ +package com.xmomen.module.system.entity.mapper; + +import com.xmomen.framework.mybatis.mapper.MybatisMapper; +import com.xmomen.module.system.entity.SysOrganization; +import com.xmomen.module.system.entity.SysOrganizationExample; +import org.apache.ibatis.annotations.Param; + +public interface SysOrganizationMapper extends MybatisMapper { + int countByExample(SysOrganizationExample example); + + int deleteByExample(SysOrganizationExample example); + + int insertSelective(SysOrganization record); + + int updateByExampleSelective(@Param("record") SysOrganization record, @Param("example") SysOrganizationExample example); +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/system/mapper/DictionaryMapper.java b/src/main/java/com/xmomen/module/system/mapper/DictionaryMapper.java new file mode 100644 index 0000000..77eb766 --- /dev/null +++ b/src/main/java/com/xmomen/module/system/mapper/DictionaryMapper.java @@ -0,0 +1,16 @@ +package com.xmomen.module.system.mapper; + +import com.xmomen.module.system.model.Dictionary; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.ResultType; +import org.apache.ibatis.annotations.Select; + +/** + * Created by Jeng on 16/4/2. + */ +public interface DictionaryMapper { + + @Select(value = "") + @ResultType(Dictionary.class) + public Dictionary getDictionaryList(@Param(value = "keyword") String keyword); +} diff --git a/src/main/java/com/xmomen/module/system/mapper/OrganizationMapper.java b/src/main/java/com/xmomen/module/system/mapper/OrganizationMapper.java new file mode 100644 index 0000000..0c13430 --- /dev/null +++ b/src/main/java/com/xmomen/module/system/mapper/OrganizationMapper.java @@ -0,0 +1,18 @@ +package com.xmomen.module.system.mapper; + +import com.xmomen.module.system.model.OrganizationModel; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.ResultType; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * Created by Jeng on 16/3/27. + */ +public interface OrganizationMapper { + + @Select(value = "SELECT s.ID,s.NAME,s.DESCRIPTION, s.PARENT_ID,p.NAME AS parent_name FROM sys_organization s LEFT JOIN sys_organization p ON p.ID=s.PARENT_ID where FIND_IN_SET(s.id, query_children_organization(${id}))") + @ResultType(OrganizationModel.class) + public List getOrganizationTree(@Param(value = "id") Integer id); +} diff --git a/src/main/java/com/xmomen/module/system/mapper/TaskMapper.java b/src/main/java/com/xmomen/module/system/mapper/TaskMapper.java new file mode 100644 index 0000000..1dc95bc --- /dev/null +++ b/src/main/java/com/xmomen/module/system/mapper/TaskMapper.java @@ -0,0 +1,9 @@ +package com.xmomen.module.system.mapper; + +/** + * Created by Jeng on 16/4/2. + */ +public interface TaskMapper { + + public static final String TASK_MAPPER_NAMESPACE = "com.xmomen.module.system.mapper.TaskMapper."; +} diff --git a/src/main/java/com/xmomen/module/system/model/CreateDictionary.java b/src/main/java/com/xmomen/module/system/model/CreateDictionary.java new file mode 100644 index 0000000..c6c3915 --- /dev/null +++ b/src/main/java/com/xmomen/module/system/model/CreateDictionary.java @@ -0,0 +1,83 @@ +package com.xmomen.module.system.model; + +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotEmpty; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * Created by Jeng on 16/4/2. + */ +public class CreateDictionary implements Serializable { + + /** + * 字典 + */ + @NotNull + private Integer sysDictionaryId; + + /** + * 显示值 + */ + @NotNull + @NotEmpty + private String showValue; + + /** + * 实际值 + */ + @NotNull + @NotEmpty + private String realValue; + + /** + * 排位 + */ + private Integer sortValue; + + /** + * 0-禁用,1-启用 + */ + private Integer available; + + public Integer getSysDictionaryId() { + return sysDictionaryId; + } + + public void setSysDictionaryId(Integer sysDictionaryId) { + this.sysDictionaryId = sysDictionaryId; + } + + public String getShowValue() { + return showValue; + } + + public void setShowValue(String showValue) { + this.showValue = showValue; + } + + public String getRealValue() { + return realValue; + } + + public void setRealValue(String realValue) { + this.realValue = realValue; + } + + public Integer getSortValue() { + return sortValue; + } + + public void setSortValue(Integer sortValue) { + this.sortValue = sortValue; + } + + public Integer getAvailable() { + return available; + } + + public void setAvailable(Integer available) { + this.available = available; + } +} diff --git a/src/main/java/com/xmomen/module/system/model/CreateTask.java b/src/main/java/com/xmomen/module/system/model/CreateTask.java new file mode 100644 index 0000000..4eb4efb --- /dev/null +++ b/src/main/java/com/xmomen/module/system/model/CreateTask.java @@ -0,0 +1,15 @@ +package com.xmomen.module.system.model; + +import lombok.Data; + +import java.io.Serializable; + +/** + * Created by Jeng on 2016/5/31. + */ +public @Data +class CreateTask implements Serializable { + + private Integer taskHeadId; + private Integer executorId; +} diff --git a/src/main/java/com/xmomen/module/system/model/Dictionary.java b/src/main/java/com/xmomen/module/system/model/Dictionary.java new file mode 100644 index 0000000..1808235 --- /dev/null +++ b/src/main/java/com/xmomen/module/system/model/Dictionary.java @@ -0,0 +1,100 @@ +package com.xmomen.module.system.model; + +import org.hibernate.validator.constraints.NotEmpty; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * Created by Jeng on 16/4/2. + */ +public class Dictionary implements Serializable { + + private Integer id; + + /** + * 字典 + */ + private Integer sysDictionaryId; + + /** + * 显示值 + */ + private String showValue; + + /** + * 实际值 + */ + private String realValue; + + /** + * 排位 + */ + private Integer sortValue; + + /** + * 0-禁用,1-启用 + */ + private Integer available; + + /** + * 启用状态描述 + */ + private String availableDesc; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Integer getSysDictionaryId() { + return sysDictionaryId; + } + + public void setSysDictionaryId(Integer sysDictionaryId) { + this.sysDictionaryId = sysDictionaryId; + } + + public String getShowValue() { + return showValue; + } + + public void setShowValue(String showValue) { + this.showValue = showValue; + } + + public String getRealValue() { + return realValue; + } + + public void setRealValue(String realValue) { + this.realValue = realValue; + } + + public Integer getSortValue() { + return sortValue; + } + + public void setSortValue(Integer sortValue) { + this.sortValue = sortValue; + } + + public Integer getAvailable() { + return available; + } + + public void setAvailable(Integer available) { + this.available = available; + } + + public String getAvailableDesc() { + return availableDesc; + } + + public void setAvailableDesc(String availableDesc) { + this.availableDesc = availableDesc; + } +} diff --git a/src/main/java/com/xmomen/module/system/model/DictionaryGroup.java b/src/main/java/com/xmomen/module/system/model/DictionaryGroup.java new file mode 100644 index 0000000..46f0bdc --- /dev/null +++ b/src/main/java/com/xmomen/module/system/model/DictionaryGroup.java @@ -0,0 +1,76 @@ +package com.xmomen.module.system.model; + +import org.hibernate.validator.constraints.NotEmpty; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * Created by Jeng on 16/4/2. + */ +public class DictionaryGroup implements Serializable { + + /** + * 物理主键 + */ + private Integer id; + /** + * 字典编号 + */ + private String dictionaryCode; + + /** + * 字典描述 + */ + private String dictionaryDesc; + + /** + * 是否启用 + */ + private Integer available; + + /** + * 启用状态描述 + */ + private String availableDesc; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getDictionaryCode() { + return dictionaryCode; + } + + public void setDictionaryCode(String dictionaryCode) { + this.dictionaryCode = dictionaryCode; + } + + public String getDictionaryDesc() { + return dictionaryDesc; + } + + public void setDictionaryDesc(String dictionaryDesc) { + this.dictionaryDesc = dictionaryDesc; + } + + public Integer getAvailable() { + return available; + } + + public void setAvailable(Integer available) { + this.available = available; + } + + public String getAvailableDesc() { + return availableDesc; + } + + public void setAvailableDesc(String availableDesc) { + this.availableDesc = availableDesc; + } +} diff --git a/src/main/java/com/xmomen/module/system/model/UpdateDictionary.java b/src/main/java/com/xmomen/module/system/model/UpdateDictionary.java new file mode 100644 index 0000000..b386526 --- /dev/null +++ b/src/main/java/com/xmomen/module/system/model/UpdateDictionary.java @@ -0,0 +1,93 @@ +package com.xmomen.module.system.model; + +import org.hibernate.validator.constraints.NotEmpty; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * Created by Jeng on 16/4/2. + */ +public class UpdateDictionary implements Serializable { + + @NotNull + private Integer id; + + /** + * 字典 + */ + @NotNull + private Integer sysDictionaryId; + + /** + * 显示值 + */ + @NotNull + @NotEmpty + private String showValue; + + /** + * 实际值 + */ + @NotNull + @NotEmpty + private String realValue; + + /** + * 排位 + */ + private Integer sortValue; + + /** + * 0-禁用,1-启用 + */ + private Integer available; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Integer getSysDictionaryId() { + return sysDictionaryId; + } + + public void setSysDictionaryId(Integer sysDictionaryId) { + this.sysDictionaryId = sysDictionaryId; + } + + public String getShowValue() { + return showValue; + } + + public void setShowValue(String showValue) { + this.showValue = showValue; + } + + public String getRealValue() { + return realValue; + } + + public void setRealValue(String realValue) { + this.realValue = realValue; + } + + public Integer getSortValue() { + return sortValue; + } + + public void setSortValue(Integer sortValue) { + this.sortValue = sortValue; + } + + public Integer getAvailable() { + return available; + } + + public void setAvailable(Integer available) { + this.available = available; + } +} diff --git a/src/main/java/com/xmomen/module/system/service/DictionaryGroupService.java b/src/main/java/com/xmomen/module/system/service/DictionaryGroupService.java new file mode 100644 index 0000000..5c1eac4 --- /dev/null +++ b/src/main/java/com/xmomen/module/system/service/DictionaryGroupService.java @@ -0,0 +1,48 @@ +package com.xmomen.module.system.service; + +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.framework.utils.StringUtilsExt; +import com.xmomen.module.system.entity.SysDictionary; +import com.xmomen.module.system.entity.SysDictionaryExample; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * Created by Jeng on 16/4/2. + */ +@Service +public class DictionaryGroupService { + + @Autowired + MybatisDao mybatisDao; + + @Transactional + public SysDictionary createDictionary(SysDictionary sysDictionary){ + return mybatisDao.insertByModel(sysDictionary); + } + + public Page getDictionaryList(String keyword, Integer limit, Integer offset){ + String keywordP ="%" + StringUtilsExt.trimToEmpty(keyword) + "%"; + SysDictionaryExample sysDictionaryExample = new SysDictionaryExample(); + sysDictionaryExample.createCriteria() + .andDictionaryCodeLike(keywordP); + sysDictionaryExample.or().andDictionaryDescLike(keywordP); + return mybatisDao.selectPageByExample(sysDictionaryExample, limit, offset); + } + + public SysDictionary getDictionary(Integer id){ + return mybatisDao.selectByPrimaryKey(SysDictionary.class, id); + } + + public void updateDictionary(SysDictionary sysDictionary){ + mybatisDao.update(sysDictionary); + } + + public void deleteDictionary(Integer id){ + mybatisDao.deleteByPrimaryKey(SysDictionary.class, id); + } + + +} diff --git a/src/main/java/com/xmomen/module/system/service/DictionaryService.java b/src/main/java/com/xmomen/module/system/service/DictionaryService.java new file mode 100644 index 0000000..10a66b4 --- /dev/null +++ b/src/main/java/com/xmomen/module/system/service/DictionaryService.java @@ -0,0 +1,47 @@ +package com.xmomen.module.system.service; + +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.framework.utils.StringUtilsExt; +import com.xmomen.module.system.entity.SysDictionary; +import com.xmomen.module.system.entity.SysDictionaryExample; +import com.xmomen.module.system.entity.SysDictionaryParameter; +import com.xmomen.module.system.entity.SysDictionaryParameterExample; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * Created by Jeng on 16/4/2. + */ +@Service +public class DictionaryService { + + @Autowired + MybatisDao mybatisDao; + + @Transactional + public SysDictionaryParameter createDictionary(SysDictionaryParameter sysDictionaryParameter){ + return mybatisDao.insertByModel(sysDictionaryParameter); + } + + public Page getDictionaryList(Integer groupId, Integer limit, Integer offset){ + SysDictionaryParameterExample sysDictionaryExample = new SysDictionaryParameterExample(); + sysDictionaryExample.createCriteria().andSysDictionaryIdEqualTo(groupId); + return mybatisDao.selectPageByExample(sysDictionaryExample, limit, offset); + } + + public SysDictionaryParameter getDictionary(Integer id){ + return mybatisDao.selectByPrimaryKey(SysDictionaryParameter.class, id); + } + + public void updateDictionary(SysDictionaryParameter sysDictionary){ + mybatisDao.update(sysDictionary); + } + + public void deleteDictionary(Integer id){ + mybatisDao.deleteByPrimaryKey(SysDictionaryParameter.class, id); + } + + +} diff --git a/src/main/java/com/xmomen/module/system/service/OrganizationService.java b/src/main/java/com/xmomen/module/system/service/OrganizationService.java new file mode 100644 index 0000000..8f4421e --- /dev/null +++ b/src/main/java/com/xmomen/module/system/service/OrganizationService.java @@ -0,0 +1,165 @@ +package com.xmomen.module.system.service; + +import com.alibaba.fastjson.JSONObject; +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.module.system.entity.SysOrganization; +import com.xmomen.module.system.entity.SysOrganizationExample; +import com.xmomen.module.system.entity.SysUserOrganization; +import com.xmomen.module.system.entity.SysUserOrganizationExample; +import com.xmomen.module.system.mapper.OrganizationMapper; +import com.xmomen.module.system.model.OrganizationModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Created by Jeng on 16/3/25. + */ +@Service +public class OrganizationService { + + @Autowired + MybatisDao mybatisDao; + + @Autowired + OrganizationMapper organizationMapper; + + /** + * 查询树形组织结构 + * @param id + * @return + */ + public List getOrganizationTree(Integer id){ + SysOrganizationExample sysOrganizationExample = new SysOrganizationExample(); + List result = new ArrayList(); + if(id == null){ + sysOrganizationExample.createCriteria().andParentIdIsNull(); + List sysOrganizationList = mybatisDao.selectByExample(sysOrganizationExample); + for (SysOrganization sysOrganization : sysOrganizationList) { + List organizationModels = organizationMapper.getOrganizationTree(sysOrganization.getId()); + result.add(getTree(organizationModels, id)); + } + } + return result; + } + + private OrganizationModel getTree(List list, Integer id){ + OrganizationModel root = new OrganizationModel(); + for (OrganizationModel organization : list) { + if(organization.getParentId() == id){ + root = organization; + }else{ + getTreeNode(organization, root); + } + } + return root; + } + + /** + * 获取子节点 + * @param child + * @param parent + */ + private void getTreeNode(OrganizationModel child, OrganizationModel parent){ + if(child.getParentId() != null && child.getParentId().equals(parent.getId())){ + if(parent.getNodes() == null){ + List childes = new ArrayList(); + childes.add(child); + parent.setNodes(childes); + }else{ + parent.getNodes().add(child); + } + }else{ + if(parent.getNodes() != null && parent.getNodes().size() > 0){ + for (int i = 0; i < parent.getNodes().size(); i++) { + OrganizationModel childTree = parent.getNodes().get(i); + getTreeNode(child, childTree); + } + } + } + } + + /** + * 创建组织结构 + * @param sysOrganization + * @return + */ + @Transactional + public SysOrganization createOrganization(SysOrganization sysOrganization){ + return mybatisDao.saveByModel(sysOrganization); + } + + /** + * 绑定组织机构用户 + * @param organizationId + * @param userId + */ + @Transactional + public void bindOrganizationUser(Integer organizationId, Integer userId){ + SysUserOrganization sysUserOrganization = new SysUserOrganization(); + sysUserOrganization.setOrganizationId(organizationId); + sysUserOrganization.setUserId(userId); + mybatisDao.insert(sysUserOrganization); + } + + /** + * 批量绑定组织机构用户 + * @param organizationId + * @param userIds + */ + @Transactional + public void bindOrganizationUser(Integer organizationId, Integer... userIds){ + for (Integer userId : userIds) { + bindOrganizationUser(organizationId, userId); + } + } + + /** + * 解除组织机构用户关系 + * @param organizationId + * @param userId + */ + @Transactional + public void unBindOrganizationUser(Integer organizationId, Integer userId){ + SysUserOrganizationExample sysUserOrganizationExample = new SysUserOrganizationExample(); + sysUserOrganizationExample.createCriteria() + .andOrganizationIdEqualTo(organizationId) + .andUserIdEqualTo(userId); + mybatisDao.deleteByExample(sysUserOrganizationExample); + } + + /** + * 批量解除组织机构用户 + * @param organizationId + * @param userIds + */ + @Transactional + public void unBindOrganizationUser(Integer organizationId, Integer... userIds){ + for (Integer userId : userIds) { + unBindOrganizationUser(organizationId, userId); + } + } + + /** + * 更新组织机构 + * @param sysOrganization + */ + @Transactional + public void updateOrganization(SysOrganization sysOrganization){ + mybatisDao.save(sysOrganization); + } + + /** + * 删除机构组织 + * @param id + */ + @Transactional + public void delete(Integer id){ + mybatisDao.deleteByPrimaryKey(SysOrganization.class, id); + } +} diff --git a/src/main/java/com/xmomen/module/user/entity/SysPermissions.java b/src/main/java/com/xmomen/module/user/entity/SysPermissions.java new file mode 100644 index 0000000..2138bdd --- /dev/null +++ b/src/main/java/com/xmomen/module/user/entity/SysPermissions.java @@ -0,0 +1,90 @@ +package com.xmomen.module.user.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Table(name = "sys_permissions") +public class SysPermissions extends BaseMybatisModel { + /** + * 物理主键 + */ + private Integer id; + + /** + * 权限 + */ + private String permission; + + /** + * 权限描述 + */ + private String description; + + /** + * 是否生效:0-禁用,1-启用 + */ + private Integer available; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "PERMISSION") + public String getPermission() { + return permission; + } + + public void setPermission(String permission) { + this.permission = permission; + if(permission == null){ + removeValidField("permission"); + return; + } + addValidField("permission"); + } + + @Column(name = "DESCRIPTION") + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + if(description == null){ + removeValidField("description"); + return; + } + addValidField("description"); + } + + @Column(name = "AVAILABLE") + public Integer getAvailable() { + return available; + } + + public void setAvailable(Integer available) { + this.available = available; + if(available == null){ + removeValidField("available"); + return; + } + addValidField("available"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/user/entity/SysPermissionsExample.java b/src/main/java/com/xmomen/module/user/entity/SysPermissionsExample.java new file mode 100644 index 0000000..fbecc41 --- /dev/null +++ b/src/main/java/com/xmomen/module/user/entity/SysPermissionsExample.java @@ -0,0 +1,461 @@ +package com.xmomen.module.user.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisExample; +import java.util.ArrayList; +import java.util.List; + +public class SysPermissionsExample extends BaseMybatisExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public SysPermissionsExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("ID is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("ID is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Integer value) { + addCriterion("ID =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Integer value) { + addCriterion("ID <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Integer value) { + addCriterion("ID >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Integer value) { + addCriterion("ID >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Integer value) { + addCriterion("ID <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Integer value) { + addCriterion("ID <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("ID in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("ID not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Integer value1, Integer value2) { + addCriterion("ID between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Integer value1, Integer value2) { + addCriterion("ID not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andPermissionIsNull() { + addCriterion("PERMISSION is null"); + return (Criteria) this; + } + + public Criteria andPermissionIsNotNull() { + addCriterion("PERMISSION is not null"); + return (Criteria) this; + } + + public Criteria andPermissionEqualTo(String value) { + addCriterion("PERMISSION =", value, "permission"); + return (Criteria) this; + } + + public Criteria andPermissionNotEqualTo(String value) { + addCriterion("PERMISSION <>", value, "permission"); + return (Criteria) this; + } + + public Criteria andPermissionGreaterThan(String value) { + addCriterion("PERMISSION >", value, "permission"); + return (Criteria) this; + } + + public Criteria andPermissionGreaterThanOrEqualTo(String value) { + addCriterion("PERMISSION >=", value, "permission"); + return (Criteria) this; + } + + public Criteria andPermissionLessThan(String value) { + addCriterion("PERMISSION <", value, "permission"); + return (Criteria) this; + } + + public Criteria andPermissionLessThanOrEqualTo(String value) { + addCriterion("PERMISSION <=", value, "permission"); + return (Criteria) this; + } + + public Criteria andPermissionLike(String value) { + addCriterion("PERMISSION like", value, "permission"); + return (Criteria) this; + } + + public Criteria andPermissionNotLike(String value) { + addCriterion("PERMISSION not like", value, "permission"); + return (Criteria) this; + } + + public Criteria andPermissionIn(List values) { + addCriterion("PERMISSION in", values, "permission"); + return (Criteria) this; + } + + public Criteria andPermissionNotIn(List values) { + addCriterion("PERMISSION not in", values, "permission"); + return (Criteria) this; + } + + public Criteria andPermissionBetween(String value1, String value2) { + addCriterion("PERMISSION between", value1, value2, "permission"); + return (Criteria) this; + } + + public Criteria andPermissionNotBetween(String value1, String value2) { + addCriterion("PERMISSION not between", value1, value2, "permission"); + return (Criteria) this; + } + + public Criteria andDescriptionIsNull() { + addCriterion("DESCRIPTION is null"); + return (Criteria) this; + } + + public Criteria andDescriptionIsNotNull() { + addCriterion("DESCRIPTION is not null"); + return (Criteria) this; + } + + public Criteria andDescriptionEqualTo(String value) { + addCriterion("DESCRIPTION =", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotEqualTo(String value) { + addCriterion("DESCRIPTION <>", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionGreaterThan(String value) { + addCriterion("DESCRIPTION >", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionGreaterThanOrEqualTo(String value) { + addCriterion("DESCRIPTION >=", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionLessThan(String value) { + addCriterion("DESCRIPTION <", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionLessThanOrEqualTo(String value) { + addCriterion("DESCRIPTION <=", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionLike(String value) { + addCriterion("DESCRIPTION like", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotLike(String value) { + addCriterion("DESCRIPTION not like", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionIn(List values) { + addCriterion("DESCRIPTION in", values, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotIn(List values) { + addCriterion("DESCRIPTION not in", values, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionBetween(String value1, String value2) { + addCriterion("DESCRIPTION between", value1, value2, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotBetween(String value1, String value2) { + addCriterion("DESCRIPTION not between", value1, value2, "description"); + return (Criteria) this; + } + + public Criteria andAvailableIsNull() { + addCriterion("AVAILABLE is null"); + return (Criteria) this; + } + + public Criteria andAvailableIsNotNull() { + addCriterion("AVAILABLE is not null"); + return (Criteria) this; + } + + public Criteria andAvailableEqualTo(Integer value) { + addCriterion("AVAILABLE =", value, "available"); + return (Criteria) this; + } + + public Criteria andAvailableNotEqualTo(Integer value) { + addCriterion("AVAILABLE <>", value, "available"); + return (Criteria) this; + } + + public Criteria andAvailableGreaterThan(Integer value) { + addCriterion("AVAILABLE >", value, "available"); + return (Criteria) this; + } + + public Criteria andAvailableGreaterThanOrEqualTo(Integer value) { + addCriterion("AVAILABLE >=", value, "available"); + return (Criteria) this; + } + + public Criteria andAvailableLessThan(Integer value) { + addCriterion("AVAILABLE <", value, "available"); + return (Criteria) this; + } + + public Criteria andAvailableLessThanOrEqualTo(Integer value) { + addCriterion("AVAILABLE <=", value, "available"); + return (Criteria) this; + } + + public Criteria andAvailableIn(List values) { + addCriterion("AVAILABLE in", values, "available"); + return (Criteria) this; + } + + public Criteria andAvailableNotIn(List values) { + addCriterion("AVAILABLE not in", values, "available"); + return (Criteria) this; + } + + public Criteria andAvailableBetween(Integer value1, Integer value2) { + addCriterion("AVAILABLE between", value1, value2, "available"); + return (Criteria) this; + } + + public Criteria andAvailableNotBetween(Integer value1, Integer value2) { + addCriterion("AVAILABLE not between", value1, value2, "available"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/user/entity/SysRoles.java b/src/main/java/com/xmomen/module/user/entity/SysRoles.java new file mode 100644 index 0000000..b458fb8 --- /dev/null +++ b/src/main/java/com/xmomen/module/user/entity/SysRoles.java @@ -0,0 +1,90 @@ +package com.xmomen.module.user.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Table(name = "sys_roles") +public class SysRoles extends BaseMybatisModel { + /** + * 物理主键 + */ + private Integer id; + + /** + * 角色 + */ + private String role; + + /** + * 角色描述 + */ + private String description; + + /** + * 是否启用:0-禁用,1-启用 + */ + private Integer available; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "ROLE") + public String getRole() { + return role; + } + + public void setRole(String role) { + this.role = role; + if(role == null){ + removeValidField("role"); + return; + } + addValidField("role"); + } + + @Column(name = "DESCRIPTION") + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + if(description == null){ + removeValidField("description"); + return; + } + addValidField("description"); + } + + @Column(name = "AVAILABLE") + public Integer getAvailable() { + return available; + } + + public void setAvailable(Integer available) { + this.available = available; + if(available == null){ + removeValidField("available"); + return; + } + addValidField("available"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/user/entity/SysRolesExample.java b/src/main/java/com/xmomen/module/user/entity/SysRolesExample.java new file mode 100644 index 0000000..69e20c1 --- /dev/null +++ b/src/main/java/com/xmomen/module/user/entity/SysRolesExample.java @@ -0,0 +1,461 @@ +package com.xmomen.module.user.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisExample; +import java.util.ArrayList; +import java.util.List; + +public class SysRolesExample extends BaseMybatisExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public SysRolesExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("ID is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("ID is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Integer value) { + addCriterion("ID =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Integer value) { + addCriterion("ID <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Integer value) { + addCriterion("ID >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Integer value) { + addCriterion("ID >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Integer value) { + addCriterion("ID <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Integer value) { + addCriterion("ID <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("ID in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("ID not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Integer value1, Integer value2) { + addCriterion("ID between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Integer value1, Integer value2) { + addCriterion("ID not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andRoleIsNull() { + addCriterion("ROLE is null"); + return (Criteria) this; + } + + public Criteria andRoleIsNotNull() { + addCriterion("ROLE is not null"); + return (Criteria) this; + } + + public Criteria andRoleEqualTo(String value) { + addCriterion("ROLE =", value, "role"); + return (Criteria) this; + } + + public Criteria andRoleNotEqualTo(String value) { + addCriterion("ROLE <>", value, "role"); + return (Criteria) this; + } + + public Criteria andRoleGreaterThan(String value) { + addCriterion("ROLE >", value, "role"); + return (Criteria) this; + } + + public Criteria andRoleGreaterThanOrEqualTo(String value) { + addCriterion("ROLE >=", value, "role"); + return (Criteria) this; + } + + public Criteria andRoleLessThan(String value) { + addCriterion("ROLE <", value, "role"); + return (Criteria) this; + } + + public Criteria andRoleLessThanOrEqualTo(String value) { + addCriterion("ROLE <=", value, "role"); + return (Criteria) this; + } + + public Criteria andRoleLike(String value) { + addCriterion("ROLE like", value, "role"); + return (Criteria) this; + } + + public Criteria andRoleNotLike(String value) { + addCriterion("ROLE not like", value, "role"); + return (Criteria) this; + } + + public Criteria andRoleIn(List values) { + addCriterion("ROLE in", values, "role"); + return (Criteria) this; + } + + public Criteria andRoleNotIn(List values) { + addCriterion("ROLE not in", values, "role"); + return (Criteria) this; + } + + public Criteria andRoleBetween(String value1, String value2) { + addCriterion("ROLE between", value1, value2, "role"); + return (Criteria) this; + } + + public Criteria andRoleNotBetween(String value1, String value2) { + addCriterion("ROLE not between", value1, value2, "role"); + return (Criteria) this; + } + + public Criteria andDescriptionIsNull() { + addCriterion("DESCRIPTION is null"); + return (Criteria) this; + } + + public Criteria andDescriptionIsNotNull() { + addCriterion("DESCRIPTION is not null"); + return (Criteria) this; + } + + public Criteria andDescriptionEqualTo(String value) { + addCriterion("DESCRIPTION =", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotEqualTo(String value) { + addCriterion("DESCRIPTION <>", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionGreaterThan(String value) { + addCriterion("DESCRIPTION >", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionGreaterThanOrEqualTo(String value) { + addCriterion("DESCRIPTION >=", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionLessThan(String value) { + addCriterion("DESCRIPTION <", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionLessThanOrEqualTo(String value) { + addCriterion("DESCRIPTION <=", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionLike(String value) { + addCriterion("DESCRIPTION like", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotLike(String value) { + addCriterion("DESCRIPTION not like", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionIn(List values) { + addCriterion("DESCRIPTION in", values, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotIn(List values) { + addCriterion("DESCRIPTION not in", values, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionBetween(String value1, String value2) { + addCriterion("DESCRIPTION between", value1, value2, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotBetween(String value1, String value2) { + addCriterion("DESCRIPTION not between", value1, value2, "description"); + return (Criteria) this; + } + + public Criteria andAvailableIsNull() { + addCriterion("AVAILABLE is null"); + return (Criteria) this; + } + + public Criteria andAvailableIsNotNull() { + addCriterion("AVAILABLE is not null"); + return (Criteria) this; + } + + public Criteria andAvailableEqualTo(Integer value) { + addCriterion("AVAILABLE =", value, "available"); + return (Criteria) this; + } + + public Criteria andAvailableNotEqualTo(Integer value) { + addCriterion("AVAILABLE <>", value, "available"); + return (Criteria) this; + } + + public Criteria andAvailableGreaterThan(Integer value) { + addCriterion("AVAILABLE >", value, "available"); + return (Criteria) this; + } + + public Criteria andAvailableGreaterThanOrEqualTo(Integer value) { + addCriterion("AVAILABLE >=", value, "available"); + return (Criteria) this; + } + + public Criteria andAvailableLessThan(Integer value) { + addCriterion("AVAILABLE <", value, "available"); + return (Criteria) this; + } + + public Criteria andAvailableLessThanOrEqualTo(Integer value) { + addCriterion("AVAILABLE <=", value, "available"); + return (Criteria) this; + } + + public Criteria andAvailableIn(List values) { + addCriterion("AVAILABLE in", values, "available"); + return (Criteria) this; + } + + public Criteria andAvailableNotIn(List values) { + addCriterion("AVAILABLE not in", values, "available"); + return (Criteria) this; + } + + public Criteria andAvailableBetween(Integer value1, Integer value2) { + addCriterion("AVAILABLE between", value1, value2, "available"); + return (Criteria) this; + } + + public Criteria andAvailableNotBetween(Integer value1, Integer value2) { + addCriterion("AVAILABLE not between", value1, value2, "available"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/user/entity/SysRolesPermissionsExample.java b/src/main/java/com/xmomen/module/user/entity/SysRolesPermissionsExample.java new file mode 100644 index 0000000..34de622 --- /dev/null +++ b/src/main/java/com/xmomen/module/user/entity/SysRolesPermissionsExample.java @@ -0,0 +1,382 @@ +package com.xmomen.module.user.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisExample; + +import java.util.ArrayList; +import java.util.List; + +public class SysRolesPermissionsExample extends BaseMybatisExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public SysRolesPermissionsExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("ID is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("ID is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Integer value) { + addCriterion("ID =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Integer value) { + addCriterion("ID <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Integer value) { + addCriterion("ID >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Integer value) { + addCriterion("ID >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Integer value) { + addCriterion("ID <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Integer value) { + addCriterion("ID <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("ID in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("ID not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Integer value1, Integer value2) { + addCriterion("ID between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Integer value1, Integer value2) { + addCriterion("ID not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andRoleIdIsNull() { + addCriterion("ROLE_ID is null"); + return (Criteria) this; + } + + public Criteria andRoleIdIsNotNull() { + addCriterion("ROLE_ID is not null"); + return (Criteria) this; + } + + public Criteria andRoleIdEqualTo(Integer value) { + addCriterion("ROLE_ID =", value, "roleId"); + return (Criteria) this; + } + + public Criteria andRoleIdNotEqualTo(Integer value) { + addCriterion("ROLE_ID <>", value, "roleId"); + return (Criteria) this; + } + + public Criteria andRoleIdGreaterThan(Integer value) { + addCriterion("ROLE_ID >", value, "roleId"); + return (Criteria) this; + } + + public Criteria andRoleIdGreaterThanOrEqualTo(Integer value) { + addCriterion("ROLE_ID >=", value, "roleId"); + return (Criteria) this; + } + + public Criteria andRoleIdLessThan(Integer value) { + addCriterion("ROLE_ID <", value, "roleId"); + return (Criteria) this; + } + + public Criteria andRoleIdLessThanOrEqualTo(Integer value) { + addCriterion("ROLE_ID <=", value, "roleId"); + return (Criteria) this; + } + + public Criteria andRoleIdIn(List values) { + addCriterion("ROLE_ID in", values, "roleId"); + return (Criteria) this; + } + + public Criteria andRoleIdNotIn(List values) { + addCriterion("ROLE_ID not in", values, "roleId"); + return (Criteria) this; + } + + public Criteria andRoleIdBetween(Integer value1, Integer value2) { + addCriterion("ROLE_ID between", value1, value2, "roleId"); + return (Criteria) this; + } + + public Criteria andRoleIdNotBetween(Integer value1, Integer value2) { + addCriterion("ROLE_ID not between", value1, value2, "roleId"); + return (Criteria) this; + } + + public Criteria andPermissionIdIsNull() { + addCriterion("PERMISSION_ID is null"); + return (Criteria) this; + } + + public Criteria andPermissionIdIsNotNull() { + addCriterion("PERMISSION_ID is not null"); + return (Criteria) this; + } + + public Criteria andPermissionIdEqualTo(Integer value) { + addCriterion("PERMISSION_ID =", value, "permissionId"); + return (Criteria) this; + } + + public Criteria andPermissionIdNotEqualTo(Integer value) { + addCriterion("PERMISSION_ID <>", value, "permissionId"); + return (Criteria) this; + } + + public Criteria andPermissionIdGreaterThan(Integer value) { + addCriterion("PERMISSION_ID >", value, "permissionId"); + return (Criteria) this; + } + + public Criteria andPermissionIdGreaterThanOrEqualTo(Integer value) { + addCriterion("PERMISSION_ID >=", value, "permissionId"); + return (Criteria) this; + } + + public Criteria andPermissionIdLessThan(Integer value) { + addCriterion("PERMISSION_ID <", value, "permissionId"); + return (Criteria) this; + } + + public Criteria andPermissionIdLessThanOrEqualTo(Integer value) { + addCriterion("PERMISSION_ID <=", value, "permissionId"); + return (Criteria) this; + } + + public Criteria andPermissionIdIn(List values) { + addCriterion("PERMISSION_ID in", values, "permissionId"); + return (Criteria) this; + } + + public Criteria andPermissionIdNotIn(List values) { + addCriterion("PERMISSION_ID not in", values, "permissionId"); + return (Criteria) this; + } + + public Criteria andPermissionIdBetween(Integer value1, Integer value2) { + addCriterion("PERMISSION_ID between", value1, value2, "permissionId"); + return (Criteria) this; + } + + public Criteria andPermissionIdNotBetween(Integer value1, Integer value2) { + addCriterion("PERMISSION_ID not between", value1, value2, "permissionId"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/user/entity/SysUsers.java b/src/main/java/com/xmomen/module/user/entity/SysUsers.java new file mode 100644 index 0000000..c0be1f3 --- /dev/null +++ b/src/main/java/com/xmomen/module/user/entity/SysUsers.java @@ -0,0 +1,243 @@ +package com.xmomen.module.user.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "sys_users") +public class SysUsers extends BaseMybatisModel { + /** + * + */ + private Integer id; + + /** + * 登陆用户名 + */ + private String username; + + /** + * 真实姓名 + */ + private String realname; + + /** + * 密码盐值 + */ + private String salt; + + /** + * 登陆密码 + */ + private String password; + + /** + * 年龄 + */ + private Integer age; + + /** + * 1-男,2女 + */ + private Integer sex; + + /** + * 邮箱 + */ + private String email; + + /** + * QQ + */ + private String qq; + + /** + * 手机号 + */ + private String phoneNumber; + + /** + * 办公室电话 + */ + private String officeTel; + + /** + * 0-禁用,1-启用 + */ + private Integer locked; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "USERNAME") + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + if(username == null){ + removeValidField("username"); + return; + } + addValidField("username"); + } + + @Column(name = "REALNAME") + public String getRealname() { + return realname; + } + + public void setRealname(String realname) { + this.realname = realname; + if(realname == null){ + removeValidField("realname"); + return; + } + addValidField("realname"); + } + + @Column(name = "SALT") + public String getSalt() { + return salt; + } + + public void setSalt(String salt) { + this.salt = salt; + if(salt == null){ + removeValidField("salt"); + return; + } + addValidField("salt"); + } + + @Column(name = "PASSWORD") + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + if(password == null){ + removeValidField("password"); + return; + } + addValidField("password"); + } + + @Column(name = "AGE") + public Integer getAge() { + return age; + } + + public void setAge(Integer age) { + this.age = age; + if(age == null){ + removeValidField("age"); + return; + } + addValidField("age"); + } + + @Column(name = "SEX") + public Integer getSex() { + return sex; + } + + public void setSex(Integer sex) { + this.sex = sex; + if(sex == null){ + removeValidField("sex"); + return; + } + addValidField("sex"); + } + + @Column(name = "EMAIL") + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + if(email == null){ + removeValidField("email"); + return; + } + addValidField("email"); + } + + @Column(name = "QQ") + public String getQq() { + return qq; + } + + public void setQq(String qq) { + this.qq = qq; + if(qq == null){ + removeValidField("qq"); + return; + } + addValidField("qq"); + } + + @Column(name = "PHONE_NUMBER") + public String getPhoneNumber() { + return phoneNumber; + } + + public void setPhoneNumber(String phoneNumber) { + this.phoneNumber = phoneNumber; + if(phoneNumber == null){ + removeValidField("phoneNumber"); + return; + } + addValidField("phoneNumber"); + } + + @Column(name = "OFFICE_TEL") + public String getOfficeTel() { + return officeTel; + } + + public void setOfficeTel(String officeTel) { + this.officeTel = officeTel; + if(officeTel == null){ + removeValidField("officeTel"); + return; + } + addValidField("officeTel"); + } + + @Column(name = "LOCKED") + public Integer getLocked() { + return locked; + } + + public void setLocked(Integer locked) { + this.locked = locked; + if(locked == null){ + removeValidField("locked"); + return; + } + addValidField("locked"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/user/entity/SysUsersRoles.java b/src/main/java/com/xmomen/module/user/entity/SysUsersRoles.java new file mode 100644 index 0000000..9e5a692 --- /dev/null +++ b/src/main/java/com/xmomen/module/user/entity/SysUsersRoles.java @@ -0,0 +1,68 @@ +package com.xmomen.module.user.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; + +import javax.persistence.*; + +@Entity +@Table(name = "sys_users_roles") +public class SysUsersRoles extends BaseMybatisModel { + /** + * 物理主键 + */ + private Integer id; + + /** + * 用户表关联主键 + */ + private Integer userId; + + /** + * 角色表关联主键 + */ + private Integer roleId; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "USER_ID") + public Integer getUserId() { + return userId; + } + + public void setUserId(Integer userId) { + this.userId = userId; + if(userId == null){ + removeValidField("userId"); + return; + } + addValidField("userId"); + } + + @Column(name = "ROLE_ID") + public Integer getRoleId() { + return roleId; + } + + public void setRoleId(Integer roleId) { + this.roleId = roleId; + if(roleId == null){ + removeValidField("roleId"); + return; + } + addValidField("roleId"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/user/entity/SysUsersRolesExample.java b/src/main/java/com/xmomen/module/user/entity/SysUsersRolesExample.java new file mode 100644 index 0000000..a4e2259 --- /dev/null +++ b/src/main/java/com/xmomen/module/user/entity/SysUsersRolesExample.java @@ -0,0 +1,382 @@ +package com.xmomen.module.user.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisExample; + +import java.util.ArrayList; +import java.util.List; + +public class SysUsersRolesExample extends BaseMybatisExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public SysUsersRolesExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("ID is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("ID is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Integer value) { + addCriterion("ID =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Integer value) { + addCriterion("ID <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Integer value) { + addCriterion("ID >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Integer value) { + addCriterion("ID >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Integer value) { + addCriterion("ID <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Integer value) { + addCriterion("ID <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("ID in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("ID not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Integer value1, Integer value2) { + addCriterion("ID between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Integer value1, Integer value2) { + addCriterion("ID not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andUserIdIsNull() { + addCriterion("USER_ID is null"); + return (Criteria) this; + } + + public Criteria andUserIdIsNotNull() { + addCriterion("USER_ID is not null"); + return (Criteria) this; + } + + public Criteria andUserIdEqualTo(Integer value) { + addCriterion("USER_ID =", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdNotEqualTo(Integer value) { + addCriterion("USER_ID <>", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdGreaterThan(Integer value) { + addCriterion("USER_ID >", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdGreaterThanOrEqualTo(Integer value) { + addCriterion("USER_ID >=", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdLessThan(Integer value) { + addCriterion("USER_ID <", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdLessThanOrEqualTo(Integer value) { + addCriterion("USER_ID <=", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdIn(List values) { + addCriterion("USER_ID in", values, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdNotIn(List values) { + addCriterion("USER_ID not in", values, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdBetween(Integer value1, Integer value2) { + addCriterion("USER_ID between", value1, value2, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdNotBetween(Integer value1, Integer value2) { + addCriterion("USER_ID not between", value1, value2, "userId"); + return (Criteria) this; + } + + public Criteria andRoleIdIsNull() { + addCriterion("ROLE_ID is null"); + return (Criteria) this; + } + + public Criteria andRoleIdIsNotNull() { + addCriterion("ROLE_ID is not null"); + return (Criteria) this; + } + + public Criteria andRoleIdEqualTo(Integer value) { + addCriterion("ROLE_ID =", value, "roleId"); + return (Criteria) this; + } + + public Criteria andRoleIdNotEqualTo(Integer value) { + addCriterion("ROLE_ID <>", value, "roleId"); + return (Criteria) this; + } + + public Criteria andRoleIdGreaterThan(Integer value) { + addCriterion("ROLE_ID >", value, "roleId"); + return (Criteria) this; + } + + public Criteria andRoleIdGreaterThanOrEqualTo(Integer value) { + addCriterion("ROLE_ID >=", value, "roleId"); + return (Criteria) this; + } + + public Criteria andRoleIdLessThan(Integer value) { + addCriterion("ROLE_ID <", value, "roleId"); + return (Criteria) this; + } + + public Criteria andRoleIdLessThanOrEqualTo(Integer value) { + addCriterion("ROLE_ID <=", value, "roleId"); + return (Criteria) this; + } + + public Criteria andRoleIdIn(List values) { + addCriterion("ROLE_ID in", values, "roleId"); + return (Criteria) this; + } + + public Criteria andRoleIdNotIn(List values) { + addCriterion("ROLE_ID not in", values, "roleId"); + return (Criteria) this; + } + + public Criteria andRoleIdBetween(Integer value1, Integer value2) { + addCriterion("ROLE_ID between", value1, value2, "roleId"); + return (Criteria) this; + } + + public Criteria andRoleIdNotBetween(Integer value1, Integer value2) { + addCriterion("ROLE_ID not between", value1, value2, "roleId"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/user/entity/mapper/SysPermissionsMapper.java b/src/main/java/com/xmomen/module/user/entity/mapper/SysPermissionsMapper.java new file mode 100644 index 0000000..5ac64ee --- /dev/null +++ b/src/main/java/com/xmomen/module/user/entity/mapper/SysPermissionsMapper.java @@ -0,0 +1,16 @@ +package com.xmomen.module.user.entity.mapper; + +import com.xmomen.module.user.entity.SysPermissions; +import com.xmomen.module.user.entity.SysPermissionsExample; +import com.xmomen.framework.mybatis.mapper.MybatisMapper; +import org.apache.ibatis.annotations.Param; + +public interface SysPermissionsMapper extends MybatisMapper { + int countByExample(SysPermissionsExample example); + + int deleteByExample(SysPermissionsExample example); + + int insertSelective(SysPermissions record); + + int updateByExampleSelective(@Param("record") SysPermissions record, @Param("example") SysPermissionsExample example); +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/user/entity/mapper/SysRolesPermissionsMapper.java b/src/main/java/com/xmomen/module/user/entity/mapper/SysRolesPermissionsMapper.java new file mode 100644 index 0000000..2d919c6 --- /dev/null +++ b/src/main/java/com/xmomen/module/user/entity/mapper/SysRolesPermissionsMapper.java @@ -0,0 +1,16 @@ +package com.xmomen.module.user.entity.mapper; + +import com.xmomen.module.user.entity.SysRolesPermissionsExample; +import com.xmomen.module.user.entity.SysRolesPermissions; +import com.xmomen.framework.mybatis.mapper.MybatisMapper; +import org.apache.ibatis.annotations.Param; + +public interface SysRolesPermissionsMapper extends MybatisMapper { + int countByExample(SysRolesPermissionsExample example); + + int deleteByExample(SysRolesPermissionsExample example); + + int insertSelective(SysRolesPermissions record); + + int updateByExampleSelective(@Param("record") SysRolesPermissions record, @Param("example") SysRolesPermissionsExample example); +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/wb/controller/CommonMemberController.java b/src/main/java/com/xmomen/module/wb/controller/CommonMemberController.java new file mode 100644 index 0000000..f255bf8 --- /dev/null +++ b/src/main/java/com/xmomen/module/wb/controller/CommonMemberController.java @@ -0,0 +1,269 @@ +package com.xmomen.module.wb.controller; + +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.validation.Valid; + +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authc.DisabledAccountException; +import org.apache.shiro.authc.IncorrectCredentialsException; +import org.apache.shiro.authc.UnknownAccountException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.xmomen.framework.exception.BusinessException; +import com.xmomen.framework.web.rest.RestError; +import com.xmomen.module.base.entity.CdMember; +import com.xmomen.module.base.model.CreateMember; +import com.xmomen.module.base.service.MemberService; +import com.xmomen.module.core.web.filter.FormAuthenticationFilterExt; +import com.xmomen.module.member.model.MemberAddressCreate; +//import com.xmomen.module.sms.api.SmsMessageService; +import com.xmomen.module.sms.api.SmsResponse; +import com.xmomen.module.sms.model.IdentifyCodeModel; +import com.xmomen.module.sms.util.GlobalIdentifyCodeManager; +import com.xmomen.module.wb.model.PcMember; +import com.xmomen.module.wb.model.PcUpdatePasswordModel; +import com.xmomen.module.wx.pay.common.RandomStringGenerator; + +@RestController +public class CommonMemberController extends PcBaseController{ + + @Autowired + MemberService memberService; + + /** + * 普通用户注册 + */ + @RequestMapping(value = "/member/register", method = RequestMethod.POST) + public CdMember register(@RequestBody @Valid PcMember createPcMember) throws BusinessException { + CreateMember createMember = new CreateMember(); + createMember.setPhoneNumber(createPcMember.getPhoneNumber()); + createMember.setPassword(createPcMember.getPassword()); + createMember.setMemberAddressList(new ArrayList()); + createMember.setEmail(createPcMember.getEmail()); + String phoneNumber = createPcMember.getPhoneNumber(); + if(!StringUtils.isNumeric(phoneNumber) || phoneNumber.length() != 11) { + throw new BusinessException("不合法的手机号码"); + } + String identifyCodeKey = createPcMember.getPhoneNumber(); + IdentifyCodeModel identifyCodeModel = GlobalIdentifyCodeManager.getIdentifyCode(identifyCodeKey); + if(identifyCodeModel == null || identifyCodeModel.isExpired()) { + throw new BusinessException("验证码未生成或者已过期"); + } + if(!createPcMember.getPhoneIdentifyCode().equals(identifyCodeModel.getIdentifyCode())) { + throw new BusinessException("验证码不正确"); + } + CdMember memberQuery = new CdMember(); + memberQuery.setPhoneNumber(phoneNumber); + CdMember cdMember = memberService.findMember(memberQuery); + if(cdMember == null) { + cdMember = memberService.createMember(createMember); + } else if(StringUtils.isEmpty(cdMember.getPassword())) { + memberService.updatePassword(cdMember.getId(), createPcMember.getPassword(), ""); + } else { + throw new BusinessException("用户已被注册"); + } + cdMember.setPassword(""); + return cdMember; + } + + @RequestMapping(value = "/member/login", method = RequestMethod.POST) + public ResponseEntity login(HttpServletRequest request, Model model){ + Map result = new HashMap<>(); + if(SecurityUtils.getSubject().isAuthenticated()){ + String username = (String) SecurityUtils.getSubject().getPrincipal(); + result.put("status", 200); + result.put("username", username); + return new ResponseEntity(result, HttpStatus.OK); + } + String exceptionClassName = (String) request.getAttribute(FormAuthenticationFilterExt.DEFAULT_ERROR_KEY_ATTRIBUTE_NAME); + String error = null; + RestError restError = new RestError(); + restError.setTimestamp(new Date()); + if(DisabledAccountException.class.getName().equals(exceptionClassName)){ + restError.setMessage("该账号已被锁定,请联系客服。"); + }else if(UnknownAccountException.class.getName().equals(exceptionClassName)) { + restError.setMessage("用户名不存在"); + } else if(IncorrectCredentialsException.class.getName().equals(exceptionClassName)) { + restError.setMessage("用户名或密码错误"); + } else if(exceptionClassName != null) { + restError.setMessage( "登录失败:" + exceptionClassName); + } + restError.setStatus(401); + return new ResponseEntity(restError, HttpStatus.UNAUTHORIZED); + } + + /** + * 会员账号 + * @return + */ + @RequestMapping(value = "/member/account", method = RequestMethod.GET) + public CdMember accountSetting(){ + Integer memberId = getCurrentMemberId(); + CdMember memberModel = memberService.getOneMemberModel(String.valueOf(memberId)); + return memberModel; + } + + @RequestMapping(value = "/member/logout") + public ResponseEntity logout(HttpServletRequest request){ + String message = "登出成功"; + try { + SecurityUtils.getSubject().logout(); + } catch (Exception e) { + message = "登出失败"; + } + return new ResponseEntity(message, HttpStatus.UNAUTHORIZED); + } + + @RequestMapping(value = "/member/phonecode") + public SmsResponse sendSms(@RequestParam(value="phone") String phoneNumber) throws Exception { + if(!StringUtils.isNumeric(phoneNumber) || phoneNumber.length() != 11) { + throw new BusinessException("不合法的手机号码"); + } + CdMember memberQuery = new CdMember(); + memberQuery.setPhoneNumber(phoneNumber); + CdMember cdMember = memberService.findMember(memberQuery); + if(cdMember != null){ + throw new BusinessException("该手机号码已注册"); + } +// SmsResponse smsResponse = smsMessageService.sendSingleRequest(phoneNumber); + + return new SmsResponse(); + } + + /** + * 发送验证码到用户手机,用户找回密码(密码重置)操作 + * @param phoneNumber + * @return + * @throws Exception + @RequestMapping(value = "/member/operationcode") + public SmsResponse getOperationCode(@RequestParam(value="phone") String phoneNumber) throws Exception { + if(!StringUtils.isNumeric(phoneNumber) || phoneNumber.length() != 11) { + throw new BusinessException("不合法的手机号码"); + } + CdMember memberQuery = new CdMember(); + memberQuery.setPhoneNumber(phoneNumber); + CdMember cdMember = memberService.findMember(memberQuery); + if(cdMember == null){ + throw new BusinessException("该用户不存在"); + } + String operationCode = RandomStringGenerator.getRandomNumberStrByLength(6); + SmsResponse smsResponse = smsMessageService.sendPasswordInfo(phoneNumber, operationCode); + if(smsResponse == null) { + throw new Exception("调用SMS接口失败"); + } else { + GlobalIdentifyCodeManager.updateOperationCode(phoneNumber, operationCode); + } + return smsResponse; + SmsResponse smsResponse = smsMessageService.sendSingleRequest(phoneNumber); + if(smsResponse == null) { + throw new Exception("调用SMS接口失败"); + } + return smsResponse; + } + */ + + /** + * 根据发送到手机的验证码,手动输入密码达到重置密码的目的 + * @param pcMember + * @return + * @throws Exception + */ + @RequestMapping(value = "/member/resetpassword", method = RequestMethod.POST) + public CdMember resetPassword(@RequestBody @Valid PcMember pcMember) throws Exception { + String phoneNumber = pcMember.getPhoneNumber(); + if(!StringUtils.isNumeric(phoneNumber) || phoneNumber.length() != 11) { + throw new BusinessException("不合法的手机号码"); + } + String identifyCodeKey = pcMember.getPhoneNumber(); + //IdentifyCodeModel identifyCodeModel = GlobalIdentifyCodeManager.getOperationCode(identifyCodeKey); + IdentifyCodeModel identifyCodeModel = GlobalIdentifyCodeManager.getIdentifyCode(identifyCodeKey); + if(identifyCodeModel == null || identifyCodeModel.isExpired()) { + throw new BusinessException("验证码未生成或者已过期"); + } + if(!pcMember.getPhoneIdentifyCode().equals(identifyCodeModel.getIdentifyCode())) { + throw new BusinessException("验证码不正确"); + } + CdMember memberQuery = new CdMember(); + memberQuery.setPhoneNumber(phoneNumber); + CdMember cdMember = memberService.findMember(memberQuery); + if(cdMember == null) { + throw new BusinessException("该用户不存在"); + } + boolean success = memberService.resetPassword(cdMember.getId(), pcMember.getPassword()); + if(!success) { + throw new BusinessException("密码重置失败"); + } + cdMember.setPassword(""); + return cdMember; + } + + /** + * 直接发送随机生成的6位数密码到手机,达到重置密码的目的 + * @param phoneNumber + * @return + * @throws Exception + */ + @RequestMapping(value = "/member/resetpassword", method = RequestMethod.GET) + public SmsResponse resetPassword(@RequestParam(value="phone") String phoneNumber) throws Exception { + if(!StringUtils.isNumeric(phoneNumber) || phoneNumber.length() != 11) { + throw new BusinessException("不合法的手机号码"); + } + CdMember memberQuery = new CdMember(); + memberQuery.setPhoneNumber(phoneNumber); + CdMember cdMember = memberService.findMember(memberQuery); + if(cdMember == null) { + throw new BusinessException("该用户不存在"); + } + String newPassword = RandomStringGenerator.getRandomNumberStrByLength(6); + String oldPassword = cdMember.getPassword(); + if(oldPassword == null) { + oldPassword = ""; + } + boolean success = memberService.updatePassword(cdMember.getId(), newPassword, oldPassword); + if(success) { +// SmsResponse smsResponse = smsMessageService.sendPasswordInfo(phoneNumber, newPassword); + + return new SmsResponse(); + } else { + throw new BusinessException("密码重置失败"); + } + } + + /** + * 更新密码 + * @param updatePasswordModel + * @return + * @throws BusinessException + */ + @RequestMapping(value = "/member/changepassword", method = RequestMethod.POST) + public CdMember changePassword(@RequestBody @Valid PcUpdatePasswordModel updatePasswordModel) throws BusinessException { + String phoneNumber = updatePasswordModel.getPhoneNumber(); + CdMember memberQuery = new CdMember(); + memberQuery.setPhoneNumber(phoneNumber); + CdMember cdMember = memberService.findMember(memberQuery); + if(cdMember == null) { + throw new BusinessException("当前用户不存在"); + } else { + boolean success = memberService.updatePassword(cdMember.getId(), updatePasswordModel.getPassword(), updatePasswordModel.getOldPassword()); + if(!success) { + throw new BusinessException("密码不正确"); + } + } + cdMember.setPassword(""); + return cdMember; + } +} diff --git a/src/main/java/com/xmomen/module/wb/controller/PcBaseController.java b/src/main/java/com/xmomen/module/wb/controller/PcBaseController.java new file mode 100644 index 0000000..8f81ef5 --- /dev/null +++ b/src/main/java/com/xmomen/module/wb/controller/PcBaseController.java @@ -0,0 +1,23 @@ +package com.xmomen.module.wb.controller; + +import com.xmomen.module.base.constant.AppConstants; +import org.apache.shiro.SecurityUtils; +import org.springframework.web.bind.annotation.RestController; + +/** + * Created by tanxinzheng on 17/5/12. + */ +@RestController +public class PcBaseController { + + /** + * 获取当前登录memberId + * @return + */ + protected Integer getCurrentMemberId(){ + Integer memberId = (Integer) SecurityUtils.getSubject().getSession().getAttribute(AppConstants.SESSION_USER_ID_KEY); + return memberId; + } + + +} diff --git a/src/main/java/com/xmomen/module/wb/controller/PcCouponController.java b/src/main/java/com/xmomen/module/wb/controller/PcCouponController.java new file mode 100644 index 0000000..9eb7c42 --- /dev/null +++ b/src/main/java/com/xmomen/module/wb/controller/PcCouponController.java @@ -0,0 +1,55 @@ +package com.xmomen.module.wb.controller; + +import java.util.List; + +import org.apache.shiro.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.xmomen.module.base.constant.AppConstants; +import com.xmomen.module.base.service.CouponService; +import com.xmomen.module.wx.module.coupon.model.CouponQueryModel; +import com.xmomen.module.wx.module.coupon.model.WxCouponModel; + +@RestController +@RequestMapping("/wb/coupon") +public class PcCouponController { + + @Autowired + private CouponService couponService; + + @RequestMapping(method = RequestMethod.GET) + List getCoupons(@RequestParam(value="couponType") Integer couponType, + @RequestParam(value="useable", required = false) Boolean useable) { + Integer memberId = (Integer) SecurityUtils.getSubject().getSession().getAttribute(AppConstants.SESSION_USER_ID_KEY); + CouponQueryModel couponQueryModel = new CouponQueryModel(); + couponQueryModel.setCdUserId(memberId); + couponQueryModel.setCouponType(couponType); + couponQueryModel.setUseable(useable); + return couponService.getMyCouponList(couponQueryModel); + } + + @RequestMapping(value="/bind", method = RequestMethod.POST) + Boolean bindCoupon(@RequestParam(value="couponNumber", required=true) String couponNumber, + @RequestParam(value="password", required = false) String password) throws Exception { + Integer memberId = (Integer) SecurityUtils.getSubject().getSession().getAttribute(AppConstants.SESSION_USER_ID_KEY); + return couponService.bindMember(couponNumber, memberId, password); + } + + @RequestMapping(value="/validate", method = RequestMethod.GET) + Boolean validateCoupon(@RequestParam(value="couponNumber", required=true) String couponNumber, + @RequestParam(value="password", required = false) String password) { + return couponService.validate(couponNumber, password); + } + + @RequestMapping(value="/reset", method = RequestMethod.POST) + Boolean resetPasword(@RequestParam(value="couponNumber", required=true) String couponNumber, + @RequestParam(value="password", required = false) String password, + @RequestParam(value="newPassword", required = true) String newPassword) throws Exception { + Integer memberId = (Integer) SecurityUtils.getSubject().getSession().getAttribute(AppConstants.SESSION_USER_ID_KEY); + return couponService.resetPasword(couponNumber, password, newPassword, memberId); + } +} diff --git a/src/main/java/com/xmomen/module/wb/model/PcMemberInfo.java b/src/main/java/com/xmomen/module/wb/model/PcMemberInfo.java new file mode 100644 index 0000000..c299213 --- /dev/null +++ b/src/main/java/com/xmomen/module/wb/model/PcMemberInfo.java @@ -0,0 +1,11 @@ +package com.xmomen.module.wb.model; + +import lombok.Data; + +public @Data class PcMemberInfo { + + private String name; + private Integer memberId; + private String phoneNumber; + private String email; +} diff --git a/src/main/java/com/xmomen/module/wx/constants/AppCodeConsts.java b/src/main/java/com/xmomen/module/wx/constants/AppCodeConsts.java new file mode 100644 index 0000000..01dcb60 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/constants/AppCodeConsts.java @@ -0,0 +1,59 @@ +package com.xmomen.module.wx.constants; + +/** + * 微信模板常量类 + */ +public class AppCodeConsts { + + /** + * 微信模块 + */ + public static final String APP_WX = "WX"; + + public static final String MSG_TYPE = "msgType"; + + public static final String MSG_ID = "msgId"; + + public static final String FROM_USER_NAME = "fromUserName"; + + public static final String CREATE_TIME = "createTime"; + + //模板消息发送成功 + public final static int TEMPLATE_MESSAGE_SEND_SUCCESS = 1; + + //模板消息发送失败 + public final static int TEMPLATE_MESSAGE_SEND_FAIL = 0; + + //模板消息接收成功 + public final static int TEMPLATE_MESSAGE_RECEIVE_SUCCESS = 1; + + //模板消息接收失败 + public final static int TEMPLATE_MESSAGE_RECEIVE_FAIL = 0; + + //自动回复 + public final static int AUTO_REPLIED = 1; + + //快速回复 + public final static int QUICK_REPLIED = 1; + + //图片存储路径 + public final static String UPLOAD_IMAGE_ROOT_PATH = "/upload/weixinImage/"; + + //语音存储路径 + public final static String UPLOAD_VOICE_ROOT_PATH = "/upload/weixinVoice/"; + + //视频存储路径 + public final static String UPLOAD_VIDEO_ROOT_PATH = "/upload/weixinVideo/"; + + //MP3文件后缀 + public final static String MP3 = ".mp3"; + + //视频文件后缀 + public final static String MP4 = ".mp4"; + + //图片文件后缀 + public final static String JPEG = ".JPEG"; + + //文件夹分离器 + public final static String separator = "/"; +} diff --git a/src/main/java/com/xmomen/module/wx/constants/EventEnum.java b/src/main/java/com/xmomen/module/wx/constants/EventEnum.java new file mode 100644 index 0000000..3c57b1b --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/constants/EventEnum.java @@ -0,0 +1,28 @@ +package com.xmomen.module.wx.constants; + +/** + * 事件类型 + */ +public enum EventEnum { + + //订阅 + subscribe, + + //取消订阅 + unsubscribe, + + //自定义菜单点击事件 + CLICK, + + //上报地理位置 + location, + + //点击菜单跳转链接时的事件推送 + VIEW, + + //二维码扫描 + scan, + + //模板消息事件推送 + TEMPLATESENDJOBFINISH; +} diff --git a/src/main/java/com/xmomen/module/wx/constants/RequestEventEnum.java b/src/main/java/com/xmomen/module/wx/constants/RequestEventEnum.java new file mode 100644 index 0000000..9fbb7ec --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/constants/RequestEventEnum.java @@ -0,0 +1,45 @@ +package com.xmomen.module.wx.constants; + +/** + * 事件类型(大小写完全对应微信请求的字符串) + */ +public enum RequestEventEnum { + //订阅 + subscribe, + + //取消订阅 + unsubscribe, + + //上报地理位置 + LOCATION, + + //二维码扫描 + SCAN, + + //模板消息事件推送 + TEMPLATESENDJOBFINISH, + + /** + * 用户点击自定义菜单后,微信会把点击事件推送给开发者 + */ + //点击菜单跳转链接时的事件推送 + VIEW, + //点击菜单拉取消息时的事件推送 + CLICK, + /** + * 仅支持微信iPhone5.4.1以上版本,和Android5.4以上版本的微信用户,旧版本微信用户点击后将没有回应,开发者也不能正常接收到事件推送 + */ + //扫码推事件的事件推送 + scancode_push, + //扫码推事件且弹出“消息接收中”提示框的事件推送 + scancode_waitmsg, + //弹出系统拍照发图的事件推送 + pic_sysphoto, + //弹出拍照或者相册发图的事件推送 + pic_photo_or_album, + //弹出微信相册发图器的事件推送 + pic_weixin, + //弹出地理位置选择器的事件推送 + location_select; + +} diff --git a/src/main/java/com/xmomen/module/wx/constants/WechatUrlConstants.java b/src/main/java/com/xmomen/module/wx/constants/WechatUrlConstants.java new file mode 100644 index 0000000..91ca610 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/constants/WechatUrlConstants.java @@ -0,0 +1,28 @@ +package com.xmomen.module.wx.constants; + + +public class WechatUrlConstants { + + + /** + * 微信授权地址 + * appid 公众号的唯一标识 + * redirect_uri 授权后重定向的回调链接地址 + * scope 应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid), + * snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。 + 并且,即使在未关注的情况下,只要用户授权,也能获取其信息) + state 重定向后会带上state参数,开发者可以填写任意参数值 + #wechat_redirect 直接在微信打开链接,可以不填此参数。做页面302重定向时候,必须带此参数 + */ + public static final String OAUTH = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect"; + + /** + * 获取oauth网页认证的token + */ + public static String GET_ACCESS_TOKEN_OAUTH = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code"; + + /** + * 获取未关注用户信息 + */ + public static String GET_NO_GUANZHU_USER_INFO = "https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN"; +} diff --git a/src/main/java/com/xmomen/module/wx/controller/BindController.java b/src/main/java/com/xmomen/module/wx/controller/BindController.java new file mode 100644 index 0000000..8d34d22 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/controller/BindController.java @@ -0,0 +1,409 @@ +package com.xmomen.module.wx.controller; + +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.framework.utils.AssertExt; +import com.xmomen.framework.utils.StringUtilsExt; +import com.xmomen.module.base.entity.CdBind; +import com.xmomen.module.base.entity.CdExpressMember; +import com.xmomen.module.base.entity.CdMember; +import com.xmomen.module.base.service.MemberService; +import com.xmomen.module.logger.Log; +import com.xmomen.module.order.entity.TbOrder; +import com.xmomen.module.order.entity.TbOrderItem; +import com.xmomen.module.order.entity.TbOrderRef; +import com.xmomen.module.order.service.OrderService; +import com.xmomen.module.receipt.entity.TbReceivingCodeRequest; +import com.xmomen.module.receipt.service.ReturnOrderService; +import com.xmomen.module.wx.model.AccessTokenOAuth; +import com.xmomen.module.wx.model.AjaxResult; +import com.xmomen.module.wx.service.BindService; +import com.xmomen.module.wx.util.Auth2Handler; +import com.xmomen.module.wx.util.PropertiesUtils; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.List; + +/** + * 微信绑定控制器 + * + * @author Administrator + */ + +@Controller +public class BindController { + Logger logger = LoggerFactory.getLogger(BindController.class); + + @Autowired + BindService bindService; + + @Autowired + MybatisDao mybatisDao; + + @Autowired + ReturnOrderService returnOrderService; + + @Autowired + MemberService memberService; + + @RequestMapping(value = "/bind/auth") + public String oauth2Api(HttpServletRequest request, + HttpServletResponse response, @RequestParam("url") String url, + @RequestParam(value = "param", required = false) String param) { + String redirectUrl = ""; + logger.info("web url <-->" + request.getRequestURL() + "?" + + request.getQueryString()); + logger.info("r <-->" + url); + if (StringUtilsExt.isNotEmpty(url)) { + String callbackUrl; + try { + String reqServer = PropertiesUtils + .findPropertiesKey("wx.domain"); + if (StringUtils.isEmpty(reqServer)) { + reqServer = "http://system.1g3h.com"; + } + callbackUrl = reqServer + "/bind/auth2Url?url=" + + URLEncoder.encode(url, "UTF-8") + "¶m=" + param; + logger.info("oauth callbackurl <--->" + callbackUrl); + redirectUrl = Auth2Handler.getOauthUrl(callbackUrl); + logger.info("oauth redirectUrl<---->" + redirectUrl); + response.sendRedirect(redirectUrl); + } catch (UnsupportedEncodingException e) { + logger.error("r参数encode失败:" + url, e); + e.printStackTrace(); + } catch (IOException e) { + logger.error("oauth redirect跳转失败:", e); + e.printStackTrace(); + } + + } + return null; + } + + @RequestMapping(value = "/bind/auth2Url") + public String oauth2Url(HttpServletRequest request, + HttpServletResponse response, @RequestParam("code") String code, + @RequestParam("url") String url, + @RequestParam(value = "param", required = false) String param) + throws IOException { + AccessTokenOAuth accessToken = Auth2Handler.getAccessToken(code); + String openId = accessToken.getOpenid(); + logger.info("openid----->" + openId); + logger.info("跳转的url" + url); + // 查询是否有绑定 + CdBind bind = new CdBind(); + bind.setOpenId(openId); + List binds = mybatisDao.selectByModel(bind); + Integer memberId = null; + if (binds.size() > 0) { + memberId = binds.get(0).getUserId(); + } + request.setAttribute("openId", openId); + request.setAttribute("accessToken", accessToken.getAccessToken()); + //不是微商城跳转场合 + if (url.indexOf("index.html") == -1) { + if (binds != null && binds.size() > 0) { + bind = binds.get(0); + String phone = bind.getPhone(); + // 跳转到收货页面 + if (url.equals("/wx/receipt")) { + request.setAttribute("express", "0"); + // 订单信息 + TbOrder order = new TbOrder(); + order.setOrderNo(param); + order = mybatisDao.selectOneByModel(order); + request.setAttribute("orderInfo", order); + // 订单明细信息 + TbOrderItem orderItem = new TbOrderItem(); + orderItem.setOrderNo(param); + List orderItems = mybatisDao + .selectByModel(orderItem); + request.setAttribute("orderItemInfo", orderItems); + request.setAttribute("phone", phone); + //货主扫描 则订单未收货 + if (order.getConsigneePhone().equals(phone) && order.getOrderStatus().equals("5")) { + return url; + } + // 如果订单已经收货 则是要退货处理 + if ((order.getOrderStatus().equals("6") || order.getOrderStatus().equals("7")) && order.getConsigneePhone().equals(phone)) { + return "/wx/returnOrder"; + } + // 查询扫描的是不是快递员 如果是快递员 则需要输入收货码 + // 查找快递员信息 + CdExpressMember expressMember = new CdExpressMember(); + expressMember.setPhone(phone); + List expressMembers = mybatisDao + .selectByModel(expressMember); + if (expressMembers != null && expressMembers.size() > 0 && order.getOrderStatus().equals("5")) { + // 快递员扫描 + request.setAttribute("express", "1"); + request.setAttribute("expressId", expressMembers.get(0).getId()); + return url; + } + // 如果订单已经收货 则是要退货处理 + if (expressMembers != null && expressMembers.size() > 0 && (order.getOrderStatus().equals("6") || order.getOrderStatus().equals("7"))) { + request.setAttribute("express", "1"); + request.setAttribute("expressId", expressMembers.get(0).getId()); + return "/wx/returnOrder"; + } + if (expressMembers == null) { + String message = "您绑定手机号和订单收货人手机号不一致,不能收货,请确认"; + request.setAttribute("message", message); + return "wx/receiptNoAuth"; + } + // 如果订单状态是退货中状态,则必须是要快递员账号扫描 + if (order.getOrderStatus().equals("11")) { + if (expressMembers.size() > 0) { + request.setAttribute("express", "1"); + request.setAttribute("expressId", expressMembers.get(0).getId()); + return "/wx/returnOrder"; + } + else { + String message = "该订单已申请退货,不能再进行收货处理。"; + request.setAttribute("message", message); + return "wx/receiptNoAuth"; + } + } + + String message = "该订单不能再进行收货处理,请联系客服。"; + request.setAttribute("message", message); + return "wx/receiptNoAuth"; + } + // 扫码送货 + else if (url.equals("/wx/scanning")) { + String message = bindService.bindExpressMember(bind.getUserId(), + param); + request.setAttribute("message", message); + if ("扫描成功".equals(message)) { + return "wx/scanningSuccess"; + } + else { + return "wx/scanningFail"; + } + } + } + // 跳转到绑定页面 + else { + request.setAttribute("message", "请先绑定手机号,再进行操作!"); + return "wx/bind"; + } + } + //微商城跳转场合 + else { + String redirectUrl = "redirect:" + url + "?openId=" + openId + "&accessToken=" + accessToken.getAccessToken(); + //添加绑定 + if (memberId == null) { + CdMember cdMember = memberService.bindMember(openId); + memberId = cdMember.getId(); + } + redirectUrl = redirectUrl + "&memberId=" + memberId; + return redirectUrl; + } + return "wx/bind"; + } + + /** + * 绑定页面跳转 + * + * @param openId 微信唯一标识 + * @param bindType 绑定类型 + */ + @RequestMapping(value = "/wx/bind", method = RequestMethod.GET) + public String bind(HttpServletRequest request, + HttpServletResponse response, + @RequestParam(value = "openId") String openId, + @RequestParam(value = "bindType") String bindType) { + request.setAttribute("openId", openId); + request.setAttribute("bindType", bindType); + return "wx/bind"; + } + + /** + * 账号绑定 + * + * @param openId 微信唯一标识 + * @param phone 手机号 + */ + @RequestMapping(value = "/bind/account", method = RequestMethod.GET) + public String bindAccount(HttpServletRequest request, + HttpServletResponse response, + @RequestParam(value = "openId") String openId, + @RequestParam(value = "phone") String phone, + @RequestParam(value = "bindType") String bindType) { + AssertExt.notNull(openId, "openId不能为空"); + AssertExt.notNull(phone, "手机号不能为空"); + boolean flag = bindService.bindAccount(openId, phone, bindType); + if (flag) { + request.setAttribute("phone", phone); + return "wx/bindSuccess"; + } + else { + request.setAttribute("openId", openId); + request.setAttribute("bindType", bindType); + return "wx/bindFail"; + } + } + + /** + * 扫描发运 + * + * @param openId 微信唯一标识 + * @param bindType 绑定类型 + */ +// @RequestMapping(value = "/bind/scanning", method = RequestMethod.GET) +// @ResponseBody +// public String scanning(HttpServletRequest request, +// HttpServletResponse response, +// @RequestParam(value = "phone") String phone, +// @RequestParam(value = "orderNo") String orderNo) { +// AssertExt.notNull(orderNo, "订单号不能为空"); +// AssertExt.notNull(phone, "手机号不能为空"); +// bindService.bindExpressMember(phone, orderNo); +// return "wx/scanningSuccess"; +// } + + /** + * 收货 + */ + @RequestMapping(value = "/wx/shouhuo", method = RequestMethod.GET) + @ResponseBody + public AjaxResult shouhuo( + HttpServletRequest request, + HttpServletResponse response, + @RequestParam(value = "shouhuoNo", required = false) String shouhuoNo, + @RequestParam(value = "openId") String openId, + @RequestParam(value = "orderNo") String orderNo) { + AjaxResult ajaxResult = new AjaxResult(); + // 如果有收货码 判断收货码是否正确 + TbOrderRef orderRef = new TbOrderRef(); + orderRef.setOrderNo(orderNo); + orderRef.setRefType("SHOU_HUO_NO"); + orderRef = mybatisDao.selectOneByModel(orderRef); + // 判断输入的收货码是否正确 + if (StringUtilsExt.isBlank(shouhuoNo) + || (StringUtilsExt.isNotBlank(shouhuoNo) && shouhuoNo + .equals(orderRef.getRefValue()))) { + return this.bindService.orderShouhuo(openId, orderNo, shouhuoNo, + ajaxResult); + } + else { + ajaxResult.setMessage("收货码不正确。"); + ajaxResult.setResult(0); + return ajaxResult; + } + } + + /** + * 收货码请求 + */ + @RequestMapping(value = "/wx/shouhuoRequest", method = RequestMethod.GET) + @ResponseBody + public boolean shouhuoRequest(HttpServletRequest request, + HttpServletResponse response, + @RequestParam(value = "phone") String phone, + @RequestParam(value = "openId") String openId, + @RequestParam(value = "orderNo") String orderNo) { + logger.info("请求的订单编号:", orderNo); + TbReceivingCodeRequest receivingCodeRequest = new TbReceivingCodeRequest(); + receivingCodeRequest.setOrderNo(orderNo); + receivingCodeRequest.setRequestPhone(phone); + CdExpressMember expressMember = new CdExpressMember(); + expressMember.setPhone(phone); + List expressMembers = mybatisDao + .selectByModel(expressMember); + if (expressMembers != null && expressMembers.size() > 0) { + CdExpressMember expressMember2 = expressMembers.get(0); + receivingCodeRequest.setRequestUser(expressMember2.getMemberName()); + receivingCodeRequest.setRequestTime(mybatisDao.getSysdate()); + receivingCodeRequest.setRequestExpressId(expressMember2 + .getCdExpressId()); + } + this.mybatisDao.save(receivingCodeRequest); + return true; + } + + /** + * 二次配送 + */ + @RequestMapping(value = "/wx/twoPeiSong", method = RequestMethod.GET) + @ResponseBody + public boolean twoPeiSong(HttpServletRequest request, + HttpServletResponse response, + @RequestParam(value = "phone") String phone, + @RequestParam(value = "orderNo") String orderNo) { + TbOrder order = new TbOrder(); + order.setOrderNo(orderNo); + order = mybatisDao.selectOneByModel(order); + // 二次配送 + order.setOrderStatus("8"); + mybatisDao.save(order); + return true; + } + + @Autowired + OrderService orderService; + + /** + * 拒绝收货 + * + * @param returnOrder + * @param bindingResult + * @return + */ + @RequestMapping(value = "/wx/refuse", method = RequestMethod.GET) + @Log(actionName = "拒绝收货") + @ResponseBody + public AjaxResult refuse(@RequestParam(value = "orderNo") String orderNo, + @RequestParam(value = "phone") String phone, + @RequestParam(value = "expressId") Integer expressId) { + AjaxResult ajaxResult = returnOrderService.noShouhuo(orderNo, phone, expressId); + return ajaxResult; + } + + + /** + * 新增部分退货订单 + * + * @param returnOrder + * @param bindingResult + * @return + */ + @RequestMapping(value = "/wx/returnOrderEvent", method = RequestMethod.POST) + @Log(actionName = "微信回调接口-订单退货") + @ResponseBody + public AjaxResult returnOrderEvent(@RequestParam(value = "orderNo") String orderNo, + @RequestParam(value = "itemIds") String itemIds) { + AjaxResult ajaxResult = returnOrderService.returnOrder(orderNo, itemIds); + return ajaxResult; + } + + /** + * 退货 快递员收货功能 + * + * @param returnOrder + * @param bindingResult + * @return + */ + @RequestMapping(value = "/wx/shouhuoReturn", method = RequestMethod.GET) + @Log(actionName = "退货 快递员收货") + @ResponseBody + public AjaxResult shouhuoReturn(@RequestParam(value = "orderNo") String orderNo, + @RequestParam(value = "phone") String phone, + @RequestParam(value = "expressId") int expressId) { + AjaxResult ajaxResult = returnOrderService.shouhuoReturn(orderNo, phone, expressId); + return ajaxResult; + } + +} diff --git a/src/main/java/com/xmomen/module/wx/controller/UserInfoController.java b/src/main/java/com/xmomen/module/wx/controller/UserInfoController.java new file mode 100644 index 0000000..ff1f756 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/controller/UserInfoController.java @@ -0,0 +1,66 @@ +package com.xmomen.module.wx.controller; + +import java.util.HashMap; +import java.util.Map; + +import com.xmomen.module.wx.util.Auth2Handler; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.module.base.mapper.MemberMapper; +import com.xmomen.module.base.model.MemberModel; +import com.xmomen.module.wx.model.AjaxResult; +import com.xmomen.module.wx.model.UserInfoModel; +import com.xmomen.module.wx.model.WeixinUserInfo; +import com.xmomen.module.wx.service.WeixinApiService; + +@RestController +public class UserInfoController { + + @Autowired + WeixinApiService weixinApiService; + + @Autowired + MybatisDao mybatisDao; + + @RequestMapping(value = "/wx/userInfo", method = RequestMethod.GET) + public AjaxResult getUserInfo(@RequestParam(value = "openId", required = false) String openId, + @RequestParam(value = "accessToken", required = false) String accessToken, + @RequestParam(value = "memberId", required = false) Integer memberId) { + AjaxResult ajaxResult = new AjaxResult(); + UserInfoModel userInfo = new UserInfoModel(); + ajaxResult.setResult(1); + if (!StringUtils.isEmpty(openId)) { + String publicUid = "gh_9248df680cef"; + String accessTokenWechat = weixinApiService.getAccessToken(publicUid); + //获取微信关注的用户信息 + WeixinUserInfo weixinUserInfo = WeixinApiService.getWeixinUserInfo(accessTokenWechat, openId); + + //未关注微信 + if (weixinUserInfo.getSubscribe() == 0) { + //获取网页授权的微信信息 + weixinUserInfo = Auth2Handler.getNoGuanzhuWeixinUserInfo(accessToken, openId); + } + + if (weixinUserInfo != null && !StringUtils.isEmpty(weixinUserInfo.getNickname())) { + userInfo.setName(weixinUserInfo.getNickname()); + userInfo.setHeadimgurl(weixinUserInfo.getHeadimgurl()); + } + + Map map = new HashMap(); + map.put("id", memberId); + MemberModel memberModel = mybatisDao.getSqlSessionTemplate().selectOne(MemberMapper.MemberMapperNameSpace + "getMemberList", map); + if (memberModel != null) { + userInfo.setName(memberModel.getName()); + userInfo.setPhone(memberModel.getPhoneNumber()); + } + } + ajaxResult.setContent(userInfo); + return ajaxResult; + } +} diff --git a/src/main/java/com/xmomen/module/wx/controller/WxAdviceController.java b/src/main/java/com/xmomen/module/wx/controller/WxAdviceController.java new file mode 100644 index 0000000..eadf702 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/controller/WxAdviceController.java @@ -0,0 +1,32 @@ +package com.xmomen.module.wx.controller; + +import com.xmomen.module.advice.model.AdviceModel; +import com.xmomen.module.advice.service.AdviceService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 获取最新快报咨询 + * + * @author tanxinzheng + * @version 1.0.0 + * @date 2017-3-29 0:27:52 + */ +@RestController +@RequestMapping(value = "/wx/advice") +public class WxAdviceController { + + @Autowired + AdviceService adviceService; + + + /** + * 获取最新的快报 + */ + @RequestMapping(value = "/getLastNew", method = RequestMethod.GET) + public List getLastNew() { + return adviceService.getAdviceModelList(); + } +} diff --git a/src/main/java/com/xmomen/module/wx/controller/WxMemberAddressController.java b/src/main/java/com/xmomen/module/wx/controller/WxMemberAddressController.java new file mode 100644 index 0000000..0210347 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/controller/WxMemberAddressController.java @@ -0,0 +1,122 @@ +package com.xmomen.module.wx.controller; + +import com.xmomen.framework.exception.BusinessException; +import com.xmomen.framework.mybatis.page.Page; +import com.xmomen.module.base.constant.AppConstants; +import com.xmomen.module.logger.Log; +import com.xmomen.module.member.model.MemberAddressQuery; +import com.xmomen.module.member.model.MemberAddressModel; +import com.xmomen.module.member.service.MemberAddressService; + +import org.apache.commons.io.IOUtils; +import org.apache.shiro.SecurityUtils; +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.entity.result.ExcelImportResult; +import org.jeecgframework.poi.excel.entity.vo.NormalExcelConstants; +import org.jeecgframework.poi.exception.excel.ExcelImportException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.ui.ModelMap; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.servlet.ModelAndView; + +import javax.validation.Valid; +import java.io.Serializable; +import java.io.IOException; +import java.io.InputStream; +import java.util.List; + +/** + * @author tanxinzheng + * @version 1.0.0 + * @date 2017-3-29 0:27:52 + */ +@RestController +@RequestMapping(value = "/wx/memberAddress") +public class WxMemberAddressController { + + @Autowired + MemberAddressService memberAddressService; + + /** + * 客户地址列表 + * + * @param limit 每页结果数 + * @param offset 页码 + * @param id 主键 + * @param ids 主键数组 + * @param excludeIds 不包含主键数组 + * @return Page 客户地址领域分页对象 + */ + @RequestMapping(method = RequestMethod.GET) + public List getMemberAddressList(@RequestParam(value = "id", required = false) String id, + @RequestParam(value = "ids", required = false) String[] ids, + @RequestParam(value = "memberId", required = true) String memberId, + @RequestParam(value = "excludeIds", required = false) String[] excludeIds) { + MemberAddressQuery memberAddressQuery = new MemberAddressQuery(); + memberAddressQuery.setId(id); + memberAddressQuery.setExcludeIds(excludeIds); + memberAddressQuery.setIds(ids); + memberAddressQuery.setCdMemberId(memberId); + return memberAddressService.getMemberAddressModels(memberAddressQuery); + } + + /** + * 查询单个客户地址 + * + * @param id 主键 + * @return MemberAddressModel 客户地址领域对象 + */ + @RequestMapping(value = "/{id}", method = RequestMethod.GET) + public MemberAddressModel getMemberAddressById(@PathVariable(value = "id") String id) { + return memberAddressService.getOneMemberAddressModel(id); + } + + /** + * 新增客户地址 + * + * @param memberAddressModel 新增对象参数 + * @return MemberAddressModel 客户地址领域对象 + */ + @RequestMapping(method = RequestMethod.POST) + public MemberAddressModel createMemberAddress(@RequestBody @Valid MemberAddressModel memberAddressModel) { + return memberAddressService.createMemberAddress(memberAddressModel); + } + + /** + * 更新客户地址 + * + * @param id 主键 + * @param memberAddressModel 更新对象参数 + */ + @RequestMapping(value = "/{id}", method = RequestMethod.PUT) + public void updateMemberAddress(@PathVariable(value = "id") String id, + @RequestBody @Valid MemberAddressModel memberAddressModel) { + memberAddressService.updateMemberAddress(memberAddressModel); + } + + /** + * 删除客户地址 + * + * @param id 主键 + */ + @RequestMapping(value = "/{id}", method = RequestMethod.DELETE) + public void deleteMemberAddress(@PathVariable(value = "id") String id) { + memberAddressService.deleteMemberAddress(id); + } + + /** + * 删除客户地址 + * + * @param ids 主键 + */ + @RequestMapping(method = RequestMethod.DELETE) + public void deleteMemberAddresss(@RequestParam(value = "ids") String[] ids) { + memberAddressService.deleteMemberAddress(ids); + } + + +} diff --git a/src/main/java/com/xmomen/module/wx/controller/WxMemberController.java b/src/main/java/com/xmomen/module/wx/controller/WxMemberController.java new file mode 100644 index 0000000..0edfac0 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/controller/WxMemberController.java @@ -0,0 +1,44 @@ +package com.xmomen.module.wx.controller; + +import com.xmomen.module.base.entity.CdMember; +import com.xmomen.module.base.service.MemberService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * @author tanxinzheng + * @version 1.0.0 + * @date 2017-3-29 0:27:52 + */ +@RestController +@RequestMapping(value = "/wx/member") +public class WxMemberController { + + @Autowired + MemberService memberSercvice; + + + /** + * 更新客户手机号 + * + * @param memberId member主键 + * @param mobile 新手机号码 + */ + @RequestMapping(value = "/{id}", method = RequestMethod.PUT) + public void updateMemberAddress(@PathVariable("id") Integer memberId, + @RequestParam("mobile") String mobile) { + memberSercvice.updateMobile(memberId, mobile); + } + + /** + * 查询单个客户 + * + * @param id 主键 + * @return CdMember 客户领域对象 + */ + @RequestMapping(value = "/{id}", method = RequestMethod.GET) + public CdMember getMemberById(@PathVariable(value = "id") String id) { + return memberSercvice.getOneMemberModel(id); + } + +} diff --git a/src/main/java/com/xmomen/module/wx/entity/WxAppSetting.java b/src/main/java/com/xmomen/module/wx/entity/WxAppSetting.java new file mode 100644 index 0000000..0678971 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/entity/WxAppSetting.java @@ -0,0 +1,320 @@ +package com.xmomen.module.wx.entity; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "wx_app_setting") +public class WxAppSetting extends BaseMybatisModel { + /** + * UID + */ + private String uid; + + /** + * 公众号UID + */ + private String publicUid; + + /** + * 是否是服务号 + */ + private Integer isServiceAccount; + + /** + * AppId + */ + private String appId; + + /** + * AppSecret + */ + private String appSecret; + + /** + * Token + */ + private String token; + + /** + * 公司名称 + */ + private String companyName; + + /** + * 应用名称 + */ + private String applicationName; + + /** + * 自定义回复程序集 + */ + private String customAssemblyName; + + /** + * 自定义回复类名称 + */ + private String customClassName; + + /** + * 跳转域名 + */ + private String domainName; + + /** + * 记录状态 + */ + private Integer recordStatus; + + /** + * 有效的凭证 + */ + private String accessToken; + + /** + * 凭证有效时间 + */ + private Integer expiresIn; + + /** + * 凭证最后取得时间 + */ + private Date lastGetTime; + + /** + * 备注 + */ + private String remark; + + @Column(name = "uid") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public String getUid() { + return uid; + } + + public void setUid(String uid) { + this.uid = uid; + if(uid == null){ + removeValidField("uid"); + return; + } + addValidField("uid"); + } + + @Column(name = "public_uid") + public String getPublicUid() { + return publicUid; + } + + public void setPublicUid(String publicUid) { + this.publicUid = publicUid; + if(publicUid == null){ + removeValidField("publicUid"); + return; + } + addValidField("publicUid"); + } + + @Column(name = "is_service_account") + public Integer getIsServiceAccount() { + return isServiceAccount; + } + + public void setIsServiceAccount(Integer isServiceAccount) { + this.isServiceAccount = isServiceAccount; + if(isServiceAccount == null){ + removeValidField("isServiceAccount"); + return; + } + addValidField("isServiceAccount"); + } + + @Column(name = "app_id") + public String getAppId() { + return appId; + } + + public void setAppId(String appId) { + this.appId = appId; + if(appId == null){ + removeValidField("appId"); + return; + } + addValidField("appId"); + } + + @Column(name = "app_secret") + public String getAppSecret() { + return appSecret; + } + + public void setAppSecret(String appSecret) { + this.appSecret = appSecret; + if(appSecret == null){ + removeValidField("appSecret"); + return; + } + addValidField("appSecret"); + } + + @Column(name = "token") + public String getToken() { + return token; + } + + public void setToken(String token) { + this.token = token; + if(token == null){ + removeValidField("token"); + return; + } + addValidField("token"); + } + + @Column(name = "company_name") + public String getCompanyName() { + return companyName; + } + + public void setCompanyName(String companyName) { + this.companyName = companyName; + if(companyName == null){ + removeValidField("companyName"); + return; + } + addValidField("companyName"); + } + + @Column(name = "application_name") + public String getApplicationName() { + return applicationName; + } + + public void setApplicationName(String applicationName) { + this.applicationName = applicationName; + if(applicationName == null){ + removeValidField("applicationName"); + return; + } + addValidField("applicationName"); + } + + @Column(name = "custom_assembly_name") + public String getCustomAssemblyName() { + return customAssemblyName; + } + + public void setCustomAssemblyName(String customAssemblyName) { + this.customAssemblyName = customAssemblyName; + if(customAssemblyName == null){ + removeValidField("customAssemblyName"); + return; + } + addValidField("customAssemblyName"); + } + + @Column(name = "custom_class_name") + public String getCustomClassName() { + return customClassName; + } + + public void setCustomClassName(String customClassName) { + this.customClassName = customClassName; + if(customClassName == null){ + removeValidField("customClassName"); + return; + } + addValidField("customClassName"); + } + + @Column(name = "domain_name") + public String getDomainName() { + return domainName; + } + + public void setDomainName(String domainName) { + this.domainName = domainName; + if(domainName == null){ + removeValidField("domainName"); + return; + } + addValidField("domainName"); + } + + @Column(name = "record_status") + public Integer getRecordStatus() { + return recordStatus; + } + + public void setRecordStatus(Integer recordStatus) { + this.recordStatus = recordStatus; + if(recordStatus == null){ + removeValidField("recordStatus"); + return; + } + addValidField("recordStatus"); + } + + @Column(name = "access_token") + public String getAccessToken() { + return accessToken; + } + + public void setAccessToken(String accessToken) { + this.accessToken = accessToken; + if(accessToken == null){ + removeValidField("accessToken"); + return; + } + addValidField("accessToken"); + } + + @Column(name = "expires_in") + public Integer getExpiresIn() { + return expiresIn; + } + + public void setExpiresIn(Integer expiresIn) { + this.expiresIn = expiresIn; + if(expiresIn == null){ + removeValidField("expiresIn"); + return; + } + addValidField("expiresIn"); + } + + @Column(name = "last_get_time") + public Date getLastGetTime() { + return lastGetTime; + } + + public void setLastGetTime(Date lastGetTime) { + this.lastGetTime = lastGetTime; + if(lastGetTime == null){ + removeValidField("lastGetTime"); + return; + } + addValidField("lastGetTime"); + } + + @Column(name = "remark") + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + if(remark == null){ + removeValidField("remark"); + return; + } + addValidField("remark"); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/wx/entity/mapper/WxAppSettingMapper.java b/src/main/java/com/xmomen/module/wx/entity/mapper/WxAppSettingMapper.java new file mode 100644 index 0000000..0ca9b31 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/entity/mapper/WxAppSettingMapper.java @@ -0,0 +1,16 @@ +package com.xmomen.module.wx.entity.mapper; + +import com.xmomen.framework.mybatis.mapper.MybatisMapper; +import com.xmomen.module.wx.entity.WxAppSetting; +import com.xmomen.module.wx.entity.WxAppSettingExample; +import org.apache.ibatis.annotations.Param; + +public interface WxAppSettingMapper extends MybatisMapper { + int countByExample(WxAppSettingExample example); + + int deleteByExample(WxAppSettingExample example); + + int insertSelective(WxAppSetting record); + + int updateByExampleSelective(@Param("record") WxAppSetting record, @Param("example") WxAppSettingExample example); +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/wx/model/AccessTokenOAuth.java b/src/main/java/com/xmomen/module/wx/model/AccessTokenOAuth.java new file mode 100644 index 0000000..2c4e346 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/model/AccessTokenOAuth.java @@ -0,0 +1,73 @@ +package com.xmomen.module.wx.model; + +/** + * 网页授权接口调用凭证 + */ +public class AccessTokenOAuth { + + /** + * 网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同 + */ + private String accessToken; + + /** + * access_token接口调用凭证超时时间,单位(秒) + */ + private int expiresIn; + + /** + * 用户刷新access_token + */ + private String refreshToken; + + /** + * 用户唯一标识 + */ + private String openid; + + /** + * 用户授权的作用域,使用逗号(,)分隔 + */ + private String scope; + + public String getAccessToken() { + return accessToken; + } + + public void setAccessToken(String accessToken) { + this.accessToken = accessToken; + } + + public int getExpiresIn() { + return expiresIn; + } + + public void setExpiresIn(int expiresIn) { + this.expiresIn = expiresIn; + } + + public String getRefreshToken() { + return refreshToken; + } + + public void setRefreshToken(String refreshToken) { + this.refreshToken = refreshToken; + } + + public String getOpenid() { + return openid; + } + + public void setOpenid(String openid) { + this.openid = openid; + } + + public String getScope() { + return scope; + } + + public void setScope(String scope) { + this.scope = scope; + } + +} diff --git a/src/main/java/com/xmomen/module/wx/model/MessageBase.java b/src/main/java/com/xmomen/module/wx/model/MessageBase.java new file mode 100644 index 0000000..b95f80e --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/model/MessageBase.java @@ -0,0 +1,60 @@ +package com.xmomen.module.wx.model; + +import java.io.Serializable; + +/** + * 微信Message抽象类 + */ +public abstract class MessageBase implements Serializable { + /** + * 接收者 + */ + private String toUserName; + + /** + * 发送者 + */ + private String fromUserName; + + /** + * 消息类型 + */ + private String msgType; + + /** + * 消息创建时间 + */ + private long createTime; + + public String getToUserName() { + return toUserName; + } + + public void setToUserName(String toUserName) { + this.toUserName = toUserName; + } + + public String getFromUserName() { + return fromUserName; + } + + public void setFromUserName(String fromUserName) { + this.fromUserName = fromUserName; + } + + public String getMsgType() { + return msgType; + } + + public void setMsgType(String msgType) { + this.msgType = msgType; + } + + public long getCreateTime() { + return createTime; + } + + public void setCreateTime(long createTime) { + this.createTime = createTime; + } +} diff --git a/src/main/java/com/xmomen/module/wx/model/PayAttachModel.java b/src/main/java/com/xmomen/module/wx/model/PayAttachModel.java new file mode 100644 index 0000000..9703e2f --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/model/PayAttachModel.java @@ -0,0 +1,22 @@ +package com.xmomen.module.wx.model; + +import lombok.Data; + +public @Data class PayAttachModel { + + public PayAttachModel() {} + + public PayAttachModel(int type, String tradeNo, String tradeId, String openId, int memberId) { + this.type = type; + this.tradeNo = tradeNo; + this.tradeId = tradeId; + this.openId = openId; + this.memberId = memberId; + } + String tradeId; + int type; + String tradeNo; + String openId; + int memberId; + +} diff --git a/src/main/java/com/xmomen/module/wx/model/messageTemplate/CustomSendMessageTextModel.java b/src/main/java/com/xmomen/module/wx/model/messageTemplate/CustomSendMessageTextModel.java new file mode 100644 index 0000000..782ee31 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/model/messageTemplate/CustomSendMessageTextModel.java @@ -0,0 +1,42 @@ +package com.xmomen.module.wx.model.messageTemplate; + +/** + * 客服发送消息模板BEAN (文本消息) + * { + * "touser":"OPENID", + * "msgtype":"text", + * "text": + * { + * "content":"Hello World" + * } + * } + */ +public class CustomSendMessageTextModel extends CustomSendMessageBaseModel { + + + Text text; + + public Text getText() { + return text; + } + + public void setContent(String content) { + Text text = new Text(); + text.setContent(content); + this.text = text; + } + + //内容类 + public class Text { + String content; + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + } + +} diff --git a/src/main/java/com/xmomen/module/wx/model/messageTemplate/PushMessageTemplateModel.java b/src/main/java/com/xmomen/module/wx/model/messageTemplate/PushMessageTemplateModel.java new file mode 100644 index 0000000..6a22062 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/model/messageTemplate/PushMessageTemplateModel.java @@ -0,0 +1,232 @@ +package com.xmomen.module.wx.model.messageTemplate; + +import java.io.Serializable; + +/** + * 模板消息bean + */ +public class PushMessageTemplateModel implements Serializable { + + /** + * 接收者 + */ + private String touser; + + /** + * 模板ID + */ + private String template_id; + + /** + * 跳转URL + */ + private String url; + + /** + * 标题颜色 + */ + private String topcolor; + + /** + * 数据类 内部类 + */ + private Data data; + + public String getTouser() { + return touser; + } + + public void setTouser(String touser) { + this.touser = touser; + } + + public String getTemplate_id() { + return template_id; + } + + public void setTemplate_id(String template_id) { + this.template_id = template_id; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getTopcolor() { + return topcolor; + } + + public void setTopcolor(String topcolor) { + this.topcolor = topcolor; + } + + /** + * 第一个参数 + * + * @param color 值颜色 + * @param value 值 + * @return + */ + public First setFirst(String color, String value) { + First first = new First(); + first.setColor(color); + first.setValue(value); + return first; + } + + /** + * 第二个填充参数 + * + * @param color 值颜色 + * @param value 值 + * @return + */ + public Keyword1 setKeyword1(String color, String value) { + Keyword1 key1 = new Keyword1(); + key1.setColor(color); + key1.setValue(value); + return key1; + } + + /** + * 第三个填充参数 + * + * @param color 值颜色 + * @param value 值 + * @return + */ + public Keyword2 setKeyword2(String color, String value) { + Keyword2 key2 = new Keyword2(); + key2.setColor(color); + key2.setValue(value); + return key2; + } + + /** + * 第四个填充参数 + * + * @param color 值颜色 + * @param value 值 + * @return + */ + public Remark setRemark(String color, String value) { + Remark remark = new Remark(); + remark.setColor(color); + remark.setValue(value); + return remark; + } + + /** + * 设置数据 + * + * @param first + * @param key1 + * @param key2 + * @param remark + */ + public void setDataVal(First first, Keyword1 key1, Keyword2 key2, Remark remark) { + Data d = new Data(); + d.setFirst(first); + d.setKeyword1(key1); + d.setKeyword2(key2); + d.setRemark(remark); + setData(d); + } + + public Data getData() { + return data; + } + + public void setData(Data data) { + this.data = data; + } + + /** + * 参数基类 + */ + class BaseParam { + + private String value; + + private String color; + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } + } + + class First extends BaseParam { + } + + class Keyword1 extends BaseParam { + } + + class Keyword2 extends BaseParam { + } + + class Remark extends BaseParam { + } + + /** + * 数据封装类 + */ + class Data { + + private First first; + + private Keyword1 keyword1; + + private Keyword2 keyword2; + + private Remark remark; + + public First getFirst() { + return first; + } + + public void setFirst(First first) { + this.first = first; + } + + public Keyword1 getKeyword1() { + return keyword1; + } + + public void setKeyword1(Keyword1 keyword1) { + this.keyword1 = keyword1; + } + + public Keyword2 getKeyword2() { + return keyword2; + } + + public void setKeyword2(Keyword2 keyword2) { + this.keyword2 = keyword2; + } + + public Remark getRemark() { + return remark; + } + + public void setRemark(Remark remark) { + this.remark = remark; + } + + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/wx/model/messageTemplate/WeixinResponseStatusModel.java b/src/main/java/com/xmomen/module/wx/model/messageTemplate/WeixinResponseStatusModel.java new file mode 100644 index 0000000..265f0c6 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/model/messageTemplate/WeixinResponseStatusModel.java @@ -0,0 +1,46 @@ +package com.xmomen.module.wx.model.messageTemplate; + +/** + * 微信服务器请求回复封装类 + */ +public class WeixinResponseStatusModel { + + /** + * 状态码 + */ + private int errcode; + + /** + * 消息 + */ + private String errmsg; + + /** + * 消息id + */ + private String msgid; + + public int getErrcode() { + return errcode; + } + + public void setErrcode(int errcode) { + this.errcode = errcode; + } + + public String getErrmsg() { + return errmsg; + } + + public void setErrmsg(String errmsg) { + this.errmsg = errmsg; + } + + public String getMsgid() { + return msgid; + } + + public void setMsgid(String msgid) { + this.msgid = msgid; + } +} diff --git a/src/main/java/com/xmomen/module/wx/model/requestModel/event/RequestMessageEventLocation.java b/src/main/java/com/xmomen/module/wx/model/requestModel/event/RequestMessageEventLocation.java new file mode 100644 index 0000000..1ee1f5b --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/model/requestModel/event/RequestMessageEventLocation.java @@ -0,0 +1,64 @@ +package com.xmomen.module.wx.model.requestModel.event; + + +import com.xmomen.module.wx.constants.RequestEventEnum; + +import java.io.Serializable; + +/** + * 上报地理位置事件 + * + * + * + * 123456789 + * + * + * 23.137466 + * 113.352425 + * 119.385040 + * + */ +public class RequestMessageEventLocation extends RequestMessageEventBase implements Serializable { + + /** + * 地理位置纬度 + */ + private double latitude; + /** + * 地理位置经度 + */ + private double longitude; + /** + * 地理位置精度 + */ + private double precision; + + @Override + public String getEvent() { + return RequestEventEnum.LOCATION.toString(); + } + + public double getLatitude() { + return latitude; + } + + public void setLatitude(double latitude) { + this.latitude = latitude; + } + + public double getLongitude() { + return longitude; + } + + public void setLongitude(double longitude) { + this.longitude = longitude; + } + + public double getPrecision() { + return precision; + } + + public void setPrecision(double precision) { + this.precision = precision; + } +} diff --git a/src/main/java/com/xmomen/module/wx/model/requestModel/event/RequestMessageEventScan.java b/src/main/java/com/xmomen/module/wx/model/requestModel/event/RequestMessageEventScan.java new file mode 100644 index 0000000..d374c11 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/model/requestModel/event/RequestMessageEventScan.java @@ -0,0 +1,29 @@ +package com.xmomen.module.wx.model.requestModel.event; + +import java.io.Serializable; + +/** + * 扫描二维码事件 + * + * + * 123456789 + * + * + * + * + * + */ +public class RequestMessageEventScan extends RequestMessageEventBase implements Serializable { + /** + * 二维码的ticket,可用来换取二维码图片 + */ + private String ticket; + + public String getTicket() { + return ticket; + } + + public void setTicket(String ticket) { + this.ticket = ticket; + } +} diff --git a/src/main/java/com/xmomen/module/wx/model/requestModel/event/RequestMessageEventScanCode.java b/src/main/java/com/xmomen/module/wx/model/requestModel/event/RequestMessageEventScanCode.java new file mode 100644 index 0000000..e3bd7c6 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/model/requestModel/event/RequestMessageEventScanCode.java @@ -0,0 +1,44 @@ +package com.xmomen.module.wx.model.requestModel.event; + + +import java.io.Serializable; + +/** + * 自定义菜单二维码扫描请求封装类 + */ +public class RequestMessageEventScanCode extends RequestMessageEventBase implements Serializable { + //扫描信息 + private ScanCodeInfo scanCodeInfo; + + public ScanCodeInfo getScanCodeInfo() { + return scanCodeInfo; + } + + public void setScanCodeInfo(ScanCodeInfo scanCodeInfo) { + this.scanCodeInfo = scanCodeInfo; + } + + public class ScanCodeInfo { + //扫描类型,一般是qrcode + private String scanType; + + //扫描结果,即二维码对应的字符串信息 + private String scanResult; + + public String getScanType() { + return scanType; + } + + public void setScanType(String scanType) { + this.scanType = scanType; + } + + public String getScanResult() { + return scanResult; + } + + public void setScanResult(String scanResult) { + this.scanResult = scanResult; + } + } +} diff --git a/src/main/java/com/xmomen/module/wx/model/requestModel/event/RequestMessageEventTemplateSendJobFinish.java b/src/main/java/com/xmomen/module/wx/model/requestModel/event/RequestMessageEventTemplateSendJobFinish.java new file mode 100644 index 0000000..f6c0e60 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/model/requestModel/event/RequestMessageEventTemplateSendJobFinish.java @@ -0,0 +1,44 @@ +package com.xmomen.module.wx.model.requestModel.event; + +import java.io.Serializable; + +/** + * 在模版消息发送任务完成后,微信服务器会将是否送达成功作为通知,发送到开发者中心中填写的服务器配置地址中。 + * + * + * + * 1395658920 + * + * + * 200163836 + * + * + */ +public class RequestMessageEventTemplateSendJobFinish extends RequestMessageEventBase implements Serializable { + + /** + * 发送状态 + */ + private String status; + + /** + * 消息ID + */ + private String msgID; + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getMsgID() { + return msgID; + } + + public void setMsgID(String msgID) { + this.msgID = msgID; + } +} diff --git a/src/main/java/com/xmomen/module/wx/model/requestModel/message/RequestMessageLink.java b/src/main/java/com/xmomen/module/wx/model/requestModel/message/RequestMessageLink.java new file mode 100644 index 0000000..ae425a1 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/model/requestModel/message/RequestMessageLink.java @@ -0,0 +1,51 @@ +package com.xmomen.module.wx.model.requestModel.message; + + +import java.io.Serializable; + +/** + * 链接消息 + */ +public class RequestMessageLink extends RequestMessageBase implements Serializable { + + /** + * 消息标题 + */ + private String title; + + /** + * 消息描述 + */ + private String description; + + /** + * 消息链接 + */ + private String url; + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + title = title; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + description = description; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + url = url; + } + + +} diff --git a/src/main/java/com/xmomen/module/wx/model/requestModel/message/RequestMessageText.java b/src/main/java/com/xmomen/module/wx/model/requestModel/message/RequestMessageText.java new file mode 100644 index 0000000..de45e01 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/model/requestModel/message/RequestMessageText.java @@ -0,0 +1,33 @@ +package com.xmomen.module.wx.model.requestModel.message; + + +import java.io.Serializable; + +/** + * 文本消息 + * + * + * + * 1348831860 + * + * + * 1234567890123456 + * + */ +public class RequestMessageText extends RequestMessageBase implements Serializable { + + /** + * 文本消息内容 + */ + private String content; + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + +} diff --git a/src/main/java/com/xmomen/module/wx/model/requestModel/message/RequestMessageVideo.java b/src/main/java/com/xmomen/module/wx/model/requestModel/message/RequestMessageVideo.java new file mode 100644 index 0000000..d2dc69a --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/model/requestModel/message/RequestMessageVideo.java @@ -0,0 +1,35 @@ +package com.xmomen.module.wx.model.requestModel.message; + +import java.io.Serializable; + +/** + * 视频消息 + */ +public class RequestMessageVideo extends RequestMessageBase implements Serializable { + + /** + * 视频消息媒体id,可以调用多媒体文件下载接口拉取数据。 + */ + private String mediaId; + + /** + * 视频消息缩略图的媒体id,可以调用多媒体文件下载接口拉取数据。 + */ + private String thumbMediaId; + + public String getMediaId() { + return mediaId; + } + + public void setMediaId(String mediaId) { + this.mediaId = mediaId; + } + + public String getThumbMediaId() { + return thumbMediaId; + } + + public void setThumbMediaId(String thumbMediaId) { + this.thumbMediaId = thumbMediaId; + } +} diff --git a/src/main/java/com/xmomen/module/wx/model/requestModel/message/RequestMessageVoice.java b/src/main/java/com/xmomen/module/wx/model/requestModel/message/RequestMessageVoice.java new file mode 100644 index 0000000..d6f32cd --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/model/requestModel/message/RequestMessageVoice.java @@ -0,0 +1,36 @@ +package com.xmomen.module.wx.model.requestModel.message; + + +import java.io.Serializable; + +/** + * 语音消息 + */ +public class RequestMessageVoice extends RequestMessageBase implements Serializable { + + /** + * 语音消息媒体id,可以调用多媒体文件下载接口拉取数据。 + */ + private String mediaId; + + /** + * 语音格式,如amr,speex等 + */ + private String format; + + public String getMediaId() { + return mediaId; + } + + public void setMediaId(String mediaId) { + this.mediaId = mediaId; + } + + public String getFormat() { + return format; + } + + public void setFormat(String format) { + this.format = format; + } +} diff --git a/src/main/java/com/xmomen/module/wx/model/responseModel/ResponseMessageImage.java b/src/main/java/com/xmomen/module/wx/model/responseModel/ResponseMessageImage.java new file mode 100644 index 0000000..192bdbb --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/model/responseModel/ResponseMessageImage.java @@ -0,0 +1,43 @@ +package com.xmomen.module.wx.model.responseModel; + + +/** + * 回复图片消息 + * 格式如下: + * + * + * + * 12345678 + * + * + * + * + * + */ +public class ResponseMessageImage extends ResponseMessageBase { + + private Image image; + + public Image getImage() { + return image; + } + + public void setImage(Image image) { + this.image = image; + } + + class Image { + /** + * 通过上传多媒体文件,得到的id + */ + private String mediaId; + + public String getMediaId() { + return mediaId; + } + + public void setMediaId(String mediaId) { + this.mediaId = mediaId; + } + } +} diff --git a/src/main/java/com/xmomen/module/wx/model/responseModel/ResponseMessageMusic.java b/src/main/java/com/xmomen/module/wx/model/responseModel/ResponseMessageMusic.java new file mode 100644 index 0000000..6530bbc --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/model/responseModel/ResponseMessageMusic.java @@ -0,0 +1,84 @@ +package com.xmomen.module.wx.model.responseModel; + + +/** + * 回复音乐消息 + * 格式: + * + * + * + * 12345678 + * + * + * <![CDATA[TITLE]]> + * + * + * + * + * + * + */ +public class ResponseMessageMusic extends ResponseMessageBase { + + private Music music; + + public Music getMusic() { + return music; + } + + public void setMusic(Music music) { + this.music = music; + } + + class Music { + /** + * 音乐名称 + */ + private String title; + /** + * 音乐描述 + */ + private String description; + /** + * 音乐链接 + */ + private String musicUrl; + /** + * 高质量音乐链接,WIFI环境优先使用该链接播放音乐 + */ + private String hQMusicUrl; + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getMusicUrl() { + return musicUrl; + } + + public void setMusicUrl(String musicUrl) { + this.musicUrl = musicUrl; + } + + public String gethQMusicUrl() { + return hQMusicUrl; + } + + public void sethQMusicUrl(String hQMusicUrl) { + this.hQMusicUrl = hQMusicUrl; + } + } + +} diff --git a/src/main/java/com/xmomen/module/wx/model/responseModel/ResponseMessageText.java b/src/main/java/com/xmomen/module/wx/model/responseModel/ResponseMessageText.java new file mode 100644 index 0000000..050fe11 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/model/responseModel/ResponseMessageText.java @@ -0,0 +1,30 @@ +package com.xmomen.module.wx.model.responseModel; + + +/** + * 回复文本消息 + * 格式 + * + * + * + * 12345678 + * + * + * + */ +public class ResponseMessageText extends ResponseMessageBase { + + /** + * 回复的消息内容(换行:在content中能够换行,微信客户端就支持换行显示) + */ + private String content; + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + +} diff --git a/src/main/java/com/xmomen/module/wx/model/responseModel/ResponseMessageVoice.java b/src/main/java/com/xmomen/module/wx/model/responseModel/ResponseMessageVoice.java new file mode 100644 index 0000000..16b0396 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/model/responseModel/ResponseMessageVoice.java @@ -0,0 +1,42 @@ +package com.xmomen.module.wx.model.responseModel; + +/** + * 回复语音消息 + * 格式: + * + * + * + * 12345678 + * + * + * + * + * + */ +public class ResponseMessageVoice extends ResponseMessageBase { + + private Voice voice; + + public Voice getVoice() { + return voice; + } + + public void setVoice(Voice voice) { + this.voice = voice; + } + + class Voice { + /** + * 通过上传多媒体文件,得到的id + */ + private String mediaId; + + public String getMediaId() { + return mediaId; + } + + public void setMediaId(String mediaId) { + this.mediaId = mediaId; + } + } +} diff --git a/src/main/java/com/xmomen/module/wx/module/address/controller/AddressController.java b/src/main/java/com/xmomen/module/wx/module/address/controller/AddressController.java new file mode 100644 index 0000000..f93d531 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/module/address/controller/AddressController.java @@ -0,0 +1,72 @@ +package com.xmomen.module.wx.module.address.controller; + +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.framework.web.exceptions.ArgumentValidException; +import com.xmomen.module.member.entity.MemberAddress; +import com.xmomen.module.member.service.MemberAddressService; +import com.xmomen.module.order.entity.TbOrder; +import com.xmomen.module.order.model.WxCreateOrder; +import com.xmomen.module.order.service.OrderService; +import com.xmomen.module.wx.module.order.model.MyOrderQuery; +import com.xmomen.module.wx.module.order.model.OrderDetailModel; +import com.xmomen.module.wx.module.order.model.OrderModel; +import com.xmomen.module.wx.module.order.service.MyOrderService; +import org.apache.shiro.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.WebDataBinder; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.beans.PropertyEditorSupport; +import java.util.Date; +import java.util.List; + +@Controller +public class AddressController { + + @Autowired + MemberAddressService memberAddressService; + + @Autowired + OrderService orderService; + + @Autowired + MybatisDao mybatisDao; + + /** + * 默认收货地址 + * + * @param addressId 收货地址 + * @return + */ + @RequestMapping(value = "/wx/defaultAddress", method = RequestMethod.GET) + @ResponseBody + public Boolean defaultAddress( + @RequestParam(value = "addressId") String addressId) { + memberAddressService.defaultAddress(addressId); + return Boolean.TRUE; + } + + + /** + * 获取默认收货地址 + * + * @param memberId 客户ID + * @return + */ + @RequestMapping(value = "/wx/getDefaultAddress", method = RequestMethod.GET) + @ResponseBody + public MemberAddress getDefaultAddress( + @RequestParam(value = "memberId") Integer memberId) { + MemberAddress memberAddress = new MemberAddress(); + memberAddress.setCdMemberId(memberId); + memberAddress.setIsDefault(true); + List memberAddresses = this.mybatisDao.selectByModel(memberAddress); + if (memberAddresses.size() > 0) { + return memberAddresses.get(0); + } + return null; + } +} diff --git a/src/main/java/com/xmomen/module/wx/module/bind/controller/BindMemberController.java b/src/main/java/com/xmomen/module/wx/module/bind/controller/BindMemberController.java new file mode 100644 index 0000000..d490e32 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/module/bind/controller/BindMemberController.java @@ -0,0 +1,31 @@ +package com.xmomen.module.wx.module.bind.controller; + +import com.xmomen.module.base.entity.CdMember; +import com.xmomen.module.base.service.MemberService; +import com.xmomen.module.order.service.OrderService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +@Controller +public class BindMemberController { + + @Autowired + MemberService memberSercvice; + + @Autowired + OrderService orderService; + + @RequestMapping(value = "/wx/bindMember", method = RequestMethod.PUT) + @ResponseBody + public CdMember bindMember( + @RequestParam(value = "mobile") String mobile, + @RequestParam(value = "name") String name, + @RequestParam(value = "openId") String openId, + @RequestParam(value = "memberId") Integer memberId) throws Exception { + return memberSercvice.bindMember(mobile, name, openId, memberId); + } +} diff --git a/src/main/java/com/xmomen/module/wx/module/cart/controller/CartController.java b/src/main/java/com/xmomen/module/wx/module/cart/controller/CartController.java new file mode 100644 index 0000000..acf50b2 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/module/cart/controller/CartController.java @@ -0,0 +1,50 @@ +package com.xmomen.module.wx.module.cart.controller; + +import java.util.List; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import com.xmomen.framework.web.exceptions.ArgumentValidException; +import com.xmomen.module.product.model.ProductModel; +import com.xmomen.module.product.model.ProductQuery; +import com.xmomen.module.wx.module.cart.model.UpdateCartModel; +import com.xmomen.module.wx.module.cart.service.CartService; + +@Controller +@RequestMapping(value = "/wx") +public class CartController { + + @Autowired + private CartService cartService; + + @ResponseBody + @RequestMapping(value ="/cart", method = RequestMethod.GET) + public List getCartProduct(@RequestParam(value = "memberId", required = true) Integer memberId) { + ProductQuery productQuery = new ProductQuery(); + productQuery.setMemberCode(String.valueOf(memberId)); + return cartService.getProductsInCart(productQuery); + } + + @ResponseBody + @RequestMapping(value ="/cart", method = RequestMethod.POST) + public Boolean updateCart(@RequestBody @Valid UpdateCartModel updateCartModel){ + cartService.change(String.valueOf(updateCartModel.getMemberId()), updateCartModel.getItemId(), updateCartModel.getItemQty()); + return Boolean.TRUE; + } + + @ResponseBody + @RequestMapping(value = "/cart/sync", method = RequestMethod.GET) + public Boolean syncCart(@RequestParam(value = "memberId", required = true) Integer memberId) { + cartService.syncToDB(String.valueOf(memberId)); + return Boolean.TRUE; + } +} diff --git a/src/main/java/com/xmomen/module/wx/module/cart/entity/TbCartItem.java b/src/main/java/com/xmomen/module/wx/module/cart/entity/TbCartItem.java new file mode 100644 index 0000000..0730d15 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/module/cart/entity/TbCartItem.java @@ -0,0 +1,81 @@ +package com.xmomen.module.wx.module.cart.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; + +@Entity +@Table(name = "tb_shopping_cart") +public class TbCartItem extends BaseMybatisModel { + + private String id; + + private String userToken; + + private Integer itemId; + + private Integer itemNumber; + + @Column(name = "ID") + @Id + @GeneratedValue(generator = "UUIDGenerator") + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "USER_TOKEN") + public String getUserToken() { + return userToken; + } + + public void setUserToken(String userToken) { + this.userToken = userToken; + if(userToken == null) { + removeValidField("userToken"); + return; + } + addValidField("userToken"); + } + + @Column(name = "ITEM_ID") + public Integer getItemId() { + return itemId; + } + + public void setItemId(Integer itemId) { + this.itemId = itemId; + if(itemId == null){ + removeValidField("itemId"); + return; + } + addValidField("itemId"); + } + + @Column(name = "ITEM_NUMBER") + public Integer getItemNumber() { + return itemNumber; + } + + public void setItemNumber(Integer itemNumber) { + this.itemNumber = itemNumber; + if(itemNumber == null){ + removeValidField("itemNumber"); + return; + } + addValidField("itemNumber"); + } + +} diff --git a/src/main/java/com/xmomen/module/wx/module/cart/mapper/CartMapper.java b/src/main/java/com/xmomen/module/wx/module/cart/mapper/CartMapper.java new file mode 100644 index 0000000..a51ad6f --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/module/cart/mapper/CartMapper.java @@ -0,0 +1,5 @@ +package com.xmomen.module.wx.module.cart.mapper; + +public interface CartMapper { + public static final String CART_MAPPER_NAMESPACE = "com.xmomen.module.wx.module.cart.mapper.CartMapper."; +} diff --git a/src/main/java/com/xmomen/module/wx/module/cart/mapper/CartMapper.xml b/src/main/java/com/xmomen/module/wx/module/cart/mapper/CartMapper.xml new file mode 100644 index 0000000..15c62be --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/module/cart/mapper/CartMapper.xml @@ -0,0 +1,44 @@ + + + + + + + + DELETE FROM TB_SHOPPING_CART WHERE USER_TOKEN = #{userToken} + AND ITEM_ID in + #{id} + + + + + + UPDATE TB_SHOPPING_CART set ITEM_NUMBER = #{itemNumber} + WHERE USER_TOKEN = #{userToken} AND ITEM_ID = #{itemId} + + + INSERT INTO TB_SHOPPING_CART(ID, USER_TOKEN, ITEM_ID, ITEM_NUMBER) + VALUES((SELECT replace(uuid(), '-', '') from dual), #{userToken}, #{itemId}, #{itemNumber}) + + + + + + UPDATE tb_shopping_cart set user_token = #{newMemberId} where user_token = #{oldMemberId} + + \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/wx/module/cart/model/CartItemQuery.java b/src/main/java/com/xmomen/module/wx/module/cart/model/CartItemQuery.java new file mode 100644 index 0000000..6974579 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/module/cart/model/CartItemQuery.java @@ -0,0 +1,9 @@ +package com.xmomen.module.wx.module.cart.model; + +import lombok.Data; + +public @Data class CartItemQuery { + + private String userToken; + private Integer itemId; +} diff --git a/src/main/java/com/xmomen/module/wx/module/cart/service/CartService.java b/src/main/java/com/xmomen/module/wx/module/cart/service/CartService.java new file mode 100644 index 0000000..9be053c --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/module/cart/service/CartService.java @@ -0,0 +1,362 @@ +package com.xmomen.module.wx.module.cart.service; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.CopyOnWriteArrayList; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.module.product.model.ProductModel; +import com.xmomen.module.product.model.ProductQuery; +import com.xmomen.module.product.service.ProductService; +import com.xmomen.module.wx.module.cart.entity.TbCartItem; +import com.xmomen.module.wx.module.cart.mapper.CartMapper; +import com.xmomen.module.wx.module.cart.model.CartItemModel; +import com.xmomen.module.wx.module.cart.model.CartItemQuery; +import com.xmomen.module.wx.module.cart.model.CartMetadata; +import com.xmomen.module.wx.module.cart.model.CartModel; +import com.xmomen.module.wx.util.Constant; + +@Service +public class CartService { + + private ConcurrentHashMap cartCache = new ConcurrentHashMap(); + + @Autowired + private ProductService productService; + + @Autowired + private MybatisDao mybatisDao; + + public List getCartItemsByUserToken(String userToken) { + CartItemQuery cartItemQuery = new CartItemQuery(); + cartItemQuery.setUserToken(userToken); + return mybatisDao.getSqlSessionTemplate().selectList(CartMapper.CART_MAPPER_NAMESPACE + "getCartItemList", cartItemQuery); + } + + public List getProductsInCart(ProductQuery productQuery) { + List items = this.getCartItems(productQuery.getMemberCode()); + Map itemNumberMap = new HashMap(); + for(CartItemModel cartItem: items) { + itemNumberMap.put(String.valueOf(cartItem.getItemId()), cartItem.getItemQty()); + } + ArrayList productIds = new ArrayList(); + for(CartItemModel item: items) { + productIds.add(item.getItemId()); + } + productQuery.setProductIds(productIds); + List products = productService.getProducts(productIds); + + for(ProductModel product: products) { + String itemId = String.valueOf(product.getId()); + product.setItemQty(itemNumberMap.get(itemId)); + } + return products; + } + + public void removeItems(String userToken, List itemIds) { + CartModel cartModel = cartCache.get(userToken); + if(CollectionUtils.isEmpty(itemIds)) return; + if(cartModel != null && !CollectionUtils.isEmpty(cartModel.getItems())) { + List cartItems = cartModel.getItems(); + boolean changed = false; + for(CartMetadata item: cartItems) { + if(itemIds.contains(item.getItemId())) { + item.setItemQty(0); + changed = true; + } + } + if(changed) cartModel.setStatus(Constant.DIRTY); + this.syncToDB(userToken); + } + } + + public List getCartItems(String userToken, boolean alwaysSync) { + CartModel cartModel = cartCache.get(userToken); + ArrayList cartItems = new ArrayList(); + boolean needCreate = false; + + // 从数据库中那购物车信息,如果内存中没有则合并到内存中,否则以内存中为主(数目) + List persistentCartItems = null; + if(alwaysSync) { + persistentCartItems = this.getCartItemsByUserToken(userToken); + } else { + if(cartModel == null || CollectionUtils.isEmpty(cartModel.getItems())) { + persistentCartItems = this.getCartItemsByUserToken(userToken); + } + } + CopyOnWriteArrayList cartItemMetas = null; + Map memoryCartMap = new HashMap(); + if(cartModel != null && cartModel.getItems() != null) { + for(CartMetadata cartMetadata: cartModel.getItems()) { + memoryCartMap.put(String.valueOf(cartMetadata.getItemId()), cartMetadata); + } + } + if(cartModel != null) { + cartItemMetas = cartModel.getItems(); + } + if(!CollectionUtils.isEmpty(persistentCartItems)) { + //同步数据到内存中 + //TODO 当数据量很大的时候也要同步进内存吗?恶意大量数据可能会造成内存问题 + for(CartItemModel cartItem: persistentCartItems) { + String itemId = String.valueOf(cartItem.getItemId()); + if(!memoryCartMap.containsKey(itemId)) { + CartMetadata pCartItem = this.newCartMetadata(userToken, cartItem.getItemId(), cartItem.getItemQty()); + if(cartItemMetas == null) { + cartItemMetas = new CopyOnWriteArrayList(); + if(cartModel == null) { + needCreate = true; + } else { + cartModel.setItems(cartItemMetas); + } + } + cartItemMetas.add(pCartItem); + } + } + } + if(needCreate) { + CartModel newCartModel = new CartModel(); + newCartModel.setStatus(Constant.CLEAN); + newCartModel.setSyncTime(new Timestamp(new Date().getTime())); + newCartModel.setUserToken(userToken); + newCartModel.setItems(cartItemMetas); + cartCache.put(userToken, newCartModel); + } + if(cartItemMetas != null) { + for(CartMetadata metaData: cartItemMetas) { + if(!Constant.DELETE.equalsIgnoreCase(metaData.getStatus())) { + CartItemModel cartItem = new CartItemModel(); + cartItem.setItemId(metaData.getItemId()); + cartItem.setItemQty(metaData.getItemQty()); + cartItems.add(cartItem); + } + } + } + return cartItems; + } + + public List getCartItems(String userToken) { + return getCartItems(userToken, false); + } + public void modify(CartModel newCartModel) throws Exception { + String userToken = newCartModel.getUserToken(); + if(StringUtils.isEmpty(userToken)) throw new Exception("userToken不能为空!"); + CartModel sourceCart = cartCache.get(userToken); + if(CollectionUtils.isEmpty(newCartModel.getItems())) { + // 如果购物车被清空 + if(sourceCart != null) { + if(this.compareAndUpdate(sourceCart, newCartModel)) { + sourceCart.setStatus(Constant.DIRTY); + }; + } + return; + } + if(sourceCart == null) { + sourceCart = new CartModel(); + sourceCart.setUserToken(newCartModel.getUserToken()); + sourceCart.setItems(new CopyOnWriteArrayList()); + cartCache.put(userToken, sourceCart); + } + if(this.compareAndUpdate(sourceCart, newCartModel)) { + sourceCart.setStatus(Constant.DIRTY); + } + } + + public void change(String userToken, Integer itemId, Integer number) { + CartModel sourceCart = cartCache.get(userToken); + if(number == null) { + Integer newNumber = 1; + if(sourceCart != null && !CollectionUtils.isEmpty(sourceCart.getItems())) { + List cartItems = sourceCart.getItems(); + for(CartMetadata cartItem: cartItems) { + if(cartItem.getItemId().equals(itemId)) { + newNumber += cartItem.getItemQty(); + break; + } + } + } + this.change(userToken, itemId, newNumber); + } else if(number >= 0) { + if(sourceCart == null) { + CartModel cartModel = new CartModel(); + cartModel.setUserToken(userToken); + CopyOnWriteArrayList items = new CopyOnWriteArrayList(); + cartModel.setItems(items); + CartMetadata metadata = this.newCartMetadata(userToken, itemId, number); + items.add(metadata); + cartModel.setStatus(Constant.DIRTY); + cartCache.put(userToken, cartModel); + } else { + CopyOnWriteArrayList items = sourceCart.getItems(); + if(items == null) { + items = new CopyOnWriteArrayList(); + sourceCart.setItems(items); + } + boolean newAdd = true; + boolean updated = false; + for(CartMetadata item: items) { + if(item.getItemId().equals(itemId)) { + newAdd = false; + if(number >= 0) { + updated = item.setItemQty(number); + } + } + } + if(newAdd) { + CartMetadata metadata = this.newCartMetadata(userToken, itemId, number); + if(metadata != null) { + updated = items.add(metadata); + } + } + if(updated) { + sourceCart.setStatus(Constant.DIRTY); + } + } + } + } + + /** + * @param cartModel 缓存中的原始购物车信息 + * @param newCartModel 需要更新的购物车信息 + * @return + */ + private Boolean compareAndUpdate(CartModel cartModel, CartModel newCartModel) { + if(cartModel == null || newCartModel == null) return Boolean.FALSE; + if(cartModel.getItems() == null) { + cartModel.setItems(new CopyOnWriteArrayList()); + } + CopyOnWriteArrayList sourceItems = cartModel.getItems(); + CopyOnWriteArrayList newItems = newCartModel.getItems() == null ? new CopyOnWriteArrayList() : newCartModel.getItems(); + Map sourceItemMap = new HashMap(); + Map sourceItemModelMap = new HashMap(); + Boolean updated = Boolean.FALSE; + for(CartMetadata item: sourceItems) { + String itemId = String.valueOf(item.getItemId()); + sourceItemMap.put(itemId, item.getItemQty()); + sourceItemModelMap.put(itemId, item); + } + Set itemIds = new HashSet(); + for(CartMetadata item: newItems) { + itemIds.add(String.valueOf(item.getItemId())); + String itemId = String.valueOf(item.getItemId()); + CartMetadata sourceItem = sourceItemModelMap.get(itemId); + if(sourceItem == null) { + sourceItem = this.newCartMetadata(newCartModel.getUserToken(), item.getItemId(), item.getItemQty()); + if(sourceItem != null) { + updated = sourceItems.add(sourceItem); + } + } else { + updated = sourceItem.setItemQty(item.getItemQty()); + } + } + // 再检查哪些物品被删除了 + for(CartMetadata sourceItem : sourceItems) { + if(!itemIds.contains(String.valueOf(sourceItem.getItemId()))) { + updated = sourceItem.setItemQty(0); + } + } + return updated; + } + + public CartMetadata newCartMetadata(String userToken, Integer itemId, Integer number) { + if(number == null || number <= 0) return null; + CartMetadata metadata = new CartMetadata(); + metadata.setUserToken(userToken); + metadata.setItemId(itemId); + metadata.setItemQty(number); + return metadata; + } + + + /** + * 同步当前用户的购物车信息到购物车 + * @param userToken + */ + public void syncToDB(String userToken) { + if(StringUtils.isEmpty(userToken)) return; + CartModel cartModel = cartCache.get(userToken); + if(cartModel != null && Constant.DIRTY.equalsIgnoreCase(cartModel.getStatus())) { + List cartMetadatas = cartModel.getItems(); + List beRemovedList = new ArrayList(); + List beUpdatedList = new ArrayList(); + for(CartMetadata cartMetadata: cartMetadatas) { + if(Constant.DELETE.equalsIgnoreCase(cartMetadata.getStatus())) { + beRemovedList.add(cartMetadata); + } else if(Constant.MODIFY.equalsIgnoreCase(cartMetadata.getStatus())) { + beUpdatedList.add(cartMetadata); + } + } + // 删除标记为删除的物品,然后再从内存中删除 + if(beRemovedList.size() > 0) { + List itemIds = new ArrayList(); + for(CartMetadata cartItem: beRemovedList){ + itemIds.add(cartItem.getItemId()); + } + Map params = new HashMap(); + params.put("userToken", userToken); + params.put("itemIds", itemIds); + mybatisDao.getSqlSessionTemplate().delete(CartMapper.CART_MAPPER_NAMESPACE + "removeCartItems", params); + cartMetadatas.removeAll(beRemovedList); + } + + // 同步更新字段的DB,然后将状态设置为clean + for(CartMetadata updatedCartItem: beUpdatedList) { + // UPDATE to DB(saveOrUpdate) + CartItemQuery cartItemQuery = new CartItemQuery(); + cartItemQuery.setUserToken(userToken); + cartItemQuery.setItemId(updatedCartItem.getItemId()); + List persistentCartItems = mybatisDao.getSqlSessionTemplate().selectList(CartMapper.CART_MAPPER_NAMESPACE + "getCartItemList", cartItemQuery); + TbCartItem tbCartItem = new TbCartItem(); + tbCartItem.setItemId(updatedCartItem.getItemId()); + tbCartItem.setUserToken(updatedCartItem.getUserToken()); + tbCartItem.setItemNumber(updatedCartItem.getItemQty()); + if(!CollectionUtils.isEmpty(persistentCartItems)) { + tbCartItem.setId(persistentCartItems.get(0).getId()); + } + mybatisDao.getSqlSessionTemplate().insert(CartMapper.CART_MAPPER_NAMESPACE + "saveOrUpdateItem", tbCartItem); + updatedCartItem.setStatus(Constant.CLEAN); + updatedCartItem.setUpdateTime(null); + } + cartModel.setStatus(Constant.CLEAN); + cartModel.setSyncTime(new Timestamp(new Date().getTime())); + } + } + + /** + * 同步内存中的数据到数据库 + */ + public void batchSyncToDB() { + //TODO + } + + public void copyCartInfo(String oldMemberId, String newMemberId) { + if(StringUtils.isEmpty(oldMemberId) || StringUtils.isEmpty(newMemberId)) { + throw new IllegalArgumentException("memberId不能为空. oldMemberId:" + oldMemberId + ", newMemberId:" + newMemberId); + } + CartModel cartInfo = cartCache.get(oldMemberId); + if(cartInfo != null) { + cartInfo.setUserToken(newMemberId); + cartCache.put(newMemberId, cartInfo); + cartCache.remove(oldMemberId); + } + updateCartOwner(oldMemberId, newMemberId); + } + + public void updateCartOwner(String oldMemberId, String newMemberId) { + Map info = new HashMap(); + info.put("oldMemberId", oldMemberId); + info.put("newMemberId", newMemberId); + mybatisDao.getSqlSessionTemplate().update(CartMapper.CART_MAPPER_NAMESPACE + "copyCartItems", info); + } +} diff --git a/src/main/java/com/xmomen/module/wx/module/coupon/model/CouponQueryModel.java b/src/main/java/com/xmomen/module/wx/module/coupon/model/CouponQueryModel.java new file mode 100644 index 0000000..242c87f --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/module/coupon/model/CouponQueryModel.java @@ -0,0 +1,10 @@ +package com.xmomen.module.wx.module.coupon.model; + +import lombok.Data; + +public @Data class CouponQueryModel { + + private Integer couponType; + private Integer cdUserId; + private Boolean useable; +} diff --git a/src/main/java/com/xmomen/module/wx/module/order/controller/MyOrderController.java b/src/main/java/com/xmomen/module/wx/module/order/controller/MyOrderController.java new file mode 100644 index 0000000..b6decc9 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/module/order/controller/MyOrderController.java @@ -0,0 +1,123 @@ +package com.xmomen.module.wx.module.order.controller; + +import java.beans.PropertyEditorSupport; +import java.util.Date; +import java.util.List; +import java.util.Map; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.WebDataBinder; +import org.springframework.web.bind.annotation.InitBinder; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import com.xmomen.module.order.entity.TbOrder; +import com.xmomen.module.order.model.WxCreateOrder; +import com.xmomen.module.order.service.OrderService; +import com.xmomen.module.product.model.ProductModel; +import com.xmomen.module.wx.module.order.model.MyOrderQuery; +import com.xmomen.module.wx.module.order.model.OrderDetailModel; +import com.xmomen.module.wx.module.order.model.OrderModel; +import com.xmomen.module.wx.module.order.model.PayOrderModel; +import com.xmomen.module.wx.module.order.service.MyOrderService; + +@Controller +@RequestMapping(value = "/wx/order") +public class MyOrderController { + + @Autowired + MyOrderService myOrderService; + + @Autowired + OrderService orderService; + + /** + * + * @param memberId + * @param status 0-未支付 1 待收货 + * @param minCreateTime 昨日 + * @param maxCreateTime 今日 + * @return + */ + @RequestMapping(method = RequestMethod.GET) + @ResponseBody + public List myOrder(@RequestParam(value = "memberId") String memberId, + @RequestParam(value = "status", required = false) Integer status, + @RequestParam(value = "minOrderTime", required = false) Date minCreateTime, + @RequestParam(value = "maxOrderTime", required = false) Date maxCreateTime) { + MyOrderQuery myOrderQuery = new MyOrderQuery(); + myOrderQuery.setStatus(status); + myOrderQuery.setMinOrderTime(minCreateTime); + myOrderQuery.setMaxOrderTime(maxCreateTime); + myOrderQuery.setUserId(memberId); + return myOrderService.myOrder(myOrderQuery); + } + + @RequestMapping(value = "/{orderId:[0-9]+}", method = RequestMethod.GET) + @ResponseBody + public OrderDetailModel orderDetail(@PathVariable("orderId") Integer orderId) { + MyOrderQuery myOrderQuery = new MyOrderQuery(); + myOrderQuery.setOrderId(orderId); + return myOrderService.getOrderDetail(myOrderQuery); + } + + @RequestMapping(method = RequestMethod.POST) + @ResponseBody + public TbOrder createModel(@RequestBody @Valid WxCreateOrder createOrder) throws Exception { + return orderService.createWxOrder(createOrder); + } + + @RequestMapping(value = "/confirm", method = RequestMethod.POST) + @ResponseBody + public Boolean confirmOrder(@RequestParam("id") Integer orderId, @RequestParam("memberId") Integer memberId) throws Exception { + return myOrderService.confirmReceiveOrder(orderId, memberId); + } + + @RequestMapping(value = "/cancel", method = RequestMethod.POST) + @ResponseBody + public Boolean cancelOrder(@RequestParam("id") Integer orderId, @RequestParam("memberId") Integer memberId) throws Exception { + return myOrderService.cancelOrder(orderId, memberId); + } + + @RequestMapping(value = "/pay", method = RequestMethod.POST) + @ResponseBody + public Boolean payOrder(@RequestBody PayOrderModel payOrderModel) throws Exception { + return orderService.payWxOrder(payOrderModel); + } + + @RequestMapping(value = "/coupon", method = RequestMethod.GET) + @ResponseBody + public List getCouponItems(@RequestParam("couponNo") String couponNo) { + return orderService.getCouponItems(couponNo); + } + + /** + * + * @param memberId + * @return {"待装箱":7,"待付款":6,"待采购":2,"待配送":2,"配送中":1} + */ + @RequestMapping(value = "/statistic", method = RequestMethod.GET) + @ResponseBody + public Map getOrderStatistic(@RequestParam("memberId") Integer memberId) { + return myOrderService.getOrderStatistic(memberId); + } + + @InitBinder + public void initBinder(WebDataBinder binder) { + binder.registerCustomEditor(Date.class, new PropertyEditorSupport() { + + @Override + public void setAsText(String text) throws IllegalArgumentException { + super.setValue(new Date(Long.valueOf(text))); + } + + }); + } +} diff --git a/src/main/java/com/xmomen/module/wx/module/order/mapper/MyOrderMapper.java b/src/main/java/com/xmomen/module/wx/module/order/mapper/MyOrderMapper.java new file mode 100644 index 0000000..10db494 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/module/order/mapper/MyOrderMapper.java @@ -0,0 +1,5 @@ +package com.xmomen.module.wx.module.order.mapper; + +public interface MyOrderMapper { + public static final String MY_ORDER_MAPPER_NAMESPACE = "com.xmomen.module.wx.module.order.mapper.MyOrderMapper."; +} diff --git a/src/main/java/com/xmomen/module/wx/module/order/mapper/MyOrderMapper.xml b/src/main/java/com/xmomen/module/wx/module/order/mapper/MyOrderMapper.xml new file mode 100644 index 0000000..350d113 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/module/order/mapper/MyOrderMapper.xml @@ -0,0 +1,239 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/wx/module/order/model/OrderStatisticModel.java b/src/main/java/com/xmomen/module/wx/module/order/model/OrderStatisticModel.java new file mode 100644 index 0000000..02d485e --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/module/order/model/OrderStatisticModel.java @@ -0,0 +1,12 @@ +package com.xmomen.module.wx.module.order.model; + +import lombok.Data; + +public @Data class OrderStatisticModel { + + private Integer orderStatus; + private String orderStatusDesc; + private Integer count; + private Integer payStatus; + private String payStatusDesc; +} diff --git a/src/main/java/com/xmomen/module/wx/module/order/service/MyOrderService.java b/src/main/java/com/xmomen/module/wx/module/order/service/MyOrderService.java new file mode 100644 index 0000000..5060051 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/module/order/service/MyOrderService.java @@ -0,0 +1,23 @@ +package com.xmomen.module.wx.module.order.service; + +import java.util.List; +import java.util.Map; + +import com.xmomen.module.wx.module.order.model.MyOrderQuery; +import com.xmomen.module.wx.module.order.model.OrderDetailModel; +import com.xmomen.module.wx.module.order.model.OrderModel; +import com.xmomen.module.wx.pay.model.PayResData; + +public interface MyOrderService { + + List myOrder(MyOrderQuery myOrderQuery); + OrderDetailModel getOrderDetail(MyOrderQuery myOrderQuery); + + Boolean confirmReceiveOrder(Integer orderId, Integer userId) throws Exception; + + Boolean cancelOrder(Integer orderId, Integer userId) throws Exception; + + Map getOrderStatistic(Integer userId); + + void payCallBack(PayResData payResData) throws Exception; +} diff --git a/src/main/java/com/xmomen/module/wx/module/order/service/impl/MyOrderServiceImpl.java b/src/main/java/com/xmomen/module/wx/module/order/service/impl/MyOrderServiceImpl.java new file mode 100644 index 0000000..a27bb2c --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/module/order/service/impl/MyOrderServiceImpl.java @@ -0,0 +1,274 @@ +package com.xmomen.module.wx.module.order.service.impl; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.alibaba.fastjson.JSON; +import com.xmomen.framework.exception.BusinessException; +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.module.base.service.CouponService; +import com.xmomen.module.order.entity.TbOrder; +import com.xmomen.module.order.service.OrderService; +import com.xmomen.module.resource.service.ResourceUtilsService; +import com.xmomen.module.wx.model.PayAttachModel; +import com.xmomen.module.wx.module.order.mapper.MyOrderMapper; +import com.xmomen.module.wx.module.order.model.MyOrderQuery; +import com.xmomen.module.wx.module.order.model.OrderDetailModel; +import com.xmomen.module.wx.module.order.model.OrderModel; +import com.xmomen.module.wx.module.order.model.OrderProductItem; +import com.xmomen.module.wx.module.order.model.OrderStatisticModel; +import com.xmomen.module.wx.module.order.service.MyOrderService; +import com.xmomen.module.wx.pay.entity.TbPayRecord; +import com.xmomen.module.wx.pay.model.PayResData; +import com.xmomen.module.wx.pay.model.RefundResData; +import com.xmomen.module.wx.pay.model.WeixinPayRecord; +import com.xmomen.module.wx.pay.service.PayRecordService; +import com.xmomen.module.wx.service.WeixinApiService; + +@Service +public class MyOrderServiceImpl implements MyOrderService { + + static Logger log = LoggerFactory.getLogger(MyOrderServiceImpl.class); + + @Autowired + MybatisDao mybatisDao; + + @Autowired + OrderService orderService; + + @Autowired + CouponService couponService; + + @Autowired + PayRecordService payRecordService; + + @Autowired + WeixinApiService weixinApiService; + + @Override + public List myOrder(MyOrderQuery myOrderQuery) { + List orders = mybatisDao.getSqlSessionTemplate().selectList(MyOrderMapper.MY_ORDER_MAPPER_NAMESPACE + "selectOrders", myOrderQuery); + if (orders != null) { + for (OrderModel order : orders) { + List items = order.getProducts(); + if (items != null) { + for (OrderProductItem item : items) { + if (StringUtils.isEmpty(item.getPicUrl())) { + item.setPicUrl(ResourceUtilsService.getDefaultPicPath()); + } + else { + item.setPicUrl(ResourceUtilsService.getWholeHttpPath(item.getPicUrl())); + } + } + } + String orderStatus = order.getOrderStatus(); + if(orderCanCancel(orderStatus)) { + order.setCanCancel(true); + } else { + order.setCanCancel(false); + } + } + } + return orders; + } + + @Override + public OrderDetailModel getOrderDetail(MyOrderQuery myOrderQuery) { + if (myOrderQuery.getOrderId() == null && StringUtils.isEmpty(myOrderQuery.getOrderNo())) { + return null; + } + OrderDetailModel orderDetail = mybatisDao.getSqlSessionTemplate().selectOne(MyOrderMapper.MY_ORDER_MAPPER_NAMESPACE + "getOrderDetail", myOrderQuery); + if (orderDetail != null) { + List items = orderDetail.getProducts(); + for (OrderProductItem item : items) { + if (StringUtils.isEmpty(item.getPicUrl())) { + item.setPicUrl(ResourceUtilsService.getDefaultPicPath()); + } + else { + item.setPicUrl(ResourceUtilsService.getWholeHttpPath(item.getPicUrl())); + } + } + String orderStatus = orderDetail.getOrderStatus(); + if(orderCanCancel(orderStatus)) { + orderDetail.setCanCancel(true); + } else { + orderDetail.setCanCancel(false); + } + } + return orderDetail; + } + + @Override + public Boolean confirmReceiveOrder(Integer orderId, Integer userId) throws Exception { + TbOrder tbOrder = mybatisDao.selectByPrimaryKey(TbOrder.class, orderId); + if (tbOrder == null || userId == null || !String.valueOf(userId).equals(tbOrder.getMemberCode())) { + throw new BusinessException("订单不存在或者不属于当前用户!"); + } + tbOrder.setOrderStatus("6");//确认本人收货 + tbOrder.setShouHuoDate(new Date()); + mybatisDao.update(tbOrder); + return Boolean.TRUE; + } + + /** + * 未配送的订单才可以取消,如下 + * 0-等待付款 1-待采购 + */ + @Override + @Transactional + public Boolean cancelOrder(Integer orderId, Integer userId) throws Exception { + TbOrder tbOrder = mybatisDao.selectByPrimaryKey(TbOrder.class, orderId); + if (tbOrder == null || userId == null || !String.valueOf(userId).equals(tbOrder.getMemberCode())) { + throw new BusinessException("订单不存在或者不属于当前用户!"); + } + if(tbOrder.getOrderStatus() != null && tbOrder.getOrderStatus().equals(9)) { + throw new BusinessException("已取消的订单不能重复取消!"); + } + /*Integer payStatus = tbOrder.getPayStatus(); + if (payStatus == 1) throw new IllegalArgumentException("订单已支付,不能取消!");*/ + String orderStatus = tbOrder.getOrderStatus(); + List allowCancelStatus = new ArrayList(); + allowCancelStatus.add("0"); + allowCancelStatus.add("1"); + if(allowCancelStatus.contains(orderStatus)) { + if(tbOrder.getOrderType().equals(1) || tbOrder.getOrderType().equals(2)) { + //卡类和券类已经支付过了,卡类支付直接把钱退到卡里,券类订单则让券继续可用 + orderService.cancelOrder(orderId); + } else if(tbOrder.getOrderType().equals(0)) { + //如果为常规订单 + Integer payStatus = tbOrder.getPayStatus(); + if(payStatus != null && payStatus.equals(1)) { + Integer paymentMode = tbOrder.getPaymentMode(); + if(paymentMode != null && paymentMode.equals(4)) { + ////货到付款,即物流公司代收的付款方式,将支付状态回退为0 + tbOrder.setPayStatus(0); + } else if (paymentMode != null && paymentMode.equals(8)) { + //微信类支付 + String tradeNo = tbOrder.getOrderNo(); + RefundResData refundResData = weixinApiService.refund(tradeNo, tbOrder.getTotalAmount().multiply(new BigDecimal(100)).intValue()); + if(refundResData == null) { + throw new BusinessException("微信退款失败"); + } + } + //其他第三方的支付,标注为取消状态,由batch统一去处理 + } + tbOrder.setOrderStatus("9");//取消订单 + mybatisDao.update(tbOrder); + } + } else { + throw new BusinessException("已经处理的订单不能取消!"); + } + return Boolean.TRUE; + } + + @Override + public Map getOrderStatistic(Integer userId) { + Map result = new HashMap(); + List orderStatisticModels = mybatisDao.getSqlSessionTemplate().selectList(MyOrderMapper.MY_ORDER_MAPPER_NAMESPACE + "getOrderStatistic", userId); + int notPayCount = 0; + if(!CollectionUtils.isEmpty(orderStatisticModels)) { + for(OrderStatisticModel orderStatisticModel: orderStatisticModels) { + if(orderStatisticModel.getPayStatus() != 1) { + notPayCount += orderStatisticModel.getCount(); + } + String statusDesc = orderStatisticModel.getOrderStatusDesc(); + if(statusDesc != null && !orderStatisticModel.getOrderStatus().equals(0)) { + if(result.containsKey(statusDesc)) { + result.put(statusDesc, result.get(statusDesc) + orderStatisticModel.getCount()); + } else { + result.put(statusDesc, orderStatisticModel.getCount()); + } + } + } + } + if(notPayCount > 0) { + result.put("待付款", notPayCount); + } + return result; + } + + @Override + @Transactional + public void payCallBack(PayResData payResData) throws Exception { + String attachement = payResData.getAttach(); + PayAttachModel payAttachModel = JSON.parseObject(attachement, PayAttachModel.class); + String tradeId = payAttachModel.getTradeId(); + String tradeNo = payAttachModel.getTradeNo(); + int memberId = payAttachModel.getMemberId(); + TbPayRecord payRecordQuery = new TbPayRecord(); + payRecordQuery.setTradeNo(tradeNo); + List tbPayRecords = payRecordService.getTbpayRecordListByRecord(payRecordQuery); + if(!CollectionUtils.isEmpty(tbPayRecords)) { + for(TbPayRecord tbPayRecord: tbPayRecords) { + String thePayRecordId = tbPayRecord.getId(); + if(tradeId.equals(thePayRecordId)) { + //处理微信可能存在的重复通知 + return; + } + if(tbPayRecord.getTradeType()!=null && tbPayRecord.getTradeType().equals(1) + && tbPayRecord.getCompleteTime() != null) { + //同一个微信订单已支付(出现的请况很少) + log.error("出现订单重复支付的记录:tradeNo=" + tradeNo + ", tradeId=" + tradeId + + ", transactionId=" + payResData.getTransaction_id() + ", openId=" + payAttachModel.getOpenId()); + return; + } + } + } + + double totalFee = payResData.getTotal_fee(); + if(1 == payAttachModel.getType()) { + //微信支付 + String orderNo = payAttachModel.getTradeNo(); + TbOrder query = new TbOrder(); + query.setOrderNo(orderNo); + TbOrder tbOrder = mybatisDao.selectOneByModel(query); + if(tbOrder == null) { + log.error("订单不存在! --" + orderNo); + throw new BusinessException("订单不存在!"); + } + //设置为微信支付类型 + tbOrder.setPaymentMode(8); + tbOrder.setPayStatus(1); + tbOrder.setOrderStatus("1"); + mybatisDao.update(tbOrder); + } else if(2 == payAttachModel.getType()) { + //卡充值 + String couponNo = payAttachModel.getTradeNo(); + couponService.cardWxRecharge(couponNo, new BigDecimal(totalFee/100), memberId); + } else { + log.error("支付类型只能为1或2 -- type是" + payAttachModel.getType()); + throw new IllegalArgumentException("支付类型只能为1或2"); + } + //插入支付记录到tb_pay_record表 + TbPayRecord tbPayRecord = new TbPayRecord(); + tbPayRecord.setId(tradeId); + tbPayRecord.setTradeNo(payAttachModel.getTradeNo()); + tbPayRecord.setTradeType(payAttachModel.getType()); + tbPayRecord.setTotalFee(new BigDecimal(totalFee/100)); + tbPayRecord.setTransactionId(payResData.getTransaction_id()); + tbPayRecord.setTransactionTime(new Date()); + tbPayRecord.setCompleteTime(new Date()); + tbPayRecord.setOpenId(payAttachModel.getOpenId()); + + payRecordService.insert(tbPayRecord); + } + + private boolean orderCanCancel(String orderStatus) { + if("0".equals(orderStatus) || "1".equals(orderStatus)) { + return true; + } + return false; + } +} diff --git a/src/main/java/com/xmomen/module/wx/pay/common/RandomStringGenerator.java b/src/main/java/com/xmomen/module/wx/pay/common/RandomStringGenerator.java new file mode 100644 index 0000000..a00a2e7 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/pay/common/RandomStringGenerator.java @@ -0,0 +1,39 @@ +package com.xmomen.module.wx.pay.common; + +import java.util.Random; + +/** + * User: rizenguo + * Date: 2014/10/29 + * Time: 14:18 + */ +public class RandomStringGenerator { + + /** + * 获取一定长度的随机字符串 + * @param length 指定字符串长度 + * @return 一定长度的字符串 + */ + public static String getRandomStringByLength(int length) { + String base = "abcdefghijklmnopqrstuvwxyz0123456789"; + Random random = new Random(); + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < length; i++) { + int number = random.nextInt(base.length()); + sb.append(base.charAt(number)); + } + return sb.toString(); + } + + public static String getRandomNumberStrByLength(int length) { + String base = "0123456789"; + Random random = new Random(); + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < length; i++) { + int number = random.nextInt(base.length()); + sb.append(base.charAt(number)); + } + return sb.toString(); + } + +} diff --git a/src/main/java/com/xmomen/module/wx/pay/common/Signature.java b/src/main/java/com/xmomen/module/wx/pay/common/Signature.java new file mode 100644 index 0000000..08bfb40 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/pay/common/Signature.java @@ -0,0 +1,123 @@ +package com.xmomen.module.wx.pay.common; + +import org.apache.log4j.Logger; +import org.xml.sax.SAXException; + +import javax.xml.parsers.ParserConfigurationException; +import java.io.IOException; +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Map; + +/** + * User: rizenguo + * Date: 2014/10/29 + * Time: 15:23 + */ +public class Signature { + //打log用 + private static final Logger logger = Logger.getLogger(Signature.class); + /** + * 签名算法 + * @param o 要参与签名的数据对象 + * @return 签名 + * @throws IllegalAccessException + */ + public static String getSign(Object o) throws IllegalAccessException { + ArrayList list = new ArrayList(); + Class cls = o.getClass(); + Field[] fields = cls.getDeclaredFields(); + for (Field f : fields) { + f.setAccessible(true); + if (f.get(o) != null && f.get(o) != "") { + list.add(f.getName() + "=" + f.get(o) + "&"); + } + } + int size = list.size(); + String [] arrayToSort = list.toArray(new String[size]); + Arrays.sort(arrayToSort, String.CASE_INSENSITIVE_ORDER); + StringBuilder sb = new StringBuilder(); + for(int i = 0; i < size; i ++) { + sb.append(arrayToSort[i]); + } + String result = sb.toString(); + result += "key=" + Configure.getKey(); + logger.info("Sign Before MD5:" + result); + result = MD5.MD5Encode(result).toUpperCase(); + logger.info("Sign Result:" + result); + return result; + } + + public static String getSign(Map map){ + ArrayList list = new ArrayList(); + for(Map.Entry entry:map.entrySet()){ + if(entry.getValue()!=""){ + list.add(entry.getKey() + "=" + entry.getValue() + "&"); + } + } + int size = list.size(); + String [] arrayToSort = list.toArray(new String[size]); + Arrays.sort(arrayToSort, String.CASE_INSENSITIVE_ORDER); + StringBuilder sb = new StringBuilder(); + for(int i = 0; i < size; i ++) { + sb.append(arrayToSort[i]); + } + String result = sb.toString(); + result += "key=" + Configure.getKey(); + logger.info("Sign Before MD5:" + result); + result = MD5.MD5Encode(result,"UTF-8").toUpperCase(); + logger.info("Sign Result:" + result); + return result; + } + + /** + * 从API返回的XML数据里面重新计算一次签名 + * @param responseString API返回的XML数据 + * @return 新鲜出炉的签名 + * @throws ParserConfigurationException + * @throws IOException + * @throws SAXException + */ + public static String getSignFromResponseString(String responseString) throws IOException, SAXException, ParserConfigurationException { + Map map = XMLParser.getMapFromXML(responseString); + //清掉返回数据对象里面的Sign数据(不能把这个数据也加进去进行签名),然后用签名算法进行签名 + map.put("sign",""); + //将API返回的数据根据用签名算法进行计算新的签名,用来跟API返回的签名进行比较 + return Signature.getSign(map); + } + + /** + * 检验API返回的数据里面的签名是否合法,避免数据在传输的过程中被第三方篡改 + * @param responseString API返回的XML数据字符串 + * @return API签名是否合法 + * @throws ParserConfigurationException + * @throws IOException + * @throws SAXException + */ + public static boolean checkIsSignValidFromResponseString(String responseString) throws ParserConfigurationException, IOException, SAXException { + + Map map = XMLParser.getMapFromXML(responseString); + logger.info(map.toString()); + + String signFromAPIResponse = map.get("sign").toString(); + if(signFromAPIResponse=="" || signFromAPIResponse == null){ + logger.info("API返回的数据签名数据不存在,有可能被第三方篡改!!!"); + return false; + } + logger.info("服务器回包里面的签名是:" + signFromAPIResponse); + //清掉返回数据对象里面的Sign数据(不能把这个数据也加进去进行签名),然后用签名算法进行签名 + map.put("sign",""); + //将API返回的数据根据用签名算法进行计算新的签名,用来跟API返回的签名进行比较 + String signForAPIResponse = Signature.getSign(map); + + if(!signForAPIResponse.equals(signFromAPIResponse)){ + //签名验不过,表示这个API返回的数据有可能已经被篡改了 + logger.info("API返回的数据签名验证不通过,有可能被第三方篡改!!!"); + return false; + } + logger.info("恭喜,API返回的数据签名验证通过!!!"); + return true; + } + +} diff --git a/src/main/java/com/xmomen/module/wx/pay/common/XMLParser.java b/src/main/java/com/xmomen/module/wx/pay/common/XMLParser.java new file mode 100644 index 0000000..c6ef818 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/pay/common/XMLParser.java @@ -0,0 +1,48 @@ +package com.xmomen.module.wx.pay.common; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.SAXException; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import java.io.IOException; +import java.io.InputStream; +import java.util.HashMap; +import java.util.Map; + +/** + * User: rizenguo + * Date: 2014/11/1 + * Time: 14:06 + */ +public class XMLParser { + public static Map getMapFromXML(String xmlString) throws ParserConfigurationException, IOException, SAXException { + + //这里用Dom的方式解析回包的最主要目的是防止API新增回包字段 + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder = factory.newDocumentBuilder(); + InputStream is = Util.getStringStream(xmlString); + Document document = builder.parse(is); + + //获取到document里面的全部结点 + NodeList allNodes = document.getFirstChild().getChildNodes(); + Node node; + Map map = new HashMap(); + int i = 0; + while (i < allNodes.getLength()) { + node = allNodes.item(i); + if (node instanceof Element) { + map.put(node.getNodeName(), node.getTextContent()); + } + i++; + } + return map; + + } + + +} diff --git a/src/main/java/com/xmomen/module/wx/pay/entity/TbPayRecord.java b/src/main/java/com/xmomen/module/wx/pay/entity/TbPayRecord.java new file mode 100644 index 0000000..7f51607 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/pay/entity/TbPayRecord.java @@ -0,0 +1,172 @@ +package com.xmomen.module.wx.pay.entity; + +import java.math.BigDecimal; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +import com.xmomen.framework.mybatis.model.BaseMybatisModel; + +@Entity +@Table(name = "tb_pay_record") +public class TbPayRecord extends BaseMybatisModel { + + + /** + * 标识符号,为UUID + */ + private String id; + + /** + * 支付的商品标识符 + */ + private String tradeNo; + + /** + * 支付用途 + * 1 - 支付商品价格 2 -卡券类充值 3-退款 + */ + private Integer tradeType; + + /** + * 交易金额,单位为元 + */ + private BigDecimal totalFee; + + /** + * 微信用户openId + */ + private String openId; + + /** + * 支付第三方生成的唯一交易单号标识符 + */ + private String transactionId; + + /** + * 开始交易时间 + */ + private Date transactionTime; + + /** + * 交易完成时间,如果为空,则说明交易失败 + */ + private Date completeTime; + + @Column(name = "ID") + @Id + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + if(id == null){ + removeValidField("id"); + return; + } + addValidField("id"); + } + + @Column(name = "TRADE_NO") + public String getTradeNo() { + return tradeNo; + } + + public void setTradeNo(String tradeNo) { + this.tradeNo = tradeNo; + if(tradeNo == null){ + removeValidField("tradeNo"); + return; + } + addValidField("tradeNo"); + } + + @Column(name = "TRADE_TYPE") + public Integer getTradeType() { + return tradeType; + } + + public void setTradeType(Integer tradeType) { + this.tradeType = tradeType; + if(tradeType == null){ + removeValidField("tradeType"); + return; + } + addValidField("tradeType"); + } + + @Column(name = "TOTAL_FEE") + public BigDecimal getTotalFee() { + return totalFee; + } + + public void setTotalFee(BigDecimal totalFee) { + this.totalFee = totalFee; + if(totalFee == null){ + removeValidField("totalFee"); + return; + } + addValidField("totalFee"); + } + + @Column(name = "OPEN_ID") + public String getOpenId() { + return openId; + } + + public void setOpenId(String openId) { + this.openId = openId; + if(openId == null){ + removeValidField("openId"); + return; + } + addValidField("openId"); + } + + @Column(name = "TRANSACTION_ID") + public String getTransactionId() { + return transactionId; + } + + public void setTransactionId(String transactionId) { + this.transactionId = transactionId; + if(transactionId == null){ + removeValidField("transactionId"); + return; + } + addValidField("transactionId"); + } + + @Column(name = "TRANSACTION_TIME") + public Date getTransactionTime() { + return transactionTime; + } + + + public void setTransactionTime(Date transactionTime) { + this.transactionTime = transactionTime; + if(transactionTime == null){ + removeValidField("transactionTime"); + return; + } + addValidField("transactionTime"); + } + + @Column(name = "COMPLETE_TIME") + public Date getCompleteTime() { + return completeTime; + } + + public void setCompleteTime(Date completeTime) { + this.completeTime = completeTime; + if(completeTime == null){ + removeValidField("completeTime"); + return; + } + addValidField("completeTime"); + } +} diff --git a/src/main/java/com/xmomen/module/wx/pay/entity/mapper/PayRecordMapper.xml b/src/main/java/com/xmomen/module/wx/pay/entity/mapper/PayRecordMapper.xml new file mode 100644 index 0000000..bc6b122 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/pay/entity/mapper/PayRecordMapper.xml @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + insert into tb_pay_record + + + ID, + + + TRADE_NO, + + + TRADE_TYPE, + + + TOTAL_FEE, + + + OPEN_ID, + + + TRANSACTION_ID, + + + TRANSACTION_TIME, + + + COMPLETE_TIME, + + + + + #{id,jdbcType=VARCHAR}, + + + #{tradeNo,jdbcType=VARCHAR}, + + + #{tradeType,jdbcType=VARCHAR}, + + + #{tradeType,jdbcType=DECIMAL}, + + + #{openId,jdbcType=VARCHAR}, + + + #{transactionId,jdbcType=VARCHAR}, + + + #{transactionTime,jdbcType=TIMESTAMP}, + + + #{completeTime,jdbcType=TIMESTAMP}, + + + + + + update tb_pay_record set COMPLETE_TIME = #{completeTime,jdbcType=TIMESTAMP}, + TRANSACTION_ID = #{transactionId,jdbcType=VARCHAR} + where ID = #{id,jdbcType=VARCHAR} + + + + \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/wx/pay/model/PayReqData.java b/src/main/java/com/xmomen/module/wx/pay/model/PayReqData.java new file mode 100644 index 0000000..c0072fa --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/pay/model/PayReqData.java @@ -0,0 +1,229 @@ +package com.xmomen.module.wx.pay.model; + +/** + * User: rizenguo + * Date: 2014/10/22 + * Time: 21:29 + */ + +import com.xmomen.module.wx.pay.common.Configure; +import com.xmomen.module.wx.pay.common.RandomStringGenerator; +import com.xmomen.module.wx.pay.common.Signature; + +import java.lang.reflect.Field; +import java.util.HashMap; +import java.util.Map; + +/** + * 请求支付API需要提交的数据 + */ +public class PayReqData { + + //小程序id 必填 + private String appid = ""; + //商户号 必填 + private String mch_id = ""; + //设备号 否 +// private String device_info = ""; + //随机字符串 必填 + private String nonce_str = ""; + //签名 必填 + private String sign = ""; + //签名类型 否 +// private String sign_type = ""; + //商品描述 是 + private String body = ""; + //商品详情 否 +// private String detail = ""; + //附件数据 否 + private String attach; + //商品订单号 是 + private String out_trade_no = ""; + //货币类型 + private String fee_type; + //总费用 是 到分 + private int total_fee = 0; + //终端Ip + private String spbill_create_ip = ""; + //交易起始时间 +// private String time_start = ""; + //交易结束时间 +// private String time_expire = ""; + //商品标记 +// private String goods_tag = ""; + //通知地址 是 + private String notify_url = ""; + //交易类型 是 + private String trade_type = "JSAPI"; + //用户标识 是 + private String openid = ""; + + /** + * @param body + * @param outTradeNo + * @param totalFee + * @param spBillCreateIP + * @param openId + */ + public PayReqData(String body, String outTradeNo, int totalFee, String spBillCreateIP, String openId, String attach) { + + //微信分配的公众号ID(开通公众号之后可以获取到) + setAppid(Configure.getAppid()); + + //微信支付分配的商户号ID(开通公众号的微信支付功能之后可以获取到) + setMch_id(Configure.getMchid()); + + //要支付的商品的描述信息,用户会在支付成功页面里看到这个信息 + setBody(body); + + //商户系统内部的订单号,32个字符内可包含字母, 确保在商户系统唯一 + setOut_trade_no(outTradeNo); + + //附加数据 + setAttach(attach); + + //订单总金额,单位为“分”,只能整数 + setTotal_fee(totalFee); + + //通知地址 + setNotify_url(Configure.getNotify_url()); + + //订单生成的机器IP + setSpbill_create_ip(spBillCreateIP); + + //商品标记,微信平台配置的商品标记,用于优惠券或者满减使用 + setOpenid(openId); + + //随机字符串,不长于32 位 + setNonce_str(RandomStringGenerator.getRandomStringByLength(32)); + + //根据API给的签名规则进行签名 + String sign = Signature.getSign(toMap()); + + setSign(sign);//把签名数据设置到Sign这个属性中 + } + + public String getAppid() { + return appid; + } + + public void setAppid(String appid) { + this.appid = appid; + } + + public String getMch_id() { + return mch_id; + } + + public void setMch_id(String mch_id) { + this.mch_id = mch_id; + } + + public String getNonce_str() { + return nonce_str; + } + + public void setNonce_str(String nonce_str) { + this.nonce_str = nonce_str; + } + + public String getSign() { + return sign; + } + + public void setSign(String sign) { + this.sign = sign; + } + + public String getBody() { + return body; + } + + public void setBody(String body) { + this.body = body; + } + + public String getOut_trade_no() { + return out_trade_no; + } + + public void setOut_trade_no(String out_trade_no) { + this.out_trade_no = out_trade_no; + } + + public int getTotal_fee() { + return total_fee; + } + + public void setTotal_fee(int total_fee) { + this.total_fee = total_fee; + } + + public String getSpbill_create_ip() { + return spbill_create_ip; + } + + public void setSpbill_create_ip(String spbill_create_ip) { + this.spbill_create_ip = spbill_create_ip; + } + + public String getOpenid() { + return openid; + } + + public void setOpenid(String openid) { + this.openid = openid; + } + + public String getFee_type() { + return fee_type; + } + + public void setFee_type(String fee_type) { + this.fee_type = fee_type; + } + + public String getNotify_url() { + return notify_url; + } + + public void setNotify_url(String notify_url) { + this.notify_url = notify_url; + } + + public String getTrade_type() { + return trade_type; + } + + public void setTrade_type(String trade_type) { + this.trade_type = trade_type; + } + + public String getAttach() { + return attach; + } + + public void setAttach(String attach) { + this.attach = attach; + } + + public Map toMap() { + Map map = new HashMap(); + Field[] fields = this.getClass().getDeclaredFields(); + for (Field field : fields) { + Object obj; + try { + obj = field.get(this); + if (obj != null && !obj.equals("")) { + map.put(field.getName(), obj); + } + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + return map; + } + +} diff --git a/src/main/java/com/xmomen/module/wx/pay/model/RefundResData.java b/src/main/java/com/xmomen/module/wx/pay/model/RefundResData.java new file mode 100644 index 0000000..d294942 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/pay/model/RefundResData.java @@ -0,0 +1,129 @@ +package com.xmomen.module.wx.pay.model; + +public class RefundResData { + + private String return_code; + private String return_msg; + + /** + * 以下字段在return_code为SUCCESS的时候有返回 + */ + private String result_code; + private String err_code; + private String err_code_des; + private String appid; + private String mch_id; + private String device_info; + private String nonce_str; + private String sign; + private String transaction_id; + private String out_trade_no; + private String out_refund_no; + private String refund_id; + private int refund_fee; + private int total_fee; + private int cash_fee; + + public String getReturn_code() { + return return_code; + } + public void setReturn_code(String return_code) { + this.return_code = return_code; + } + public String getReturn_msg() { + return return_msg; + } + public void setReturn_msg(String return_msg) { + this.return_msg = return_msg; + } + public String getResult_code() { + return result_code; + } + public void setResult_code(String result_code) { + this.result_code = result_code; + } + public String getErr_code() { + return err_code; + } + public void setErr_code(String err_code) { + this.err_code = err_code; + } + public String getErr_code_des() { + return err_code_des; + } + public void setErr_code_des(String err_code_des) { + this.err_code_des = err_code_des; + } + public String getAppid() { + return appid; + } + public void setAppid(String appid) { + this.appid = appid; + } + public String getMch_id() { + return mch_id; + } + public void setMch_id(String mch_id) { + this.mch_id = mch_id; + } + public String getDevice_info() { + return device_info; + } + public void setDevice_info(String device_info) { + this.device_info = device_info; + } + public String getNonce_str() { + return nonce_str; + } + public void setNonce_str(String nonce_str) { + this.nonce_str = nonce_str; + } + public String getSign() { + return sign; + } + public void setSign(String sign) { + this.sign = sign; + } + public String getTransaction_id() { + return transaction_id; + } + public void setTransaction_id(String transaction_id) { + this.transaction_id = transaction_id; + } + public String getOut_trade_no() { + return out_trade_no; + } + public void setOut_trade_no(String out_trade_no) { + this.out_trade_no = out_trade_no; + } + public String getOut_refund_no() { + return out_refund_no; + } + public void setOut_refund_no(String out_refund_no) { + this.out_refund_no = out_refund_no; + } + public String getRefund_id() { + return refund_id; + } + public void setRefund_id(String refund_id) { + this.refund_id = refund_id; + } + public int getRefund_fee() { + return refund_fee; + } + public void setRefund_fee(int refund_fee) { + this.refund_fee = refund_fee; + } + public int getTotal_fee() { + return total_fee; + } + public void setTotal_fee(int total_fee) { + this.total_fee = total_fee; + } + public int getCash_fee() { + return cash_fee; + } + public void setCash_fee(int cash_fee) { + this.cash_fee = cash_fee; + } +} diff --git a/src/main/java/com/xmomen/module/wx/pay/model/WeixinPayRecord.java b/src/main/java/com/xmomen/module/wx/pay/model/WeixinPayRecord.java new file mode 100644 index 0000000..4082392 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/pay/model/WeixinPayRecord.java @@ -0,0 +1,42 @@ +package com.xmomen.module.wx.pay.model; + +import lombok.Data; + +public @Data class WeixinPayRecord { + + private String tradeId; + + private Integer tradeType; + /** + * 商品订单号 + */ + private String tradeNo; + /** + * 支付总金额 + * 单位为分 + */ + private Integer totalFee; + + private String openId; + + private String transactionId; + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("WeixinPayRecord [tradeId="); + builder.append(tradeId); + builder.append(", tradeType="); + builder.append(tradeType); + builder.append(", tradeNo="); + builder.append(tradeNo); + builder.append(", totalFee="); + builder.append(totalFee); + builder.append(", openId="); + builder.append(openId); + builder.append(", transactionId="); + builder.append(transactionId); + builder.append("]"); + return builder.toString(); + } +} diff --git a/src/main/java/com/xmomen/module/wx/pay/service/BaseService.java b/src/main/java/com/xmomen/module/wx/pay/service/BaseService.java new file mode 100644 index 0000000..bf4890a --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/pay/service/BaseService.java @@ -0,0 +1,43 @@ +package com.xmomen.module.wx.pay.service; + +import com.xmomen.module.wx.pay.common.Configure; + +import java.io.IOException; +import java.security.KeyManagementException; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.UnrecoverableKeyException; + +/** + * User: rizenguo + * Date: 2014/12/10 + * Time: 15:44 + * 服务的基类 + */ +public class BaseService { + + //API的地址 + private String apiURL; + + //发请求的HTTPS请求器 + private IServiceRequest serviceRequest; + + public BaseService(String api) throws ClassNotFoundException, IllegalAccessException, InstantiationException { + apiURL = api; + Class c = Class.forName(Configure.HttpsRequestClassName); + serviceRequest = (IServiceRequest) c.newInstance(); + } + + protected String sendPost(Object xmlObj) throws UnrecoverableKeyException, IOException, NoSuchAlgorithmException, KeyStoreException, KeyManagementException { + return serviceRequest.sendPost(apiURL, xmlObj); + } + + /** + * 供商户想自定义自己的HTTP请求器用 + * + * @param request 实现了IserviceRequest接口的HttpsRequest + */ + public void setServiceRequest(IServiceRequest request) { + serviceRequest = request; + } +} diff --git a/src/main/java/com/xmomen/module/wx/pay/service/PayRecordService.java b/src/main/java/com/xmomen/module/wx/pay/service/PayRecordService.java new file mode 100644 index 0000000..304ec3c --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/pay/service/PayRecordService.java @@ -0,0 +1,69 @@ +package com.xmomen.module.wx.pay.service; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.module.wx.pay.entity.TbPayRecord; +import com.xmomen.module.wx.pay.entity.mapper.PayRecordMapper; +import com.xmomen.module.wx.pay.model.WeixinPayRecord; + +@Service +public class PayRecordService { + + @Autowired + MybatisDao mybatisDao; + + public TbPayRecord addPayRecord(WeixinPayRecord weixinPayRecord) { + TbPayRecord tbPayRecord = new TbPayRecord(); + tbPayRecord.setId(weixinPayRecord.getTradeId()); + tbPayRecord.setOpenId(weixinPayRecord.getOpenId()); + tbPayRecord.setTradeType(weixinPayRecord.getTradeType()); + tbPayRecord.setTradeNo(weixinPayRecord.getTradeNo()); + + tbPayRecord.setTotalFee(new BigDecimal(Double.valueOf(weixinPayRecord.getTotalFee())/100)); + tbPayRecord.setTransactionTime(new Date()); + mybatisDao.getSqlSessionTemplate().insert(PayRecordMapper.PAY_RECORD_MAPPER_NAMESPACE + "insertPayRecord", tbPayRecord); + return tbPayRecord; + } + + public void finishPayRecord(WeixinPayRecord weixinPayRecord) { + String id = weixinPayRecord.getTradeId(); + TbPayRecord tbPayRecord = mybatisDao.selectByPrimaryKey(TbPayRecord.class, id); + if(tbPayRecord != null) { + tbPayRecord.setTransactionId(weixinPayRecord.getTransactionId()); + tbPayRecord.setCompleteTime(new Date()); + mybatisDao.getSqlSessionTemplate().update(PayRecordMapper.PAY_RECORD_MAPPER_NAMESPACE + "markFinished", tbPayRecord); + //mybatisDao.update(tbPayRecord); + } + } + + public TbPayRecord getTbPayRecordById(String id) { + TbPayRecord tbPayRecord = mybatisDao.selectByPrimaryKey(TbPayRecord.class, id); + return tbPayRecord; + } + + public TbPayRecord getTbpayRecordByRecord(TbPayRecord tbPayRecord) { + List tbPayRecords = mybatisDao.getSqlSessionTemplate() + .selectList(PayRecordMapper.PAY_RECORD_MAPPER_NAMESPACE + "selectByQuery", tbPayRecord); + //List tbPayRecords = mybatisDao.selectByModel(tbPayRecord); + if(tbPayRecords == null || tbPayRecords.isEmpty()) { + return null; + } + return tbPayRecords.get(0); + } + + public List getTbpayRecordListByRecord(TbPayRecord tbPayRecord) { + List tbPayRecords = mybatisDao.getSqlSessionTemplate() + .selectList(PayRecordMapper.PAY_RECORD_MAPPER_NAMESPACE + "selectByQuery", tbPayRecord); + return tbPayRecords; + } + + public void insert(TbPayRecord tbPayRecord) { + mybatisDao.getSqlSessionTemplate().insert(PayRecordMapper.PAY_RECORD_MAPPER_NAMESPACE + "insertPayRecord", tbPayRecord); + } +} diff --git a/src/main/java/com/xmomen/module/wx/pay/service/PayService.java b/src/main/java/com/xmomen/module/wx/pay/service/PayService.java new file mode 100644 index 0000000..088111c --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/pay/service/PayService.java @@ -0,0 +1,33 @@ +package com.xmomen.module.wx.pay.service; + +import com.xmomen.module.wx.pay.common.Configure; +import com.xmomen.module.wx.pay.model.PayReqData; + +/** + * User: rizenguo + * Date: 2014/10/29 + * Time: 16:03 + */ +public class PayService extends BaseService { + + public PayService() throws IllegalAccessException, InstantiationException, ClassNotFoundException { + super(Configure.PUBLIC_PAY); + } + + /** + * 请求支付服务 + * + * @param payReqData 这个数据对象里面包含了API要求提交的各种数据字段 + * @return API返回的数据 + * @throws Exception + */ + public String request(PayReqData payReqData) throws Exception { + + //-------------------------------------------------------------------- + //发送HTTPS的Post请求到API地址 + //-------------------------------------------------------------------- + String responseString = sendPost(payReqData); + + return responseString; + } +} diff --git a/src/main/java/com/xmomen/module/wx/pay/service/RefundService.java b/src/main/java/com/xmomen/module/wx/pay/service/RefundService.java new file mode 100644 index 0000000..1b7404b --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/pay/service/RefundService.java @@ -0,0 +1,33 @@ +package com.xmomen.module.wx.pay.service; + +import com.xmomen.module.wx.pay.common.Configure; +import com.xmomen.module.wx.pay.model.RefundReqData; + +/** + * 商家退款 + * @author xiao + * + */ +public class RefundService extends BaseService { + + public RefundService() throws ClassNotFoundException, IllegalAccessException, InstantiationException { + super(Configure.APPLY_REFUND); + } + + /** + * 申请退款服务 + * + * @param payReqData 这个数据对象里面包含了API要求提交的各种数据字段 + * @return API返回的数据 + * @throws Exception + */ + public String request(RefundReqData refundReqData) throws Exception { + + //-------------------------------------------------------------------- + //发送HTTPS的Post请求到API地址 + //-------------------------------------------------------------------- + String responseString = sendPost(refundReqData); + + return responseString; + } +} diff --git a/src/main/java/com/xmomen/module/wx/service/BindService.java b/src/main/java/com/xmomen/module/wx/service/BindService.java new file mode 100644 index 0000000..152da41 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/service/BindService.java @@ -0,0 +1,147 @@ +package com.xmomen.module.wx.service; + +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.framework.utils.StringUtilsExt; +import com.xmomen.module.base.entity.CdBind; +import com.xmomen.module.base.entity.CdExpressMember; +import com.xmomen.module.base.entity.CdMember; +import com.xmomen.module.order.entity.TbOrder; +import com.xmomen.module.wx.model.AjaxResult; +import com.xmomen.module.wx.util.DateUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * Created by Jeng on 2016/3/30. + */ +@Service +public class BindService { + Logger logger = LoggerFactory.getLogger(BindService.class); + + @Autowired + MybatisDao mybatisDao; + + /** + * 绑定手机号 + * 如果之前绑定过则覆盖 + * + * @param openId 唯一号 + * @param phone 手机号 + * @param bindType 绑定类型 1-客户绑定 2-快递员绑定 + * @return + */ + @Transactional + public boolean bindAccount(String openId, String phone, String bindType) { + Integer userId = null; + if ("1".equals(bindType)) { + CdMember member = new CdMember(); + member.setPhoneNumber(phone); + List members = mybatisDao.selectByModel(member); + if (members == null || members.size() == 0) { + return false; + } + userId = members.get(0).getId(); + } + else if ("2".equals(bindType)) { + CdExpressMember expressMember = new CdExpressMember(); + expressMember.setPhone(phone); + List expressMembers = mybatisDao.selectByModel(expressMember); + if (expressMembers == null || expressMembers.size() == 0) { + return false; + } + userId = expressMembers.get(0).getId(); + } + CdBind bind = new CdBind(); + bind.setOpenId(openId); + List binds = mybatisDao.selectByModel(bind); + if (binds != null && binds.size() > 0) { + bind.setId(binds.get(0).getId()); + } + bind.setOpenId(openId); + bind.setUserId(userId); + bind.setPhone(phone); + mybatisDao.save(bind); + return true; + } + + /** + * 订单绑定快递员 + * + * @return + */ + @Transactional + public String bindExpressMember(Integer userId, String orderNo) { + //查找订单 + TbOrder order = new TbOrder(); + order.setOrderNo(orderNo); + order = mybatisDao.selectOneByModel(order); + //判断订单状态是否是待配送状态 + if (!"12".equals(order.getOrderStatus())) { + logger.error("订单" + orderNo + "状态不是待配送,不能扫描"); + return "订单" + orderNo + "状态不是待配送,不能扫描"; + } + + if (order == null) { + logger.error("订单" + orderNo + "不存在"); + return "订单<<" + orderNo + ">>不存在"; + } + //查找快递员信息 + CdExpressMember expressMember = new CdExpressMember(); + expressMember.setId(userId); + List expressMembers = mybatisDao.selectByModel(expressMember); + if (expressMembers == null || expressMembers.size() == 0) { + logger.error("快递员不存在"); + return "快递员不存在"; + } + expressMember = expressMembers.get(0); + //订单中的发运快递商是否是快递员所属快递商 + if (order.getDespatchExpressId().intValue() != expressMember.getCdExpressId().intValue()) { + logger.error("不属于你的包裹,不能扫描!"); + return "不属于你的包裹,不能扫描!"; + } + //更新订单 + order.setExpressMemberId(expressMember.getId()); + //更新订单状态 + //配送中 + order.setOrderStatus("5"); + mybatisDao.save(order); + return "扫描成功"; + } + + + /** + * 订单收货 + * + * @return + */ + @Transactional + public AjaxResult orderShouhuo(String openId, String orderNo, String shouhuoNo, AjaxResult ajaxResult) { + TbOrder order = new TbOrder(); + order.setOrderNo(orderNo); + order = mybatisDao.selectOneByModel(order); + //不等于配送中 不能再收货 + if (!order.getOrderStatus().equals("5")) { + ajaxResult.setResult(0); + ajaxResult.setMessage("订单状态不对,不能收货。"); + return ajaxResult; + } + + if (StringUtilsExt.isNotBlank(shouhuoNo)) { + order.setOrderStatus("7"); + } + else { + order.setOrderStatus("6"); + } + ajaxResult.setResult(1); + ajaxResult.setMessage("收货成功。"); + //设置收货时间 + order.setShouHuoDate(DateUtils.getNowDate()); + mybatisDao.save(order); + return ajaxResult; + } +} diff --git a/src/main/java/com/xmomen/module/wx/service/MessageHandlerService.java b/src/main/java/com/xmomen/module/wx/service/MessageHandlerService.java new file mode 100644 index 0000000..7247949 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/service/MessageHandlerService.java @@ -0,0 +1,173 @@ +package com.xmomen.module.wx.service; + +import com.alibaba.fastjson.JSONObject; +import com.xmomen.framework.utils.StringUtilsExt; +import com.xmomen.module.wx.constants.AppCodeConsts; +import com.xmomen.module.wx.constants.RequestMsgTypeEnum; +import com.xmomen.module.wx.model.MessageBase; +import com.xmomen.module.wx.model.requestModel.RequestMessageBeanFactory; +import com.xmomen.module.wx.util.XMLUtils; + +import org.apache.commons.io.IOUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.HashMap; +import java.util.Map; + +/** + * 微信推送过来的消息处理类 + */ +@Service +public class MessageHandlerService { + static Logger log = LoggerFactory.getLogger(MessageHandlerService.class); + + /** + * 请求消息缓存map 用于排重 + */ + private static Map requestMessageMap = new HashMap(); + + @Autowired + ResponseMessageServiceFactory responseMessageStrategyFactory; + + /** + * 处理请求消息,并且返回回复信息 + * + * @return 回复的消息 + */ + public String execute(InputStream is) { + //得到请求的msg xml格式 + String xmlMsg = this.readInputStreamMsg(is); + + log.info("接收的到的XML格式请求消息:" + xmlMsg); + + //消息为空的话直接返回空串 + if (StringUtilsExt.isEmpty(xmlMsg)) { + return StringUtilsExt.EMPTY; + } + + JSONObject xmlJson = null; + try { + //xml格式转json + xmlJson = XMLUtils.xmlToJSONObject(xmlMsg); + + log.info("转化后的请求消息(JSON格式):" + xmlJson.toJSONString()); + } catch (Exception e) { + log.error("解析XML字符串失败:", e); + //直接回复空串 + return StringUtilsExt.EMPTY; + } + + //请求类型 + String msgType = (String) xmlJson.get(AppCodeConsts.MSG_TYPE); + + //重复校验用MessageKey + String messageKey = ""; + //请求是事件消息场景 没有msgid 取fromUserName + createTime为key + if (msgType.toLowerCase().equals(RequestMsgTypeEnum.event.toString().toLowerCase())) { + messageKey = (String) xmlJson.get(AppCodeConsts.FROM_USER_NAME) + xmlJson.get(AppCodeConsts.CREATE_TIME).toString(); + } + //消息类型 取msgId未key + else { + messageKey = xmlJson.get(AppCodeConsts.MSG_ID).toString(); + } + + //重复消息场景 + if (this.isRepeatMessage(xmlJson, messageKey)) { + log.info("微信请求消息重复。"); + return StringUtilsExt.EMPTY; + } + + //请求model + MessageBase requestMessageBase = null; + try { + String msgKey = msgType; + + //请求是事件消息场景 + if (msgType.toLowerCase().equals(RequestMsgTypeEnum.event.toString().toLowerCase())) { + //具体的事件类型 + msgKey = RequestMessageBeanFactory.EVENT_PREFIX + xmlJson.get(RequestMsgTypeEnum.event.toString()); + } + + log.info("微信请求消息类型:" + msgKey); + + //将请求的消息封装成实体对象 + requestMessageBase = (MessageBase) JSONObject.parseObject(xmlJson.toJSONString(), RequestMessageBeanFactory.createInstance(msgKey).getClass()); + } catch (Exception e) { + log.error("微信消息对象解析失败:", e); + + //将处理后的msg从缓存中移除 + requestMessageMap.remove(messageKey); + + //直接回复空串 + return StringUtilsExt.EMPTY; + } + + try { + //通过消息类型获取对应的响应处理类 + ResponseMessageBaseService responseMessageStrategy = responseMessageStrategyFactory.createInstance(msgType); + + + //返回的回复消息 + String responseXml = responseMessageStrategy.handleRequestMessage(requestMessageBase); + + return responseXml; + } catch (Exception e) { + log.error("请求回复处理异常:", e); + } finally { + //将处理后的msg从缓存中移除 + requestMessageMap.remove(messageKey); + } + return StringUtilsExt.EMPTY; + } + + + /** + * 消息重复判断 普通消息用msgid排重 事件消息用fromUserName+createTime排重 + * + * @return true:重复/false:未重复 + */ + private boolean isRepeatMessage(JSONObject map, String key) { + //不存在场景 + if (!requestMessageMap.containsKey(key)) { + //放入缓存 + requestMessageMap.put(key, map); + return false; + } + return true; + } + + /** + * 从流中读取微信消息 + * + * @param is 微信请求消息输入流 + * @return 微信消息字符串(XML格式) + */ + private String readInputStreamMsg(InputStream is) { + StringBuilder sb = new StringBuilder(); + BufferedReader reader = null; + try { + //获取输入流 + reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); + + String line = null; + + //循环读取 + while ((line = reader.readLine()) != null) { + sb.append(line); + } + } catch (IOException e) { + log.error("从流中读取微信消息失败:", e); + } finally { + IOUtils.closeQuietly(reader); + IOUtils.closeQuietly(is); + } + return sb.toString(); + } +} diff --git a/src/main/java/com/xmomen/module/wx/service/ResponseMessageBaseService.java b/src/main/java/com/xmomen/module/wx/service/ResponseMessageBaseService.java new file mode 100644 index 0000000..39079fe --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/service/ResponseMessageBaseService.java @@ -0,0 +1,21 @@ +package com.xmomen.module.wx.service; + +import com.xmomen.module.wx.model.MessageBase; + +import com.xmomen.module.wx.model.MessageBase; + +/** + * 微信服务响应公共接口类 + */ +public interface ResponseMessageBaseService { + /** + * 对微信的请求消息做出响应 + * + * @param requestMessage 请求的消息内容 + * @param requestMessageExt 请求内容封装类 + * @return 回复给微信的消息 (xml格式) + * @throws IllegalAccessException + * @throws InstantiationException + */ + public String handleRequestMessage(MessageBase requestMessage) throws InstantiationException, IllegalAccessException, Exception; +} diff --git a/src/main/java/com/xmomen/module/wx/service/ResponseMessageVideoService.java b/src/main/java/com/xmomen/module/wx/service/ResponseMessageVideoService.java new file mode 100644 index 0000000..fdb78b5 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/service/ResponseMessageVideoService.java @@ -0,0 +1,35 @@ +package com.xmomen.module.wx.service; + + +import com.xmomen.framework.utils.StringUtilsExt; +import com.xmomen.module.wx.model.MessageBase; +import com.xmomen.module.wx.model.requestModel.message.RequestMessageVideo; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.io.File; + +/** + * 微信视频消息响应类 + */ +@Service +public class ResponseMessageVideoService implements ResponseMessageBaseService { + + Logger log = LoggerFactory.getLogger(ResponseMessageVideoService.class); + + /** + * 对微信视频请求消息做出响应 + * + * @param requestMessage 请求的消息内容 + * @param requestMessageExt 请求内容封装类 + * @return 回复给微信的消息 (xml格式) + * @throws InstantiationException + * @throws IllegalAccessException + */ + public String handleRequestMessage(MessageBase requestMessage) throws InstantiationException, IllegalAccessException { + return StringUtilsExt.EMPTY; + } +} diff --git a/src/main/java/com/xmomen/module/wx/service/ResponseMessageVoiceService.java b/src/main/java/com/xmomen/module/wx/service/ResponseMessageVoiceService.java new file mode 100644 index 0000000..5d0c4a3 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/service/ResponseMessageVoiceService.java @@ -0,0 +1,35 @@ +package com.xmomen.module.wx.service; + + +import com.xmomen.framework.utils.StringUtilsExt; +import com.xmomen.module.wx.model.MessageBase; +import com.xmomen.module.wx.model.requestModel.message.RequestMessageVoice; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.io.File; + +/** + * 微信语音消息响应类 + */ +@Service +public class ResponseMessageVoiceService implements ResponseMessageBaseService { + + Logger log = LoggerFactory.getLogger(ResponseMessageVoiceService.class); + + /** + * 对微信的语音请求消息做出响应 + * + * @param requestMessage 请求的消息内容 + * @param requestMessageExt 请求内容封装类 + * @return 回复给微信的消息 (xml格式) + * @throws InstantiationException + * @throws IllegalAccessException + */ + public String handleRequestMessage(MessageBase requestMessage) throws InstantiationException, IllegalAccessException { + return StringUtilsExt.EMPTY; + } +} diff --git a/src/main/java/com/xmomen/module/wx/service/WeixinApiService.java b/src/main/java/com/xmomen/module/wx/service/WeixinApiService.java new file mode 100644 index 0000000..3efdf33 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/service/WeixinApiService.java @@ -0,0 +1,409 @@ +package com.xmomen.module.wx.service; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import javax.servlet.http.HttpServletRequest; + +import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringEscapeUtils; +import org.apache.shiro.util.CollectionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import com.alibaba.fastjson.JSON; +import com.xmomen.framework.mybatis.dao.MybatisDao; +import com.xmomen.framework.utils.StringUtilsExt; +import com.xmomen.module.wx.constants.WeixinConsts; +import com.xmomen.module.wx.entity.WxAppSetting; +import com.xmomen.module.wx.model.AccessToken; +import com.xmomen.module.wx.model.AccessTokenOAuth; +import com.xmomen.module.wx.model.JsApiTicket; +import com.xmomen.module.wx.model.PayAttachModel; +import com.xmomen.module.wx.model.WeixinUserInfo; +import com.xmomen.module.wx.module.order.service.MyOrderService; +import com.xmomen.module.wx.pay.common.Configure; +import com.xmomen.module.wx.pay.common.MD5; +import com.xmomen.module.wx.pay.common.RandomStringGenerator; +import com.xmomen.module.wx.pay.common.Util; +import com.xmomen.module.wx.pay.entity.TbPayRecord; +import com.xmomen.module.wx.pay.model.PayReqData; +import com.xmomen.module.wx.pay.model.PayResData; +import com.xmomen.module.wx.pay.model.RefundReqData; +import com.xmomen.module.wx.pay.model.RefundResData; +import com.xmomen.module.wx.pay.model.WeixinPayRecord; +import com.xmomen.module.wx.pay.service.PayRecordService; +import com.xmomen.module.wx.pay.service.PayService; +import com.xmomen.module.wx.pay.service.RefundService; +import com.xmomen.module.wx.util.DateUtils; +import com.xmomen.module.wx.util.HttpUtils; +import com.xmomen.module.wx.util.JsonUtils; +import com.xmomen.module.wx.util.SignUtil; + +/** + * 微信认证处理类 + */ +@Component +public class WeixinApiService { + static Logger log = LoggerFactory.getLogger(WeixinApiService.class); + + @Autowired + AppSettingService appSettingService; + + @Autowired + MybatisDao mybatisDao; + + @Autowired + MyOrderService myOrderService; + + @Autowired + PayRecordService payRecordService; + + /** + * 取得微信用户信息 + * + * @param accessToken 访问令牌 + * @param openid OpenID + * @return 信息用户信息 + */ + public static WeixinUserInfo getWeixinUserInfo(String accessToken, String openid) { + try { + String url = WeixinConsts.GET_WEIXIN_USER_INFO.replace("{ACCESS_TOKEN}", accessToken).replace("{OPENID}", openid); + + String result = HttpUtils.doGet(url); + + log.info("获取用户信息结果字符串:" + result); + + if (StringUtilsExt.isNotEmpty(result)) { + return JsonUtils.parseJSON(StringEscapeUtils.unescapeJson(result), WeixinUserInfo.class); + } + } catch (Exception e) { + log.error("获取用户信息失败:", e); + } + return null; + } + + /** + * 获得accessToken + * + * @return + */ + public String getAccessToken(String publicUid) { + //获取公众号的配置 + WxAppSetting appSettingExt = appSettingService.getAppSetting(publicUid); + + if (appSettingExt == null) { + return StringUtils.EMPTY; + } + //获取缓存的access_token + AccessToken accessToken = new AccessToken(appSettingExt.getAccessToken(), String.valueOf(appSettingExt.getExpiresIn()), appSettingExt.getLastGetTime()); + + //判断是否access_token是否过期 + if (accessToken.getAccess_token() == null || accessToken.isExpired()) { + //过期重新获取accessToken + String url = WeixinConsts.GET_ACCESS_TOKEN_URL.replace("{APPID}", appSettingExt.getAppId()).replace("{APPSECRET}", appSettingExt.getAppSecret()); + + //get请求微信服务器获取到accessToken + String result = HttpUtils.doGet(url); + if (!StringUtils.isEmpty(result)) { + try { + accessToken = JsonUtils.parseJSON(StringEscapeUtils.unescapeJson(result), AccessToken.class); + + log.info("最新的accessToken:" + accessToken.getAccess_token()); + + appSettingExt.setAccessToken(accessToken.getAccess_token()); + appSettingExt.setExpiresIn(Integer.parseInt(accessToken.getExpires_in())); + appSettingExt.setLastGetTime(DateUtils.getNowDate()); + + mybatisDao.update(appSettingExt); + + return accessToken.getAccess_token(); + } catch (Exception e) { + log.error("AccessToken获得异常:", e); + } + } + return StringUtilsExt.EMPTY; + } + //未过期 + else { + return accessToken.getAccess_token(); + } + } + + /** + * 获取网页授权的access_token + * + * @param code + * @return + */ + public AccessTokenOAuth getAccessToken(String code, String publicUid) { + //获取微信配置信息 + WxAppSetting appSettingExt = appSettingService.getAppSetting(publicUid); + AccessTokenOAuth accessToken = null; + try { + //获取网页授权URL拼装 + String url = WeixinConsts.GET_ACCESS_TOKEN_OAUTH.replace("{APPID}", appSettingExt.getAppId()).replace("{SECRET}", appSettingExt.getAppSecret()).replace("{CODE}", code); + log.info("授权URL:" + url); + + //get请求微信服务器 + String result = HttpUtils.doGet(url); + log.info("授权结果:" + result); + + //反馈信息存在 + if (StringUtilsExt.isNotEmpty(result)) { + accessToken = JsonUtils.parseJSON(StringEscapeUtils.unescapeJson(result), AccessTokenOAuth.class); + } + } catch (Exception e) { + log.error("获取accessToken失败", e); + } + return accessToken; + } + + /** + * 获取jsapi-ticket + * + * @param publicUid + * @return JsApiTicket + */ + public JsApiTicket getJsApiTicket(String publicUid) { + String accessToken = getAccessToken(publicUid); + String url = WeixinConsts.JS_API_TICKET.replace("{ACCESS_TOKEN}", accessToken); + JsApiTicket jsApiTicket = null; + //get请求微信服务器 + String result = HttpUtils.doGet(url); + log.info("微信[js_api_ticket]请求结果:" + result); + if (StringUtils.isNotEmpty(result)) { + jsApiTicket = JsonUtils.parseJSON(StringEscapeUtils.unescapeJson(result), JsApiTicket.class); + } + return jsApiTicket; + } + + /** + * 获取jsapi-sdk签名信息 + * + * @param publicUid + * @param url + * @return + */ + public Map getJsSDKConfig(String publicUid, String url) { + getAccessToken(publicUid); + JsApiTicket jsApiTicket = getJsApiTicket(publicUid); + Map map = SignUtil.sign(jsApiTicket.getTicket(), url); + //获取公众号的配置 + WxAppSetting appSettingExt = appSettingService.getAppSetting(publicUid); + map.put("appId", appSettingExt.getAppId()); + return map; + } + + /** + * 处理回调函数 + * + * @param notityXml + * @return + */ + @Transactional + public String notify(String notityXml) { + if (org.apache.commons.lang3.StringUtils.isNotEmpty(notityXml)) { + //将从API返回的XML数据映射到Java对象 + PayResData payResData = (PayResData) Util.getObjectFromXML(notityXml, PayResData.class); + log.info("returnCode:" + payResData.getResult_code()); + log.info("return_code:" + payResData.getReturn_code()); + log.info("out_trade_no:" + payResData.getOut_trade_no()); + if (StringUtils.equals("SUCCESS", payResData.getReturn_code())) { + //进行业务处理 + try { + if (StringUtils.equals("SUCCESS", payResData.getResult_code())) { + synchronized (this) { + //考虑微信的重复通知的可能性,所以加锁控制 + myOrderService.payCallBack(payResData); + } + } + else { + log.error("微信支付失败:" + payResData.getErr_code_des()); + return returnFail(); + } + } catch (Exception e) { + e.printStackTrace(); + log.error("业务逻辑处理失败:" + payResData); + return returnFail(); + } + } + else { + return returnFail(); + } + return returnSussess(); + } + else { + log.info("回调处理失败"); + return returnFail(); + } + } + + private String returnSussess() { + return ""; + } + + private String returnFail() { + return ""; + } + + /** + * 支付 + * + * @param outTradeNo 订单号 + * @param totalFee 总金额(元) + * @param request + * @return + */ + public PayResData payOrder(String outTradeNo, Double totalFee, String openId, Integer type, Integer memberId, HttpServletRequest request) { + PayAttachModel attachModel = null; + String tradeId = UUID.randomUUID().toString().replaceAll("-", ""); + if (!type.equals(2) && !type.equals(1)) { + log.info("不合法的交易类型:" + type + ",合法的值为[1, 2]"); + return null; + } + + log.info("outTradeNo:" + outTradeNo + ",totalFee:" + totalFee + ",openId:" + openId + ",type:" + type + ",request:" + request.toString()); + //如果订单已经支付(不是充值类型),则不能再申请微信支付 + if (type.equals(1)) { + TbPayRecord payRecordQuery = new TbPayRecord(); + payRecordQuery.setTradeNo(outTradeNo); + payRecordQuery.setTradeType(1); + payRecordQuery.setCompleteTime(new Date());//支付完成时间不为空 + List tbPayRecords = payRecordService.getTbpayRecordListByRecord(payRecordQuery); + if (!CollectionUtils.isEmpty(tbPayRecords)) { + log.error("已经支付成功的订单,不能重复提交支付申请"); + return null; + } + } + + attachModel = new PayAttachModel(type, outTradeNo, tradeId, "", memberId); + String attachement = JSON.toJSONString(attachModel); + totalFee = totalFee * 100; + PayReqData payReqData = new PayReqData("订单付费", tradeId, totalFee.intValue(), getIp2(request), openId, attachement); + + try { + String result = new PayService().request(payReqData); + log.info("请求返回的结果:" + result); + + //将从API返回的XML数据映射到Java对象 + PayResData payResData = (PayResData) Util.getObjectFromXML(result, PayResData.class); + //统一下单失败 + if (payResData.getReturn_code().equals("FAIL")) { + log.info("统一下单失败:" + payResData.getReturn_msg()); + return null; + } + //再次签名 + long timeStamp = System.currentTimeMillis() / 1000; + String nonceStr = RandomStringGenerator.getRandomStringByLength(32); + String packageStr = "prepay_id=" + payResData.getPrepay_id(); + //待签名字符串 + //根据API给的签名规则进行签名 appId,nonceStr,package,signType,timeStamp + String signStr = "appId=" + Configure.getAppid() + "&nonceStr=" + nonceStr + "&package=" + packageStr + "&signType=MD5&timeStamp=" + timeStamp + "&key=" + Configure.getKey(); + log.info("Sign Before MD5:" + signStr); + String sign = MD5.MD5Encode(signStr).toUpperCase(); + + log.info("SIGN签名:" + sign); + + payResData.setSign(sign); + payResData.setTimeStamp(String.valueOf(timeStamp)); + payResData.setNonce_str(nonceStr); + payResData.setPackageStr(packageStr); + payResData.setAppid(Configure.getAppid()); + payResData.setMch_id(null); + + return payResData; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public RefundResData refund(String tradeNo, int refundFee) { + TbPayRecord queryModel = new TbPayRecord(); + queryModel.setTradeNo(tradeNo); + queryModel.setTradeType(1); + queryModel.setCompleteTime(new Date());//交易完成时间不为空 + TbPayRecord tbPayRecord = payRecordService.getTbpayRecordByRecord(queryModel); + if (tbPayRecord == null) { + log.error("支付记录不存在或者支付未完成:" + tradeNo); + throw new IllegalArgumentException("支付记录不存在"); + } + String transactionId = tbPayRecord.getTransactionId(); + if (StringUtils.isEmpty(transactionId)) { + throw new IllegalArgumentException("未找到订单" + tradeNo + "关联的微信支付订单号"); + } + TbPayRecord refundPayRecordQuery = new TbPayRecord(); + refundPayRecordQuery.setTradeType(3); + refundPayRecordQuery.setTransactionId(transactionId); + List refundRecords = payRecordService.getTbpayRecordListByRecord(refundPayRecordQuery); + if (!refundRecords.isEmpty()) { + //这里限定一个订单只能退款一次 + throw new IllegalArgumentException("该订单已经提交过退款请求"); + } + String outRefundNo = UUID.randomUUID().toString().replaceAll("-", ""); + int totalFee = tbPayRecord.getTotalFee().multiply(new BigDecimal(100)).intValue(); + RefundReqData refundReqData = new RefundReqData(transactionId, totalFee, refundFee, outRefundNo); + try { + String result = new RefundService().request(refundReqData); + log.info("请求返回的结果:" + result); + //将从API返回的XML数据映射到Java对象 + RefundResData refundResData = (RefundResData) Util.getObjectFromXML(result, RefundResData.class); + if (StringUtils.equals("SUCCESS", refundResData.getReturn_code())) { + if (StringUtils.equals("SUCCESS", refundResData.getResult_code())) { + // 申请退款成功,设置completeTime + TbPayRecord refundRecord = new TbPayRecord(); + refundRecord.setId(outRefundNo); + refundRecord.setOpenId(tbPayRecord.getOpenId()); + refundRecord.setTradeType(3);//退款类型 + refundRecord.setTransactionId(tbPayRecord.getTransactionId()); + refundRecord.setTransactionTime(tbPayRecord.getTransactionTime()); + refundRecord.setCompleteTime(new Date()); + refundRecord.setTotalFee(new BigDecimal(Double.valueOf(refundFee) % 100)); + refundRecord.setTradeNo(tbPayRecord.getTradeNo()); + payRecordService.insert(tbPayRecord); + } + else { + log.info("请求退款失败" + refundResData.getErr_code_des()); + return null; + } + } + else { + return null; + } + return refundResData; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + /** + * 获取客户端IP + * + * @param request + * @return + */ + public static String getIp2(HttpServletRequest request) { + String ip = request.getHeader("x-forwarded-for"); + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("Proxy-Client-IP"); + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("WL-Proxy-Client-IP"); + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getRemoteAddr(); + } + if (ip.equals("0:0:0:0:0:0:0:1")) { + ip = "127.0.0.1"; + } + return ip; + } +} diff --git a/src/main/java/com/xmomen/module/wx/util/Auth2Handler.java b/src/main/java/com/xmomen/module/wx/util/Auth2Handler.java new file mode 100644 index 0000000..dca7c9c --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/util/Auth2Handler.java @@ -0,0 +1,98 @@ +package com.xmomen.module.wx.util; + +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; + +import com.xmomen.module.wx.model.WeixinUserInfo; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.util.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.xmomen.framework.utils.StringUtilsExt; +import com.xmomen.module.wx.constants.AuthorizeScope; +import com.xmomen.module.wx.constants.WechatUrlConstants; +import com.xmomen.module.wx.model.AccessTokenOAuth; + +public class Auth2Handler { + + static Logger logger = LoggerFactory.getLogger(Auth2Handler.class); + + private static final String STATE = "WJHYORDER"; + + private static final String APPID = "wx6e25cbce77bacdff"; + private static final String APPSECRET = "df1d3165ce5ac50dd355f66369a6503e"; + + public static String getOauthUrl(String redirectUrl) { + String url = ""; + try { + url = WechatUrlConstants.OAUTH.replace("APPID", APPID) + .replace("REDIRECT_URI", URLEncoder.encode(redirectUrl, "UTF-8")) + .replace("SCOPE", AuthorizeScope.snsapi_userinfo.toString()) + .replace("STATE", STATE); + } catch (UnsupportedEncodingException e) { + logger.error("获取oauthURL失败,可能是redirectUrl进行urlencoder时出错,请检查此参数:" + redirectUrl, e); + e.printStackTrace(); + } + return url; + } + + /** + * @param code + * @return + */ + public static AccessTokenOAuth getAccessToken(String code) { + String url = WechatUrlConstants.GET_ACCESS_TOKEN_OAUTH.replace("APPID", APPID) + .replace("SECRET", APPSECRET) + .replace("CODE", code); + logger.info("auth openid url --->" + url); + HttpRequest shc = new HttpClient(); + String result = shc.doPost(url, ""); + logger.info("request result -->" + result); + AccessTokenOAuth accessToken = null; + if (StringUtilsExt.isNotEmpty(result)) { + JSONObject json = JSON.parseObject(result); + if (null != json) { + if (StringUtilsExt.isNotEmpty(json.getString("errcode")) && json.getIntValue("errcode") != 0) { + logger.error("oauth 获取access_token失败,code=" + json.getIntValue("errcode") + ",msg=" + json.getIntValue("errmsg")); + } + else { + accessToken = new AccessTokenOAuth(); + accessToken.setAccessToken(json.getString("access_token")); + accessToken.setExpiresIn(json.getIntValue("expires_in")); + accessToken.setRefreshToken(json.getString("refresh_token")); + accessToken.setOpenid(json.getString("openid")); + accessToken.setScope(json.getString("scope")); + } + } + } + return accessToken; + } + + /** + * 获取未关注公众号用户信息 + * + * @param accessToken 访问令牌 + * @param openid OpenID + * @return 信息用户信息 + */ + public static WeixinUserInfo getNoGuanzhuWeixinUserInfo(String accessToken, String openid) { + try { + String url = WechatUrlConstants.GET_NO_GUANZHU_USER_INFO.replace("ACCESS_TOKEN", accessToken).replace("OPENID", openid); + + String result = HttpUtils.doGet(url); + WeixinUserInfo weixinUserInfo = JSON.parseObject(result, WeixinUserInfo.class); + if (StringUtils.isNotEmpty(weixinUserInfo.getErrcode())) { + logger.info("获取用户信息出错,错误码:" + weixinUserInfo.getErrcode()); + return null; + } + logger.info("获取用户信息结果字符串:" + result); + return weixinUserInfo; + } catch (Exception e) { + logger.error("获取用户信息失败:", e); + } + return null; + } +} diff --git a/src/main/java/com/xmomen/module/wx/util/Constant.java b/src/main/java/com/xmomen/module/wx/util/Constant.java new file mode 100644 index 0000000..7037369 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/util/Constant.java @@ -0,0 +1,11 @@ +package com.xmomen.module.wx.util; + +public class Constant { + + //public static final String ADD = "ADD"; + public static final String MODIFY = "MODIFY"; + public static final String DELETE = "DELETE"; + + public static final String CLEAN = "CLEAN"; + public static final String DIRTY = "DIRTY"; +} diff --git a/src/main/java/com/xmomen/module/wx/util/DateUtils.java b/src/main/java/com/xmomen/module/wx/util/DateUtils.java new file mode 100644 index 0000000..207e706 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/util/DateUtils.java @@ -0,0 +1,29 @@ +package com.xmomen.module.wx.util; + + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; + +public class DateUtils{ + + /** + * 取当前时间 + * + * @return 当前时间对象 + */ + public static Date getNowDate() { + return Calendar.getInstance().getTime(); + } + + /** + * 取当前时间 + * + * @return 当前时间字符串 + */ + public static String getNowDateString(String patten) { + SimpleDateFormat formatter = new SimpleDateFormat(patten); + return formatter.format(getNowDate()); + } +} diff --git a/src/main/java/com/xmomen/module/wx/util/EmojiFilter.java b/src/main/java/com/xmomen/module/wx/util/EmojiFilter.java new file mode 100644 index 0000000..81a9e7f --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/util/EmojiFilter.java @@ -0,0 +1,88 @@ +package com.xmomen.module.wx.util; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.xmomen.framework.utils.StringUtilsExt; + +/** + * 过滤emoji 或者 其他非文字类型的字符 + */ +public class EmojiFilter { + static Logger log = LoggerFactory.getLogger(EmojiFilter.class); + + + /** + * 检测是否有emoji字符 + * + * @param source 源字符串 + * @return true:有/false:无 + */ + public static boolean containsEmoji(String source) { + //源字符串为空场景 + if (StringUtilsExt.isBlank(source)) { + return false; + } + + int len = source.length(); + + //判断是否包含emoji字符 + for (int i = 0; i < len; i++) { + char codePoint = source.charAt(i); + //包含emoji + if (isEmojiCharacter(codePoint)) { + return true; + } + } + + return false; + } + + /** + * 判断是否是emoji字符(表情字符) + * + * @param codePoint 对象字符 + * @return true:是/false:否 + */ + private static boolean isEmojiCharacter(char codePoint) { + return !((codePoint == 0x0) || + (codePoint == 0x9) || + (codePoint == 0xA) || + (codePoint == 0xD) || + ((codePoint >= 0x20) && (codePoint <= 0xD7FF)) || + ((codePoint >= 0xE000) && (codePoint <= 0xFFFD)) || + ((codePoint >= 0x10000) && (codePoint <= 0x10FFFF))); + } + + /** + * 过滤emoji 或者 其他非文字类型的字符 + * + * @param source 字符串 + * @return 过滤后的字符串 + */ + public static String filterEmoji(String source) { + log.info("待过滤的源字符串:" + source); + + //不包含场景 + if (!containsEmoji(source)) { + return source; + } + + StringBuilder buf = new StringBuilder(source.length()); + + int len = source.length(); + + for (int i = 0; i < len; i++) { + char codePoint = source.charAt(i); + + //非表情字符的场合 + if (!isEmojiCharacter(codePoint)) { + buf.append(codePoint); + } + } + + log.info("过滤后的字符串:" + buf.toString()); + + return buf.toString(); + } +} \ No newline at end of file diff --git a/src/main/java/com/xmomen/module/wx/util/HttpClient.java b/src/main/java/com/xmomen/module/wx/util/HttpClient.java new file mode 100644 index 0000000..c44eb6e --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/util/HttpClient.java @@ -0,0 +1,483 @@ +package com.xmomen.module.wx.util; + +import java.io.BufferedInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.StringWriter; +import java.io.UnsupportedEncodingException; +import java.net.SocketTimeoutException; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import org.apache.commons.httpclient.ConnectTimeoutException; +import org.apache.commons.httpclient.HttpStatus; +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.NameValuePair; +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.ResponseHandler; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.client.methods.HttpRequestBase; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.message.BasicNameValuePair; +import org.apache.http.util.EntityUtils; +import org.dom4j.Document; +import org.dom4j.DocumentHelper; +import org.dom4j.io.OutputFormat; +import org.dom4j.io.XMLWriter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; + + +public class HttpClient implements HttpRequest { + + private ThreadLocal httpClient = new ThreadLocal(); + + private Logger logger = LoggerFactory.getLogger(HttpClient.class); + + private static final int REQUEST_TIME_OUT = 10 * 1000; // 请求超时时间 + private static final int CONN_TIME_OUT = 60 * 1000; // 连接超时时间 + private static final int SO_TIME_OUT = 60 * 1000; // 数据传输时间 + + public HttpClient() { + CloseableHttpClient client = HttpConnectionManager.getHttpClient(); + + httpClient.set(client); + } + + /** + * 使用ResponseHandler接口处理响应,HttpClient使用ResponseHandler会自动管理连接的释放,解决了对连接的释放管理 + */ + private ResponseHandler responseHandler = new ResponseHandler() { + + @SuppressWarnings("deprecation") + public String handleResponse(HttpResponse response) + throws ClientProtocolException, IOException { + HttpEntity entity = response.getEntity(); + if (entity != null) { + String charset = EntityUtils.getContentCharSet(entity) == null ? "UTF-8" + : EntityUtils.getContentCharSet(entity); + return new String(EntityUtils.toByteArray(entity), charset); + } else { + return null; + } + } + + }; + + public void close() throws IOException { + httpClient.get().close(); + } + + /** + * @todo 请求头设置 + * + **/ + private void setHeader(HttpRequestBase hg, String url) { + if (null != hg) { + hg.addHeader("Referer", url); + hg.addHeader("Accept", + "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); + hg.addHeader("Connection", "keep-alive"); + hg.addHeader("Cache-Control", "max-age=0"); + hg.addHeader("Accept-Language", "zh-CN,zh;q=0.8"); + hg.addHeader("Accept-Charset", "zh-GBK,utf-8;q=0.7,*;q=0.3"); +// hg.addHeader("content-type","application/json"); + } + } + + /** + * 指定参数名GET方式请求数据 + * + * @param url + * @param paramsMap + * QueryString + * @return + */ + public String doGet(String url, Map paramsMap) { + return doGet(invokeUrl(url, paramsMap)); + } + + /** + * 带参数的 get method + * @param url + * @param paramsMap + * @return + */ + public JSONObject doGetToJsonObject(String url,Map paramsMap) { + String result = doGet(invokeUrl(url,paramsMap)); + return JSON.parseObject(result); + } + + /** + * get method + * @param url + * @return + */ + public JSONObject doGetToJsonObject(String url) { + String result = doGet(url); + return JSON.parseObject(result); + } + + /** + * GET方式请求数据 + * + * @param url + */ + public String doGet(String url) { + HttpGet httpGet = new HttpGet(url); + // set header + setHeader(httpGet, url); + RequestConfig requestConfig = RequestConfig.custom() + .setSocketTimeout(SO_TIME_OUT).setConnectTimeout(CONN_TIME_OUT) + .setConnectionRequestTimeout(REQUEST_TIME_OUT).build(); + httpGet.setConfig(requestConfig); + + // long responseLength = 0; // 响应长度 + String responseContent = ""; // 响应内容 + try { + // 执行get请求 + responseContent = httpClient.get() + .execute(httpGet, responseHandler); + } catch (ClientProtocolException e) { + logger.error("ClientProtocolException,GET请求URL:" + url + + "地址发生异常,异常信息:", e); + e.printStackTrace(); + } catch (UnsupportedEncodingException e) { + logger.error("UnsupportedEncodingException,GET请求URL:" + url + + "地址发生异常,异常信息:", e); + e.printStackTrace(); + } catch (ConnectTimeoutException e) { + logger.error("ConnectTimeoutException,GET请求URL:" + url + + "地址发生异常,异常信息:", e); + e.printStackTrace(); + } catch (SocketTimeoutException e) { + logger.error("SocketTimeoutException,GET请求URL:" + url + + "地址发生异常,异常信息:", e); + e.printStackTrace(); + } catch (Exception e) { + logger.error("Exception,GET请求URL:" + url + "地址发生异常,异常信息:", e); + } finally { + httpGet.abort(); + httpGet.releaseConnection(); + } + + return responseContent; + } + + /** + * 不指定参数名的方式来POST数据 + * + * @param url + * @param jsonXMLString + * @return + */ + public String doPost(String url, String jsonXMLString) { + return doPost(url, null, jsonXMLString); + } + + /** + * post method return JSONObject + * @param url + * @param jsonXmlString + * @return + */ + public JSONObject doPostToJsonObject(String url,String jsonXmlString) { + String result = doPost(url,null,jsonXmlString); + return JSON.parseObject(result); + } + + /** + * post method return JSONObject + * @param url + * @param paramsMap + * @return + */ + public JSONObject doPostToJsonObject(String url,Map paramsMap) { + String result = doPost(url,paramsMap,null); + return JSON.parseObject(result); + } + + /** + * 指定参数名POST方式请求数据 + * + * @param url + */ + public String doPost(String url, Map paramsMap) { + return doPost(url, paramsMap, null); + } + + public String doPostParamsSetBody(String url,String data) { + HttpPost httpPost = new HttpPost(url); + setHeader(httpPost, url); + RequestConfig requestConfig = RequestConfig.custom() + .setSocketTimeout(SO_TIME_OUT).setConnectTimeout(CONN_TIME_OUT) + .setConnectionRequestTimeout(REQUEST_TIME_OUT) + .setExpectContinueEnabled(false).build(); + httpPost.setConfig(requestConfig);// RequestConfig.DEFAULT + String responseContent = null; // 响应内容 + String strRep = null; + try { + httpPost.setEntity(new StringEntity(data,"UTF-8")); + + // 执行post请求 + HttpResponse httpResponse = httpClient.get().execute(httpPost); + + // 获取响应消息实体 + HttpEntity entityRep = httpResponse.getEntity(); + if (entityRep != null) { + //responseLength = entityRep.getContentLength(); + responseContent = EntityUtils.toString(httpResponse.getEntity(), "UTF-8"); + + // 获取HTTP响应的状态码 + int statusCode = httpResponse.getStatusLine().getStatusCode(); + if (statusCode == HttpStatus.SC_OK) { + strRep = responseContent; // EntityUtils.toString(httpResponse.getEntity()); + + } else if ((statusCode == HttpStatus.SC_MOVED_TEMPORARILY) + || (statusCode == HttpStatus.SC_MOVED_PERMANENTLY) + || (statusCode == HttpStatus.SC_SEE_OTHER) + || (statusCode == HttpStatus.SC_TEMPORARY_REDIRECT)) { + // 重定向处理,获得跳转的网址 + // Header locationHeader = + // httpResponse.getFirstHeader("Location"); + // if(locationHeader != null) { + // String successUrl = locationHeader.getValue(); + // } + } + + // Consume response content + EntityUtils.consume(entityRep); + // Do not need the rest + httpPost.abort(); + } + } catch (ClientProtocolException e) { + logger.error("ClientProtocolException", e); + e.printStackTrace(); + } catch (UnsupportedEncodingException e) { + logger.error("UnsupportedEncodingException", e); + e.printStackTrace(); + } catch (ConnectTimeoutException e) { + logger.error("ConnectTimeoutException", e); + e.printStackTrace(); + } catch (SocketTimeoutException e) { + logger.error("SocketTimeoutException", e); + e.printStackTrace(); + } catch (Exception e) { + logger.error("Exception", e); + e.printStackTrace(); + } finally { + httpPost.releaseConnection(); + } + + return strRep; + } + + /** + * + * @param url + * @param paramsMap + * @param jsonXMLString + * @return + */ + private String doPost(String url, Map paramsMap,String jsonXMLString) { + HttpPost httpPost = new HttpPost(url); + + // set header + setHeader(httpPost, url); + + RequestConfig requestConfig = RequestConfig.custom() + .setSocketTimeout(SO_TIME_OUT).setConnectTimeout(CONN_TIME_OUT) + .setConnectionRequestTimeout(REQUEST_TIME_OUT) + .setExpectContinueEnabled(false).build(); + + httpPost.setConfig(requestConfig);// RequestConfig.DEFAULT + + //long responseLength = 0; // 响应长度 + String responseContent = null; // 响应内容 + String strRep = null; + try { + if (paramsMap != null && jsonXMLString == null) { + UrlEncodedFormEntity entity = new UrlEncodedFormEntity( + getParamsList(paramsMap), "UTF-8"); + httpPost.setEntity(entity); + } else { + httpPost.setEntity(new StringEntity(jsonXMLString, + "UTF-8")); + } + + // 执行post请求 + HttpResponse httpResponse = httpClient.get().execute(httpPost); + + // 获取响应消息实体 + HttpEntity entityRep = httpResponse.getEntity(); + if (entityRep != null) { + //responseLength = entityRep.getContentLength(); + responseContent = EntityUtils.toString(httpResponse.getEntity(), "UTF-8"); + + // 获取HTTP响应的状态码 + int statusCode = httpResponse.getStatusLine().getStatusCode(); + if (statusCode == HttpStatus.SC_OK) { + strRep = responseContent; // EntityUtils.toString(httpResponse.getEntity()); + + } else if ((statusCode == HttpStatus.SC_MOVED_TEMPORARILY) + || (statusCode == HttpStatus.SC_MOVED_PERMANENTLY) + || (statusCode == HttpStatus.SC_SEE_OTHER) + || (statusCode == HttpStatus.SC_TEMPORARY_REDIRECT)) { + // 重定向处理,获得跳转的网址 + // Header locationHeader = + // httpResponse.getFirstHeader("Location"); + // if(locationHeader != null) { + // String successUrl = locationHeader.getValue(); + // } + } + + // Consume response content + EntityUtils.consume(entityRep); + // Do not need the rest + httpPost.abort(); + } + } catch (ClientProtocolException e) { + logger.error("ClientProtocolException", e); + e.printStackTrace(); + } catch (UnsupportedEncodingException e) { + logger.error("UnsupportedEncodingException", e); + e.printStackTrace(); + } catch (ConnectTimeoutException e) { + logger.error("ConnectTimeoutException", e); + e.printStackTrace(); + } catch (SocketTimeoutException e) { + logger.error("SocketTimeoutException", e); + e.printStackTrace(); + } catch (Exception e) { + logger.error("Exception", e); + e.printStackTrace(); + } finally { + httpPost.releaseConnection(); + } + + return strRep; + } + + /** + * 读取内容 + * @param in + * @return + * @throws Exception + */ + protected static String readContent(InputStream in) throws Exception { + BufferedInputStream buffer = new BufferedInputStream(in); + StringBuilder builder = new StringBuilder(); + byte[] bytes = new byte[1024]; + int line = 0; + while ((line = buffer.read(bytes)) != -1) { + builder.append(new String(bytes, 0, line, "UTF-8")); + } + + return builder.toString(); + } + + /** + * GET方式传参 + * + * @param url + * @param paramsMap + * @return + */ + public static String invokeUrl(String url, Map paramsMap) { + StringBuilder sb = new StringBuilder(); + sb.append(url); + int i = 0; + if (paramsMap != null && paramsMap.size() > 0) { + for (Map.Entry entry : paramsMap.entrySet()) { + if (i == 0 && !url.contains("?")) { + sb.append("?"); + } else { + sb.append("&"); + } + sb.append(entry.getKey()); + sb.append("="); + String value = entry.getValue(); + try { + sb.append(URLEncoder.encode(value, "UTF-8")); + } catch (UnsupportedEncodingException e) { + try { + sb.append(URLEncoder.encode(value, null)); + } catch (UnsupportedEncodingException e1) { + e1.printStackTrace(); + } + } + + i++; + } + } + + return sb.toString(); + } + + /** + * 将传入的键/值对参数转换为NameValuePair参数集 + * + * @param paramsMap + * 参数集, 键/值对 + * @return NameValuePair参数集 + */ + private static List getParamsList( + Map paramsMap) { + if (paramsMap == null || paramsMap.size() == 0) { + return null; + } + + // 创建参数队列 + List params = new ArrayList(); + for (Map.Entry map : paramsMap.entrySet()) { + params.add(new BasicNameValuePair(map.getKey(), map.getValue())); + } + + return params; + } + + /** + * 格式化XML + * + * @param inputXML + * @return + * @throws Exception + */ + public static String formatXML(String inputXML) throws Exception { + Document doc = DocumentHelper.parseText(inputXML); + StringWriter out = null; + if (doc != null) { + try { + OutputFormat format = OutputFormat.createPrettyPrint(); + out = new StringWriter(); + XMLWriter writer = new XMLWriter(out, format); + writer.write(doc); + writer.flush(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + out.close(); + } + + return out.toString(); + } + + return inputXML; + } + + @Override + public String doPost(String url) { + // TODO Auto-generated method stub + return null; + } +} diff --git a/src/main/java/com/xmomen/module/wx/util/HttpConnectionManager.java b/src/main/java/com/xmomen/module/wx/util/HttpConnectionManager.java new file mode 100644 index 0000000..7989e9c --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/util/HttpConnectionManager.java @@ -0,0 +1,141 @@ +package com.xmomen.module.wx.util; + +import java.io.IOException; +import java.io.InterruptedIOException; +import java.net.UnknownHostException; +import java.nio.charset.CodingErrorAction; +import java.security.KeyManagementException; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; + +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLException; + +import org.apache.commons.httpclient.ConnectTimeoutException; +import org.apache.http.Consts; +import org.apache.http.HttpEntityEnclosingRequest; +import org.apache.http.HttpRequest; +import org.apache.http.client.HttpRequestRetryHandler; +import org.apache.http.client.protocol.HttpClientContext; +import org.apache.http.config.ConnectionConfig; +import org.apache.http.config.MessageConstraints; +import org.apache.http.config.Registry; +import org.apache.http.config.RegistryBuilder; +import org.apache.http.config.SocketConfig; +import org.apache.http.conn.socket.ConnectionSocketFactory; +import org.apache.http.conn.socket.PlainConnectionSocketFactory; +import org.apache.http.conn.ssl.SSLConnectionSocketFactory; +import org.apache.http.conn.ssl.SSLContextBuilder; +import org.apache.http.conn.ssl.TrustStrategy; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; +import org.apache.http.protocol.HttpContext; + +/** + * @Title: HttpRequestUtils.java + * @Package com.udf.wechat.util.http + * @Description: TODO() + * @author jizong.li 85150225@qq.com + * @date 2014年10月11日 下午12:10:38 + * @version V1.0 + */ +public final class HttpConnectionManager { + + + private static final int MAX_TOTAL_CONNECTIONS = 800; //每个主机的最大并行链接数 + private static final int MAX_ROUTE_CONNECTIONS = 400; //客户端总并行链接最大数 + + + private static PoolingHttpClientConnectionManager connManager = null; + + static{ + SSLContextBuilder scb = new SSLContextBuilder(); + scb.useTLS(); + try { + SSLContext sslContext = scb.loadTrustMaterial(null,new TrustStrategy(){ + + //信任所有 + public boolean isTrusted(X509Certificate[] arg0, String arg1) + throws CertificateException { + return true; + } + + }).build(); + + Registry socketFactoryRegistry = RegistryBuilder. create() + .register("http", PlainConnectionSocketFactory.INSTANCE) + .register("https", new SSLConnectionSocketFactory(sslContext, SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER)).build(); + + //create connectionManager + connManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry); + + // Create socket configuration + SocketConfig socketConfig = SocketConfig.custom().setTcpNoDelay(true).build(); + connManager.setDefaultSocketConfig(socketConfig); + + // Create message constraints + MessageConstraints messageConstraints = MessageConstraints.custom().setMaxHeaderCount(200).setMaxLineLength(2000).build(); + + // Create connection configuration + ConnectionConfig connectionConfig = ConnectionConfig.custom() + .setMalformedInputAction(CodingErrorAction.IGNORE) + .setUnmappableInputAction(CodingErrorAction.IGNORE) + .setCharset(Consts.UTF_8) + .setMessageConstraints(messageConstraints).build(); + + connManager.setDefaultConnectionConfig(connectionConfig); + connManager.setMaxTotal(MAX_TOTAL_CONNECTIONS); + connManager.setDefaultMaxPerRoute(MAX_ROUTE_CONNECTIONS); + } catch (KeyManagementException e) { + e.printStackTrace(); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (KeyStoreException e) { + e.printStackTrace(); + } + } + + /** + * 异常自动处理,使用httpRequestRetryHandler接口实现请求的异常恢复 + */ + private static HttpRequestRetryHandler requestRetry = new HttpRequestRetryHandler() { + + /** + * 自定义的恢复策略 + */ + public boolean retryRequest(IOException exception, int exceptionCount, + HttpContext context) { + if (exceptionCount >= 3) + return false; + if (exception instanceof InterruptedIOException) { + return false; + } + if (exception instanceof UnknownHostException) { + return false; + } + if (exception instanceof ConnectTimeoutException) { + return false; + } + if (exception instanceof SSLException) { + return false; + } + HttpClientContext clientContext = HttpClientContext.adapt(context); + HttpRequest request = clientContext.getRequest(); + boolean idempotent = !(request instanceof HttpEntityEnclosingRequest); + if (idempotent) { + return true; + } + return false; + } + + }; + + public static CloseableHttpClient getHttpClient(){ + return HttpClients.custom().setConnectionManager(connManager) + .setRetryHandler(requestRetry).build(); + } + +} diff --git a/src/main/java/com/xmomen/module/wx/util/HttpUtils.java b/src/main/java/com/xmomen/module/wx/util/HttpUtils.java new file mode 100644 index 0000000..c4b10cb --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/util/HttpUtils.java @@ -0,0 +1,355 @@ +package com.xmomen.module.wx.util; + +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpMethod; +import org.apache.commons.httpclient.HttpStatus; +import org.apache.commons.httpclient.methods.GetMethod; +import org.apache.commons.httpclient.params.HttpConnectionManagerParams; +import org.apache.commons.io.IOUtils; +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.NameValuePair; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.client.methods.HttpRequestBase; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.message.BasicNameValuePair; +import org.apache.http.util.EntityUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.servlet.http.HttpServletRequest; +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class HttpUtils { + // 请求超时时间 + private static final int REQUEST_TIME_OUT = 1 * 60 * 1000; + + // 连接超时时间 + private static final int CONN_TIME_OUT = 5 * 60 * 1000; + + // 数据传输时间 + private static final int SO_TIME_OUT = 10 * 60 * 1000; + + static Logger log = LoggerFactory.getLogger(HttpUtils.class); + + /** + * 取得远程地址IP + * + * @param request HttpServletRequest + * @return 远程地址IP + */ + public static String getRemoteIp(HttpServletRequest request) { + String remoteIp = request.getHeader("x-forwarded-for"); + if (remoteIp == null || remoteIp.isEmpty() || "unknown".equalsIgnoreCase(remoteIp)) { + remoteIp = request.getHeader("X-Real-IP"); + } + if (remoteIp == null || remoteIp.isEmpty() || "unknown".equalsIgnoreCase(remoteIp)) { + remoteIp = request.getHeader("X-Forwarded-For"); + } + if (remoteIp == null || remoteIp.isEmpty() || "unknown".equalsIgnoreCase(remoteIp)) { + remoteIp = request.getHeader("Proxy-Client-IP"); + } + if (remoteIp == null || remoteIp.isEmpty() || "unknown".equalsIgnoreCase(remoteIp)) { + remoteIp = request.getHeader("WL-Proxy-Client-IP"); + } + if (remoteIp == null || remoteIp.isEmpty() || "unknown".equalsIgnoreCase(remoteIp)) { + remoteIp = request.getHeader("HTTP_CLIENT_IP"); + } + if (remoteIp == null || remoteIp.isEmpty() || "unknown".equalsIgnoreCase(remoteIp)) { + remoteIp = request.getHeader("HTTP_X_FORWARDED_FOR"); + } + if (remoteIp == null || remoteIp.isEmpty() || "unknown".equalsIgnoreCase(remoteIp)) { + remoteIp = request.getRemoteAddr(); + } + if (remoteIp == null || remoteIp.isEmpty() || "unknown".equalsIgnoreCase(remoteIp)) { + remoteIp = request.getRemoteHost(); + } + return remoteIp; + } + + /** + * Post 请求 + * + * @param url URL地址 + * @param encode 编码格式 + * @param params 参数键值列表 + * @return 响应结果 + */ + public static String httpPost(String url, String encode, Map params) { + HttpURLConnection con = null; + OutputStreamWriter osw = null; + BufferedReader br = null; + + //读取返回内容 + StringBuffer buffer = new StringBuffer(); + + //尝试发送请求 + try { + URL u = new URL(url); + + //建立连接 + con = (HttpURLConnection) u.openConnection(); + + //设置请求方式 POST + con.setRequestMethod("POST"); + con.setDoOutput(true); + con.setDoInput(true); + con.setUseCaches(false); + con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); + osw = new OutputStreamWriter(con.getOutputStream(), encode); + con.setConnectTimeout(3000); + con.setReadTimeout(3000); + //构建请求参数 + osw.write(getParams(params).toString()); + osw.flush(); + + //按照encode获取返回内容 + br = new BufferedReader(new InputStreamReader(con.getInputStream(), encode)); + + String temp; + while ((temp = br.readLine()) != null) { + buffer.append(temp); + } + + } catch (Exception e) { + e.printStackTrace(); + } finally { + IOUtils.closeQuietly(br); + IOUtils.closeQuietly(osw); + closeConnect(con); + } + return buffer.toString(); + } + + /** + * @param url URL地址 + * @param encode 编码格式 + * @param params 参数键值列表 + * @return 响应结果 + */ + public static String httpGet(String url, String encode, Map params) { + HttpURLConnection con = null; + BufferedReader br = null; + // 读取返回内容 + StringBuffer buffer = new StringBuffer(); + + // 尝试发送请求 + try { + //构建带请求参数的URL + URL u = new URL(url + "?" + getParams(params).toString()); + + //建立连接 + con = (HttpURLConnection) u.openConnection(); + + //设置请求方式 GET + con.setRequestMethod("GET"); + + con.setDoOutput(true); + con.setDoInput(true); + con.setUseCaches(false); + con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); + con.setConnectTimeout(3000); + con.setReadTimeout(3000); + + //按照encode获取返回内容 + br = new BufferedReader(new InputStreamReader(con.getInputStream(), encode)); + + String temp; + while ((temp = br.readLine()) != null) { + buffer.append(temp); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + IOUtils.closeQuietly(br); + closeConnect(con); + } + return buffer.toString(); + } + + /** + * GET请求 + * + * @param url 请求url + * @return 返回请求结果 + */ + public static String doGet(String url) { + HttpClient client = new HttpClient(); + HttpMethod method = new GetMethod(url); + String result = ""; + try { + method.setRequestHeader("Content-Type", "text/html;charset=utf-8"); + + //设置页面编码 + method.getParams().setContentCharset("UTF-8"); + + HttpConnectionManagerParams managerParams = client.getHttpConnectionManager().getParams(); + + // 设置连接超时时间(单位毫秒) + managerParams.setConnectionTimeout(CONN_TIME_OUT); + + // 设置读数据超时时间(单位毫秒) + managerParams.setSoTimeout(SO_TIME_OUT); + + client.executeMethod(method); + + //获取返回的JSON数据 + result = method.getResponseBodyAsString(); + } catch (Exception e) { + log.error("GET请求发生系统异常:", e); + } finally { + try { + // 释放连接 + method.releaseConnection(); + } catch (Exception ex) { + } + } + return result; + } + + /** + * 获取参数 + * + * @param params 键值对参数集合 + * @return 参数键值字符串 + */ + public static StringBuffer getParams(Map params) { + StringBuffer sb = new StringBuffer(); + + //拼装参数 + if (params != null) { + for (Map.Entry e : params.entrySet()) { + sb.append(e.getKey()); + sb.append("="); + sb.append(e.getValue()); + sb.append("&"); + } + sb.substring(0, sb.length() - 1); + } + + return sb; + } + + /** + * POST请求 + * + * @param url 请求url + * @param paramsMap 请求参数MAP + * @param jsonXMLString body json字符串 + * @return + */ + public static String doPost(String url, Map paramsMap, String jsonXMLString) { + HttpPost httpPost = new HttpPost(url); + // set header + setHeader(httpPost, url); + + RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(SO_TIME_OUT).setConnectTimeout(CONN_TIME_OUT).setConnectionRequestTimeout(REQUEST_TIME_OUT).setExpectContinueEnabled(false).build(); + + // RequestConfig.DEFAULT + httpPost.setConfig(requestConfig); + + // 响应内容 + String responseContent = null; + String strRep = null; + ThreadLocal httpClient = new ThreadLocal(); + try { + if (paramsMap != null && jsonXMLString == null) { + UrlEncodedFormEntity entity = new UrlEncodedFormEntity(getParamsList(paramsMap), "UTF-8"); + httpPost.setEntity(entity); + } + else { + httpPost.setEntity(new StringEntity(jsonXMLString, "UTF-8")); + } + + // 执行post请求 + CloseableHttpClient client = HttpConnectionManager.getHttpClient(); + httpClient.set(client); + HttpResponse httpResponse = httpClient.get().execute(httpPost); + + // 获取响应消息实体 + HttpEntity entityRep = httpResponse.getEntity(); + if (entityRep != null) { + responseContent = EntityUtils.toString(httpResponse.getEntity(), "UTF-8"); + + // 获取HTTP响应的状态码 + int statusCode = httpResponse.getStatusLine().getStatusCode(); + + if (statusCode == HttpStatus.SC_OK) { + strRep = responseContent; + } + else if ((statusCode == HttpStatus.SC_MOVED_TEMPORARILY) + || (statusCode == HttpStatus.SC_MOVED_PERMANENTLY) + || (statusCode == HttpStatus.SC_SEE_OTHER) + || (statusCode == HttpStatus.SC_TEMPORARY_REDIRECT)) { + } + // Consume response content + EntityUtils.consume(entityRep); + // Do not need the rest + httpPost.abort(); + } + } catch (Exception e) { + log.error("POST请求发生系统异常:", e); + } finally { + httpPost.releaseConnection(); + } + return strRep; + } + + /** + * 将传入的键/值对参数转换为NameValuePair参数集 + * + * @param paramsMap 参数集, 键/值对 + * @return NameValuePair参数集 + */ + private static List getParamsList( + Map paramsMap) { + if (paramsMap == null || paramsMap.size() == 0) { + return null; + } + // 创建参数队列 + List params = new ArrayList(); + for (Map.Entry map : paramsMap.entrySet()) { + params.add(new BasicNameValuePair(map.getKey(), map.getValue())); + } + return params; + } + + /** + * 请求头设置 + **/ + private static void setHeader(HttpRequestBase hg, String url) { + if (null != hg) { + hg.addHeader("Referer", url); + hg.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); + hg.addHeader("Connection", "keep-alive"); + hg.addHeader("Cache-Control", "max-age=0"); + hg.addHeader("Accept-Language", "zh-CN,zh;q=0.8"); + hg.addHeader("Accept-Charset", "zh-GBK,utf-8;q=0.7,*;q=0.3"); + } + } + + /** + * 关闭HTTP连接 + * + * @param con http连接 + */ + private static void closeConnect(HttpURLConnection con) { + try { + if (con != null) { + con.disconnect(); + } + } catch (Exception ex) { + log.error("HttpURLConnection连接关闭失败:", ex); + } + } +} diff --git a/src/main/java/com/xmomen/module/wx/util/MessageUtils.java b/src/main/java/com/xmomen/module/wx/util/MessageUtils.java new file mode 100644 index 0000000..925ca6b --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/util/MessageUtils.java @@ -0,0 +1,86 @@ +package com.xmomen.module.wx.util; + +import com.xmomen.module.wx.model.responseModel.ResponseMessageBase; +import com.xmomen.module.wx.model.responseModel.ResponseMessageNews; +import com.xmomen.module.wx.model.responseModel.ResponseMessageText; +import com.thoughtworks.xstream.XStream; +import com.thoughtworks.xstream.core.util.QuickWriter; +import com.thoughtworks.xstream.io.HierarchicalStreamWriter; +import com.thoughtworks.xstream.io.xml.PrettyPrintWriter; +import com.thoughtworks.xstream.io.xml.XppDriver; + +import java.io.Writer; + +/** + * 微信消息解析 + */ +public class MessageUtils { + /** + * 回复消息封装微信格式 + */ + private static XStream xstream = new XStream(new XppDriver() { + @Override + public HierarchicalStreamWriter createWriter(Writer out) { + return new PrettyPrintWriter(out) { + @Override + @SuppressWarnings("rawtypes") + public void startNode(String name, Class clazz) { + //节点属性 首字母大写 排除xml item + if (!"xml".equals(name) && !"item".equals(name)) { + name = name.substring(0, 1).toUpperCase() + name.substring(1); + } + super.startNode(name, clazz); + } + + @Override + protected void writeText(QuickWriter writer, String text) { + // 对所有xml节点的转换都增加CDATA标记 + writer.write(""); + } + }; + } + }); + + /** + * 图文消息转换成xml + * + * @param newsMessage + * @return + */ + public static String newsMessageToXml(ResponseMessageNews newsMessage) { + xstream.alias("xml", newsMessage.getClass()); + xstream.alias("item", newsMessage.new Article().getClass()); + return xstream.toXML(newsMessage); + } + + /** + * 文本消息转换成xml + * + * @param textMessage + * @return + */ + public static String textMessageToXml(ResponseMessageText textMessage) { + xstream.alias("xml", textMessage.getClass()); + return xstream.toXML(textMessage); + } + + /** + * 将ResponseMessageBase实体转换成xml + * + * @param entity 封装好的消息 + * @return 解析组装之后的xml + */ + public static String convertEntityToXml(ResponseMessageBase entity) { + //回复文本消息 + if (entity instanceof ResponseMessageText) { + return textMessageToXml((ResponseMessageText) entity); + } + //回复图文消息 + if (entity instanceof ResponseMessageNews) { + return newsMessageToXml((ResponseMessageNews) entity); + } + return null; + } +} diff --git a/src/main/java/com/xmomen/module/wx/util/PropertiesUtils.java b/src/main/java/com/xmomen/module/wx/util/PropertiesUtils.java new file mode 100644 index 0000000..c767567 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/util/PropertiesUtils.java @@ -0,0 +1,98 @@ +package com.xmomen.module.wx.util; + +import java.io.BufferedInputStream; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.InputStream; +import java.util.Iterator; +import java.util.Map.Entry; +import java.util.Properties; + +/** + * @Title: PropertiesUtils.java + * @Package com.udf.wechat.util + * @Description: TODO() + * @author jizong.li 85150225@qq.com + * @date 2014年10月11日 下午4:05:10 + * @version V1.0 + */ +public class PropertiesUtils { + + /** + * 获取属性文件的数据 根据key获取值 + * @param fileName 文件名 (注意:加载的是src下的文件,如果在某个包下.请把包名加上) + * @param key + * @return + */ + public static String findPropertiesKey(String key) { + + try { + Properties prop = getProperties(); + return prop.getProperty(key); + } catch (Exception e) { + return ""; + } + + } + + + public static void main(String[] args) { + Properties prop = new Properties(); + InputStream in = PropertiesUtils.class + .getResourceAsStream("/properties/config.properties"); + try { + prop.load(in); + Iterator> itr = prop.entrySet().iterator(); + while (itr.hasNext()) { + Entry e = (Entry) itr.next(); + System.err.println((e.getKey().toString() + "" + e.getValue() + .toString())); + } + } catch (Exception e) { + + } + } + + /** + * 返回 Properties + * @param fileName 文件名 (注意:加载的是src下的文件,如果在某个包下.请把包名加上) + * @param + * @return + */ + public static Properties getProperties(){ + Properties prop = new Properties(); + String savePath = PropertiesUtils.class.getResource("/properties/config.properties").getPath(); + //以下方法读取属性文件会缓存问题 +// InputStream in = PropertiesUtils.class +// .getResourceAsStream("/config.properties"); + try { + InputStream in =new BufferedInputStream(new FileInputStream(savePath)); + prop.load(in); + } catch (Exception e) { + return null; + } + return prop; + } + /** + * 写入properties信息 + * + * @param key + * 名称 + * @param value + * 值 + */ + public static void modifyProperties(String key, String value) { + try { + // 从输入流中读取属性列表(键和元素对) + Properties prop = getProperties(); + prop.setProperty(key, value); + String path = PropertiesUtils.class.getResource("/properties/config.properties").getPath(); + FileOutputStream outputFile = new FileOutputStream(path); + prop.store(outputFile, "modify"); + outputFile.close(); + outputFile.flush(); + } catch (Exception e) { + } + } + +} diff --git a/src/main/java/com/xmomen/module/wx/util/WeixinMediaUtils.java b/src/main/java/com/xmomen/module/wx/util/WeixinMediaUtils.java new file mode 100644 index 0000000..4a17512 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/util/WeixinMediaUtils.java @@ -0,0 +1,79 @@ +package com.xmomen.module.wx.util; + +import org.apache.commons.io.IOUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.xmomen.framework.utils.StringUtilsExt; +import com.xmomen.module.wx.constants.WeixinConsts; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.net.HttpURLConnection; +import java.net.URL; + +/** + * 微信上传下载多媒体文件工具类 + */ +public class WeixinMediaUtils { + + static Logger log = LoggerFactory.getLogger(WeixinMediaUtils.class); + + /** + * 获取媒体文件 + * + * @param accessToken 访问令牌 + * @param mediaId 媒体ID + * @param file 存储文件 + * @return 媒体文件类型 + */ + public static String downloadMedia(String accessToken, String mediaId, File file) { + String requestUrl = WeixinConsts.GET_MEDIA_FILE.replace("{ACCESS_TOKEN}", accessToken).replace("{MEDIA_ID}", mediaId); + + HttpURLConnection conn = null; + BufferedInputStream bis = null; + FileOutputStream fos = null; + try { + URL url = new URL(requestUrl); + conn = (HttpURLConnection) url.openConnection(); + conn.setDoInput(true); + conn.setRequestMethod("GET"); + + //类型 + String contentType = conn.getHeaderField("Content-Type"); + + bis = new BufferedInputStream(conn.getInputStream()); + fos = new FileOutputStream(file); + byte[] buf = new byte[8096]; + int size = 0; + while ((size = bis.read(buf)) != -1) { + fos.write(buf, 0, size); + } + return contentType; + + } catch (Exception e) { + log.error(e.getMessage(), e); + } finally { + IOUtils.closeQuietly(fos); + IOUtils.closeQuietly(bis); + try { + conn.disconnect(); + } catch (Exception e) { + log.error(e.getMessage(), e); + } + } + return StringUtilsExt.EMPTY; + } + + /** + * 通过类型获取文件后缀 + * + * @param contentType + * @return + */ + private static String getFileEndWitsh(String contentType) { + String witsh = contentType.split("/")[1]; + return "." + witsh; + } +} diff --git a/src/main/java/com/xmomen/module/wx/util/XMLUtils.java b/src/main/java/com/xmomen/module/wx/util/XMLUtils.java new file mode 100644 index 0000000..fa7f161 --- /dev/null +++ b/src/main/java/com/xmomen/module/wx/util/XMLUtils.java @@ -0,0 +1,201 @@ +package com.xmomen.module.wx.util; + +import org.json.JSONException; +import org.json.JSONObject; +import org.json.XML; +import org.json.XMLTokener; + +/** + * 将XML的toJSONObject 方法改写下 以便满足微信的xml解析 + */ +public class XMLUtils extends XML { + + public static com.alibaba.fastjson.JSONObject xmlToJSONObject(String string) throws JSONException { + + JSONObject jo = new JSONObject(); + + XMLTokener x = new XMLTokener(string); + + while (x.more() && x.skipPast("<")) { + parse(x, jo, (String) null); + } + com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSONObject.parseObject(jo.toString()); + return jsonObject; + } + + /** + * XML内置parse方法(定制化) + * + * @param x + * @param context + * @param name + * @return + * @throws JSONException + */ + private static boolean parse(XMLTokener x, JSONObject context, String name) throws JSONException { + JSONObject jsonobject = null; + Object token = x.nextToken(); + String string; + if (token == BANG) { + char c = x.next(); + if (c == 45) { + if (x.next() == 45) { + x.skipPast("-->"); + return false; + } + + x.back(); + } + else if (c == 91) { + token = x.nextToken(); + if ("CDATA".equals(token) && x.next() == 91) { + string = x.nextCDATA(); + if (string.length() > 0) { + context.accumulate("content", string); + } + + return false; + } + + throw x.syntaxError("Expected \'CDATA[\'"); + } + + int i = 1; + + do { + token = x.nextMeta(); + if (token == null) { + throw x.syntaxError("Missing \'>\' after \' 0); + + return false; + } + else if (token == QUEST) { + x.skipPast("?>"); + return false; + } + else if (token == SLASH) { + token = x.nextToken(); + String endTagName = (String) token; + //xml剔除 + if ("xml".equals(endTagName)) { + return true; + } + //将微信的请求消息的首字母改为小写 + endTagName = endTagName.substring(0, 1).toLowerCase() + endTagName.substring(1); + if (name == null) { + throw x.syntaxError("Mismatched close tag " + token); + } + else if (!endTagName.equals(name)) { + throw x.syntaxError("Mismatched " + name + " and " + token); + } + else if (x.nextToken() != GT) { + throw x.syntaxError("Misshaped close tag"); + } + else { + return true; + } + } + else if (token instanceof Character) { + throw x.syntaxError("Misshaped tag"); + } + else { + String tagName = (String) token; + //剔除xml节点 + if ("xml".equals(tagName)) { + return true; + } + //将微信的请求消息的首字母改为小写 + tagName = tagName.substring(0, 1).toLowerCase() + tagName.substring(1); + + token = null; + jsonobject = new JSONObject(); + + while (true) { + if (token == null) { + token = x.nextToken(); + } + + if (!(token instanceof String)) { + if (token == SLASH) { + if (x.nextToken() != GT) { + throw x.syntaxError("Misshaped tag"); + } + + if (jsonobject.length() > 0) { + context.accumulate(tagName, jsonobject); + } + else { + context.accumulate(tagName, ""); + } + + return false; + } + + if (token != GT) { + throw x.syntaxError("Misshaped tag"); + } + + while (true) { + token = x.nextContent(); + if (token == null) { + if (tagName != null) { + throw x.syntaxError("Unclosed tag " + tagName); + } + + return false; + } + + if (token instanceof String) { + string = (String) token; + //剔除xml节点 + if (!"xml".equals(string)) { + //将微信的请求消息的首字母改为小写 + string = string.substring(0, 1).toLowerCase() + string.substring(1); + if (string.length() > 0) { + jsonobject.accumulate("content", JSONObject.stringToValue(string)); + } + } + } + else if (token == LT && parse(x, jsonobject, tagName)) { + if (jsonobject.length() == 0) { + context.accumulate(tagName, ""); + } + else if (jsonobject.length() == 1 && jsonobject.opt("content") != null) { + context.accumulate(tagName, jsonobject.opt("content")); + } + else { + context.accumulate(tagName, jsonobject); + } + + return false; + } + } + } + + string = (String) token; + token = x.nextToken(); + if (token == EQ) { + token = x.nextToken(); + if (!(token instanceof String)) { + throw x.syntaxError("Missing value"); + } + + jsonobject.accumulate(string, JSONObject.stringToValue((String) token)); + token = null; + } + else { + jsonobject.accumulate(string, ""); + } + } + } + } +} diff --git a/src/main/java/org/csource/common/MyException.java b/src/main/java/org/csource/common/MyException.java new file mode 100644 index 0000000..346ff3c --- /dev/null +++ b/src/main/java/org/csource/common/MyException.java @@ -0,0 +1,26 @@ +/* +* Copyright (C) 2008 Happy Fish / YuQing +* +* FastDFS Java Client may be copied only under the terms of the GNU Lesser +* General Public License (LGPL). +* Please visit the FastDFS Home Page http://www.csource.org/ for more detail. +*/ + +package org.csource.common; + +/** +* My Exception +* @author Happy Fish / YuQing +* @version Version 1.0 +*/ +public class MyException extends Exception +{ + public MyException() + { + } + + public MyException(String message) + { + super(message); + } +} diff --git a/src/main/java/org/csource/fastdfs/DownloadCallback.java b/src/main/java/org/csource/fastdfs/DownloadCallback.java new file mode 100644 index 0000000..0acbe35 --- /dev/null +++ b/src/main/java/org/csource/fastdfs/DownloadCallback.java @@ -0,0 +1,31 @@ +/** +* Copyright (C) 2008 Happy Fish / YuQing +* +* FastDFS Java Client may be copied only under the terms of the GNU Lesser +* General Public License (LGPL). +* Please visit the FastDFS Home Page http://www.csource.org/ for more detail. +*/ + +package org.csource.fastdfs; + +import java.io.*; +import java.util.*; +import java.net.*; +import org.csource.common.*; + +/** +* Download file callback interface +* @author Happy Fish / YuQing +* @version Version 1.4 +*/ +public interface DownloadCallback +{ + /** + * recv file content callback function, may be called more than once when the file downloaded + * @param file_size file size + * @param data data buff + * @param bytes data bytes + * @return 0 success, return none zero(errno) if fail + */ + public int recv(long file_size, byte[] data, int bytes); +} diff --git a/src/main/java/org/csource/fastdfs/DownloadStream.java b/src/main/java/org/csource/fastdfs/DownloadStream.java new file mode 100644 index 0000000..d1eb8ce --- /dev/null +++ b/src/main/java/org/csource/fastdfs/DownloadStream.java @@ -0,0 +1,50 @@ +package org.csource.fastdfs; + +import java.io.IOException; +import java.io.OutputStream; +import org.csource.fastdfs.DownloadCallback; + +/** +* Download file by stream (download callback class) +* @author zhouzezhong & Happy Fish / YuQing +* @version Version 1.11 +*/ +public class DownloadStream implements DownloadCallback +{ + private OutputStream out; + private long currentBytes = 0; + + public DownloadStream(OutputStream out) + { + super(); + this.out = out; + } + + /** + * recv file content callback function, may be called more than once when the file downloaded + * @param fileSize file size + * @param data data buff + * @param bytes data bytes + * @return 0 success, return none zero(errno) if fail + */ + public int recv(long fileSize, byte[] data, int bytes) + { + try + { + out.write(data, 0, bytes); + } + catch(IOException ex) + { + ex.printStackTrace(); + return -1; + } + + currentBytes += bytes; + if (this.currentBytes == fileSize) + { + this.currentBytes = 0; + } + + return 0; + } +} diff --git a/src/main/java/org/csource/fastdfs/FileInfo.java b/src/main/java/org/csource/fastdfs/FileInfo.java new file mode 100644 index 0000000..b1280e9 --- /dev/null +++ b/src/main/java/org/csource/fastdfs/FileInfo.java @@ -0,0 +1,125 @@ +/** +* Copyright (C) 2008 Happy Fish / YuQing +* +* FastDFS Java Client may be copied only under the terms of the GNU Lesser +* General Public License (LGPL). +* Please visit the FastDFS Home Page http://www.csource.org/ for more detail. +*/ + +package org.csource.fastdfs; + +import java.util.Date; +import java.text.SimpleDateFormat; + +/** +* Server Info +* @author Happy Fish / YuQing +* @version Version 1.23 +*/ +public class FileInfo +{ + protected String source_ip_addr; + protected long file_size; + protected Date create_timestamp; + protected int crc32; + +/** +* Constructor +* @param file_size the file size +* @param create_timestamp create timestamp in seconds +* @param crc32 the crc32 signature +* @param source_ip_addr the source storage ip address +*/ + public FileInfo(long file_size, int create_timestamp, int crc32, String source_ip_addr) + { + this.file_size = file_size; + this.create_timestamp = new Date(create_timestamp * 1000L); + this.crc32 = crc32; + this.source_ip_addr = source_ip_addr; + } + +/** +* set the source ip address of the file uploaded to +* @param source_ip_addr the source ip address +*/ + public void setSourceIpAddr(String source_ip_addr) + { + this.source_ip_addr = source_ip_addr; + } + +/** +* get the source ip address of the file uploaded to +* @return the source ip address of the file uploaded to +*/ + public String getSourceIpAddr() + { + return this.source_ip_addr; + } + +/** +* set the file size +* @param file_size the file size +*/ + public void setFileSize(long file_size) + { + this.file_size = file_size; + } + +/** +* get the file size +* @return the file size +*/ + public long getFileSize() + { + return this.file_size; + } + +/** +* set the create timestamp of the file +* @param create_timestamp create timestamp in seconds +*/ + public void setCreateTimestamp(int create_timestamp) + { + this.create_timestamp = new Date(create_timestamp * 1000L); + } + +/** +* get the create timestamp of the file +* @return the create timestamp of the file +*/ + public Date getCreateTimestamp() + { + return this.create_timestamp; + } + +/** +* set the create timestamp of the file +* @param crc32 the crc32 signature +*/ + public void setCrc32(int crc32) + { + this.crc32 = crc32; + } + +/** +* get the file CRC32 signature +* @return the file CRC32 signature +*/ + public long getCrc32() + { + return this.crc32; + } + +/** +* to string +* @return string +*/ + public String toString() + { + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + return "source_ip_addr = " + this.source_ip_addr + ", " + + "file_size = " + this.file_size + ", " + + "create_timestamp = " + df.format(this.create_timestamp) + ", " + + "crc32 = " + this.crc32; + } +} diff --git a/src/main/java/org/csource/fastdfs/ProtoCommon.java b/src/main/java/org/csource/fastdfs/ProtoCommon.java new file mode 100644 index 0000000..abfe860 --- /dev/null +++ b/src/main/java/org/csource/fastdfs/ProtoCommon.java @@ -0,0 +1,553 @@ +/** +* Copyright (C) 2008 Happy Fish / YuQing +* +* FastDFS Java Client may be copied only under the terms of the GNU Lesser +* General Public License (LGPL). +* Please visit the FastDFS Home Page http://www.csource.org/ for more detail. +**/ + +package org.csource.fastdfs; + +import java.io.InputStream; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.security.NoSuchAlgorithmException; +import java.util.Arrays; +import java.net.Socket; +import org.csource.common.MyException; +import org.csource.common.NameValuePair; + +/** +* protocol common functions +* @author Happy Fish / YuQing +* @version Version 1.18 +*/ +public class ProtoCommon +{ + /** + * receive package info + */ + public static class RecvPackageInfo + { + public byte errno; + public byte[] body; + + public RecvPackageInfo(byte errno, byte[] body) + { + this.errno = errno; + this.body = body; + } + } + + /** + * receive header info + */ + public static class RecvHeaderInfo + { + public byte errno; + public long body_len; + + public RecvHeaderInfo(byte errno, long body_len) + { + this.errno = errno; + this.body_len = body_len; + } + } + + public static final byte FDFS_PROTO_CMD_QUIT = 82; + public static final byte TRACKER_PROTO_CMD_SERVER_LIST_GROUP = 91; + public static final byte TRACKER_PROTO_CMD_SERVER_LIST_STORAGE = 92; + public static final byte TRACKER_PROTO_CMD_SERVER_DELETE_STORAGE = 93; + + public static final byte TRACKER_PROTO_CMD_SERVICE_QUERY_STORE_WITHOUT_GROUP_ONE = 101; + public static final byte TRACKER_PROTO_CMD_SERVICE_QUERY_FETCH_ONE = 102; + public static final byte TRACKER_PROTO_CMD_SERVICE_QUERY_UPDATE = 103; + public static final byte TRACKER_PROTO_CMD_SERVICE_QUERY_STORE_WITH_GROUP_ONE = 104; + public static final byte TRACKER_PROTO_CMD_SERVICE_QUERY_FETCH_ALL = 105; + public static final byte TRACKER_PROTO_CMD_SERVICE_QUERY_STORE_WITHOUT_GROUP_ALL = 106; + public static final byte TRACKER_PROTO_CMD_SERVICE_QUERY_STORE_WITH_GROUP_ALL = 107; + public static final byte TRACKER_PROTO_CMD_RESP = 100; + public static final byte FDFS_PROTO_CMD_ACTIVE_TEST = 111; + public static final byte STORAGE_PROTO_CMD_UPLOAD_FILE = 11; + public static final byte STORAGE_PROTO_CMD_DELETE_FILE = 12; + public static final byte STORAGE_PROTO_CMD_SET_METADATA = 13; + public static final byte STORAGE_PROTO_CMD_DOWNLOAD_FILE = 14; + public static final byte STORAGE_PROTO_CMD_GET_METADATA = 15; + public static final byte STORAGE_PROTO_CMD_UPLOAD_SLAVE_FILE = 21; + public static final byte STORAGE_PROTO_CMD_QUERY_FILE_INFO = 22; + public static final byte STORAGE_PROTO_CMD_UPLOAD_APPENDER_FILE= 23; //create appender file + public static final byte STORAGE_PROTO_CMD_APPEND_FILE = 24; //append file + public static final byte STORAGE_PROTO_CMD_MODIFY_FILE = 34; //modify appender file + public static final byte STORAGE_PROTO_CMD_TRUNCATE_FILE = 36; //truncate appender file + + public static final byte STORAGE_PROTO_CMD_RESP = TRACKER_PROTO_CMD_RESP; + + public static final byte FDFS_STORAGE_STATUS_INIT = 0; + public static final byte FDFS_STORAGE_STATUS_WAIT_SYNC = 1; + public static final byte FDFS_STORAGE_STATUS_SYNCING = 2; + public static final byte FDFS_STORAGE_STATUS_IP_CHANGED = 3; + public static final byte FDFS_STORAGE_STATUS_DELETED = 4; + public static final byte FDFS_STORAGE_STATUS_OFFLINE = 5; + public static final byte FDFS_STORAGE_STATUS_ONLINE = 6; + public static final byte FDFS_STORAGE_STATUS_ACTIVE = 7; + public static final byte FDFS_STORAGE_STATUS_NONE = 99; + + /** + * for overwrite all old metadata + */ + public static final byte STORAGE_SET_METADATA_FLAG_OVERWRITE = 'O'; + + /** + * for replace, insert when the meta item not exist, otherwise update it + */ + public static final byte STORAGE_SET_METADATA_FLAG_MERGE = 'M'; + + public static final int FDFS_PROTO_PKG_LEN_SIZE = 8; + public static final int FDFS_PROTO_CMD_SIZE = 1; + public static final int FDFS_GROUP_NAME_MAX_LEN = 16; + public static final int FDFS_IPADDR_SIZE = 16; + public static final int FDFS_DOMAIN_NAME_MAX_SIZE = 128; + public static final int FDFS_VERSION_SIZE = 6; + public static final int FDFS_STORAGE_ID_MAX_SIZE = 16; + + public static final String FDFS_RECORD_SEPERATOR = "\u0001"; + public static final String FDFS_FIELD_SEPERATOR = "\u0002"; + + public static final int TRACKER_QUERY_STORAGE_FETCH_BODY_LEN = FDFS_GROUP_NAME_MAX_LEN + + FDFS_IPADDR_SIZE - 1 + FDFS_PROTO_PKG_LEN_SIZE; + public static final int TRACKER_QUERY_STORAGE_STORE_BODY_LEN = FDFS_GROUP_NAME_MAX_LEN + + FDFS_IPADDR_SIZE + FDFS_PROTO_PKG_LEN_SIZE; + + protected static final int PROTO_HEADER_CMD_INDEX = FDFS_PROTO_PKG_LEN_SIZE; + protected static final int PROTO_HEADER_STATUS_INDEX = FDFS_PROTO_PKG_LEN_SIZE+1; + + public static final byte FDFS_FILE_EXT_NAME_MAX_LEN = 6; + public static final byte FDFS_FILE_PREFIX_MAX_LEN = 16; + public static final byte FDFS_FILE_PATH_LEN = 10; + public static final byte FDFS_FILENAME_BASE64_LENGTH = 27; + public static final byte FDFS_TRUNK_FILE_INFO_LEN = 16; + + public static final byte ERR_NO_ENOENT = 2; + public static final byte ERR_NO_EIO = 5; + public static final byte ERR_NO_EBUSY = 16; + public static final byte ERR_NO_EINVAL = 22; + public static final byte ERR_NO_ENOSPC = 28; + public static final byte ECONNREFUSED = 61; + public static final byte ERR_NO_EALREADY = 114; + + public static final long INFINITE_FILE_SIZE = 256 * 1024L * 1024 * 1024 * 1024 * 1024L; + public static final long APPENDER_FILE_SIZE = INFINITE_FILE_SIZE; + public static final long TRUNK_FILE_MARK_SIZE = 512 * 1024L * 1024 * 1024 * 1024 * 1024L; + public static final long NORMAL_LOGIC_FILENAME_LENGTH = FDFS_FILE_PATH_LEN + FDFS_FILENAME_BASE64_LENGTH + FDFS_FILE_EXT_NAME_MAX_LEN + 1; + public static final long TRUNK_LOGIC_FILENAME_LENGTH = NORMAL_LOGIC_FILENAME_LENGTH + FDFS_TRUNK_FILE_INFO_LEN; + + private ProtoCommon() + { + } + + public static String getStorageStatusCaption(byte status) + { + switch(status) + { + case FDFS_STORAGE_STATUS_INIT: + return "INIT"; + case FDFS_STORAGE_STATUS_WAIT_SYNC: + return "WAIT_SYNC"; + case FDFS_STORAGE_STATUS_SYNCING: + return "SYNCING"; + case FDFS_STORAGE_STATUS_IP_CHANGED: + return "IP_CHANGED"; + case FDFS_STORAGE_STATUS_DELETED: + return "DELETED"; + case FDFS_STORAGE_STATUS_OFFLINE: + return "OFFLINE"; + case FDFS_STORAGE_STATUS_ONLINE: + return "ONLINE"; + case FDFS_STORAGE_STATUS_ACTIVE: + return "ACTIVE"; + case FDFS_STORAGE_STATUS_NONE: + return "NONE"; + default: + return "UNKOWN"; + } +} + +/** +* pack header by FastDFS transfer protocol +* @param cmd which command to send +* @param pkg_len package body length +* @param errno status code, should be (byte)0 +* @return packed byte buffer +*/ + public static byte[] packHeader(byte cmd, long pkg_len, byte errno) throws UnsupportedEncodingException + { + byte[] header; + byte[] hex_len; + + header = new byte[FDFS_PROTO_PKG_LEN_SIZE + 2]; + Arrays.fill(header, (byte)0); + + hex_len = ProtoCommon.long2buff(pkg_len); + System.arraycopy(hex_len, 0, header, 0, hex_len.length); + header[PROTO_HEADER_CMD_INDEX] = cmd; + header[PROTO_HEADER_STATUS_INDEX] = errno; + return header; + } + +/** +* receive pack header +* @param in input stream +* @param expect_cmd expect response command +* @param expect_body_len expect response package body length +* @return RecvHeaderInfo: errno and pkg body length +*/ + public static RecvHeaderInfo recvHeader(InputStream in, byte expect_cmd, long expect_body_len) throws IOException + { + byte[] header; + int bytes; + long pkg_len; + + header = new byte[FDFS_PROTO_PKG_LEN_SIZE + 2]; + + if ((bytes=in.read(header)) != header.length) + { + throw new IOException("recv package size " + bytes + " != " + header.length); + } + + if (header[PROTO_HEADER_CMD_INDEX] != expect_cmd) + { + throw new IOException("recv cmd: " + header[PROTO_HEADER_CMD_INDEX] + " is not correct, expect cmd: " + expect_cmd); + } + + if (header[PROTO_HEADER_STATUS_INDEX] != 0) + { + return new RecvHeaderInfo(header[PROTO_HEADER_STATUS_INDEX], 0); + } + + pkg_len = ProtoCommon.buff2long(header, 0); + if (pkg_len < 0) + { + throw new IOException("recv body length: " + pkg_len + " < 0!"); + } + + if (expect_body_len >= 0 && pkg_len != expect_body_len) + { + throw new IOException("recv body length: " + pkg_len + " is not correct, expect length: " + expect_body_len); + } + + return new RecvHeaderInfo((byte)0, pkg_len); + } + +/** +* receive whole pack +* @param in input stream +* @param expect_cmd expect response command +* @param expect_body_len expect response package body length +* @return RecvPackageInfo: errno and reponse body(byte buff) +*/ + public static RecvPackageInfo recvPackage(InputStream in, byte expect_cmd, long expect_body_len) throws IOException + { + RecvHeaderInfo header = recvHeader(in, expect_cmd, expect_body_len); + if (header.errno != 0) + { + return new RecvPackageInfo(header.errno, null); + } + + byte[] body = new byte[(int)header.body_len]; + int totalBytes = 0; + int remainBytes = (int)header.body_len; + int bytes; + + while (totalBytes < header.body_len) + { + if ((bytes=in.read(body, totalBytes, remainBytes)) < 0) + { + break; + } + + totalBytes += bytes; + remainBytes -= bytes; + } + + if (totalBytes != header.body_len) + { + throw new IOException("recv package size " + totalBytes + " != " + header.body_len); + } + + return new RecvPackageInfo((byte)0, body); + } + +/** +* split metadata to name value pair array +* @param meta_buff metadata +* @return name value pair array +*/ + public static NameValuePair[] split_metadata(String meta_buff) + { + return split_metadata(meta_buff, FDFS_RECORD_SEPERATOR, FDFS_FIELD_SEPERATOR); + } + +/** +* split metadata to name value pair array +* @param meta_buff metadata +* @param recordSeperator record/row seperator +* @param filedSeperator field/column seperator +* @return name value pair array +*/ + public static NameValuePair[] split_metadata(String meta_buff, + String recordSeperator, String filedSeperator) + { + String[] rows; + String[] cols; + NameValuePair[] meta_list; + + rows = meta_buff.split(recordSeperator); + meta_list = new NameValuePair[rows.length]; + for (int i=0; i> 56) & 0xFF); + bs[1] = (byte)((n >> 48) & 0xFF); + bs[2] = (byte)((n >> 40) & 0xFF); + bs[3] = (byte)((n >> 32) & 0xFF); + bs[4] = (byte)((n >> 24) & 0xFF); + bs[5] = (byte)((n >> 16) & 0xFF); + bs[6] = (byte)((n >> 8) & 0xFF); + bs[7] = (byte)(n & 0xFF); + + return bs; + } + +/** +* buff convert to long +* @param bs the buffer (big-endian) +* @param offset the start position based 0 +* @return long number +*/ + public static long buff2long(byte[] bs, int offset) + { + return (((long)(bs[offset] >= 0 ? bs[offset] : 256+bs[offset])) << 56) | + (((long)(bs[offset+1] >= 0 ? bs[offset+1] : 256+bs[offset+1])) << 48) | + (((long)(bs[offset+2] >= 0 ? bs[offset+2] : 256+bs[offset+2])) << 40) | + (((long)(bs[offset+3] >= 0 ? bs[offset+3] : 256+bs[offset+3])) << 32) | + (((long)(bs[offset+4] >= 0 ? bs[offset+4] : 256+bs[offset+4])) << 24) | + (((long)(bs[offset+5] >= 0 ? bs[offset+5] : 256+bs[offset+5])) << 16) | + (((long)(bs[offset+6] >= 0 ? bs[offset+6] : 256+bs[offset+6])) << 8) | + ((long)(bs[offset+7] >= 0 ? bs[offset+7] : 256+bs[offset+7])); + } + +/** +* buff convert to int +* @param bs the buffer (big-endian) +* @param offset the start position based 0 +* @return int number +*/ + public static int buff2int(byte[] bs, int offset) + { + return (((int)(bs[offset] >= 0 ? bs[offset] : 256+bs[offset])) << 24) | + (((int)(bs[offset+1] >= 0 ? bs[offset+1] : 256+bs[offset+1])) << 16) | + (((int)(bs[offset+2] >= 0 ? bs[offset+2] : 256+bs[offset+2])) << 8) | + ((int)(bs[offset+3] >= 0 ? bs[offset+3] : 256+bs[offset+3])); + } + +/** +* buff convert to ip address +* @param bs the buffer (big-endian) +* @param offset the start position based 0 +* @return ip address +*/ + public static String getIpAddress(byte[] bs, int offset) + { + if (bs[0] == 0 || bs[3] == 0) //storage server ID + { + return ""; + } + + int n; + StringBuilder sbResult = new StringBuilder(16); + for (int i=offset; i= 0) ? bs[i] : 256 + bs[i]; + if (sbResult.length() > 0) + { + sbResult.append("."); + } + sbResult.append(String.valueOf(n)); + } + + return sbResult.toString(); + } + + /** +* md5 function +* @param source the input buffer +* @return md5 string +*/ + public static String md5(byte[] source) throws NoSuchAlgorithmException + { + char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; + java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5"); + md.update(source); + byte tmp[] = md.digest(); + char str[] = new char[32]; + int k = 0; + for (int i = 0; i < 16; i++) + { + str[k++] = hexDigits[tmp[i] >>> 4 & 0xf]; + str[k++] = hexDigits[tmp[i] & 0xf]; + } + + return new String(str); + } + + /** +* get token for file URL +* @param remote_filename the filename return by FastDFS server +* @param ts unix timestamp, unit: second +* @param secret_key the secret key +* @return token string +*/ + public static String getToken(String remote_filename, int ts, String secret_key) throws UnsupportedEncodingException, NoSuchAlgorithmException, MyException + { + byte[] bsFilename = remote_filename.getBytes(ClientGlobal.g_charset); + byte[] bsKey = secret_key.getBytes(ClientGlobal.g_charset); + byte[] bsTimestamp = (new Integer(ts)).toString().getBytes(ClientGlobal.g_charset); + + byte[] buff = new byte[bsFilename.length + bsKey.length + bsTimestamp.length]; + System.arraycopy(bsFilename, 0, buff, 0, bsFilename.length); + System.arraycopy(bsKey, 0, buff, bsFilename.length, bsKey.length); + System.arraycopy(bsTimestamp, 0, buff, bsFilename.length + bsKey.length, bsTimestamp.length); + + return md5(buff); + } + + /** +* generate slave filename +* @param master_filename the master filename to generate the slave filename +* @param prefix_name the prefix name to generate the slave filename +* @param ext_name the extension name of slave filename, null for same as the master extension name +* @return slave filename string +*/ + public static String genSlaveFilename(String master_filename, + String prefix_name, String ext_name) throws MyException + { + String true_ext_name; + int dotIndex; + + if (master_filename.length() < 28 + FDFS_FILE_EXT_NAME_MAX_LEN) + { + throw new MyException("master filename \"" + master_filename + "\" is invalid"); + } + + dotIndex = master_filename.indexOf('.', master_filename.length() - (FDFS_FILE_EXT_NAME_MAX_LEN + 1)); + if (ext_name != null) + { + if (ext_name.length() == 0) + { + true_ext_name = ""; + } + else if (ext_name.charAt(0) == '.') + { + true_ext_name = ext_name; + } + else + { + true_ext_name = "." + ext_name; + } + } + else + { + if (dotIndex < 0) + { + true_ext_name = ""; + } + else + { + true_ext_name = master_filename.substring(dotIndex); + } + } + + if (true_ext_name.length() == 0 && prefix_name.equals("-m")) + { + throw new MyException("prefix_name \"" + prefix_name + "\" is invalid"); + } + + if (dotIndex < 0) + { + return master_filename + prefix_name + true_ext_name; + } + else + { + return master_filename.substring(0, dotIndex) + prefix_name + true_ext_name; + } + } +} diff --git a/src/main/java/org/csource/fastdfs/ProtoStructDecoder.java b/src/main/java/org/csource/fastdfs/ProtoStructDecoder.java new file mode 100644 index 0000000..c30cb6a --- /dev/null +++ b/src/main/java/org/csource/fastdfs/ProtoStructDecoder.java @@ -0,0 +1,55 @@ +/** +* Copyright (C) 2008 Happy Fish / YuQing +* +* FastDFS Java Client may be copied only under the terms of the GNU Lesser +* General Public License (LGPL). +* Please visit the FastDFS Home Page http://www.csource.org/ for more detail. +*/ + +package org.csource.fastdfs; + +import java.io.*; +import java.util.*; +import java.net.*; +import java.lang.reflect.Array; +import org.csource.common.*; + +/** +* C struct body decoder +* @author Happy Fish / YuQing +* @version Version 1.17 +*/ +public class ProtoStructDecoder +{ +/** +* Constructor +*/ + public ProtoStructDecoder() + { + } + +/** +* decode byte buffer +*/ + public T[] decode(byte[] bs, Class clazz, int fieldsTotalSize) throws Exception + { + if (bs.length % fieldsTotalSize != 0) + { + throw new IOException("byte array length: " + bs.length + " is invalid!"); + } + + int count = bs.length / fieldsTotalSize; + int offset; + T[] results = (T[])Array.newInstance(clazz, count); + + offset = 0; + for (int i=0; i= this.tracker_servers.length) + { + this.tracker_server_index = 0; + } + + current_index = this.tracker_server_index; + } + + try + { + return this.getConnection(current_index); + } + catch(IOException ex) + { + System.err.println("connect to server " + this.tracker_servers[current_index].getAddress().getHostAddress() + ":" + this.tracker_servers[current_index].getPort() + " fail"); + ex.printStackTrace(System.err); + } + + for (int i=0; i 0) + { + try + { + if ((bytes=inputStream.read(buff, 0, remainBytes > buff.length ? buff.length : (int)remainBytes)) < 0) + { + return -1; + } + } + catch(IOException ex) + { + ex.printStackTrace(); + return -1; + } + + out.write(buff, 0, bytes); + remainBytes -= bytes; + } + + return 0; + } +} diff --git a/src/main/resources/com/xmomen/module/base/entity/mapper/CdAttachmentMapper.xml b/src/main/resources/com/xmomen/module/base/entity/mapper/CdAttachmentMapper.xml new file mode 100644 index 0000000..9c681e5 --- /dev/null +++ b/src/main/resources/com/xmomen/module/base/entity/mapper/CdAttachmentMapper.xml @@ -0,0 +1,188 @@ + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, business_id, type, file_name, file_extend, file_path, upload_date, upload_user + + + + delete from cd_attachment + + + + + + insert into cd_attachment + + + id, + + + business_id, + + + type, + + + file_name, + + + file_extend, + + + file_path, + + + upload_date, + + + upload_user, + + + + + #{id,jdbcType=INTEGER}, + + + #{businessId,jdbcType=VARCHAR}, + + + #{type,jdbcType=VARCHAR}, + + + #{fileName,jdbcType=VARCHAR}, + + + #{fileExtend,jdbcType=VARCHAR}, + + + #{filePath,jdbcType=VARCHAR}, + + + #{uploadDate,jdbcType=TIMESTAMP}, + + + #{uploadUser,jdbcType=VARCHAR}, + + + + + + update cd_attachment + + + id = #{record.id,jdbcType=INTEGER}, + + + business_id = #{record.businessId,jdbcType=VARCHAR}, + + + type = #{record.type,jdbcType=VARCHAR}, + + + file_name = #{record.fileName,jdbcType=VARCHAR}, + + + file_extend = #{record.fileExtend,jdbcType=VARCHAR}, + + + file_path = #{record.filePath,jdbcType=VARCHAR}, + + + upload_date = #{record.uploadDate,jdbcType=TIMESTAMP}, + + + upload_user = #{record.uploadUser,jdbcType=VARCHAR}, + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/xmomen/module/base/entity/mapper/CdBindMapper.xml b/src/main/resources/com/xmomen/module/base/entity/mapper/CdBindMapper.xml new file mode 100644 index 0000000..3f8188e --- /dev/null +++ b/src/main/resources/com/xmomen/module/base/entity/mapper/CdBindMapper.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + ID, user_id, PHONE, OPEN_ID + + + + delete from cd_bind + + + + + + insert into cd_bind + + + ID, + + + user_id, + + + PHONE, + + + OPEN_ID, + + + + + #{id,jdbcType=INTEGER}, + + + #{userId,jdbcType=INTEGER}, + + + #{phone,jdbcType=VARCHAR}, + + + #{openId,jdbcType=VARCHAR}, + + + + + + update cd_bind + + + ID = #{record.id,jdbcType=INTEGER}, + + + user_id = #{record.userId,jdbcType=INTEGER}, + + + PHONE = #{record.phone,jdbcType=VARCHAR}, + + + OPEN_ID = #{record.openId,jdbcType=VARCHAR}, + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/xmomen/module/base/entity/mapper/CdCategoryMapper.xml b/src/main/resources/com/xmomen/module/base/entity/mapper/CdCategoryMapper.xml new file mode 100644 index 0000000..7b66716 --- /dev/null +++ b/src/main/resources/com/xmomen/module/base/entity/mapper/CdCategoryMapper.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + ID, CATEGORY_NAME, PARENT_ID + + + + delete from cd_category + + + + + + insert into cd_category + + + ID, + + + CATEGORY_NAME, + + + PARENT_ID, + + + + + #{id,jdbcType=INTEGER}, + + + #{categoryName,jdbcType=VARCHAR}, + + + #{parentId,jdbcType=INTEGER}, + + + + + + update cd_category + + + ID = #{record.id,jdbcType=INTEGER}, + + + CATEGORY_NAME = #{record.categoryName,jdbcType=VARCHAR}, + + + PARENT_ID = #{record.parentId,jdbcType=INTEGER}, + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/xmomen/module/base/entity/mapper/CdContractItemMapper.xml b/src/main/resources/com/xmomen/module/base/entity/mapper/CdContractItemMapper.xml new file mode 100644 index 0000000..18378c4 --- /dev/null +++ b/src/main/resources/com/xmomen/module/base/entity/mapper/CdContractItemMapper.xml @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + ID, CD_CONTRACT_ID, CONTRACT_TYPE, CD_ITEM_ID, DISCOUNT, CONTRACT_VALUE + + + + delete from cd_contract_item + + + + + + insert into cd_contract_item + + + ID, + + + CD_CONTRACT_ID, + + + CONTRACT_TYPE, + + + CD_ITEM_ID, + + + DISCOUNT, + + + CONTRACT_VALUE, + + + + + #{id,jdbcType=INTEGER}, + + + #{cdContractId,jdbcType=INTEGER}, + + + #{contractType,jdbcType=INTEGER}, + + + #{cdItemId,jdbcType=INTEGER}, + + + #{discount,jdbcType=DOUBLE}, + + + #{contractValue,jdbcType=DECIMAL}, + + + + + + update cd_contract_item + + + ID = #{record.id,jdbcType=INTEGER}, + + + CD_CONTRACT_ID = #{record.cdContractId,jdbcType=INTEGER}, + + + CONTRACT_TYPE = #{record.contractType,jdbcType=INTEGER}, + + + CD_ITEM_ID = #{record.cdItemId,jdbcType=INTEGER}, + + + DISCOUNT = #{record.discount,jdbcType=DOUBLE}, + + + CONTRACT_VALUE = #{record.contractValue,jdbcType=DECIMAL}, + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/xmomen/module/base/entity/mapper/CdContractMapper.xml b/src/main/resources/com/xmomen/module/base/entity/mapper/CdContractMapper.xml new file mode 100644 index 0000000..47ffda8 --- /dev/null +++ b/src/main/resources/com/xmomen/module/base/entity/mapper/CdContractMapper.xml @@ -0,0 +1,219 @@ + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + ID, CONTRACT_CODE, CONTRACT_NAME, CD_MEMBER_ID, CD_COMPANY_ID, SCOPE, CONTRACT_PRICE, + BEGIN_TIME, END_TIME, IS_DEL, IS_AUDITOR + + + + delete from cd_contract + + + + + + insert into cd_contract + + + ID, + + + CONTRACT_CODE, + + + CONTRACT_NAME, + + + CD_MEMBER_ID, + + + CD_COMPANY_ID, + + + SCOPE, + + + CONTRACT_PRICE, + + + BEGIN_TIME, + + + END_TIME, + + + IS_DEL, + + + IS_AUDITOR, + + + + + #{id,jdbcType=INTEGER}, + + + #{contractCode,jdbcType=VARCHAR}, + + + #{contractName,jdbcType=VARCHAR}, + + + #{cdMemberId,jdbcType=INTEGER}, + + + #{cdCompanyId,jdbcType=INTEGER}, + + + #{scope,jdbcType=INTEGER}, + + + #{contractPrice,jdbcType=DECIMAL}, + + + #{beginTime,jdbcType=TIMESTAMP}, + + + #{endTime,jdbcType=TIMESTAMP}, + + + #{isDel,jdbcType=INTEGER}, + + + #{isAuditor,jdbcType=INTEGER}, + + + + + + update cd_contract + + + ID = #{record.id,jdbcType=INTEGER}, + + + CONTRACT_CODE = #{record.contractCode,jdbcType=VARCHAR}, + + + CONTRACT_NAME = #{record.contractName,jdbcType=VARCHAR}, + + + CD_MEMBER_ID = #{record.cdMemberId,jdbcType=INTEGER}, + + + CD_COMPANY_ID = #{record.cdCompanyId,jdbcType=INTEGER}, + + + SCOPE = #{record.scope,jdbcType=INTEGER}, + + + CONTRACT_PRICE = #{record.contractPrice,jdbcType=DECIMAL}, + + + BEGIN_TIME = #{record.beginTime,jdbcType=TIMESTAMP}, + + + END_TIME = #{record.endTime,jdbcType=TIMESTAMP}, + + + IS_DEL = #{record.isDel,jdbcType=INTEGER}, + + + IS_AUDITOR = #{record.isAuditor,jdbcType=INTEGER}, + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/xmomen/module/base/entity/mapper/CdCouponCategoryMapper.xml b/src/main/resources/com/xmomen/module/base/entity/mapper/CdCouponCategoryMapper.xml new file mode 100644 index 0000000..3ab8e37 --- /dev/null +++ b/src/main/resources/com/xmomen/module/base/entity/mapper/CdCouponCategoryMapper.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + ID, CATEGORY_TYPE, CATEGORY_NAME + + + + delete from cd_coupon_category + + + + + + insert into cd_coupon_category + + + ID, + + + CATEGORY_TYPE, + + + CATEGORY_NAME, + + + + + #{id,jdbcType=INTEGER}, + + + #{categoryType,jdbcType=INTEGER}, + + + #{categoryName,jdbcType=VARCHAR}, + + + + + + update cd_coupon_category + + + ID = #{record.id,jdbcType=INTEGER}, + + + CATEGORY_TYPE = #{record.categoryType,jdbcType=INTEGER}, + + + CATEGORY_NAME = #{record.categoryName,jdbcType=VARCHAR}, + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/xmomen/module/base/entity/mapper/CdCouponRefMapper.xml b/src/main/resources/com/xmomen/module/base/entity/mapper/CdCouponRefMapper.xml new file mode 100644 index 0000000..8eb50b3 --- /dev/null +++ b/src/main/resources/com/xmomen/module/base/entity/mapper/CdCouponRefMapper.xml @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + ID, CD_COUPON_ID, COUPON_NUMBER, REF_TYPE, REF_NAME, REF_VALUE + + + + delete from cd_coupon_ref + + + + + + insert into cd_coupon_ref + + + ID, + + + CD_COUPON_ID, + + + COUPON_NUMBER, + + + REF_TYPE, + + + REF_NAME, + + + REF_VALUE, + + + + + #{id,jdbcType=INTEGER}, + + + #{cdCouponId,jdbcType=INTEGER}, + + + #{couponNumber,jdbcType=VARCHAR}, + + + #{refType,jdbcType=VARCHAR}, + + + #{refName,jdbcType=VARCHAR}, + + + #{refValue,jdbcType=VARCHAR}, + + + + + + update cd_coupon_ref + + + ID = #{record.id,jdbcType=INTEGER}, + + + CD_COUPON_ID = #{record.cdCouponId,jdbcType=INTEGER}, + + + COUPON_NUMBER = #{record.couponNumber,jdbcType=VARCHAR}, + + + REF_TYPE = #{record.refType,jdbcType=VARCHAR}, + + + REF_NAME = #{record.refName,jdbcType=VARCHAR}, + + + REF_VALUE = #{record.refValue,jdbcType=VARCHAR}, + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/xmomen/module/base/entity/mapper/CdItemDetailMapper.xml b/src/main/resources/com/xmomen/module/base/entity/mapper/CdItemDetailMapper.xml new file mode 100644 index 0000000..be2ca34 --- /dev/null +++ b/src/main/resources/com/xmomen/module/base/entity/mapper/CdItemDetailMapper.xml @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, cd_item_id + + + item_detail_content + + + + delete from cd_item_detail + + + + + + insert into cd_item_detail + + + id, + + + cd_item_id, + + + item_detail_content, + + + + + #{id,jdbcType=INTEGER}, + + + #{cdItemId,jdbcType=INTEGER}, + + + #{itemDetailContent,jdbcType=LONGVARCHAR}, + + + + + + update cd_item_detail + + + id = #{record.id,jdbcType=INTEGER}, + + + cd_item_id = #{record.cdItemId,jdbcType=INTEGER}, + + + item_detail_content = #{record.itemDetailContent,jdbcType=LONGVARCHAR}, + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/xmomen/module/base/entity/mapper/CdManagerCompanyMapper.xml b/src/main/resources/com/xmomen/module/base/entity/mapper/CdManagerCompanyMapper.xml new file mode 100644 index 0000000..cc29ba9 --- /dev/null +++ b/src/main/resources/com/xmomen/module/base/entity/mapper/CdManagerCompanyMapper.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + ID, CD_COMPANY_ID, CD_MANAGER_ID + + + + delete from cd_manager_company + + + + + + insert into cd_manager_company + + + ID, + + + CD_COMPANY_ID, + + + CD_MANAGER_ID, + + + + + #{id,jdbcType=INTEGER}, + + + #{cdCompanyId,jdbcType=INTEGER}, + + + #{cdManagerId,jdbcType=INTEGER}, + + + + + + update cd_manager_company + + + ID = #{record.id,jdbcType=INTEGER}, + + + CD_COMPANY_ID = #{record.cdCompanyId,jdbcType=INTEGER}, + + + CD_MANAGER_ID = #{record.cdManagerId,jdbcType=INTEGER}, + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/xmomen/module/base/entity/mapper/CdMemberMapper.xml b/src/main/resources/com/xmomen/module/base/entity/mapper/CdMemberMapper.xml new file mode 100644 index 0000000..e433da4 --- /dev/null +++ b/src/main/resources/com/xmomen/module/base/entity/mapper/CdMemberMapper.xml @@ -0,0 +1,290 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + ID, NAME, PASSWORD, PHONE_NUMBER, ADDRESS, CD_COMPANY_ID, CD_USER_ID, SPARE_NAME, + SPARE_NAME2, SPARE_TEL, SPARE_TEL2, TEL_NUMBER, OFFICE_TEL, SPARE_ADDRESS, SPARE_ADDRESS2, + FLAG, MEMBER_TYPE, email + + + + delete from cd_member + + + + + + insert into cd_member + + + ID, + + + NAME, + + + PASSWORD, + + + PHONE_NUMBER, + + + ADDRESS, + + + CD_COMPANY_ID, + + + CD_USER_ID, + + + SPARE_NAME, + + + SPARE_NAME2, + + + SPARE_TEL, + + + SPARE_TEL2, + + + TEL_NUMBER, + + + OFFICE_TEL, + + + SPARE_ADDRESS, + + + SPARE_ADDRESS2, + + + FLAG, + + + MEMBER_TYPE, + + + email, + + + + + #{id,jdbcType=INTEGER}, + + + #{name,jdbcType=VARCHAR}, + + + #{password,jdbcType=VARCHAR}, + + + #{phoneNumber,jdbcType=VARCHAR}, + + + #{address,jdbcType=VARCHAR}, + + + #{cdCompanyId,jdbcType=INTEGER}, + + + #{cdUserId,jdbcType=INTEGER}, + + + #{spareName,jdbcType=VARCHAR}, + + + #{spareName2,jdbcType=VARCHAR}, + + + #{spareTel,jdbcType=VARCHAR}, + + + #{spareTel2,jdbcType=VARCHAR}, + + + #{telNumber,jdbcType=VARCHAR}, + + + #{officeTel,jdbcType=VARCHAR}, + + + #{spareAddress,jdbcType=VARCHAR}, + + + #{spareAddress2,jdbcType=VARCHAR}, + + + #{flag,jdbcType=VARCHAR}, + + + #{memberType,jdbcType=INTEGER}, + + + #{email,jdbcType=VARCHAR}, + + + + + + update cd_member + + + ID = #{record.id,jdbcType=INTEGER}, + + + NAME = #{record.name,jdbcType=VARCHAR}, + + + PASSWORD = #{record.password,jdbcType=VARCHAR}, + + + PHONE_NUMBER = #{record.phoneNumber,jdbcType=VARCHAR}, + + + ADDRESS = #{record.address,jdbcType=VARCHAR}, + + + CD_COMPANY_ID = #{record.cdCompanyId,jdbcType=INTEGER}, + + + CD_USER_ID = #{record.cdUserId,jdbcType=INTEGER}, + + + SPARE_NAME = #{record.spareName,jdbcType=VARCHAR}, + + + SPARE_NAME2 = #{record.spareName2,jdbcType=VARCHAR}, + + + SPARE_TEL = #{record.spareTel,jdbcType=VARCHAR}, + + + SPARE_TEL2 = #{record.spareTel2,jdbcType=VARCHAR}, + + + TEL_NUMBER = #{record.telNumber,jdbcType=VARCHAR}, + + + OFFICE_TEL = #{record.officeTel,jdbcType=VARCHAR}, + + + SPARE_ADDRESS = #{record.spareAddress,jdbcType=VARCHAR}, + + + SPARE_ADDRESS2 = #{record.spareAddress2,jdbcType=VARCHAR}, + + + FLAG = #{record.flag,jdbcType=VARCHAR}, + + + MEMBER_TYPE = #{record.memberType,jdbcType=INTEGER}, + + + email = #{record.email,jdbcType=VARCHAR}, + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/xmomen/module/base/entity/mapper/CdPlanItemMapper.xml b/src/main/resources/com/xmomen/module/base/entity/mapper/CdPlanItemMapper.xml new file mode 100644 index 0000000..f11626c --- /dev/null +++ b/src/main/resources/com/xmomen/module/base/entity/mapper/CdPlanItemMapper.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + ID, CD_PLAN_ID, CD_ITEM_ID, COUNT_VALUE + + + + delete from cd_plan_item + + + + + + insert into cd_plan_item + + + ID, + + + CD_PLAN_ID, + + + CD_ITEM_ID, + + + COUNT_VALUE, + + + + + #{id,jdbcType=INTEGER}, + + + #{cdPlanId,jdbcType=INTEGER}, + + + #{cdItemId,jdbcType=INTEGER}, + + + #{countValue,jdbcType=INTEGER}, + + + + + + update cd_plan_item + + + ID = #{record.id,jdbcType=INTEGER}, + + + CD_PLAN_ID = #{record.cdPlanId,jdbcType=INTEGER}, + + + CD_ITEM_ID = #{record.cdItemId,jdbcType=INTEGER}, + + + COUNT_VALUE = #{record.countValue,jdbcType=INTEGER}, + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/xmomen/module/job/entity/mapper/TbJobMapper.xml b/src/main/resources/com/xmomen/module/job/entity/mapper/TbJobMapper.xml new file mode 100644 index 0000000..ff80a54 --- /dev/null +++ b/src/main/resources/com/xmomen/module/job/entity/mapper/TbJobMapper.xml @@ -0,0 +1,239 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, PURCHASE_CODE, PURCHASE_ID, JOB_TYPE, JOB_STATUS, JOB_USER, JOB_CREATE_TIME, + CD_ITEM_ID, COUNT_VALUE, JOB_BEGIN_TIME, FINISH_VALUE, FINISH_TIME, JOB_CREATE_USER + + + + delete from tb_job + + + + + + insert into tb_job + + + id, + + + PURCHASE_CODE, + + + PURCHASE_ID, + + + JOB_TYPE, + + + JOB_STATUS, + + + JOB_USER, + + + JOB_CREATE_TIME, + + + CD_ITEM_ID, + + + COUNT_VALUE, + + + JOB_BEGIN_TIME, + + + FINISH_VALUE, + + + FINISH_TIME, + + + JOB_CREATE_USER, + + + + + #{id,jdbcType=INTEGER}, + + + #{purchaseCode,jdbcType=VARCHAR}, + + + #{purchaseId,jdbcType=INTEGER}, + + + #{jobType,jdbcType=INTEGER}, + + + #{jobStatus,jdbcType=INTEGER}, + + + #{jobUser,jdbcType=INTEGER}, + + + #{jobCreateTime,jdbcType=TIMESTAMP}, + + + #{cdItemId,jdbcType=INTEGER}, + + + #{countValue,jdbcType=INTEGER}, + + + #{jobBeginTime,jdbcType=TIMESTAMP}, + + + #{finishValue,jdbcType=INTEGER}, + + + #{finishTime,jdbcType=TIMESTAMP}, + + + #{jobCreateUser,jdbcType=INTEGER}, + + + + + + update tb_job + + + id = #{record.id,jdbcType=INTEGER}, + + + PURCHASE_CODE = #{record.purchaseCode,jdbcType=VARCHAR}, + + + PURCHASE_ID = #{record.purchaseId,jdbcType=INTEGER}, + + + JOB_TYPE = #{record.jobType,jdbcType=INTEGER}, + + + JOB_STATUS = #{record.jobStatus,jdbcType=INTEGER}, + + + JOB_USER = #{record.jobUser,jdbcType=INTEGER}, + + + JOB_CREATE_TIME = #{record.jobCreateTime,jdbcType=TIMESTAMP}, + + + CD_ITEM_ID = #{record.cdItemId,jdbcType=INTEGER}, + + + COUNT_VALUE = #{record.countValue,jdbcType=INTEGER}, + + + JOB_BEGIN_TIME = #{record.jobBeginTime,jdbcType=TIMESTAMP}, + + + FINISH_VALUE = #{record.finishValue,jdbcType=INTEGER}, + + + FINISH_TIME = #{record.finishTime,jdbcType=TIMESTAMP}, + + + JOB_CREATE_USER = #{record.jobCreateUser,jdbcType=INTEGER}, + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/xmomen/module/job/entity/mapper/TbJobOperationLogMapper.xml b/src/main/resources/com/xmomen/module/job/entity/mapper/TbJobOperationLogMapper.xml new file mode 100644 index 0000000..d4db254 --- /dev/null +++ b/src/main/resources/com/xmomen/module/job/entity/mapper/TbJobOperationLogMapper.xml @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, job_id, job_user, job_time, bar_code, item_code + + + + delete from tb_job_operation_log + + + + + + insert into tb_job_operation_log + + + id, + + + job_id, + + + job_user, + + + job_time, + + + bar_code, + + + item_code, + + + + + #{id,jdbcType=INTEGER}, + + + #{jobId,jdbcType=INTEGER}, + + + #{jobUser,jdbcType=INTEGER}, + + + #{jobTime,jdbcType=TIMESTAMP}, + + + #{barCode,jdbcType=VARCHAR}, + + + #{itemCode,jdbcType=VARCHAR}, + + + + + + update tb_job_operation_log + + + id = #{record.id,jdbcType=INTEGER}, + + + job_id = #{record.jobId,jdbcType=INTEGER}, + + + job_user = #{record.jobUser,jdbcType=INTEGER}, + + + job_time = #{record.jobTime,jdbcType=TIMESTAMP}, + + + bar_code = #{record.barCode,jdbcType=VARCHAR}, + + + item_code = #{record.itemCode,jdbcType=VARCHAR}, + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/xmomen/module/order/entity/mapper/TbOrderItemMapper.xml b/src/main/resources/com/xmomen/module/order/entity/mapper/TbOrderItemMapper.xml new file mode 100644 index 0000000..a988419 --- /dev/null +++ b/src/main/resources/com/xmomen/module/order/entity/mapper/TbOrderItemMapper.xml @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + ID, ORDER_NO, ITEM_ID, ITEM_CODE, ITEM_NAME, ITEM_PRICE, ITEM_QTY, ITEM_UNIT, CREATE_DATE, + CREATE_USER_ID, UPDATE_DATE, UPDATE_USER_ID + + + + delete from tb_order_item + + + + + + insert into tb_order_item + + + ID, + + + ORDER_NO, + + + ITEM_ID, + + + ITEM_CODE, + + + ITEM_NAME, + + + ITEM_PRICE, + + + ITEM_QTY, + + + ITEM_UNIT, + + + CREATE_DATE, + + + CREATE_USER_ID, + + + UPDATE_DATE, + + + UPDATE_USER_ID, + + + + + #{id,jdbcType=INTEGER}, + + + #{orderNo,jdbcType=VARCHAR}, + + + #{itemId,jdbcType=INTEGER}, + + + #{itemCode,jdbcType=VARCHAR}, + + + #{itemName,jdbcType=VARCHAR}, + + + #{itemPrice,jdbcType=DECIMAL}, + + + #{itemQty,jdbcType=DECIMAL}, + + + #{itemUnit,jdbcType=VARCHAR}, + + + #{createDate,jdbcType=TIMESTAMP}, + + + #{createUserId,jdbcType=INTEGER}, + + + #{updateDate,jdbcType=TIMESTAMP}, + + + #{updateUserId,jdbcType=INTEGER}, + + + + + + update tb_order_item + + + ID = #{record.id,jdbcType=INTEGER}, + + + ORDER_NO = #{record.orderNo,jdbcType=VARCHAR}, + + + ITEM_ID = #{record.itemId,jdbcType=INTEGER}, + + + ITEM_CODE = #{record.itemCode,jdbcType=VARCHAR}, + + + ITEM_NAME = #{record.itemName,jdbcType=VARCHAR}, + + + ITEM_PRICE = #{record.itemPrice,jdbcType=DECIMAL}, + + + ITEM_QTY = #{record.itemQty,jdbcType=DECIMAL}, + + + ITEM_UNIT = #{record.itemUnit,jdbcType=VARCHAR}, + + + CREATE_DATE = #{record.createDate,jdbcType=TIMESTAMP}, + + + CREATE_USER_ID = #{record.createUserId,jdbcType=INTEGER}, + + + UPDATE_DATE = #{record.updateDate,jdbcType=TIMESTAMP}, + + + UPDATE_USER_ID = #{record.updateUserId,jdbcType=INTEGER}, + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/xmomen/module/order/entity/mapper/TbOrderMapper.xml b/src/main/resources/com/xmomen/module/order/entity/mapper/TbOrderMapper.xml new file mode 100644 index 0000000..a04de1b --- /dev/null +++ b/src/main/resources/com/xmomen/module/order/entity/mapper/TbOrderMapper.xml @@ -0,0 +1,473 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + ID, ORDER_NO, ORDER_TYPE, ORDER_SOURCE, PAYMENT_MODE, OTHER_PAYMENT_MODE, MEMBER_CODE, + ORDER_STATUS, PAY_STATUS, CONSIGNEE_PHONE, CONSIGNEE_NAME, CONSIGNEE_ADDRESS, POSTCODE, + TRANSPORT_MODE, REMARK, DISCOUNT_PRICE, TOTAL_AMOUNT, CREATE_TIME, APPOINTMENT_TIME, + CREATE_USER_ID, DESPATCH_EXPRESS_ID, EXPRESS_MEMBER_ID, COMPANY_ID, MANAGER_ID, BATCH_NO, + TOTAL_BOX_NUM, EXPRESS_SCAN_BOX_NUM, XIAJIA, IS_TWO_SEND, TWO_SEND_AUDIT_DATE, TWO_SEND_AUDIT_USER_ID, + OUT_DATE, SHOU_HUO_DATE, IS_REJECT, UPDATE_DATE, UPDATE_USER_ID + + + + delete from tb_order + + + + + + insert into tb_order + + + ID, + + + ORDER_NO, + + + ORDER_TYPE, + + + ORDER_SOURCE, + + + PAYMENT_MODE, + + + OTHER_PAYMENT_MODE, + + + MEMBER_CODE, + + + ORDER_STATUS, + + + PAY_STATUS, + + + CONSIGNEE_PHONE, + + + CONSIGNEE_NAME, + + + CONSIGNEE_ADDRESS, + + + POSTCODE, + + + TRANSPORT_MODE, + + + REMARK, + + + DISCOUNT_PRICE, + + + TOTAL_AMOUNT, + + + CREATE_TIME, + + + APPOINTMENT_TIME, + + + CREATE_USER_ID, + + + DESPATCH_EXPRESS_ID, + + + EXPRESS_MEMBER_ID, + + + COMPANY_ID, + + + MANAGER_ID, + + + BATCH_NO, + + + TOTAL_BOX_NUM, + + + EXPRESS_SCAN_BOX_NUM, + + + XIAJIA, + + + IS_TWO_SEND, + + + TWO_SEND_AUDIT_DATE, + + + TWO_SEND_AUDIT_USER_ID, + + + OUT_DATE, + + + SHOU_HUO_DATE, + + + IS_REJECT, + + + UPDATE_DATE, + + + UPDATE_USER_ID, + + + + + #{id,jdbcType=INTEGER}, + + + #{orderNo,jdbcType=VARCHAR}, + + + #{orderType,jdbcType=INTEGER}, + + + #{orderSource,jdbcType=INTEGER}, + + + #{paymentMode,jdbcType=INTEGER}, + + + #{otherPaymentMode,jdbcType=INTEGER}, + + + #{memberCode,jdbcType=VARCHAR}, + + + #{orderStatus,jdbcType=VARCHAR}, + + + #{payStatus,jdbcType=INTEGER}, + + + #{consigneePhone,jdbcType=VARCHAR}, + + + #{consigneeName,jdbcType=VARCHAR}, + + + #{consigneeAddress,jdbcType=VARCHAR}, + + + #{postcode,jdbcType=VARCHAR}, + + + #{transportMode,jdbcType=INTEGER}, + + + #{remark,jdbcType=VARCHAR}, + + + #{discountPrice,jdbcType=DECIMAL}, + + + #{totalAmount,jdbcType=DECIMAL}, + + + #{createTime,jdbcType=TIMESTAMP}, + + + #{appointmentTime,jdbcType=TIMESTAMP}, + + + #{createUserId,jdbcType=INTEGER}, + + + #{despatchExpressId,jdbcType=INTEGER}, + + + #{expressMemberId,jdbcType=INTEGER}, + + + #{companyId,jdbcType=INTEGER}, + + + #{managerId,jdbcType=INTEGER}, + + + #{batchNo,jdbcType=VARCHAR}, + + + #{totalBoxNum,jdbcType=INTEGER}, + + + #{expressScanBoxNum,jdbcType=INTEGER}, + + + #{xiajia,jdbcType=INTEGER}, + + + #{isTwoSend,jdbcType=INTEGER}, + + + #{twoSendAuditDate,jdbcType=TIMESTAMP}, + + + #{twoSendAuditUserId,jdbcType=INTEGER}, + + + #{outDate,jdbcType=TIMESTAMP}, + + + #{shouHuoDate,jdbcType=TIMESTAMP}, + + + #{isReject,jdbcType=INTEGER}, + + + #{updateDate,jdbcType=TIMESTAMP}, + + + #{updateUserId,jdbcType=INTEGER}, + + + + + + update tb_order + + + ID = #{record.id,jdbcType=INTEGER}, + + + ORDER_NO = #{record.orderNo,jdbcType=VARCHAR}, + + + ORDER_TYPE = #{record.orderType,jdbcType=INTEGER}, + + + ORDER_SOURCE = #{record.orderSource,jdbcType=INTEGER}, + + + PAYMENT_MODE = #{record.paymentMode,jdbcType=INTEGER}, + + + OTHER_PAYMENT_MODE = #{record.otherPaymentMode,jdbcType=INTEGER}, + + + MEMBER_CODE = #{record.memberCode,jdbcType=VARCHAR}, + + + ORDER_STATUS = #{record.orderStatus,jdbcType=VARCHAR}, + + + PAY_STATUS = #{record.payStatus,jdbcType=INTEGER}, + + + CONSIGNEE_PHONE = #{record.consigneePhone,jdbcType=VARCHAR}, + + + CONSIGNEE_NAME = #{record.consigneeName,jdbcType=VARCHAR}, + + + CONSIGNEE_ADDRESS = #{record.consigneeAddress,jdbcType=VARCHAR}, + + + POSTCODE = #{record.postcode,jdbcType=VARCHAR}, + + + TRANSPORT_MODE = #{record.transportMode,jdbcType=INTEGER}, + + + REMARK = #{record.remark,jdbcType=VARCHAR}, + + + DISCOUNT_PRICE = #{record.discountPrice,jdbcType=DECIMAL}, + + + TOTAL_AMOUNT = #{record.totalAmount,jdbcType=DECIMAL}, + + + CREATE_TIME = #{record.createTime,jdbcType=TIMESTAMP}, + + + APPOINTMENT_TIME = #{record.appointmentTime,jdbcType=TIMESTAMP}, + + + CREATE_USER_ID = #{record.createUserId,jdbcType=INTEGER}, + + + DESPATCH_EXPRESS_ID = #{record.despatchExpressId,jdbcType=INTEGER}, + + + EXPRESS_MEMBER_ID = #{record.expressMemberId,jdbcType=INTEGER}, + + + COMPANY_ID = #{record.companyId,jdbcType=INTEGER}, + + + MANAGER_ID = #{record.managerId,jdbcType=INTEGER}, + + + BATCH_NO = #{record.batchNo,jdbcType=VARCHAR}, + + + TOTAL_BOX_NUM = #{record.totalBoxNum,jdbcType=INTEGER}, + + + EXPRESS_SCAN_BOX_NUM = #{record.expressScanBoxNum,jdbcType=INTEGER}, + + + XIAJIA = #{record.xiajia,jdbcType=INTEGER}, + + + IS_TWO_SEND = #{record.isTwoSend,jdbcType=INTEGER}, + + + TWO_SEND_AUDIT_DATE = #{record.twoSendAuditDate,jdbcType=TIMESTAMP}, + + + TWO_SEND_AUDIT_USER_ID = #{record.twoSendAuditUserId,jdbcType=INTEGER}, + + + OUT_DATE = #{record.outDate,jdbcType=TIMESTAMP}, + + + SHOU_HUO_DATE = #{record.shouHuoDate,jdbcType=TIMESTAMP}, + + + IS_REJECT = #{record.isReject,jdbcType=INTEGER}, + + + UPDATE_DATE = #{record.updateDate,jdbcType=TIMESTAMP}, + + + UPDATE_USER_ID = #{record.updateUserId,jdbcType=INTEGER}, + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/xmomen/module/order/entity/mapper/TbOrderSendLogMapper.xml b/src/main/resources/com/xmomen/module/order/entity/mapper/TbOrderSendLogMapper.xml new file mode 100644 index 0000000..0112286 --- /dev/null +++ b/src/main/resources/com/xmomen/module/order/entity/mapper/TbOrderSendLogMapper.xml @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, order_id, order_no, old_express_member_id, new_express_member_id, insert_date + + + + delete from tb_order_send_log + + + + + + insert into tb_order_send_log + + + id, + + + order_id, + + + order_no, + + + old_express_member_id, + + + new_express_member_id, + + + insert_date, + + + + + #{id,jdbcType=INTEGER}, + + + #{orderId,jdbcType=INTEGER}, + + + #{orderNo,jdbcType=VARCHAR}, + + + #{oldExpressMemberId,jdbcType=INTEGER}, + + + #{newExpressMemberId,jdbcType=INTEGER}, + + + #{insertDate,jdbcType=TIMESTAMP}, + + + + + + update tb_order_send_log + + + id = #{record.id,jdbcType=INTEGER}, + + + order_id = #{record.orderId,jdbcType=INTEGER}, + + + order_no = #{record.orderNo,jdbcType=VARCHAR}, + + + old_express_member_id = #{record.oldExpressMemberId,jdbcType=INTEGER}, + + + new_express_member_id = #{record.newExpressMemberId,jdbcType=INTEGER}, + + + insert_date = #{record.insertDate,jdbcType=TIMESTAMP}, + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/xmomen/module/order/entity/mapper/TbPackingRecordMapper.xml b/src/main/resources/com/xmomen/module/order/entity/mapper/TbPackingRecordMapper.xml new file mode 100644 index 0000000..1aedc84 --- /dev/null +++ b/src/main/resources/com/xmomen/module/order/entity/mapper/TbPackingRecordMapper.xml @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + ID, UPC, ORDER_ITEM_ID, SCAN_TIME, PACKING_ID + + + + delete from tb_packing_record + + + + + + insert into tb_packing_record + + + ID, + + + UPC, + + + ORDER_ITEM_ID, + + + SCAN_TIME, + + + PACKING_ID, + + + + + #{id,jdbcType=INTEGER}, + + + #{upc,jdbcType=VARCHAR}, + + + #{orderItemId,jdbcType=INTEGER}, + + + #{scanTime,jdbcType=TIMESTAMP}, + + + #{packingId,jdbcType=INTEGER}, + + + + + + update tb_packing_record + + + ID = #{record.id,jdbcType=INTEGER}, + + + UPC = #{record.upc,jdbcType=VARCHAR}, + + + ORDER_ITEM_ID = #{record.orderItemId,jdbcType=INTEGER}, + + + SCAN_TIME = #{record.scanTime,jdbcType=TIMESTAMP}, + + + PACKING_ID = #{record.packingId,jdbcType=INTEGER}, + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/xmomen/module/order/entity/mapper/TbReturnOrderMapper.xml b/src/main/resources/com/xmomen/module/order/entity/mapper/TbReturnOrderMapper.xml new file mode 100644 index 0000000..9223663 --- /dev/null +++ b/src/main/resources/com/xmomen/module/order/entity/mapper/TbReturnOrderMapper.xml @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + ID, ORDER_NO, RETURN_TIME, RETURN_STATUS, AUDIT_STATUS, AUDIT_DATE, AUDIT_USER_ID, + TAKE_GOODS_DATE, TAKE_GOODS_USER_ID, TAKE_GOODS_PHONE, RETURN_TOTAL_AMOUNT, IS_NORMAL + + + + delete from tb_return_order + + + + + + insert into tb_return_order + + + ID, + + + ORDER_NO, + + + RETURN_TIME, + + + RETURN_STATUS, + + + AUDIT_STATUS, + + + AUDIT_DATE, + + + AUDIT_USER_ID, + + + TAKE_GOODS_DATE, + + + TAKE_GOODS_USER_ID, + + + TAKE_GOODS_PHONE, + + + RETURN_TOTAL_AMOUNT, + + + IS_NORMAL, + + + + + #{id,jdbcType=INTEGER}, + + + #{orderNo,jdbcType=VARCHAR}, + + + #{returnTime,jdbcType=TIMESTAMP}, + + + #{returnStatus,jdbcType=INTEGER}, + + + #{auditStatus,jdbcType=INTEGER}, + + + #{auditDate,jdbcType=TIMESTAMP}, + + + #{auditUserId,jdbcType=INTEGER}, + + + #{takeGoodsDate,jdbcType=TIMESTAMP}, + + + #{takeGoodsUserId,jdbcType=INTEGER}, + + + #{takeGoodsPhone,jdbcType=VARCHAR}, + + + #{returnTotalAmount,jdbcType=DECIMAL}, + + + #{isNormal,jdbcType=INTEGER}, + + + + + + update tb_return_order + + + ID = #{record.id,jdbcType=INTEGER}, + + + ORDER_NO = #{record.orderNo,jdbcType=VARCHAR}, + + + RETURN_TIME = #{record.returnTime,jdbcType=TIMESTAMP}, + + + RETURN_STATUS = #{record.returnStatus,jdbcType=INTEGER}, + + + AUDIT_STATUS = #{record.auditStatus,jdbcType=INTEGER}, + + + AUDIT_DATE = #{record.auditDate,jdbcType=TIMESTAMP}, + + + AUDIT_USER_ID = #{record.auditUserId,jdbcType=INTEGER}, + + + TAKE_GOODS_DATE = #{record.takeGoodsDate,jdbcType=TIMESTAMP}, + + + TAKE_GOODS_USER_ID = #{record.takeGoodsUserId,jdbcType=INTEGER}, + + + TAKE_GOODS_PHONE = #{record.takeGoodsPhone,jdbcType=VARCHAR}, + + + RETURN_TOTAL_AMOUNT = #{record.returnTotalAmount,jdbcType=DECIMAL}, + + + IS_NORMAL = #{record.isNormal,jdbcType=INTEGER}, + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/xmomen/module/order/entity/mapper/TbTradeRecordMapper.xml b/src/main/resources/com/xmomen/module/order/entity/mapper/TbTradeRecordMapper.xml new file mode 100644 index 0000000..21a866c --- /dev/null +++ b/src/main/resources/com/xmomen/module/order/entity/mapper/TbTradeRecordMapper.xml @@ -0,0 +1,178 @@ + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + ID, AMOUNT, TRADE_NO, CREATE_TIME, TRADE_TYPE, REMARK, RECORD_USER + + + + delete from tb_trade_record + + + + + + insert into tb_trade_record + + + ID, + + + AMOUNT, + + + TRADE_NO, + + + CREATE_TIME, + + + TRADE_TYPE, + + + REMARK, + + + RECORD_USER, + + + + + #{id,jdbcType=INTEGER}, + + + #{amount,jdbcType=DECIMAL}, + + + #{tradeNo,jdbcType=VARCHAR}, + + + #{createTime,jdbcType=TIMESTAMP}, + + + #{tradeType,jdbcType=VARCHAR}, + + + #{remark,jdbcType=VARCHAR}, + + + #{recordUser,jdbcType=INTEGER}, + + + + + + update tb_trade_record + + + ID = #{record.id,jdbcType=INTEGER}, + + + AMOUNT = #{record.amount,jdbcType=DECIMAL}, + + + TRADE_NO = #{record.tradeNo,jdbcType=VARCHAR}, + + + CREATE_TIME = #{record.createTime,jdbcType=TIMESTAMP}, + + + TRADE_TYPE = #{record.tradeType,jdbcType=VARCHAR}, + + + REMARK = #{record.remark,jdbcType=VARCHAR}, + + + RECORD_USER = #{record.recordUser,jdbcType=INTEGER}, + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/xmomen/module/pick/entity/mapper/TbExchangeCardLogMapper.xml b/src/main/resources/com/xmomen/module/pick/entity/mapper/TbExchangeCardLogMapper.xml new file mode 100644 index 0000000..80edde6 --- /dev/null +++ b/src/main/resources/com/xmomen/module/pick/entity/mapper/TbExchangeCardLogMapper.xml @@ -0,0 +1,178 @@ + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + ID, OLD_COUPON_ID, OLD_COUPON_NO, NEW_COUPON_ID, NEW_COUPON_NO, RECHARGE_USER, RECHARGE_PLACE + + + + delete from tb_exchange_card_log + + + + + + insert into tb_exchange_card_log + + + ID, + + + OLD_COUPON_ID, + + + OLD_COUPON_NO, + + + NEW_COUPON_ID, + + + NEW_COUPON_NO, + + + RECHARGE_USER, + + + RECHARGE_PLACE, + + + + + #{id,jdbcType=INTEGER}, + + + #{oldCouponId,jdbcType=INTEGER}, + + + #{oldCouponNo,jdbcType=VARCHAR}, + + + #{newCouponId,jdbcType=INTEGER}, + + + #{newCouponNo,jdbcType=VARCHAR}, + + + #{rechargeUser,jdbcType=INTEGER}, + + + #{rechargePlace,jdbcType=INTEGER}, + + + + + + update tb_exchange_card_log + + + ID = #{record.id,jdbcType=INTEGER}, + + + OLD_COUPON_ID = #{record.oldCouponId,jdbcType=INTEGER}, + + + OLD_COUPON_NO = #{record.oldCouponNo,jdbcType=VARCHAR}, + + + NEW_COUPON_ID = #{record.newCouponId,jdbcType=INTEGER}, + + + NEW_COUPON_NO = #{record.newCouponNo,jdbcType=VARCHAR}, + + + RECHARGE_USER = #{record.rechargeUser,jdbcType=INTEGER}, + + + RECHARGE_PLACE = #{record.rechargePlace,jdbcType=INTEGER}, + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/xmomen/module/pick/entity/mapper/TbRechargeLogMapper.xml b/src/main/resources/com/xmomen/module/pick/entity/mapper/TbRechargeLogMapper.xml new file mode 100644 index 0000000..40a910c --- /dev/null +++ b/src/main/resources/com/xmomen/module/pick/entity/mapper/TbRechargeLogMapper.xml @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + ID, COUPON_NO, RECHARGE_PRICE, RECHARGE_DATE, RECHARGE_USER, RECHARGE_PLACE + + + + delete from tb_recharge_log + + + + + + insert into tb_recharge_log + + + ID, + + + COUPON_NO, + + + RECHARGE_PRICE, + + + RECHARGE_DATE, + + + RECHARGE_USER, + + + RECHARGE_PLACE, + + + + + #{id,jdbcType=INTEGER}, + + + #{couponNo,jdbcType=VARCHAR}, + + + #{rechargePrice,jdbcType=DECIMAL}, + + + #{rechargeDate,jdbcType=TIMESTAMP}, + + + #{rechargeUser,jdbcType=INTEGER}, + + + #{rechargePlace,jdbcType=INTEGER}, + + + + + + update tb_recharge_log + + + ID = #{record.id,jdbcType=INTEGER}, + + + COUPON_NO = #{record.couponNo,jdbcType=VARCHAR}, + + + RECHARGE_PRICE = #{record.rechargePrice,jdbcType=DECIMAL}, + + + RECHARGE_DATE = #{record.rechargeDate,jdbcType=TIMESTAMP}, + + + RECHARGE_USER = #{record.rechargeUser,jdbcType=INTEGER}, + + + RECHARGE_PLACE = #{record.rechargePlace,jdbcType=INTEGER}, + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/xmomen/module/plan/entity/mapper/TbTablePlanMapper.xml b/src/main/resources/com/xmomen/module/plan/entity/mapper/TbTablePlanMapper.xml new file mode 100644 index 0000000..7dc65bc --- /dev/null +++ b/src/main/resources/com/xmomen/module/plan/entity/mapper/TbTablePlanMapper.xml @@ -0,0 +1,280 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + ID, CD_PLAN_ID, AUDIT_STATUS, IS_STOP, CD_MEMBER_ID, COUPON_NUMBER, MEMBER_CODE, + CONSIGNEE_PHONE, CONSIGNEE_NAME, CONSIGNEE_ADDRESS, POSTCODE, SEND_WEEK_DAY, TOTAL_SEND_VALUE, + SEND_VALUE, LAST_SEND_DATE, NEXT_SEND_DATE, BEGIN_TIME + + + + delete from tb_table_plan + + + + + + insert into tb_table_plan + + + ID, + + + CD_PLAN_ID, + + + AUDIT_STATUS, + + + IS_STOP, + + + CD_MEMBER_ID, + + + COUPON_NUMBER, + + + MEMBER_CODE, + + + CONSIGNEE_PHONE, + + + CONSIGNEE_NAME, + + + CONSIGNEE_ADDRESS, + + + POSTCODE, + + + SEND_WEEK_DAY, + + + TOTAL_SEND_VALUE, + + + SEND_VALUE, + + + LAST_SEND_DATE, + + + NEXT_SEND_DATE, + + + BEGIN_TIME, + + + + + #{id,jdbcType=INTEGER}, + + + #{cdPlanId,jdbcType=INTEGER}, + + + #{auditStatus,jdbcType=INTEGER}, + + + #{isStop,jdbcType=INTEGER}, + + + #{cdMemberId,jdbcType=INTEGER}, + + + #{couponNumber,jdbcType=VARCHAR}, + + + #{memberCode,jdbcType=VARCHAR}, + + + #{consigneePhone,jdbcType=VARCHAR}, + + + #{consigneeName,jdbcType=VARCHAR}, + + + #{consigneeAddress,jdbcType=VARCHAR}, + + + #{postcode,jdbcType=VARCHAR}, + + + #{sendWeekDay,jdbcType=VARCHAR}, + + + #{totalSendValue,jdbcType=INTEGER}, + + + #{sendValue,jdbcType=INTEGER}, + + + #{lastSendDate,jdbcType=DATE}, + + + #{nextSendDate,jdbcType=DATE}, + + + #{beginTime,jdbcType=DATE}, + + + + + + update tb_table_plan + + + ID = #{record.id,jdbcType=INTEGER}, + + + CD_PLAN_ID = #{record.cdPlanId,jdbcType=INTEGER}, + + + AUDIT_STATUS = #{record.auditStatus,jdbcType=INTEGER}, + + + IS_STOP = #{record.isStop,jdbcType=INTEGER}, + + + CD_MEMBER_ID = #{record.cdMemberId,jdbcType=INTEGER}, + + + COUPON_NUMBER = #{record.couponNumber,jdbcType=VARCHAR}, + + + MEMBER_CODE = #{record.memberCode,jdbcType=VARCHAR}, + + + CONSIGNEE_PHONE = #{record.consigneePhone,jdbcType=VARCHAR}, + + + CONSIGNEE_NAME = #{record.consigneeName,jdbcType=VARCHAR}, + + + CONSIGNEE_ADDRESS = #{record.consigneeAddress,jdbcType=VARCHAR}, + + + POSTCODE = #{record.postcode,jdbcType=VARCHAR}, + + + SEND_WEEK_DAY = #{record.sendWeekDay,jdbcType=VARCHAR}, + + + TOTAL_SEND_VALUE = #{record.totalSendValue,jdbcType=INTEGER}, + + + SEND_VALUE = #{record.sendValue,jdbcType=INTEGER}, + + + LAST_SEND_DATE = #{record.lastSendDate,jdbcType=DATE}, + + + NEXT_SEND_DATE = #{record.nextSendDate,jdbcType=DATE}, + + + BEGIN_TIME = #{record.beginTime,jdbcType=DATE}, + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/xmomen/module/receipt/entity/mapper/TbReceivingCodeRequestMapper.xml b/src/main/resources/com/xmomen/module/receipt/entity/mapper/TbReceivingCodeRequestMapper.xml new file mode 100644 index 0000000..6e9a26c --- /dev/null +++ b/src/main/resources/com/xmomen/module/receipt/entity/mapper/TbReceivingCodeRequestMapper.xml @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, order_no, request_user, request_time, request_phone, request_express_id + + + + delete from tb_receiving_code_request + + + + + + insert into tb_receiving_code_request + + + id, + + + order_no, + + + request_user, + + + request_time, + + + request_phone, + + + request_express_id, + + + + + #{id,jdbcType=INTEGER}, + + + #{orderNo,jdbcType=VARCHAR}, + + + #{requestUser,jdbcType=VARCHAR}, + + + #{requestTime,jdbcType=TIMESTAMP}, + + + #{requestPhone,jdbcType=VARCHAR}, + + + #{requestExpressId,jdbcType=INTEGER}, + + + + + + update tb_receiving_code_request + + + id = #{record.id,jdbcType=INTEGER}, + + + order_no = #{record.orderNo,jdbcType=VARCHAR}, + + + request_user = #{record.requestUser,jdbcType=VARCHAR}, + + + request_time = #{record.requestTime,jdbcType=TIMESTAMP}, + + + request_phone = #{record.requestPhone,jdbcType=VARCHAR}, + + + request_express_id = #{record.requestExpressId,jdbcType=INTEGER}, + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/xmomen/module/schedule/entity/mapper/ScheduleJobMapper.xml b/src/main/resources/com/xmomen/module/schedule/entity/mapper/ScheduleJobMapper.xml new file mode 100644 index 0000000..898b848 --- /dev/null +++ b/src/main/resources/com/xmomen/module/schedule/entity/mapper/ScheduleJobMapper.xml @@ -0,0 +1,178 @@ + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + ID, JOB_NAME, JOB_GROUP, JOB_STATUS, JOB_DESCRIPTION, CRON_EXPRESSION, TRIGGER_ID + + + + delete from schedule_job + + + + + + insert into schedule_job + + + ID, + + + JOB_NAME, + + + JOB_GROUP, + + + JOB_STATUS, + + + JOB_DESCRIPTION, + + + CRON_EXPRESSION, + + + TRIGGER_ID, + + + + + #{id,jdbcType=INTEGER}, + + + #{jobName,jdbcType=VARCHAR}, + + + #{jobGroup,jdbcType=VARCHAR}, + + + #{jobStatus,jdbcType=BIT}, + + + #{jobDescription,jdbcType=VARCHAR}, + + + #{cronExpression,jdbcType=VARCHAR}, + + + #{triggerId,jdbcType=VARCHAR}, + + + + + + update schedule_job + + + ID = #{record.id,jdbcType=INTEGER}, + + + JOB_NAME = #{record.jobName,jdbcType=VARCHAR}, + + + JOB_GROUP = #{record.jobGroup,jdbcType=VARCHAR}, + + + JOB_STATUS = #{record.jobStatus,jdbcType=BIT}, + + + JOB_DESCRIPTION = #{record.jobDescription,jdbcType=VARCHAR}, + + + CRON_EXPRESSION = #{record.cronExpression,jdbcType=VARCHAR}, + + + TRIGGER_ID = #{record.triggerId,jdbcType=VARCHAR}, + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/xmomen/module/system/entity/mapper/SysDictionaryMapper.xml b/src/main/resources/com/xmomen/module/system/entity/mapper/SysDictionaryMapper.xml new file mode 100644 index 0000000..d91b727 --- /dev/null +++ b/src/main/resources/com/xmomen/module/system/entity/mapper/SysDictionaryMapper.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + ID, DICTIONARY_CODE, DICTIONARY_DESC, AVAILABLE + + + + delete from sys_dictionary + + + + + + insert into sys_dictionary + + + ID, + + + DICTIONARY_CODE, + + + DICTIONARY_DESC, + + + AVAILABLE, + + + + + #{id,jdbcType=INTEGER}, + + + #{dictionaryCode,jdbcType=VARCHAR}, + + + #{dictionaryDesc,jdbcType=VARCHAR}, + + + #{available,jdbcType=INTEGER}, + + + + + + update sys_dictionary + + + ID = #{record.id,jdbcType=INTEGER}, + + + DICTIONARY_CODE = #{record.dictionaryCode,jdbcType=VARCHAR}, + + + DICTIONARY_DESC = #{record.dictionaryDesc,jdbcType=VARCHAR}, + + + AVAILABLE = #{record.available,jdbcType=INTEGER}, + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/xmomen/module/system/entity/mapper/SysDictionaryParameterMapper.xml b/src/main/resources/com/xmomen/module/system/entity/mapper/SysDictionaryParameterMapper.xml new file mode 100644 index 0000000..7155d9d --- /dev/null +++ b/src/main/resources/com/xmomen/module/system/entity/mapper/SysDictionaryParameterMapper.xml @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + ID, SYS_DICTIONARY_ID, SHOW_VALUE, REAL_VALUE, SORT_VALUE, AVAILABLE + + + + delete from sys_dictionary_parameter + + + + + + insert into sys_dictionary_parameter + + + ID, + + + SYS_DICTIONARY_ID, + + + SHOW_VALUE, + + + REAL_VALUE, + + + SORT_VALUE, + + + AVAILABLE, + + + + + #{id,jdbcType=INTEGER}, + + + #{sysDictionaryId,jdbcType=INTEGER}, + + + #{showValue,jdbcType=VARCHAR}, + + + #{realValue,jdbcType=VARCHAR}, + + + #{sortValue,jdbcType=INTEGER}, + + + #{available,jdbcType=INTEGER}, + + + + + + update sys_dictionary_parameter + + + ID = #{record.id,jdbcType=INTEGER}, + + + SYS_DICTIONARY_ID = #{record.sysDictionaryId,jdbcType=INTEGER}, + + + SHOW_VALUE = #{record.showValue,jdbcType=VARCHAR}, + + + REAL_VALUE = #{record.realValue,jdbcType=VARCHAR}, + + + SORT_VALUE = #{record.sortValue,jdbcType=INTEGER}, + + + AVAILABLE = #{record.available,jdbcType=INTEGER}, + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/xmomen/module/system/entity/mapper/SysOrganizationMapper.xml b/src/main/resources/com/xmomen/module/system/entity/mapper/SysOrganizationMapper.xml new file mode 100644 index 0000000..6083d86 --- /dev/null +++ b/src/main/resources/com/xmomen/module/system/entity/mapper/SysOrganizationMapper.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + ID, NAME, DESCRIPTION, PARENT_ID + + + + delete from sys_organization + + + + + + insert into sys_organization + + + ID, + + + NAME, + + + DESCRIPTION, + + + PARENT_ID, + + + + + #{id,jdbcType=INTEGER}, + + + #{name,jdbcType=VARCHAR}, + + + #{description,jdbcType=VARCHAR}, + + + #{parentId,jdbcType=INTEGER}, + + + + + + update sys_organization + + + ID = #{record.id,jdbcType=INTEGER}, + + + NAME = #{record.name,jdbcType=VARCHAR}, + + + DESCRIPTION = #{record.description,jdbcType=VARCHAR}, + + + PARENT_ID = #{record.parentId,jdbcType=INTEGER}, + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/xmomen/module/system/entity/mapper/SysUserOrganizationMapper.xml b/src/main/resources/com/xmomen/module/system/entity/mapper/SysUserOrganizationMapper.xml new file mode 100644 index 0000000..a0073da --- /dev/null +++ b/src/main/resources/com/xmomen/module/system/entity/mapper/SysUserOrganizationMapper.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + ID, ORGANIZATION_ID, USER_ID + + + + delete from sys_user_organization + + + + + + insert into sys_user_organization + + + ID, + + + ORGANIZATION_ID, + + + USER_ID, + + + + + #{id,jdbcType=INTEGER}, + + + #{organizationId,jdbcType=INTEGER}, + + + #{userId,jdbcType=INTEGER}, + + + + + + update sys_user_organization + + + ID = #{record.id,jdbcType=INTEGER}, + + + ORGANIZATION_ID = #{record.organizationId,jdbcType=INTEGER}, + + + USER_ID = #{record.userId,jdbcType=INTEGER}, + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/xmomen/module/user/entity/mapper/SysRolesMapper.xml b/src/main/resources/com/xmomen/module/user/entity/mapper/SysRolesMapper.xml new file mode 100644 index 0000000..52e16b8 --- /dev/null +++ b/src/main/resources/com/xmomen/module/user/entity/mapper/SysRolesMapper.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + ID, ROLE, DESCRIPTION, AVAILABLE + + + + delete from sys_roles + + + + + + insert into sys_roles + + + ID, + + + ROLE, + + + DESCRIPTION, + + + AVAILABLE, + + + + + #{id,jdbcType=INTEGER}, + + + #{role,jdbcType=VARCHAR}, + + + #{description,jdbcType=VARCHAR}, + + + #{available,jdbcType=BIT}, + + + + + + update sys_roles + + + ID = #{record.id,jdbcType=INTEGER}, + + + ROLE = #{record.role,jdbcType=VARCHAR}, + + + DESCRIPTION = #{record.description,jdbcType=VARCHAR}, + + + AVAILABLE = #{record.available,jdbcType=BIT}, + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/xmomen/module/user/entity/mapper/SysRolesPermissionsMapper.xml b/src/main/resources/com/xmomen/module/user/entity/mapper/SysRolesPermissionsMapper.xml new file mode 100644 index 0000000..40e2317 --- /dev/null +++ b/src/main/resources/com/xmomen/module/user/entity/mapper/SysRolesPermissionsMapper.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + ID, ROLE_ID, PERMISSION_ID + + + + delete from sys_roles_permissions + + + + + + insert into sys_roles_permissions + + + ID, + + + ROLE_ID, + + + PERMISSION_ID, + + + + + #{id,jdbcType=INTEGER}, + + + #{roleId,jdbcType=INTEGER}, + + + #{permissionId,jdbcType=INTEGER}, + + + + + + update sys_roles_permissions + + + ID = #{record.id,jdbcType=INTEGER}, + + + ROLE_ID = #{record.roleId,jdbcType=INTEGER}, + + + PERMISSION_ID = #{record.permissionId,jdbcType=INTEGER}, + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/xmomen/module/user/entity/mapper/SysUsersMapper.xml b/src/main/resources/com/xmomen/module/user/entity/mapper/SysUsersMapper.xml new file mode 100644 index 0000000..e918a62 --- /dev/null +++ b/src/main/resources/com/xmomen/module/user/entity/mapper/SysUsersMapper.xml @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + ID, USERNAME, REALNAME, SALT, PASSWORD, AGE, SEX, EMAIL, QQ, PHONE_NUMBER, OFFICE_TEL, + LOCKED + + + + delete from sys_users + + + + + + insert into sys_users + + + ID, + + + USERNAME, + + + REALNAME, + + + SALT, + + + PASSWORD, + + + AGE, + + + SEX, + + + EMAIL, + + + QQ, + + + PHONE_NUMBER, + + + OFFICE_TEL, + + + LOCKED, + + + + + #{id,jdbcType=INTEGER}, + + + #{username,jdbcType=VARCHAR}, + + + #{realname,jdbcType=VARCHAR}, + + + #{salt,jdbcType=VARCHAR}, + + + #{password,jdbcType=VARCHAR}, + + + #{age,jdbcType=INTEGER}, + + + #{sex,jdbcType=INTEGER}, + + + #{email,jdbcType=VARCHAR}, + + + #{qq,jdbcType=VARCHAR}, + + + #{phoneNumber,jdbcType=VARCHAR}, + + + #{officeTel,jdbcType=VARCHAR}, + + + #{locked,jdbcType=INTEGER}, + + + + + + update sys_users + + + ID = #{record.id,jdbcType=INTEGER}, + + + USERNAME = #{record.username,jdbcType=VARCHAR}, + + + REALNAME = #{record.realname,jdbcType=VARCHAR}, + + + SALT = #{record.salt,jdbcType=VARCHAR}, + + + PASSWORD = #{record.password,jdbcType=VARCHAR}, + + + AGE = #{record.age,jdbcType=INTEGER}, + + + SEX = #{record.sex,jdbcType=INTEGER}, + + + EMAIL = #{record.email,jdbcType=VARCHAR}, + + + QQ = #{record.qq,jdbcType=VARCHAR}, + + + PHONE_NUMBER = #{record.phoneNumber,jdbcType=VARCHAR}, + + + OFFICE_TEL = #{record.officeTel,jdbcType=VARCHAR}, + + + LOCKED = #{record.locked,jdbcType=INTEGER}, + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/xmomen/module/user/entity/mapper/SysUsersRolesMapper.xml b/src/main/resources/com/xmomen/module/user/entity/mapper/SysUsersRolesMapper.xml new file mode 100644 index 0000000..f302747 --- /dev/null +++ b/src/main/resources/com/xmomen/module/user/entity/mapper/SysUsersRolesMapper.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + ID, USER_ID, ROLE_ID + + + + delete from sys_users_roles + + + + + + insert into sys_users_roles + + + ID, + + + USER_ID, + + + ROLE_ID, + + + + + #{id,jdbcType=INTEGER}, + + + #{userId,jdbcType=INTEGER}, + + + #{roleId,jdbcType=INTEGER}, + + + + + + update sys_users_roles + + + ID = #{record.id,jdbcType=INTEGER}, + + + USER_ID = #{record.userId,jdbcType=INTEGER}, + + + ROLE_ID = #{record.roleId,jdbcType=INTEGER}, + + + + + + + \ No newline at end of file diff --git a/src/main/resources/config/mybatis-config.xml b/src/main/resources/config/mybatis-config.xml new file mode 100644 index 0000000..f68c20a --- /dev/null +++ b/src/main/resources/config/mybatis-config.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/config/spring-core.xml b/src/main/resources/config/spring-core.xml new file mode 100644 index 0000000..b88de73 --- /dev/null +++ b/src/main/resources/config/spring-core.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + classpath:application.properties + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/config/spring-jdbc.xml b/src/main/resources/config/spring-jdbc.xml new file mode 100644 index 0000000..b9cf124 --- /dev/null +++ b/src/main/resources/config/spring-jdbc.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/config/spring-mybatis.xml b/src/main/resources/config/spring-mybatis.xml new file mode 100644 index 0000000..0202976 --- /dev/null +++ b/src/main/resources/config/spring-mybatis.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/deploy/env-dev.properties b/src/main/resources/deploy/env-dev.properties new file mode 100644 index 0000000..828cb23 --- /dev/null +++ b/src/main/resources/deploy/env-dev.properties @@ -0,0 +1,17 @@ +profile.env=dev +# log config +log.home=/opt/logs +log.name=dms-webapp +log.level=DEBUG +log.only_sql=true + +## jdbc.properties configuration +dataSource.url=jdbc:mysql://121.40.156.26:3306/dms_dev?useUnicode=true&characterEncoding=utf8 +dataSource.username=root +dataSource.password=fuckyoumysql + +wx.domain=http://www.j9soft.com + +wx.scanning=http://www.j9soft.com/bind/auth?url=/wx/scanning¶m={ORDER_NO} + +wx.receipt=http://www.j9soft.com/bind/auth?url=/wx/receipt¶m={ORDER_NO} \ No newline at end of file diff --git a/src/main/resources/deploy/env-local.properties b/src/main/resources/deploy/env-local.properties new file mode 100644 index 0000000..d6e7643 --- /dev/null +++ b/src/main/resources/deploy/env-local.properties @@ -0,0 +1,17 @@ +profile.env=dev +# log config +log.home=/opt/logs +log.name=dms-webapp +log.level=DEBUG +log.only_sql=true + +## jdbc.properties configuration +dataSource.url=jdbc:mysql://localhost:3306/dms_dev?useUnicode=true&characterEncoding=utf8 +dataSource.username=root +dataSource.password=rootroot + +wx.domain=http://www.j9soft.com + +wx.scanning=http://www.j9soft.com/bind/auth?url=/wx/scanning¶m={ORDER_NO} + +wx.receipt=http://www.j9soft.com/bind/auth?url=/wx/receipt¶m={ORDER_NO} \ No newline at end of file diff --git a/src/main/resources/deploy/env-prd.properties b/src/main/resources/deploy/env-prd.properties new file mode 100644 index 0000000..1b402e6 --- /dev/null +++ b/src/main/resources/deploy/env-prd.properties @@ -0,0 +1,18 @@ +profile.env=rls +# log config +log.home=/opt/logs +log.name=dms-webapp +log.level=INFO +log.only_sql=true + + +## jdbc.properties configuration +dataSource.url=jdbc:mysql://101.200.51.63:3306/dms_c?useUnicode=true&characterEncoding=utf8 +dataSource.username=root +dataSource.password=/;p0.lo9 + +wx.domain=http://system.1g3h.com + +wx.scanning=http://system.1g3h.com/bind/auth?url=/wx/scanning¶m={ORDER_NO} + +wx.receipt=http://system.1g3h.com/bind/auth?url=/wx/receipt¶m={ORDER_NO} \ No newline at end of file diff --git a/src/main/resources/ehcache/ehcache.xml b/src/main/resources/ehcache/ehcache.xml new file mode 100644 index 0000000..d342173 --- /dev/null +++ b/src/main/resources/ehcache/ehcache.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/properties/config.properties b/src/main/resources/properties/config.properties new file mode 100644 index 0000000..9c3fd2b --- /dev/null +++ b/src/main/resources/properties/config.properties @@ -0,0 +1,10 @@ +#\u5FAE\u4FE1\u670D\u52A1\u53F7\u4FE1\u606F +WeiXinServiceID=${WeiXinServiceID} +appID=${appID} +appsecret=${appsecret} +token=${token} + +#\u672C\u673A\u57DF\u540D domain name +wx.domain=${wx.domain} +wx.scanning=${wx.scanning} +wx.receipt=${wx.receipt} \ No newline at end of file diff --git a/src/main/resources/template/order.xls b/src/main/resources/template/order.xls new file mode 100644 index 0000000000000000000000000000000000000000..179545101dac1689167dd3a18ee9461fad13e01a GIT binary patch literal 20992 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/tools/generatorConfig-member.xml b/src/main/resources/tools/generatorConfig-member.xml new file mode 100644 index 0000000..0d85c5b --- /dev/null +++ b/src/main/resources/tools/generatorConfig-member.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    \ No newline at end of file diff --git a/src/main/resources/tools/template/header.ftl b/src/main/resources/tools/template/header.ftl new file mode 100644 index 0000000..c2d2717 --- /dev/null +++ b/src/main/resources/tools/template/header.ftl @@ -0,0 +1,5 @@ +/** + * @author tanxinzheng + * @date ${.now} + * @version 1.0.0 + */ diff --git a/src/main/resources/tools/template/list-js.ftl b/src/main/resources/tools/template/list-js.ftl new file mode 100644 index 0000000..3980270 --- /dev/null +++ b/src/main/resources/tools/template/list-js.ftl @@ -0,0 +1,172 @@ +/** + * Created by tanxinzheng on 16/7/3. + */ +define(function(){ + return ["$scope", "$modal", "${domainObjectClassName}API", "$dialog", function($scope, $modal, ${domainObjectClassName}API, $dialog){ + $scope.pageSetting = { + checkAll : false, + queryBtnLoading : false + }; + $scope.pageInfoSetting = { + pageSize:10, + pageNum:1 + }; + // 重置 + $scope.reset = function(){ + $scope.queryParam={}; + $scope.get${domainObjectClassName}List(); + }; + $scope.queryParam = {}; + // 查询列表 + $scope.get${domainObjectClassName}List = function(){ + $scope.pageSetting.queryBtnLoading = true; + ${domainObjectClassName}API.query({ + keyword: $scope.queryParam.keyword, + limit: $scope.pageInfoSetting.pageSize, + offset: $scope.pageInfoSetting.pageNum + }, function(data){ + $scope.${domainObjectName}List = data.data; + $scope.pageInfoSetting = data.pageInfo; + }).$promise.finally(function(){ + $scope.pageSetting.queryBtnLoading = false; + });; + }; + // 全选 + $scope.checkAll = function(){ + if(!$scope.${domainObjectName}List){ + return; + } + for (var i = 0; i < $scope.${domainObjectName}List.length; i++) { + $scope.${domainObjectName}List[i].checked = $scope.pageSetting.checkAll; + } + }; + // 子集控制全选 + $scope.changeItemChecked = function(){ + if(!$scope.${domainObjectName}List){ + return; + } + var num = 0; + for (var i = 0; i < $scope.${domainObjectName}List.length; i++) { + if($scope.${domainObjectName}List[i].checked){ + num++; + } + } + // 子集勾选数量等于集合总数则勾选全选,否则取消全选 + if(num == $scope.${domainObjectName}List.length){ + $scope.pageSetting.checkAll = true; + }else{ + $scope.pageSetting.checkAll = false; + } + }; + // 新增 + $scope.add = function(index){ + $scope.openModal("ADD", index); + }; + // 查看 + $scope.view = function(index){ + $scope.openModal("VIEW", index); + }; + // 修改 + $scope.update = function(index){ + $scope.openModal("UPDATE", index); + }; + // 弹出 + $scope.openModal = function(action, index){ + $modal.open({ + templateUrl: '${domainObjectName}_detail.html', + modal:true, + resolve: { + Params: function () { + var params = { + action: action + }; + if(index >= 0 && $scope.${domainObjectName}List[index] && $scope.${domainObjectName}List[index].id){ + params.id = $scope.${domainObjectName}List[index].id; + } + return params; + } + }, + controller: ['$scope', '$modalInstance', "$modal", "${domainObjectClassName}API", "Params", "$dialog", function($scope, $modalInstance, $modal, ${domainObjectClassName}API, Params, $dialog){ + //$scope.${domainObjectName} = null; + $scope.pageSetting = { + formDisabled : true, + saveBtnLoading : false + }; + if(Params.action == "UPDATE" || Params.action == "ADD"){ + $scope.pageSetting.formDisabled = false; + } + if(Params && Params.id){ + $scope.${domainObjectName} = ${domainObjectClassName}API.get({ + id: Params.id + }); + } + $scope.${domainObjectName}DetailForm = {}; + $scope.save${domainObjectClassName} = function(){ + if($scope.${domainObjectName}DetailForm.validator.form()){ + $dialog.confirm("是否保存数据?").then(function(){ + $scope.pageSetting.saveBtnLoading = true; + if ( !$scope.${domainObjectName}.id ) { + ${domainObjectClassName}API.create($scope.${domainObjectName}, function(data,headers){ + $dialog.success("新增成功"); + $modalInstance.close(); + }).$promise.finally(function(){ + $scope.pageSetting.saveBtnLoading = false; + }); + }else { + ${domainObjectClassName}API.update($scope.${domainObjectName}, function(data,headers){ + $dialog.success("更新成功"); + $modalInstance.close(); + }).$promise.finally(function(){ + $scope.pageSetting.saveBtnLoading = false; + }); + } + }); + } + }; + $scope.cancel = function(){ + $modalInstance.dismiss(); + }; + }] + }).result.then(function () { + $scope.get${domainObjectClassName}List(); + }); + }; + // 删除 + $scope.delete = function(index){ + $dialog.confirm("请确认是否删除").then(function(){ + ${domainObjectClassName}API.delete({id:$scope.${domainObjectName}List[index].id}, function(){ + $scope.get${domainObjectClassName}List(); + }); + }); + }; + // 批量删除 + $scope.batchDelete = function(){ + var choiceItems = []; + for (var i = 0; i < $scope.${domainObjectName}List.length; i++) { + var obj = $scope.${domainObjectName}List[i]; + if(obj.checked){ + choiceItems.push(obj.id); + } + } + if(choiceItems && choiceItems.length > 0){ + $dialog.confirm("已勾选记录数:" + choiceItems.length + ",请确认是否删除已勾选数据").then(function(){ + ${domainObjectClassName}API.delete({ids:choiceItems}, function(){ + $scope.get${domainObjectClassName}List(); + }); + }) + }else{ + $dialog.alert("请勾选需要删除的数据"); + } + }; + // 导出 + $scope.batchExport = function(){ + ${domainObjectClassName}API.export({ + data:{keyword: $scope.queryParam.keyword} + }); + }; + var init = function(){ + $scope.get${domainObjectClassName}List(); + }; + init(); + }] +}); \ No newline at end of file diff --git a/src/main/resources/tools/template/mapper-xml.ftl b/src/main/resources/tools/template/mapper-xml.ftl new file mode 100644 index 0000000..31003f2 --- /dev/null +++ b/src/main/resources/tools/template/mapper-xml.ftl @@ -0,0 +1,50 @@ + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/tools/template/mapper.ftl b/src/main/resources/tools/template/mapper.ftl new file mode 100644 index 0000000..8d8f2f8 --- /dev/null +++ b/src/main/resources/tools/template/mapper.ftl @@ -0,0 +1,8 @@ +package ${targetPackage}; + +<#include "header.ftl"> +public interface ${domainObjectClassName}MapperExt { + + public static final String ${domainObjectClassName}MapperNameSpace = "${targetPackage}.${domainObjectClassName}MapperExt."; + +} diff --git a/src/main/resources/tools/template/updateModel.ftl b/src/main/resources/tools/template/updateModel.ftl new file mode 100644 index 0000000..24e4063 --- /dev/null +++ b/src/main/resources/tools/template/updateModel.ftl @@ -0,0 +1,30 @@ +package ${targetPackage}; + +import lombok.Data; +import ${modulePackage}.entity.${domainObjectClassName}; +import org.springframework.beans.BeanUtils; + +<#if importClassList?exists> + <#list importClassList?keys as mykey> + import ${mykey}; + + +import java.io.Serializable; + +<#include "header.ftl"> +public @Data class ${domainObjectClassName}Update implements Serializable { + +<#if fieldList?exists> + <#list fieldList as field> + /** ${field['fieldComment']} */ + private ${field['fieldType']} ${field['fieldName']}; + + + + + public ${domainObjectClassName} getEntity(){ + ${domainObjectClassName} ${domainObjectName} = new ${domainObjectClassName}(); + BeanUtils.copyProperties(this, ${domainObjectName}); + return ${domainObjectName}; + } +} diff --git a/src/main/webapp/WEB-INF/excelFile/couponExcel.xlsx b/src/main/webapp/WEB-INF/excelFile/couponExcel.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..5fd19bfb10643219d70aa4d8e924366a6ab9d303 GIT binary patch literal 17852 zcma)k1yo#1wl+?X;1Jy1-Q7L7J2dX@!QI^h!JXhvaCi6M5FCO8{hQpGxifk5-ulm4 z(A9PJ{_0bWdX7>M?LOcT_yb(GeE{`enw9jh@o-xc zmX@_dlEXXGb^R;{CzD|)>q3g&n>+gFd4ydLX01~NHL@Q>!-{K0+}P0KaqD^%5DMsh z-rU3&_^ii_{Or6q>|0+wo|on9Pw5(HBeWehK)=gC>lhs* z`oUX!W&-=whHU1g>@1sj6Os7xS$X%ve>%E(y<3|A=xAi1qmlpJ(Z+U;fHzME$1BS8 zGNJ`xP8nk0jkm zuR&i4HozLtI}vo!7Yz;HE^^8Uy?4>JZn@vq{^k}$TNCn)3=tRc+ggmMv#>N1@oAG4 zsvs;pojGH-v6h1OC6xWjt7cqMxN^CDjYE<08kKfLK4nGx~xGpKlx?6U9*2M2;#-o zDZV0E5GQzu97NGBN6Chn3F>Z_lPq-or#FujeT`p$Ui<{~DC&QB)5Xcz&gOT|of@|c zVnl=d?vn@Xy0PI@TFHkBE~c|$aM=@jMp-avq6y|Sh36YXKg~Ax_H_6sI;`)i#B1Ii z7fh2yk%0M6t^HK`EOYP4n+p$iz_ad_Km8@B+}>V&eWS+AirlaR4FN*94Mng0Gi(%I z*Sq-^%06z=z^`T3hV^FFAwrJR*!(nkd__S8X_FH;!A1HAdL2fWuVh}mO|ECoI>ic2 zMw|DrP+E^6?P(+FOTg)OyO2Zn|pU*CP7mf?4eJFuQ1*9bjt6Xi+he@89w@- znw=eM#ym?c2{LqI7IPffh)D^9qX!d+OQjUSzXIT2RZ1{7T6G1~eL&yb_1}X5IM7}0 z*1yBRegs*z9+Ojfup^A5i+8WgV+xAwCTo@x6EWkm@$sw+#bGEQM13A&*KDZ#ALx zkTgLB?T^$H^+nR&Aox=fqjDZ5+3tXr9hOzjtVLk+j0^%KtRJPi7AZ}z80W%vL$W(w zR?~Lp*%|g%2lx7L0%lAPx?52&jBmkBTSXGV zCwzsqJ@8?$KL{}m=B$4=)g*qe+BePqMNJI83HgS4+Z|`Rgjl{2d7K(dYvR7v!on)r zo(L8Yxm44Kltt5nRbgtLC%H@2tPx14@;Oe=RAD-cDjIo9hZccL%8dPs@>fooI-SqT zg+qN9odKi9RKXQGD~)*f<_gE}y{o4!8ntsrW%sjCyIv2uKRjHXuEu&b*>x_7e6P|6 zZ?c^G#CA0&QOt&E_=)A}pm=e!%lH2B*XqXUqnm3}VD~3?kR8&%uxwN=LnL4MK_s6^ z3zs&RYR#A2=>j}?w|4V*EST92l03tOq+%-XO-hxf13|;s;Hf>(hu*{X0`5r#ab{|U zWg1EBpK)>UohD**L7b>cGClR_-YF*q229TlFWa}Deh=HfC+87@QL)r_ARuHk|LaI& zej91Y8MDo5xEvJnVWOw?V7F*l+p6yNM)ij&aLh4MA zT`D)HM;@H7?(_%kq#lfKP{cIls%kV`DpP5-eXUv55>w6bt9}eKYrXT3p7BT?L{qxQ0eb8hza@Io-P$$0P2 z!Q-ny9e1keNBqg{6SobW<6Ta5PI(-P!C4K~lC}An!%{1cTM4`G+$nKSc4s?>HUQkk zS`!Z}KESg%`>~dKqpGsSQx2)XoW7oHo0_sNe})(;Sv|%`>}SQxMUpl$-L22OG2AJb z(Q-)F&G7CS#lBe!Mbpan+@lY}Cqy}>47%mU$p=-5P1lsZzQYCQEjLeJ5>3d}<6f<< zHChXd=l8d&pANJYSNKa-W99%?ts@D)9ugYMCX1%JTjQRdu7w?kd6l$3IBrH0j}O5O zO)^Jd`V?z5es2%r*7)FX(&}~ZYjrZ?Pj^E_g12zTStA4UBbRo5S-Y%0xAs|}jB+L- z1?%<}nuk_qSV*&<4;H{r4L01}8fLY4hefLlz-d{rnu;H0j4ebM`EhEKq)e`fmsGfM zE-9aG;G%%Btk2hCuE@7e_ma!O1?WDC$m|Rk2fq$VDsl(>3NFa}b3BM13l=0HPr}b+DDdSh zff&)VT_%S2@S0xgDtEDMMM-2}(-dh$MUCy<-p``y=G_|TINV#%gkFCb#Gx%SzugNo zLM~o#N!Urygl;%L(hE4jQ-;q)-hL*BD1=z8V3Hvr3Uy9f;qk)i$#DWaR9e|RF z;s5-_&UKYL+a#3$-O*V|*Ug#4V>{28G@I$LL>|iLw_Af4hl?QVE{PxjP8wPaGQ5Q) zsN{|i2d@W0>dy~Uf*>>%Xd^n%0}zrS;^e%u0=WXn(GdbVgNNLNSpN3Y)NW(SW4XJe!iE3wRR2 zwq1NeIZwgv4}7W?PeJJ_Fklgxs^yBek90H;-(uBdG?3o{2k|GP?C!JRJY)Q9rlHaG zwJ##o@CgZ7I(Px;H9XZYuY@$S53qw^I27Uq+#3d$6B`GLyj8e%Q^OEpO((xz>T!g}ZFt^fQ^DG^{R))KeW{gKV0t>dczMi zP5Y=?=Z{-h9{u`$0i#TSheBR%++)Hv7M$wI{@!8#pPT359Hr>%#KIOGAGw!>V8-EX)hq#X-jmDw({Pqs;zqyI%m-x zhYfogkdPmLL2v%**E2yI%aiQFLJ)|nP66QSB_u!gk4~$QS&y?i)!=9uR$mxz|HbnJ zI?#lCTu?y)+GnEsBSgn)uyxp`y4H68bZRR&t(yPqv6P>>5vXA;y-V-57SEiVPrUx( zID6OS11#n=6&!vyQ2zRG-(qCQFI?*qgr`J>kAcz8wKjq+>U+<&w4m&YKW;(h9do!duT zKc?n4Bw9@GK4dmll?W}3`cUp4n1(`P^IOu5tmF|sDDZapPtvlTzB=j)j8L^ zM4z%mbR(Sz9v-1ZsGHu3L8fSfaT5(a+Kww8F|srGN@s?}FQIPufXkrPkZvuIWD|1Z zTD-%qy(e%KVDa^RO~6o*n5yvUETNwB)U_&m#qTQ#=@_{8JIjjOjg ze(?BMyyel*wb6;dP{wQPHd!9{((=f>*>x5&-@7U_ndwnhX8Y2v)ioA_aPFGwZcRY2 zc-K34`rLG|wP(+|{62GD=y+40Qvc4ZNdTYz%4@08_t1@R(OCM)U4>l0LdR$F_;KB} z%ZFEI)9&-Z;LKCg$pN4D0AxBFey2&;?wp@Y2)y{0TL$6`Ef*dKQf zPH&Iz?OtE(dCCV6G1+^cmkQNsp1aO_k2Wc!xUpZno+zJp)*oj>$BRF&P-LVy&)#GW6W*2-H!e(eR ze(v~e(?c_N#hI<^DuKFZgcyydZZx>U1{vM6ueEn|<&XNsuCC4b$jo1EmB%lnzBNV* z`<9$7F`Kh(mdCp*dnB9uSApntP*pC6WtE9mn`jMM@y+ac<&E-H31vMCWqoRsLQ{|{ z88*kAH4W5XPldH@#v5(am$Z_X=zo`WH7ixaPdOidIpkI@yQW82R!UpDtU))fa4#>6 z_RL3U25ymYdq6iDU+=E&8OQcw%+Y>f@*fMBYZB`=QZ>bOVwY!8?oTLiZe(_f(L^0h zWF^BOWI0IV_$n!t`SGbVvvMrUc(+f93{Jf+Io(M%TcgHAGxgaTu#X!^kwSMQBPwV* z!Q^FhIm0Ka`9=}-S))&BZz4B2+$jPEH?#P%;@DJ?WoV2`oKbTqA&D&zhzFGzOiT6~ zZ_J<;zG&C-O*ob;My*QfH58E46iBM1JK^%CNVf^m?5PSDd&O@)z!Z))+b8O=M=Ei9 z>zt4}ZB-$_0F(bP@j_}Fh)S_p-mFa%tC17e;>5fJp1ps{#dMep^9Fpf2bhoM~v+hs*vgh8l*`&rgyW=QBx^OT_p1kYpjg8{5zr_drbprgW-V zsIq?GScNfy_GsSy>^tVV7$Ivq%jjdva%r_o+5y5wj0Q3O+c`Y7!U?7@y4?LnXvzb` zkS}d%eP2Dc#gsf0{edisC$tgUt*vo89nK%>IN3j{a#WcE`M(Mnq47j+6BBsxhQDdl zhoDeC5{|w1)UDwxYhaqxn|q~fj%&XL ze5Q<-FRMamLLVkFM(6~jZ?_C8U4y|0X>i{{G7@K&lI0k)57KXGZ+zjahyu{VVQ_-u za-PAsES+IexS39&v@FQQWkRN^gOv0jVt4J}KqusL@{ebf$;UXxEjR1+(Z-Aqw60|b z$W|I-e!yrlVHYp%Y-DbTvCz?2OK2{u1lD5%>vya61x*)5(+0kB-MLVgL#1mCveMH< zm(nkS#+ACr?##@j{c!XI`>Wb^cwG|Y9~8qjib6#TOwlsA)0I(#%ExH~WK&B?>Jq<; zh5d95wm};I;3}n~Q2h;tV(xqgD`dLhBfGPdW#J5mIW)&z^c5Prt-Y6T!uvNTzPa<{ zkKe$2Q-`*l{%>k}Ls4mKVKW=1Q;YTev~gis%+k*mqJEpU>;38KYJd6&O_6j&*s8&~>&BZavhbE-P0X$$r*K zo??SYDooLdZ8vKSuKj!aK`QTd52;lq;(&?>Q=7OJ+%|xhwrobk5ETg9N<5i@JL~Zf zp>K0-)3-XmZz2gL!7|I9l?3bP`~>-6#r#nJJQS>Dkf6O;dE2~6c4%ziq}0p>ieAT;yc*;`u?|y`cJAP| ze`DGw)_|%&1WM{l0nS~W?FUOm=%%k;?O=W6kw7^?wS^WS$o~bgHXJFJD;(@72>9F* z^^k`S7pP=yuJHEYbBV;qz+d*)yiJtZ3b5$}sjTR6EnInM$^zuJu4fA>G4(0XmMdpH|^Cg>lNaIsCRG4#sjl0m5;_arzWOSrYPB6h+Xk5-64CQc;ckz>pS_CMko{r&Vj+A|K}5+}C+ zD)Qi`Ml_%fjQuqV2jq;ub=VPovE}^T)8q3115eIsLI-CMDzfiyJVLnJjvZzp27vBI z!j*nGf`4mbEz!s|A8H_{P=n-$z39^xvy+ICb(r!vLh1d5y=C3l$Jb|hVsS8{FD9;y z6mC-%r^b4eS}BAQNn{HQa52j7`|q&HK7}Iv7EqyhRqYA_90F=Ywn=Mt9T2~3`xK{6Yby3f zq1MD=mcN*Tg^a~-BKujNv7rOIV-#Mx!mEWV^zU(#MoKS1{ky{lB|hyq#Ep-D;pH>v zzVmvn^wCOqbc7N~&m7G9f#@_oLP##*dg3zI;x$$p(jVRCMHy1tB1->2Hoz*xTFUU* zK6h-~So-Fysj_`7D9^e|Dq_S~(nZ8_Y+ajIVSk^g047n29N@;E@43dB)$Ao(+S%2M zOJ_?E$n6$OC6^}acz3CIaK=;!lOW|Oq`Sr{l--(Wt`u+*e-r00`zB9wXLE># zNjrY9HAv}iEDOH*iz$6qDd?@oOZM-^dj);5Lu1~IZbMaxJX9oqu6OkV4(oCxxfx%| zgSU=oh+ZeL|7)Vfwe8Rm*uW-<2`w#NuA!=IZnzUh#sicY#7tf$>@;R~ks5d`;(2WV zreB)ywNmY7@5CCU3rcEpYfYC{u96uZ1gb1cP{(8Ulql!C8GJDE{XApyb-kF&gvuU{ezg+ zf5I!ICgO$y?kBq(d;^@W`Fph?bChg zvUuk*pYvLr-OkhL!LIN#xMc@2+7) z<7qV~a4_4JaQ*`Qzi&dl?MMSRp`6VDHh@2NqzhsbtTUlNK&o*5+S>aU*>B?CJ4>gU zn|3&CxSu4pKh>Q1Sj~{@D$`|Wuxc6}tFbLl;b%uW9rU~LFUz;J%dPH^lJ*ID2?@7f z`1wg?LZIw?&NDWLw|E89Uv*1$a>_eZ^Y;@|O{^1md3o`DZaCjA4J}GYK>$Vzj>ap{RF%G4xwKWU`S7vpBGP1=UJ9D4PvlW|xEZqqy z)5ye|R<^0x09fG&ADwbs+mx#3biDmvMzY4D)yh@v3TidJK$(16*uSt!o?qFo4dft< zte)JmsvLLqn(xMm>#v^JYWsj)&i27hkSPDs9ib9$<+NzdX(+7jROuf3+afiUcSwNw zP`*qZ=A{N*M8mty{V#AJ?@ctOF-t9k#g{@2Yoyh{oZh^ruAG zIuKFe!qvIAYlDa8lBH-`r4q@^<*}{IWZ$ zjwnDgI7~qcUC4y{marJ3ymLLC2^VDuwu{= zBxTWNoV;Zv!(E#wT~1m>e7ea9sGK9eU=$USAIXMQ|n3DC}!8nb%V|_%68Iino=!<~ricr-cH?gCBBCaAqcjqRI%Abgn)NI^u z1@VEC?+VD%OK$ZEl_U8;g@%_p-5$ZkK-_fSjJHim)q87>i}96Uh$)CtyiF&$+pRg1 z=mG1=ZzuSyQ!0GtYzMCUJvJxtIGE_9tY|m`1L|3yo!y9dS{gMt*?Q?5a`bDNH4CiE zs-wGlW9A0AwGm*r&Zj_wq30P+<|jr@UmHZNk#D4@dfuk0`MH38-iN)b<;6Wssu1c* z9F$e7%n2T?CHGiLV?H*(ZW(JwQ_y?!rC_0si7Y-TUnCjf`%)GxOwMLOgE}afD*i9j zC&8TlogF_ci2Y@ypi#(ldOW7#Q)d?351*6yY!+^~`qU7@=Me~2w$S;q@HiZq#ml~B zS+I!HWPFoKuhfwY53sfCsVEEPW@;)!9!C=k)vl^#|H_pbIP5fUz}Q6Y%>M3ysOE|~ z>xIpV^V~o@WaVr@B3(P`!^DgjbDv1UgXA&ad48FL5(bS^ggKuz<6+$nlNyb^m3ggQ z_bI77b!|DFL8`~OO?#5q#h8rXsX2FTb6OUyIJ8`~qJEXv(4f>TPPZbKuQ-gm?hjLx zI*_VtZ!+s8g3K}UQL_zelZX~6h2T|0t2?gXZ0@*srHwW4Hs)!itPmO%T$;a9j|~>; zlyVEOvt=Wa+1`bGl7+3wKh|Q#M%G8q*2SD|tc$gv+Cvo+Wx&PH1)6Xv0FaC{){xPxr<)2v%C-%SM&lOkI+H=*3=>xHfgU1B z-^5U6UJYLJd(8TRzHTTydLvrW1l)bdzzljXdc(EqPN++G`W*zDg2y~iDzUamPMgA} z!McurN1o%rt8YoGHu3&3X<#CgB{e%S(#+yyt|zAQbV*n_&@8ry5
    %Fv=my!%)pT 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 LfjXlKy?y(CzP)`= literal 0 HcmV?d00001 diff --git a/src/main/webapp/WEB-INF/views/404.jsp b/src/main/webapp/WEB-INF/views/404.jsp new file mode 100644 index 0000000..65432b4 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/404.jsp @@ -0,0 +1,10 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + 404 + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/500.jsp b/src/main/webapp/WEB-INF/views/500.jsp new file mode 100644 index 0000000..25cbfb7 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/500.jsp @@ -0,0 +1,10 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + 500 + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/login.jsp b/src/main/webapp/WEB-INF/views/login.jsp new file mode 100644 index 0000000..4b479d5 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/login.jsp @@ -0,0 +1,212 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" %> + + + + + + + 个人礼品市场后台管理系统 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    + +
    + + +
    +
    +
    +
    +
    +
    + 登录 - 个人礼品市场后台管理系统 +
    +
    +
    + ${error} +
    +
    + + +
    + +
    + + + +
    + +
    + +
    +
    +
    + +
    +
    + +
    + + <%--
    - Or sign in using -
    --%> + + <%--
      --%> + <%--
    • --%> + <%----%> + <%--
    • --%> + <%--
    • --%> + <%----%> + <%--
    • --%> + <%--
    • --%> + <%----%> + <%--
    • --%> + <%--
    --%> + +
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/register.jsp b/src/main/webapp/WEB-INF/views/register.jsp new file mode 100644 index 0000000..c4e0722 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/register.jsp @@ -0,0 +1,475 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + + + + + SmartAdmin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    + 注册 +
    +
    + ${error} +
    +
    +
    + +
    + + <%--
    --%> + <%----%> + <%--
    --%> + +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    +
    + +
    + +
    + +

    + 感谢你的注册 +

    +
    +
    + +
    +

    *FREE Registration ends on October 2015.

    +
    - Or sign in using -
    +
      +
    • + +
    • +
    • + +
    • +
    • + +
    • +
    +
    +
    +
    + +
    + + + + + + + + <%----%> + + + <%----%> + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/.bowerrc b/src/main/webapp/WEB-INF/views/src/.bowerrc new file mode 100644 index 0000000..bcb4b7e --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/.bowerrc @@ -0,0 +1,4 @@ +{ + "directory": "js/components", + "analytics": false +} \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/MP_verify_jWIslpvFiCq3GKYd.txt b/src/main/webapp/WEB-INF/views/src/MP_verify_jWIslpvFiCq3GKYd.txt new file mode 100644 index 0000000..ef6d32f --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/MP_verify_jWIslpvFiCq3GKYd.txt @@ -0,0 +1 @@ +jWIslpvFiCq3GKYd \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/README.md b/src/main/webapp/WEB-INF/views/src/README.md new file mode 100644 index 0000000..905648e --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/README.md @@ -0,0 +1,6 @@ +smartadmin-1.4-angular-version +============================== + +基于Angularjs框架的smartadmin风格后台模板 + +演示地址:[http://tanxinzheng.github.io/smartadmin-1.4-angular-version-master](http://tanxinzheng.github.io/smartadmin-1.4-angular-version-master) \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/bower.json b/src/main/webapp/WEB-INF/views/src/bower.json new file mode 100644 index 0000000..59f9f8e --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/bower.json @@ -0,0 +1,20 @@ +{ + "name": "src", + "version": "1.0.0", + "homepage": "https://github.com/xmomen/dms-webapp", + "authors": [ + "Jeng Tam " + ], + "license": "MIT", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "js/components", + "test", + "tests" + ], + "dependencies": { + "require-css": "~0.1.8" + } +} diff --git a/src/main/webapp/WEB-INF/views/src/css/demo.min.css b/src/main/webapp/WEB-INF/views/src/css/demo.min.css new file mode 100644 index 0000000..6b9515c --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/css/demo.min.css @@ -0,0 +1 @@ +.toggle-demo{position:absolute;top:10px;right:-8px;display:block;width:150px;height:auto;z-index:99;opacity:.9}.toggle-demo:hover{opacity:1}.toggle-demo .btn-group{width:100px;float:left}.toggle-demo>span{display:inline-block;float:left;margin-right:5px;line-height:21px;color:#757575}.demo-vertical-uislider{box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.demo-vertical-uislider>div{height:200px;margin:0 0 0 10px;display:inline-block}.demo-vertical-uislider >:first-child{margin-left:15px}.knobs-demo>div{display:inline-block;margin-left:30px}.knobs-demo >:first-child{margin-left:0}.demo label input[type=checkbox].checkbox+span:before,.demo label input[type=radio].radiobox+span:before{border:1px solid #5E5E5E}.demo label:hover input[type=checkbox].checkbox+span:before{border-color:#E77317}.demo label{margin-bottom:4!important}.demo .checkbox i{border-color:#7A7A7A}.demo .checkbox,.demo .radio{padding-left:22px}.demo.activate{right:0!important;box-shadow:-11px 12px 23px rgba(0,0,0,.2);padding:5px 10px 10px}.demo #demo-setting+form{display:none}.demo.activate #demo-setting+form{display:block}.demo{position:absolute;top:5px;right:0;width:160px;z-index:11;background:#F1DA91}.demo>span{position:absolute;right:0;top:0;display:block;height:30px;width:30px;border-radius:5px 0 0 5px;background:#F1DA91;padding:2px;text-align:center;line-height:28px;cursor:pointer}.demo>span i{font-size:17px}.demo.activate>span i:before{content:"\f00d"}.demo.activate>span{left:-30px}.demo>span:hover i{color:#333!important}.demo form section{margin:0!important}.demo .btn{font-size:13px!important;line-height:1.5!important;border-radius:3px!important;padding:3px 7px!important;height:auto!important}.demo-liveupdate-1{font-size:12px!important;position:absolute!important;left:33px;top:15px;display:block;z-index:2;font-weight:700;padding:1px 61px 3px 7px}.demo-btns{margin:0;padding:0;list-style:none}.demo-btns>li{display:inline-block;margin-bottom:7px}.demo-icon-font{font-size:14px;margin-bottom:6px;padding-top:4px;padding-bottom:4px}.demo-icon-font:hover{background-color:rgba(86,61,124,.1);text-decoration:none}.demo-modal{width:auto;max-width:600px;z-index:1}.demo-red{color:#DF413E}.demo-orange{color:#DAA03E}.demo-border{border:1px solid rgba(0,0,0,.2)} \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/css/font-awesome.min.css b/src/main/webapp/WEB-INF/views/src/css/font-awesome.min.css new file mode 100644 index 0000000..29a75bf --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.1.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:FontAwesome;src:url(../fonts/fontawesome-webfont.eot?v=4.1.0);src:url(../fonts/fontawesome-webfont.eot?#iefix&v=4.1.0) format('embedded-opentype'),url(../fonts/fontawesome-webfont.woff?v=4.1.0) format('woff'),url(../fonts/fontawesome-webfont.ttf?v=4.1.0) format('truetype'),url(../fonts/fontawesome-webfont.svg?v=4.1.0#fontawesomeregular) format('svg');font-weight:400;font-style:normal}.fa{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:spin 2s infinite linear;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg)}100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)}100%{-o-transform:rotate(359deg)}}@keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1,1);-moz-transform:scale(-1,1);-ms-transform:scale(-1,1);-o-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1,-1);-moz-transform:scale(1,-1);-ms-transform:scale(1,-1);-o-transform:scale(1,-1);transform:scale(1,-1)}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-repeat:before,.fa-rotate-right:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-chain-broken:before,.fa-unlink:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-square:before,.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"} \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/css/invoice.min.css b/src/main/webapp/WEB-INF/views/src/css/invoice.min.css new file mode 100644 index 0000000..e4db1cb --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/css/invoice.min.css @@ -0,0 +1 @@ +#invoice-bar{text-align:right}.invoice{border:1px solid #d3d3d3;margin-bottom:30px;display:block}.no-padding .invoice{margin:0;border:none}.invoice h3,.invoice h4,.invoice h5{margin:0}.invoice-footer{width:100%;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.client-info,.invoice-info,.invoice-sum-total,.payment-methods{margin:0;display:inline-block;vertical-align:top}.invoice-info,.invoice-sum-total{text-align:right}.client-info,.invoice-info{font-size:12px}.invoice-sum-total{margin-top:30px}.client-info li{font-weight:400}.client-info li span{display:block;margin-bottom:3px;font-size:14px}.invoice-body table{border-top:none;border-bottom:none;margin:0}.invoice,.invoice-body table thead tr{background:#fff}.invoice-body table thead tr{border-top:none}.invoice-body table th,.invoice-body table tr{line-height:18px;text-align:left;vertical-align:top;border-top:1px solid #DDD;font-size:13px}.invoice-body table td,.invoice-body table th{padding:10px 32px!important}.invoice-body table th.item{width:18%}.invoice-body table th.desc{width:38%}.invoice-body table th.price,.invoice-body table th.qtn{width:15%}.invoice-body table th.sub{width:15}.invoice table td.invoice-sub{text-align:right;font-weight:700}.invoice td a{font-weight:700;color:#2D67A3}.invoice-footer{border-bottom:none;border-top:1px dotted #AAA}@media print{#header,#left-panel,#ribbon,#shortcut,#sparks,.page-title,.panel-heading{display:none!important}.invoice-body table th,.invoice-body table tr,table{border-bottom:1px dotted #333;border-top:1px dotted #333!important}.invoice{border:none}.invoice td a{font-weight:400}.invoice-body table td,.invoice-body table th,.invoice-client-info,.invoice-footer,.invoice-header{font-family:'Segoe UI',Tahoma,sans-serif!important}} \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/css/smartadmin-production.min.css b/src/main/webapp/WEB-INF/views/src/css/smartadmin-production.min.css new file mode 100644 index 0000000..3ef861a --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/css/smartadmin-production.min.css @@ -0,0 +1,51 @@ +/*! + * SmartAdmin - Responsive WebApp + * + * Copyright 2014 bootstraphunter.com + * Designed and built with all the love in the world by @bootstraphunt. + */.md-editor{display:block;border:1px solid #ddd}.md-editor .md-footer,.md-editor>.md-header{display:block;padding:6px 4px;background:#f5f5f5;margin:0}.md-editor>.md-header>:first-child{margin-left:0}.md-editor>.md-preview{background:#fff;border-top:1px dashed #ddd;border-bottom:1px dashed #ddd;min-height:10px;padding:10px}.md-editor>textarea{font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:13px;outline:0;margin:0;display:block;width:100%;border:0;padding:10px;border-top:1px dashed #ddd;border-bottom:1px dashed #ddd;border-radius:0;box-shadow:none;background:#eee}.md-editor>textarea:focus{box-shadow:none;background:#fff}.md-editor.active{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}/*! + * Slider for Bootstrap + * + * Copyright 2012 Stefan Petre + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + */.slider{display:inline-block;vertical-align:middle;position:relative}.slider.slider-horizontal{width:100%!important;height:20px}.slider.slider-horizontal .slider-track{height:10px;width:100%;margin-top:-5px;top:50%;left:0}.slider.slider-horizontal .slider-selection{height:100%;top:0;bottom:0}.slider.slider-horizontal .slider-handle{margin-left:-10px;margin-top:-5px}.slider.slider-horizontal .slider-handle.triangle{width:20px;height:20px;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);-o-transform:rotate(0deg);transform:rotate(0deg);border:none;line-height:21px;color:#797777;text-shadow:0 1px 0 rgba(255,255,255,.8)}.slider.slider-horizontal .slider-handle.triangle:before{content:"\f0da";font-size:34px}.slider-horizontal .slider-selection+.slider-handle.triangle+.slider-handle.triangle:before{content:"\f0d9"}.slider.slider-vertical{height:210px;width:20px}.slider.slider-vertical .slider-track{width:10px;height:100%;margin-left:-5px;left:50%;top:0}.slider.slider-vertical .slider-selection{width:100%;left:0;top:0;bottom:0}.slider.slider-vertical .slider-handle{margin-left:-5px;margin-top:-10px}.slider.slider-vertical .slider-handle.triangle{width:20px;height:20px;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);-o-transform:rotate(0deg);transform:rotate(0deg);border:none;line-height:21px;color:#797777;text-shadow:0 -1px 0 rgba(255,255,255,.8)}.slider.slider-vertical .slider-handle.triangle:before{content:"\f0d7";font-size:32px;text-shadow:0 1px 0 rgba(255,255,255,.8)}.slider.slider-vertical .slider-selection+.slider-handle.triangle+.slider-handle.triangle:before{content:"\f0d8";text-shadow:0 -1px 0 rgba(255,255,255,.8)}.slider input{display:none}.slider .tooltip-inner{white-space:nowrap}.slider-track{position:absolute;cursor:pointer;background:#E5E5E5}.slider-selection{position:absolute;background:#3276b1}.slider-handle{position:absolute;width:20px;height:20px;border:1px solid #FFF;background:#858585;display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;line-height:18px;font-size:10px;color:#BDBDBD;text-shadow:0 1px 0 rgba(77,77,77,.5);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.slider-handle:before{content:"\f0c9"}.slider-handle.round{-webkit-border-radius:20px;-moz-border-radius:20px;border-radius:20px;width:20px;height:20px}.slider-handle.triangle{background:transparent none}.slider-danger+.slider-track>.slider-selection{background:#a90329}.slider-warning+.slider-track>.slider-selection{background:#c79121}.slider-info+.slider-track>.slider-selection{background:#57889c}.slider-success+.slider-track>.slider-selection{background:#739e73}.bootstrap-tagsinput{display:block;width:100%;min-height:32px;padding:1px 3px;font-size:13px;line-height:1.428571429;color:#555;vertical-align:middle;background-color:#FFF;border:1px solid #CCC;border-radius:0}.bootstrap-tagsinput>span{border-radius:0!important;font-weight:400;padding:3px 28px 4px 8px;font-size:13px;border:1px solid #285E8E;background:#3276B1}.bootstrap-tagsinput input{border:none;box-shadow:none;outline:0;background-color:transparent;padding:0;margin:0;width:auto!important;max-width:inherit}.bootstrap-tagsinput input:focus{border:none;box-shadow:none}.bootstrap-tagsinput .tag{color:#FFF;position:relative;margin:3px 0 3px 2px;display:inline-block}.bootstrap-tagsinput .tag [data-role=remove]{display:block;top:-1px;right:0;padding:3px 4px 3px 5px;width:23px;height:22px;position:absolute;cursor:pointer}.bootstrap-tagsinput .tag [data-role=remove]:hover{background:rgba(0,0,0,.3)}.bootstrap-tagsinput .tag [data-role=remove]:after{content:"\f057";font-family:fontAwesome;padding:2px 1px;line-height:17px;font-size:15px;text-align:center}.bootstrap-tagsinput .tag [data-role=remove]:hover{box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05)}.bootstrap-tagsinput .tag [data-role=remove]:hover:active{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}/*! + * Timepicker Component for Twitter Bootstrap + * + * Copyright 2013 Joris de Wit + * + * Contributors https://github.com/jdewit/bootstrap-timepicker/graphs/contributors + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */.bootstrap-timepicker{position:relative}.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu{left:auto;right:0}.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:before{left:auto;right:12px}.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:after{left:auto;right:13px}.bootstrap-timepicker .add-on{cursor:pointer}.bootstrap-timepicker .add-on i{display:inline-block;width:16px;height:16px}.bootstrap-timepicker-widget.dropdown-menu{padding:4px}.bootstrap-timepicker-widget.dropdown-menu.open{display:inline-block}.bootstrap-timepicker-widget.dropdown-menu:before{border-bottom:7px solid rgba(0,0,0,.2);border-left:7px solid transparent;border-right:7px solid transparent;content:"";display:inline-block;position:absolute}.bootstrap-timepicker-widget.dropdown-menu:after{border-bottom:6px solid #FFF;border-left:6px solid transparent;border-right:6px solid transparent;content:"";display:inline-block;position:absolute}.bootstrap-timepicker-widget.timepicker-orient-left:before{left:6px}.bootstrap-timepicker-widget.timepicker-orient-left:after{left:7px}.bootstrap-timepicker-widget.timepicker-orient-right:before{right:6px}.bootstrap-timepicker-widget.timepicker-orient-right:after{right:7px}.bootstrap-timepicker-widget.timepicker-orient-top:before{top:-7px}.bootstrap-timepicker-widget.timepicker-orient-top:after{top:-6px}.bootstrap-timepicker-widget.timepicker-orient-bottom:before{bottom:-7px;border-bottom:0;border-top:7px solid #999}.bootstrap-timepicker-widget.timepicker-orient-bottom:after{bottom:-6px;border-bottom:0;border-top:6px solid #fff}.bootstrap-timepicker-widget a.btn,.bootstrap-timepicker-widget input{border-radius:4px}.bootstrap-timepicker-widget table{width:100%;margin:0}.bootstrap-timepicker-widget table td{text-align:center;height:30px;margin:0;padding:2px}.bootstrap-timepicker-widget table td:not(.separator){min-width:30px}.bootstrap-timepicker-widget table td span{width:100%}.bootstrap-timepicker-widget table td a{border:1px transparent solid;width:100%;display:inline-block;margin:0;padding:8px 0;outline:0;color:#333}.bootstrap-timepicker-widget table td a:hover{text-decoration:none;background-color:#eee;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border-color:#ddd}.bootstrap-timepicker-widget table td a i{margin-top:2px;font-size:18px}.bootstrap-timepicker-widget table td input{width:25px;margin:0;text-align:center}.bootstrap-timepicker-widget .modal-content{padding:4px}@media (min-width:767px){.bootstrap-timepicker-widget.modal{width:200px;margin-left:-100px}}@media (max-width:767px){.bootstrap-timepicker,.bootstrap-timepicker .dropdown-menu{width:100%}}/*! + * ClockPicker v{package.version} for Bootstrap (http://weareoutman.github.io/clockpicker/) + * Copyright 2014 Wang Shenwei. + * Licensed under MIT (https://github.com/weareoutman/clockpicker/blob/master/LICENSE) + */.clockpicker .input-group-addon{cursor:pointer}.clockpicker-moving{cursor:move}.clockpicker-align-left.popover>.arrow{left:25px}.clockpicker-align-top.popover>.arrow{top:17px}.clockpicker-align-right.popover>.arrow{left:auto;right:25px}.clockpicker-align-bottom.popover>.arrow{top:auto;bottom:6px}.clockpicker-popover .popover-title{background-color:#fff;color:#999;font-size:24px;font-weight:700;line-height:30px;text-align:center}.clockpicker-popover .popover-title span{cursor:pointer}.clockpicker-popover .popover-content{background-color:#f8f8f8;padding:12px}.popover-content:last-child{border-bottom-left-radius:5px;border-bottom-right-radius:5px}.clockpicker-plate{background-color:#fff;border:1px solid #ccc;border-radius:50%;width:200px;height:200px;overflow:visible;position:relative;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.clockpicker-canvas,.clockpicker-dial{width:200px;height:200px;position:absolute;left:-1px;top:-1px}.clockpicker-minutes{visibility:hidden}.clockpicker-tick{border-radius:50%;color:#666;line-height:26px;text-align:center;width:26px;height:26px;position:absolute;cursor:pointer}.clockpicker-tick.active,.clockpicker-tick:hover{background-color:#c0e5f7;background-color:rgba(0,149,221,.25)}.clockpicker-button{background-image:none;background-color:#fff;border-width:1px 0 0;border-top-left-radius:0;border-top-right-radius:0;margin:0;padding:10px 0}.clockpicker-button:hover{background-image:none;background-color:#ebebeb}.clockpicker-button:focus{outline:0!important}.clockpicker-dial{-webkit-transition:-webkit-transform 350ms,opacity 350ms;-moz-transition:-moz-transform 350ms,opacity 350ms;-ms-transition:-ms-transform 350ms,opacity 350ms;-o-transition:-o-transform 350ms,opacity 350ms;transition:transform 350ms,opacity 350ms}.clockpicker-dial-out{opacity:0}.clockpicker-hours.clockpicker-dial-out{-webkit-transform:scale(1.2,1.2);-moz-transform:scale(1.2,1.2);-ms-transform:scale(1.2,1.2);-o-transform:scale(1.2,1.2);transform:scale(1.2,1.2)}.clockpicker-minutes.clockpicker-dial-out{-webkit-transform:scale(0.8,.8);-moz-transform:scale(0.8,.8);-ms-transform:scale(0.8,.8);-o-transform:scale(0.8,.8);transform:scale(0.8,.8)}.clockpicker-canvas{-webkit-transition:opacity 175ms;-moz-transition:opacity 175ms;-ms-transition:opacity 175ms;-o-transition:opacity 175ms;transition:opacity 175ms}.clockpicker-canvas-out{opacity:.25}.clockpicker-canvas-bearing,.clockpicker-canvas-fg{stroke:none;fill:#0095dd}.clockpicker-canvas-bg{stroke:none;fill:#c0e5f7}.clockpicker-canvas-bg-trans{fill:rgba(0,149,221,.25)}.clockpicker-canvas line{stroke:#0095dd;stroke-width:1;stroke-linecap:round}/*! + * Colorpicker for Bootstrap + * + * Copyright 2012 Stefan Petre + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + */.colorpicker-saturation{width:100px;height:100px;background-image:url(../img/saturation.png);cursor:crosshair;float:left}.colorpicker-saturation i{display:block;height:5px;width:5px;border:1px solid #000;position:absolute;top:0;left:0;margin:-4px 0 0 -4px}.colorpicker-saturation i b{display:block;height:5px;width:5px;border:1px solid #fff}.colorpicker-alpha,.colorpicker-hue{width:15px;height:100px;float:left;cursor:row-resize;margin-left:4px;margin-bottom:4px}.colorpicker-alpha i,.colorpicker-hue i{display:block;height:1px;background:#000;border-top:1px solid #fff;position:absolute;top:0;left:0;width:100%;margin-top:-1px}.colorpicker-hue{background-image:url(../img/hue.png)}.colorpicker-alpha{background-image:url(../img/alpha.png);display:none}.colorpicker{zoom:1;top:0;left:0;padding:4px;min-width:120px;margin-top:1px;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.colorpicker:after{clear:both}.colorpicker:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2);position:absolute;top:-7px;left:6px}.colorpicker:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;top:-6px;left:7px}.colorpicker div{position:relative}.colorpicker.alpha{min-width:140px}.colorpicker.alpha .colorpicker-alpha{display:block}.colorpicker-color{height:10px;margin-top:5px;clear:both;background-image:url(../img/alpha.png);background-position:0 100%}.colorpicker-color div{height:10px}.input-append.color .add-on i,.input-prepend.color .add-on i{display:block;cursor:pointer;width:16px;height:16px}div.dataTables_length label{font-weight:400;float:left;text-align:left}div.dataTables_length select{width:75px}div.dataTables_filter label{font-weight:400;float:right}div.dataTables_filter input{width:16em}div.dataTables_paginate{float:right;margin:0}div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}table.dataTable{clear:both;margin-top:6px!important;margin-bottom:6px!important;max-width:none!important}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_desc_disabled{cursor:pointer}table.dataTable thead>tr>th{padding-right:18px}table.dataTable th:active{outline:0}div.dataTables_scrollHead table{margin-bottom:0!important;border-bottom-left-radius:0;border-bottom-right-radius:0}div.dataTables_scrollHead table thead tr:last-child td:first-child,div.dataTables_scrollHead table thead tr:last-child th:first-child{border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}div.dataTables_scrollBody table{border-top:none;margin-top:0!important;margin-bottom:0!important}div.dataTables_scrollBody tbody tr:first-child td,div.dataTables_scrollBody tbody tr:first-child th{border-top:none}div.dataTables_scrollFoot table{margin-top:0!important;border-top:none}table.table-bordered.dataTable{border-collapse:separate!important}table.table-bordered thead td,table.table-bordered thead th{border-left-width:0;border-top-width:0}table.table-bordered tbody td,table.table-bordered tbody th{border-left-width:0;border-bottom-width:0}table.table-bordered td:last-child,table.table-bordered th:last-child{border-right-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.DTTT .btn{color:#333!important;font-size:12px}div.DTTT .btn:hover{text-decoration:none!important}ul.DTTT_dropdown.dropdown-menu{z-index:2003}ul.DTTT_dropdown.dropdown-menu a{color:#333!important}ul.DTTT_dropdown.dropdown-menu li{position:relative}ul.DTTT_dropdown.dropdown-menu li:hover a{background-color:#08c;color:#fff!important}div.DTTT_print_info.modal{height:150px;margin-top:-75px;text-align:center}div.DTTT_print_info h6{font-weight:400;font-size:28px;line-height:28px;margin:1em}div.DTTT_print_info p{font-size:14px;line-height:20px}div.DTFC_LeftFootWrapper table,div.DTFC_LeftHeadWrapper table,div.DTFC_RightFootWrapper table,div.DTFC_RightHeadWrapper table,table.DTFC_Cloned tr.even{background-color:#fff;margin-bottom:0}div.DTFC_LeftHeadWrapper table,div.DTFC_RightHeadWrapper table{margin-bottom:0!important;border-top-right-radius:0!important;border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}div.DTFC_LeftHeadWrapper table thead tr:last-child td:first-child,div.DTFC_LeftHeadWrapper table thead tr:last-child th:first-child,div.DTFC_RightHeadWrapper table thead tr:last-child td:first-child,div.DTFC_RightHeadWrapper table thead tr:last-child th:first-child{border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}div.DTFC_LeftBodyWrapper table,div.DTFC_RightBodyWrapper table{border-top:none;margin:0!important}div.DTFC_LeftBodyWrapper tbody tr:first-child td,div.DTFC_LeftBodyWrapper tbody tr:first-child th,div.DTFC_LeftFootWrapper table,div.DTFC_RightBodyWrapper tbody tr:first-child td,div.DTFC_RightBodyWrapper tbody tr:first-child th,div.DTFC_RightFootWrapper table{border-top:none}div.FixedHeader_Cloned table{margin:0!important}table.DTCR_clonedTable{background-color:rgba(255,255,255,.7);z-index:202}div.DTCR_pointer{width:1px;background-color:#0259C4;z-index:201}div.ColVis{float:right}button.ColVis_Button,ul.ColVis_collection li{position:relative;float:left;margin-right:3px;padding:5px 8px;border:1px solid #999;cursor:pointer;*cursor:hand;font-size:.88em;color:#000!important;white-space:nowrap;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;-webkit-box-shadow:1px 1px 3px #ccc;-moz-box-shadow:1px 1px 3px #ccc;-ms-box-shadow:1px 1px 3px #ccc;-o-box-shadow:1px 1px 3px #ccc;box-shadow:1px 1px 3px #ccc;background:#fff;background:-webkit-linear-gradient(top,#fff 0,#f3f3f3 89%,#f9f9f9 100%);background:-moz-linear-gradient(top,#fff 0,#f3f3f3 89%,#f9f9f9 100%);background:-ms-linear-gradient(top,#fff 0,#f3f3f3 89%,#f9f9f9 100%);background:-o-linear-gradient(top,#fff 0,#f3f3f3 89%,#f9f9f9 100%);background:linear-gradient(top,#fff 0,#f3f3f3 89%,#f9f9f9 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f9f9f9', GradientType=0)}.ColVis_Button:hover,ul.ColVis_collection li:hover{border:1px solid #666;text-decoration:none!important;-webkit-box-shadow:1px 1px 3px #999;-moz-box-shadow:1px 1px 3px #999;-ms-box-shadow:1px 1px 3px #999;-o-box-shadow:1px 1px 3px #999;box-shadow:1px 1px 3px #999;background:#f3f3f3;background:-webkit-linear-gradient(top,#f3f3f3 0,#e2e2e2 89%,#f4f4f4 100%);background:-moz-linear-gradient(top,#f3f3f3 0,#e2e2e2 89%,#f4f4f4 100%);background:-ms-linear-gradient(top,#f3f3f3 0,#e2e2e2 89%,#f4f4f4 100%);background:-o-linear-gradient(top,#f3f3f3 0,#e2e2e2 89%,#f4f4f4 100%);background:linear-gradient(top,#f3f3f3 0,#e2e2e2 89%,#f4f4f4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3f3f3', endColorstr='#f4f4f4', GradientType=0)}button.ColVis_Button{height:30px;padding:3px 8px}button.ColVis_Button::-moz-focus-inner{border:none!important;padding:0}button.ColVis_Button:active{outline:0}div.ColVis_collectionBackground{position:fixed;top:0;left:0;height:100%;width:100%;background-color:#000;z-index:1100}ul.ColVis_collection{padding:8px 8px 4px;margin:0;border:1px solid #ccc;border:1px solid rgba(0,0,0,.4);background-color:#f3f3f3;background-color:rgba(255,255,255,.3);overflow:hidden;z-index:2002;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-box-shadow:3px 3px 5px rgba(0,0,0,.3);-moz-box-shadow:3px 3px 5px rgba(0,0,0,.3);-ms-box-shadow:3px 3px 5px rgba(0,0,0,.3);-o-box-shadow:3px 3px 5px rgba(0,0,0,.3);box-shadow:3px 3px 5px rgba(0,0,0,.3)}ul.ColVis_collection li{position:relative;height:auto;left:0;right:0;padding:.5em;display:block;float:none;margin-bottom:4px;-webkit-box-shadow:1px 1px 3px #999;-moz-box-shadow:1px 1px 3px #999;-ms-box-shadow:1px 1px 3px #999;-o-box-shadow:1px 1px 3px #999;box-shadow:1px 1px 3px #999;text-align:left}ul.ColVis_collection li.ColVis_Button:hover{border:1px solid #999;background-color:#f0f0f0}ul.ColVis_collection li span{display:inline-block;padding-left:.5em;cursor:pointer}ul.ColVis_collection li.ColVis_Special{border-color:#555;background:#ededed;background:-webkit-linear-gradient(top,#ededed 0,#d6d6d6 77%,#e8e8e8 100%);background:-moz-linear-gradient(top,#ededed 0,#d6d6d6 77%,#e8e8e8 100%);background:-ms-linear-gradient(top,#ededed 0,#d6d6d6 77%,#e8e8e8 100%);background:-o-linear-gradient(top,#ededed 0,#d6d6d6 77%,#e8e8e8 100%);background:linear-gradient(to bottom,#ededed 0,#d6d6d6 77%,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0)}ul.ColVis_collection li.ColVis_Special:hover{background:#e2e2e2;background:-webkit-linear-gradient(top,#d0d0d0 0,#d5d5d5 89%,#e2e2e2 100%);background:-moz-linear-gradient(top,#d0d0d0 0,#d5d5d5 89%,#e2e2e2 100%);background:-ms-linear-gradient(top,#d0d0d0 0,#d5d5d5 89%,#e2e2e2 100%);background:-o-linear-gradient(top,#d0d0d0 0,#d5d5d5 89%,#e2e2e2 100%);background:linear-gradient(top,#d0d0d0 0,#d5d5d5 89%,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3f3f3', endColorstr='#e2e2e2', GradientType=0)}span.ColVis_radio{display:inline-block;width:20px}div.ColVis_catcher{position:absolute;z-index:1101}div.DTTT_container{position:relative;float:right;margin-bottom:1em}@media screen and (max-width:640px){div.DTTT_container{float:none!important;text-align:center}div.DTTT_container:after{visibility:hidden;display:block;content:"";clear:both;height:0}}a.DTTT_button,button.DTTT_button,div.DTTT_button{position:relative;display:inline-block;margin-right:3px;padding:5px 8px;border:1px solid #999;cursor:pointer;*cursor:hand;font-size:.88em;color:#000!important;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;-webkit-box-shadow:1px 1px 3px #ccc;-moz-box-shadow:1px 1px 3px #ccc;-ms-box-shadow:1px 1px 3px #ccc;-o-box-shadow:1px 1px 3px #ccc;box-shadow:1px 1px 3px #ccc;background:#fff;background:-webkit-linear-gradient(top,#fff 0,#f3f3f3 89%,#f9f9f9 100%);background:-moz-linear-gradient(top,#fff 0,#f3f3f3 89%,#f9f9f9 100%);background:-ms-linear-gradient(top,#fff 0,#f3f3f3 89%,#f9f9f9 100%);background:-o-linear-gradient(top,#fff 0,#f3f3f3 89%,#f9f9f9 100%);background:linear-gradient(top,#fff 0,#f3f3f3 89%,#f9f9f9 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f9f9f9', GradientType=0)}button.DTTT_button{height:30px;padding:3px 8px}.DTTT_button embed{outline:0}a.DTTT_button:hover,button.DTTT_button:hover,div.DTTT_button:hover{border:1px solid #666;text-decoration:none!important;-webkit-box-shadow:1px 1px 3px #999;-moz-box-shadow:1px 1px 3px #999;-ms-box-shadow:1px 1px 3px #999;-o-box-shadow:1px 1px 3px #999;box-shadow:1px 1px 3px #999;background:#f3f3f3;background:-webkit-linear-gradient(top,#f3f3f3 0,#e2e2e2 89%,#f4f4f4 100%);background:-moz-linear-gradient(top,#f3f3f3 0,#e2e2e2 89%,#f4f4f4 100%);background:-ms-linear-gradient(top,#f3f3f3 0,#e2e2e2 89%,#f4f4f4 100%);background:-o-linear-gradient(top,#f3f3f3 0,#e2e2e2 89%,#f4f4f4 100%);background:linear-gradient(top,#f3f3f3 0,#e2e2e2 89%,#f4f4f4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3f3f3', endColorstr='#f4f4f4', GradientType=0)}a.DTTT_disabled,button.DTTT_disabled,div.DTTT_disabled{color:#999;border:1px solid #d0d0d0;background:#fff;background:-webkit-linear-gradient(top,#fff 0,#f9f9f9 89%,#fafafa 100%);background:-moz-linear-gradient(top,#fff 0,#f9f9f9 89%,#fafafa 100%);background:-ms-linear-gradient(top,#fff 0,#f9f9f9 89%,#fafafa 100%);background:-o-linear-gradient(top,#fff 0,#f9f9f9 89%,#fafafa 100%);background:linear-gradient(top,#fff 0,#f9f9f9 89%,#fafafa 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#fafafa', GradientType=0)}button.DTTT_button_collection span{padding-right:17px;background:url(../images/collection.png) no-repeat center right}button.DTTT_button_collection:hover span{padding-right:17px;background:#f0f0f0 url(../images/collection_hover.png) no-repeat center right}table.DTTT_selectable tbody tr{cursor:pointer;*cursor:hand}table.dataTable tr.DTTT_selected.odd,table.dataTable tr.DTTT_selected.odd td.sorting_1,table.dataTable tr.DTTT_selected.odd td.sorting_2,table.dataTable tr.DTTT_selected.odd td.sorting_3{background-color:#9FAFD1}table.dataTable tr.DTTT_selected.even,table.dataTable tr.DTTT_selected.even td.sorting_1,table.dataTable tr.DTTT_selected.even td.sorting_2,table.dataTable tr.DTTT_selected.even td.sorting_3{background-color:#B0BED9}div.DTTT_collection{width:150px;padding:8px 8px 4px;border:1px solid #ccc;border:1px solid rgba(0,0,0,.4);background-color:#f3f3f3;background-color:rgba(255,255,255,.3);overflow:hidden;z-index:2002;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-box-shadow:3px 3px 5px rgba(0,0,0,.3);-moz-box-shadow:3px 3px 5px rgba(0,0,0,.3);-ms-box-shadow:3px 3px 5px rgba(0,0,0,.3);-o-box-shadow:3px 3px 5px rgba(0,0,0,.3);box-shadow:3px 3px 5px rgba(0,0,0,.3)}div.DTTT_collection_background{background:transparent url(../images/background.png) repeat top left;z-index:2001}div.DTTT_collection a.DTTT_button,div.DTTT_collection button.DTTT_button,div.DTTT_collection div.DTTT_button{position:relative;left:0;right:0;display:block;float:none;margin-bottom:4px;-webkit-box-shadow:1px 1px 3px #999;-moz-box-shadow:1px 1px 3px #999;-ms-box-shadow:1px 1px 3px #999;-o-box-shadow:1px 1px 3px #999;box-shadow:1px 1px 3px #999}.DTTT_print_info{position:fixed;top:50%;left:50%;width:400px;height:150px;margin-left:-200px;margin-top:-75px;text-align:center;color:#333;padding:10px 30px;background:#fff;background:-webkit-linear-gradient(top,#fff 0,#f3f3f3 89%,#f9f9f9 100%);background:-moz-linear-gradient(top,#fff 0,#f3f3f3 89%,#f9f9f9 100%);background:-ms-linear-gradient(top,#fff 0,#f3f3f3 89%,#f9f9f9 100%);background:-o-linear-gradient(top,#fff 0,#f3f3f3 89%,#f9f9f9 100%);background:linear-gradient(top,#fff 0,#f3f3f3 89%,#f9f9f9 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f9f9f9', GradientType=0);opacity:.95;border:1px solid #000;border:1px solid rgba(0,0,0,.5);-webkit-border-radius:6px;-moz-border-radius:6px;-ms-border-radius:6px;-o-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0,0,0,.5);-moz-box-shadow:0 3px 7px rgba(0,0,0,.5);-ms-box-shadow:0 3px 7px rgba(0,0,0,.5);-o-box-shadow:0 3px 7px rgba(0,0,0,.5);box-shadow:0 3px 7px rgba(0,0,0,.5)}.DTTT_print_info h6{font-weight:400;font-size:28px;line-height:28px;margin:1em}.DTTT_print_info p{font-size:14px;line-height:20px}.dt-toolbar{display:block;position:relative;padding:6px 7px 1px;width:100%;float:left;border-bottom:1px solid #ccc;background:#fafafa}.dt-toolbar-footer{background:#fafafa;font-size:11px;overflow:hidden;padding:5px 10px;border-top:1px solid #ccc;-webkit-box-shadow:inset 0 1px #fff;-moz-box-shadow:inset 0 1px #fff;-ms-box-shadow:inset 0 1px #fff;box-shadow:inset 0 1px #fff}.dt-toolbar-footer>:first-child,.dt-toolbar>:first-child{padding-left:0!important}.dt-toolbar-footer>:last-child,.dt-toolbar>:last-child{padding-right:0!important}table.dataTable thead .sorting{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATAgMAAAAPPt5fAAAACVBMVEUAAADIyMjl5eVIBBP/AAAAAXRSTlMAQObYZgAAAClJREFUCNdjwAYEwGQKiGDsBJFsTA5AUoJhAqZaiDhEDVg9RC/MHEwAANsMA91AQfd/AAAAAElFTkSuQmCC) no-repeat center right}table.dataTable thead .sorting_asc{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATAQMAAABInqSPAAAABlBMVEUAAABVVVUT3Vn+AAAAAXRSTlMAQObYZgAAAB1JREFUCNdjwAkcgPgBAwPjBwYG5h8MDOx/GAgBAKRJBBCQbHkwAAAAAElFTkSuQmCC) no-repeat center right}table.dataTable thead .sorting_desc{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATAQMAAABInqSPAAAABlBMVEUAAABVVVUT3Vn+AAAAAXRSTlMAQObYZgAAABxJREFUCNdjIATY/zAwMP9gYGD8AOQ8AGIHnEoBkNkEEEbbutQAAAAASUVORK5CYII=) no-repeat center right}table.dataTable thead .sorting_asc_disabled{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATAQMAAABInqSPAAAABlBMVEUAAABUVFR8AzIeAAAAAnRSTlMAf7YpoZUAAAAdSURBVAjXY8AJHID4AQMD4wcGBuYfDAzsfxgIAQCkSQQQkGx5MAAAAABJRU5ErkJggg==) no-repeat center right}table.dataTable thead .sorting_desc_disabled{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATAQMAAABInqSPAAAABlBMVEUAAABUVFR8AzIeAAAAAnRSTlMAf7YpoZUAAAAcSURBVAjXYyAE2P8wMDD/YGBg/ADkPABiB5xKAZDZBBBG27rUAAAAAElFTkSuQmCC) no-repeat center right}table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc{background-color:#eee}.dataTables_empty{padding:20px 10px!important;font-size:14px;text-align:center;color:#575757}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px 10px}table.dataTable tfoot>tr>th,table.dataTable thead>tr>th{padding-left:9px!important}table.dataTable tfoot>tr>th input,table.dataTable thead>tr>th input{width:100%!important;font-weight:400}table.dataTable thead>tr>th.hasinput{padding:6px!important}div.dataTables_info{padding-top:9px;font-size:13px;font-weight:700;font-style:italic;color:#969696}.dataTable thead>tr>th{border-left:none!important}.dataTable input[type=checkbox].checkbox,.dataTable input[type=radio].radiobox{position:relative!important}table.dataTable thead>tr>th.sorting_disabled{padding-right:9px!important}.dataTables_filter{float:left;width:100%}.dataTables_filter .input-group-addon{width:32px;margin-top:0;float:left;height:32px;padding-top:8px}.dataTables_filter .input-group-addon+.form-control{float:left}.dt-toolbar>:first-child .DTTT,.dt-toolbar>:first-child .dataTables_filter>:only-child,.dt-toolbar>:first-child .dataTables_length,.dt-toolbar>:first-child .pagination{float:left!important}.dt-toolbar>:last-child .DTTT,.dt-toolbar>:last-child .dataTables_filter>:only-child,.dt-toolbar>:last-child .dataTables_length,.dt-toolbar>:last-child .pagination{float:right}.dt-toolbar-footer>:first-child .DTTT,.dt-toolbar-footer>:first-child .dataTables_filter>:only-child,.dt-toolbar-footer>:first-child .dataTables_length,.dt-toolbar-footer>:first-child .pagination{float:left}.dt-toolbar-footer>:last-child .DTTT,.dt-toolbar-footer>:last-child .dataTables_filter>:only-child,.dt-toolbar-footer>:last-child .dataTables_length,.dt-toolbar-footer>:last-child .pagination{float:right}body.DTTT_Print{background:#fff!important}.DTTT_Print #main{margin:0!important}.DTTT_PrintMessage{font-size:20px;display:block;width:100%;text-align:center;padding-top:10px;font-weight:700}.DTTT_Print table.dataTable{margin-top:0!important}.DTTT_Print .dataTables_wrapper table{border:1px solid #C7C7C7!important}div.ColVis{margin-bottom:0!important}ul.ColVis_collection{width:127px}ul.ColVis_collection li span{vertical-align:3px}ul.ColVis_collection li label{margin-bottom:0!important}.dropzone.dz-drag-hover{border:5px dashed #ccc}.dropzone{min-height:360px;-webkit-border-radius:3px;border-radius:3px}.dropzone .dz-default.dz-message{opacity:1;-ms-filter:none;filter:none;-webkit-transition:opacity .3s ease-in-out;-moz-transition:opacity .3s ease-in-out;-o-transition:opacity .3s ease-in-out;-ms-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out;background-image:url(../img/dropzone/spritemap.png);background-repeat:no-repeat;background-position:0 0;position:absolute;width:428px;height:123px;margin-left:-214px;margin-top:-61.5px;top:50%;left:50%}.dropzone .dz-default.dz-message span{display:none}.dropzone.dz-square .dz-default.dz-message{background-position:0 -123px;width:268px;margin-left:-134px;height:174px;margin-top:-87px}.dropzone.dz-drag-hover .dz-message{opacity:.15;-ms-filter:"alpha(Opacity=15)";filter:alpha(opacity=15)}.dropzone.dz-started .dz-message{opacity:0;-ms-filter:"alpha(Opacity=0)";filter:alpha(opacity=0)}.dropzone .dz-preview,.dropzone-previews .dz-preview{-webkit-box-shadow:1px 1px 4px rgba(0,0,0,.16);box-shadow:1px 1px 4px rgba(0,0,0,.16);font-size:14px}.dropzone .dz-preview.dz-image-preview:hover .dz-details img,.dropzone-previews .dz-preview.dz-image-preview:hover .dz-details img{display:block;opacity:.1;-ms-filter:"alpha(Opacity=10)";filter:alpha(opacity=10)}.dropzone .dz-preview.dz-error .dz-error-mark,.dropzone .dz-preview.dz-success .dz-success-mark,.dropzone-previews .dz-preview.dz-error .dz-error-mark,.dropzone-previews .dz-preview.dz-success .dz-success-mark{opacity:1;-ms-filter:none;filter:none}.dropzone .dz-preview.dz-error .dz-progress .dz-upload,.dropzone-previews .dz-preview.dz-error .dz-progress .dz-upload{background:#ee1e2d}.dropzone .dz-preview .dz-error-mark,.dropzone .dz-preview .dz-success-mark,.dropzone-previews .dz-preview .dz-error-mark,.dropzone-previews .dz-preview .dz-success-mark{opacity:0;-ms-filter:"alpha(Opacity=0)";filter:alpha(opacity=0);-webkit-transition:opacity .4s ease-in-out;-moz-transition:opacity .4s ease-in-out;-o-transition:opacity .4s ease-in-out;-ms-transition:opacity .4s ease-in-out;transition:opacity .4s ease-in-out;background-image:url(../img/dropzone/spritemap.png);background-repeat:no-repeat}.dropzone .dz-preview .dz-error-mark span,.dropzone .dz-preview .dz-success-mark span,.dropzone-previews .dz-preview .dz-error-mark span,.dropzone-previews .dz-preview .dz-success-mark span{display:none}.dropzone .dz-preview .dz-error-mark,.dropzone-previews .dz-preview .dz-error-mark{background-position:-268px -123px}.dropzone .dz-preview .dz-success-mark,.dropzone-previews .dz-preview .dz-success-mark{background-position:-268px -163px}.dropzone .dz-preview .dz-progress .dz-upload,.dropzone-previews .dz-preview .dz-progress .dz-upload{-webkit-animation:loading .4s linear infinite;-moz-animation:loading .4s linear infinite;-o-animation:loading .4s linear infinite;-ms-animation:loading .4s linear infinite;animation:loading .4s linear infinite;-webkit-transition:width .3s ease-in-out;-moz-transition:width .3s ease-in-out;-o-transition:width .3s ease-in-out;-ms-transition:width .3s ease-in-out;transition:width .3s ease-in-out;-webkit-border-radius:2px;border-radius:2px;height:100%;background-image:url(../img/dropzone/spritemap.png);background-repeat:repeat-x;background-position:0 -400px}.dropzone .dz-preview.dz-success .dz-progress,.dropzone-previews .dz-preview.dz-success .dz-progress{display:block;opacity:0;-ms-filter:"alpha(Opacity=0)";filter:alpha(opacity=0);-webkit-transition:opacity .4s ease-in-out;-moz-transition:opacity .4s ease-in-out;-o-transition:opacity .4s ease-in-out;-ms-transition:opacity .4s ease-in-out;transition:opacity .4s ease-in-out}.dropzone .dz-preview .dz-error-message,.dropzone-previews .dz-preview .dz-error-message{opacity:0;-ms-filter:"alpha(Opacity=0)";filter:alpha(opacity=0);-webkit-transition:opacity .3s ease-in-out;-moz-transition:opacity .3s ease-in-out;-o-transition:opacity .3s ease-in-out;-ms-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out}.dropzone .dz-preview:hover.dz-error .dz-error-message,.dropzone-previews .dz-preview:hover.dz-error .dz-error-message{opacity:1;-ms-filter:none;filter:none}.dropzone a.dz-remove,.dropzone-previews a.dz-remove{background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fafafa),color-stop(1,#eee));background-image:-webkit-linear-gradient(top,#fafafa 0,#eee 100%);background-image:-moz-linear-gradient(top,#fafafa 0,#eee 100%);background-image:-o-linear-gradient(top,#fafafa 0,#eee 100%);background-image:-ms-linear-gradient(top,#fafafa 0,#eee 100%);background-image:linear-gradient(top,#fafafa 0,#eee 100%);-webkit-border-radius:2px;border-radius:2px;border:1px solid #eee;text-decoration:none;display:block;padding:4px 5px;text-align:center;color:#aaa;margin-top:26px}.dropzone a.dz-remove:hover,.dropzone-previews a.dz-remove:hover{color:#666}@-moz-keyframes loading{0%{background-position:0 -400px}100%{background-position:-7px -400px}}@-webkit-keyframes loading{0%{background-position:0 -400px}100%{background-position:-7px -400px}}@-o-keyframes loading{0%{background-position:0 -400px}100%{background-position:-7px -400px}}@-ms-keyframes loading{0%{background-position:0 -400px}100%{background-position:-7px -400px}}@keyframes loading{0%{background-position:0 -400px}100%{background-position:-7px -400px}}.dropzone,.dropzone *,.dropzone-previews,.dropzone-previews *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.dropzone{position:relative;border:1px solid rgba(0,0,0,.08);background:rgba(0,0,0,.02);padding:1em}.dropzone.dz-clickable,.dropzone.dz-clickable .dz-message,.dropzone.dz-clickable .dz-message span{cursor:pointer}.dropzone.dz-clickable *{cursor:default}.dropzone .dz-message{opacity:1;-ms-filter:none;filter:none}.dropzone.dz-drag-hover{border-color:rgba(0,0,0,.15);background:rgba(0,0,0,.04)}.dropzone.dz-started .dz-message{display:none}.dropzone .dz-preview,.dropzone-previews .dz-preview{background:rgba(255,255,255,.8);position:relative;display:inline-block;margin:17px;vertical-align:top;border:1px solid #acacac;padding:6px}.dropzone .dz-preview.dz-file-preview [data-dz-thumbnail],.dropzone-previews .dz-preview.dz-file-preview [data-dz-thumbnail]{display:none}.dropzone .dz-preview .dz-details,.dropzone-previews .dz-preview .dz-details{width:100px;height:100px;position:relative;background:#ebebeb;padding:5px;margin-bottom:22px}.dropzone .dz-preview .dz-details .dz-filename,.dropzone-previews .dz-preview .dz-details .dz-filename{overflow:hidden;height:100%}.dropzone .dz-preview .dz-details img,.dropzone-previews .dz-preview .dz-details img{position:absolute;top:0;left:0;width:100px;height:100px}.dropzone .dz-preview .dz-details .dz-size,.dropzone-previews .dz-preview .dz-details .dz-size{position:absolute;bottom:-28px;left:3px;height:28px;line-height:28px}.dropzone .dz-preview.dz-error .dz-error-mark,.dropzone .dz-preview.dz-success .dz-success-mark,.dropzone-previews .dz-preview.dz-error .dz-error-mark,.dropzone-previews .dz-preview.dz-success .dz-success-mark{display:block}.dropzone .dz-preview:hover .dz-details img,.dropzone-previews .dz-preview:hover .dz-details img{display:none}.dropzone .dz-preview .dz-error-mark,.dropzone .dz-preview .dz-success-mark,.dropzone-previews .dz-preview .dz-error-mark,.dropzone-previews .dz-preview .dz-success-mark{display:none;position:absolute;width:40px;height:40px;font-size:30px;text-align:center;right:-10px;top:-10px}.dropzone .dz-preview .dz-success-mark,.dropzone-previews .dz-preview .dz-success-mark{color:#8cc657}.dropzone .dz-preview .dz-error-mark,.dropzone-previews .dz-preview .dz-error-mark{color:#ee162d}.dropzone .dz-preview .dz-progress,.dropzone-previews .dz-preview .dz-progress{position:absolute;top:100px;left:6px;right:6px;height:6px;background:#d7d7d7;display:none}.dropzone .dz-preview .dz-progress .dz-upload,.dropzone-previews .dz-preview .dz-progress .dz-upload{position:absolute;top:0;bottom:0;left:0;width:0;background-color:#8cc657}.dropzone .dz-preview.dz-processing .dz-progress,.dropzone-previews .dz-preview.dz-processing .dz-progress{display:block}.dropzone .dz-preview .dz-error-message,.dropzone-previews .dz-preview .dz-error-message{display:none;position:absolute;top:-5px;left:-20px;background:rgba(245,245,245,.8);padding:8px 10px;color:#800;min-width:140px;max-width:500px;z-index:500}.dropzone .dz-preview:hover.dz-error .dz-error-message,.dropzone-previews .dz-preview:hover.dz-error .dz-error-message{display:block}.fd-form-element-hidden{display:none}.fd-slider{width:100%;height:20px;margin:0}.fd-slider-vertical{width:20px;height:100%;margin:0 10px 10px 0}.fd-slider,.fd-slider-vertical{display:block;position:relative;text-decoration:none;border:0 none;-moz-user-select:none;-khtml-user-select:none;-webkit-touch-callout:none;user-select:none}.fd-slider-inner{display:none}.fd-slider-bar{position:absolute;display:block;z-index:2;height:6px;width:100%;border:1px solid #bbb;border-bottom:1px solid #fff;border-right:1px solid #fff;margin:0;padding:0;overflow:hidden;line-height:4px;top:8px;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;-moz-background-clip:padding;-webkit-background-clip:padding-box;background-clip:padding-box;background-color:#333}.fd-slider-range{position:absolute;display:block;z-index:3;height:6px;margin:0;padding:0 2px 0 0;overflow:hidden;top:9px;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-background-clip:padding;-webkit-background-clip:padding-box;background-clip:padding-box;background-color:#eee}.fd-slider-handle{position:absolute;display:block;padding:0;margin:0 0 0 1px;z-index:3;top:5px;left:0;width:12px;height:12px;line-height:1px!important;outline:0 none;background:#eee;border:1px solid #aaa;border-radius:12px;-webkit-user-select:none;-webkit-touch-callout:none;-moz-user-select:none;-moz-user-focus:none;-moz-outline:0 none;user-select:none}.fd-slider-handle:focus{outline:0 none;border:0 none;-moz-user-focus:normal}button.fd-slider-handle:focus::-moz-focus-inner{border-color:transparent}body.fd-slider-drag-horizontal,body.fd-slider-drag-horizontal *,body.fd-slider-drag-vertical,body.fd-slider-drag-vertical *{-moz-user-select:none;-webkit-user-select:none;user-select:none}.fd-slider-handle:after,.fd-slider-handle:before{opacity:0;-moz-transition-property:opacity;-moz-transition-duration:1s;-moz-transition-delay:1s;-webkit-transition-property:opacity;-webkit-transition-duration:1s;-webkit-transition-delay:1s;-o-transition-property:opacity;-o-transition-duration:1s;-o-transition-delay:1s;transition-property:opacity;transition-duration:1s;transition-delay:1s}.fd-slider-active .fd-slider-handle:before,.fd-slider-focused .fd-slider-handle:before,.fd-slider-hover .fd-slider-handle:before{display:block;position:absolute;top:-21px;left:-8px;margin:0;width:20px;padding:3px;height:14px;line-height:12px;text-align:center;font-size:10px;font-weight:700;color:#fff;text-shadow:1px 1px 1px #1a3a95;background:#2f6ee0;z-index:1;content:attr(aria-valuetext);-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-background-clip:padding;-webkit-background-clip:padding-box;background-clip:padding-box;-moz-box-shadow:0 0 4px #aaa;-webkit-box-shadow:0 0 4px #aaa;box-shadow:0 0 4px #999;opacity:1}.fd-slider-active .fd-slider-handle:after,.fd-slider-focused .fd-slider-handle:after,.fd-slider-hover .fd-slider-handle:after{outline:0;content:"";display:block;position:absolute;top:-9px;left:50%;margin:0 0 0 -5px;background:#2f6ee0;z-index:2;width:10px;height:10px;overflow:hidden;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg);-moz-box-shadow:0 0 4px #aaa;-webkit-box-shadow:0 0 4px #aaa;box-shadow:0 0 4px #aaa;clip:rect(4px,14px,14px,4px);opacity:1}.oldie .fd-slider-handle:after,.oldie .fd-slider-handle:before{display:none}.fc{direction:ltr;text-align:left}.fc table{border-collapse:collapse;border-spacing:0}.fc td,.fc th{padding:0;vertical-align:top}.fc-header td{white-space:nowrap}.fc-header-left{width:25%;text-align:left}.fc-header-center{text-align:center}.fc-header-right{width:25%;text-align:right}.fc-header-title{display:inline-block;vertical-align:top}.fc-header-title h2{margin-top:0;white-space:nowrap}.fc .fc-header-space{padding-left:10px}.fc-header .fc-button{margin-bottom:1em;vertical-align:top;margin-right:-1px}.fc-header .fc-corner-right{margin-right:1px}.fc-header .ui-corner-right{margin-right:0}.fc-header .fc-state-hover,.fc-header .ui-state-hover{z-index:2}.fc-header .fc-state-down{z-index:3}.fc-header .fc-state-active,.fc-header .ui-state-active{z-index:4}.fc-content{clear:both}.fc-view{width:100%;overflow:hidden}.fc-widget-content,.fc-widget-header{border:1px solid #ccc}.fc-state-highlight{background:#ffc}.fc-cell-overlay{background:#9cf;opacity:.2;filter:alpha(opacity=20)}.fc-button{position:relative;display:inline-block;cursor:pointer}.fc-state-default{border-width:1px 0}.fc-button-inner{position:relative;float:left;overflow:hidden}.fc-state-default .fc-button-inner{border-width:0 1px}.fc-button-content{position:relative;float:left;height:1.9em;line-height:1.9em;padding:0 .6em;white-space:nowrap}.fc-button-content .fc-icon-wrap{position:relative;float:left;top:50%}.fc-button-content .ui-icon{position:relative;float:left;margin-top:-50%;*margin-top:0;*top:-50%}.fc-state-default .fc-button-effect{position:absolute;top:50%;left:0}.fc-state-default .fc-button-effect span{position:absolute;top:-100px;left:0;width:500px;height:100px;border-width:100px 0 0 1px;border-style:solid;border-color:#fff;background:#444;opacity:.09;filter:alpha(opacity=9)}.fc-state-default,.fc-state-default .fc-button-inner{border-style:solid;border-color:#ccc #bbb #aaa;background:#F3F3F3;color:#000}.fc-state-hover,.fc-state-hover .fc-button-inner{border-color:#999}.fc-state-down,.fc-state-down .fc-button-inner{border-color:#555;background:#777}.fc-state-active,.fc-state-active .fc-button-inner{border-color:#555;background:#777;color:#fff}.fc-state-disabled,.fc-state-disabled .fc-button-inner{color:#999;border-color:#ddd}.fc-state-disabled{cursor:default}.fc-state-disabled .fc-button-effect{display:none}.fc-event{border-style:solid;border-width:0;font-size:.85em;cursor:default}.fc-event-draggable,a.fc-event{cursor:pointer}a.fc-event{text-decoration:none}.fc-rtl .fc-event{text-align:right}.fc-event-skin{color:#FFF;border-right:none!important;cursor:move}.fc-event-inner{position:relative;width:100%;height:100%;border-style:solid;border-width:0;overflow:hidden}.fc .ui-resizable-handle{display:block;position:absolute;z-index:99999;overflow:hidden;font-size:300%;line-height:50%}.fc-event-hori{border-width:1px 0;margin-bottom:1px}.fc-event-hori .ui-resizable-e{top:0!important;right:-3px!important;width:7px!important;height:100%!important;cursor:e-resize}.fc-event-hori .ui-resizable-w{top:0!important;left:-3px!important;width:7px!important;height:100%!important;cursor:w-resize}.fc-event-hori .ui-resizable-handle{_padding-bottom:14px}.fc-corner-left{margin-left:1px}.fc-corner-left .fc-button-inner,.fc-corner-left .fc-event-inner{margin-left:-1px}.fc-corner-right{margin-right:1px}.fc-corner-right .fc-button-inner,.fc-corner-right .fc-event-inner{margin-right:-1px}.fc-corner-top{margin-top:1px}.fc-corner-top .fc-event-inner{margin-top:-1px}.fc-corner-bottom{margin-bottom:1px}.fc-corner-bottom .fc-event-inner{margin-bottom:-1px}.fc-corner-left .fc-event-inner{border-left:6px solid rgba(0,0,0,.15);padding-left:2px}.fc-corner-right .fc-event-inner{padding-left:2px}.fc-corner-top .fc-event-inner{border-top-width:1px}.fc-corner-bottom .fc-event-inner{border-bottom-width:1px}.fc-event-skin .fa:before{display:block;font-size:14px;position:absolute;right:4px;top:3px}table.fc-border-separate{border-collapse:separate}.fc-border-separate td,.fc-border-separate th{border-width:1px 0 0 1px}.fc-border-separate td.fc-last,.fc-border-separate th.fc-last{border-right-width:1px}.fc-border-separate tr.fc-last td,.fc-border-separate tr.fc-last th{border-bottom-width:1px}.fc-border-separate tbody tr.fc-first td,.fc-border-separate tbody tr.fc-first th{border-top-width:0}.fc-grid th{text-align:center}.fc-grid .fc-day-number{float:right;padding:0 2px}.fc-grid .fc-other-month .fc-day-number{opacity:.3;filter:alpha(opacity=30)}.fc-grid .fc-day-content{clear:both;padding:2px 2px 1px}.fc-grid .fc-event-time{font-weight:700}.fc-rtl .fc-grid .fc-day-number{float:left}.fc-rtl .fc-grid .fc-event-time{float:right}.fc-agenda table{border-collapse:separate}.fc-agenda-days th{text-align:center}.fc-agenda .fc-agenda-axis{width:50px;padding:0 4px;vertical-align:middle;text-align:right;white-space:nowrap;font-weight:400}.fc-agenda .fc-day-content{padding:2px 2px 1px}.fc-agenda-days .fc-agenda-axis{border-right-width:1px}.fc-agenda-days .fc-col0{border-left-width:0}.fc-agenda-allday th{border-width:0 1px}.fc-agenda-allday .fc-day-content{min-height:34px;_height:34px}.fc-agenda-divider-inner{height:2px;overflow:hidden}.fc-widget-header .fc-agenda-divider-inner{background:#eee}.fc-agenda-slots th{border-width:1px 1px 0}.fc-agenda-slots td{border-width:1px 0 0;background:0 0}.fc-agenda-slots td div{height:20px}.fc-agenda-slots tr.fc-slot0 td,.fc-agenda-slots tr.fc-slot0 th{border-top-width:0}.fc-agenda-slots tr.fc-minor td,.fc-agenda-slots tr.fc-minor th{border-top-style:dotted}.fc-agenda-slots tr.fc-minor th.ui-widget-header{*border-top-style:solid}.fc-event-vert{border-width:0 1px}.fc-event-vert .fc-event-content,.fc-event-vert .fc-event-head{position:relative;z-index:2;width:100%;overflow:hidden}.fc-event-vert .fc-event-time{white-space:nowrap;font-size:10px}.fc-event-vert .fc-event-bg{position:absolute;z-index:1;top:0;left:0;width:100%;height:100%;background:#fff;opacity:.3;filter:alpha(opacity=30)}.fc-event-vert .ui-resizable-s{bottom:0!important;width:100%!important;height:8px!important;overflow:hidden!important;line-height:8px!important;font-size:11px!important;font-family:monospace;text-align:center;cursor:s-resize}.fc-agenda .ui-resizable-resizing{_overflow:hidden}.irs{position:relative;display:block}.irs-line{position:relative;display:block;overflow:hidden}.irs-line-left,.irs-line-mid,.irs-line-right{position:absolute;display:block;top:0}.irs-line-left{left:0;width:10%}.irs-line-mid{left:10%;width:80%}.irs-line-right{right:0;width:10%}.irs-diapason{position:absolute;display:block;left:0;width:100%}.irs-slider{position:absolute;display:block;cursor:default;z-index:1}.irs-slider.single{left:10px}.irs-slider.single:before{position:absolute;display:block;content:"";top:-50%;left:-150%;width:400%;height:200%;background:rgba(0,0,0,0)}.irs-slider.from{left:100px}.irs-slider.from:before{position:absolute;display:block;content:"";top:-50%;left:-300%;width:400%;height:200%;background:rgba(0,0,0,0)}.irs-slider.to{left:300px}.irs-slider.to:before{position:absolute;display:block;content:"";top:-50%;left:0;width:400%;height:200%;background:rgba(0,0,0,0)}.irs-slider.last{z-index:2}.irs-min{position:absolute;display:block;left:0;cursor:default}.irs-max{position:absolute;display:block;right:0;cursor:default}.irs-from,.irs-single,.irs-to{position:absolute;display:block;top:0;left:0;cursor:default;white-space:nowrap}.irs-grid{position:absolute;display:none;bottom:0;left:0;width:100%;height:20px}.irs-with-grid .irs-grid{display:block}.irs-grid-pol{position:absolute;top:0;left:0;width:1px;height:8px}.irs-grid-pol.small{height:4px}.irs-grid-text{position:absolute;bottom:0;left:0;width:100px;white-space:nowrap;text-align:center;font-size:9px;line-height:9px}.irs{height:40px}.irs-with-grid{height:60px}.irs-line{height:8px;top:25px;background:#eee}.irs-line-left,.irs-line-mid,.irs-line-right{height:8px}.irs-diapason{height:8px;top:25px}.irs-slider{width:10px;height:22px;top:17px;border:1px solid #fff;background:#858585}.irs-slider:hover{background:#6c6c6c}#irs-active-slider{background:#686868;box-shadow:rgba(0,0,0,.3)1px 1px 1px 0;width:12px;height:24px;top:16px}.irs-max,.irs-min{color:#999;font-size:12px;line-height:1.333;text-shadow:none;top:0;padding:1px 3px;background:rgba(0,0,0,.1);border-radius:0}.lt-ie9 .irs-max,.lt-ie9 .irs-min{background:#bfbfbf}.irs-from,.irs-single,.irs-to{color:#fff;font-size:10px;line-height:1.333;text-shadow:none;padding:1px 5px;background:rgba(0,0,0,.4);border-radius:0}.lt-ie9 .irs-from,.lt-ie9 .irs-single,.lt-ie9 .irs-to{background:#999}.irs-grid-pol{background:#99a4ac}.irs-grid-text{color:#99a4ac}.irs-diapason{background:#3276b1}article.sortable-grid{min-height:30px}.jarviswidget{margin:0 0 30px;position:relative;-moz-border-radius:0;-khtml-border-radius:0;-webkit-border-radius:0;border-radius:0;padding:0}.widget-content-padding{padding:20px}.widget-content-padding .well{margin-bottom:0}.jarviswidget>header{height:34px;padding:0;line-height:40px}.ui-sortable .jarviswidget-sortable>header{cursor:move;-moz-border-radius:0;-khtml-border-radius:0;-webkit-border-radius:0;border-radius:0;line-height:normal;box-shadow:inset 0 -2px 0 rgba(0,0,0,.05);-moz-box-shadow:inset 0 -2px 0 rgba(0,0,0,.05);-webkit-box-shadow:inset 0 -2px 0 rgba(0,0,0,.05)}.jarviswidget>header>.widget-icon{display:block;width:30px;height:32px;position:relative;float:left;font-size:111%;line-height:32px;text-align:center;margin-right:-10px}.ui-sortable .jarviswidget-sortable.jarviswidget-collapsed>header{-moz-border-radius:0;-khtml-border-radius:0;-webkit-border-radius:0;border-radius:0}.jarviswidget>header h2{height:100%;width:auto;display:inline-block;font-size:14px;position:relative;margin:0;line-height:34px;font-weight:400;letter-spacing:0}.jarviswidget>header>h2{margin-left:10px;float:left}.jarviswidget>header>:first-child.widget-icon{margin-left:0}.jarviswidget>header .jarviswidget-icon{width:16px;height:16px;float:left;margin:12px 10px 0 0;display:block;zoom:1;z-index:4000}.jarviswidget-ctrls{width:auto;float:right;padding:0;margin:0}.jarviswidget-ctrls .button-icon{min-width:30px;height:32px;float:left;position:relative;font-family:Arial,Helvetica,sans-serif;border-left:1px solid rgba(0,0,0,.09)}.jarviswidget-ctrls .button-icon:hover{background-color:rgba(0,0,0,.05)}.jarviswidget-loader{width:32px;height:32px;margin:0;float:right;background-repeat:no-repeat;background-position:center center;display:none;text-align:center;line-height:32px;font-size:111%}.jarviswidget>div{float:left;width:100%;position:relative;font-size:13px;-moz-border-radius:0;-khtml-border-radius:0;-webkit-border-radius:0;border-radius:0;margin:0;border-width:1px 1px 2px;border-style:solid;border-top:none;border-right-color:#CCC!important;border-bottom-color:#CCC!important;border-left-color:#CCC!important;padding:13px 13px 0;overflow:visible}.jarviswidget .widget-body{min-height:100px;position:relative;padding-bottom:13px}.jarviswidget .widget-body.widget-hide-overflow{overflow:hidden}.widget-toolbar.no-border{border-left:none}.widget-body.no-padding{margin:-13px -13px 0}.jarviswidget.well.transparent .widget-body.no-padding{margin:0!important}.widget-body>table{margin-bottom:0}.widget-body.no-padding .alert{margin:0 0 10px;padding:10px;box-shadow:none!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;border-width:0 0 1px!important;border-radius:0!important;-webkit-border-radius:0!important;-moz-border-radius:0!important}.no-padding .md-editor,.widget-body.no-padding .cke_chrome{border:none}.widget-toolbar>.smart-form{margin-top:2px}.widget-toolbar>.smart-form .toggle:last-child{font-size:12px;line-height:29px}.widget-toolbar>.smart-form .checkbox input+i,.widget-toolbar>.smart-form .radio input+i,.widget-toolbar>.smart-form .toggle input+i{border-width:1px;border-color:#C7C7C7!important;margin-top:1px;box-shadow:0 1px 1px #FFF,0 1px 1px #858585 inset;-webkit-box-shadow:0 1px 1px #FFF,0 1px 1px #858585 inset;-moz-box-shadow:0 1px 1px #FFF,0 1px 1px #858585 inset}.jarviswidget.well{margin:0 0 30px}.jarviswidget.well>div{border:none!important;box-shadow:none!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important}.jarviswidget.well header{display:none}.widget-footer{display:block;min-height:32px;vertical-align:middle;position:relative;background-color:#F8F7F7;padding:5px;border-top:1px solid #E4E4E4;text-align:right;margin:0 -13px -13px}.no-padding .widget-footer{margin:0}.widget-footer.smart-form>label{margin-top:4px;display:block}.jarviswidget-editbox{display:none;padding:10px}.jarviswidget-timestamp{font-size:12px;color:#868686;font-style:italic;margin:10px 0 0}.jarviswidget-placeholder{-moz-border-radius:0;-khtml-border-radius:0;-webkit-border-radius:0;border-radius:0;margin-bottom:28px;padding:0;-webkit-box-sizing:border-box;-khtml-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}body.nooverflow{overflow:hidden;position:fixed;width:100%}#jarviswidget-fullscreen-mode{width:100%;height:100%;position:fixed;top:0;left:0;z-index:99999}#jarviswidget-fullscreen-mode .jarviswidget{margin:0;-moz-border-radius:0;-khtml-border-radius:0;-webkit-border-radius:0;border-radius:0}#jarviswidget-fullscreen-mode .jarviswidget>div{overflow-y:scroll;-moz-border-radius:0;-khtml-border-radius:0;-webkit-border-radius:0;border-radius:0}#jarviswidget-fullscreen-mode>div>header{cursor:default}.smart-form.widget-body-toolbar,.widget-body-toolbar{display:block;padding:8px 10px;margin:-13px -13px 13px;min-height:42px;border-bottom:1px solid #ccc;background:#fafafa}.no-padding .smart-form.widget-body-toolbar,.no-padding .widget-body-toolbar,.no-padding.widget-body-toolbar{display:block;margin:0}.smart-form .widget-body-toolbar .inline-group,.widget-body-toolbar.smart-form .inline-group{float:left;margin-top:4px}.widget-body-toolbar .btn{vertical-align:middle}.widget-body-toolbar .btn-xs{margin-top:5px}.widget-body-ajax-loading::before{content:url(../img/ajax-loader.gif);padding-top:18%;text-align:center;font-weight:700;font-size:16px;color:#fff;display:block;background:rgba(255,255,255,.4);height:100%;z-index:1;width:100%;position:absolute}.widget-body-ajax-loading:hover{cursor:wait!important}.jarviswidget>header{color:#333;border:1px solid #C2C2C2;background:#fafafa}.jarviswidget>div{background-color:#fff!important}.jarviswidget-editbox{border-bottom:1px solid #B1B1B1;background-color:#fff;margin:-13px -13px 13px}.no-padding .jarviswidget-editbox{margin:0 0 10px}.jarviswidget-placeholder{background-color:#FFC;border:1px dashed #A7A7A7}.jarviswidget-remove-colors{color:#333!important;padding:0!important;background:none!important}.jarviswidget-color-magenta>header{background:#6E3671;color:#FFF}.jarviswidget-color-magenta .nav-tabs li:not(.active) a,.jarviswidget-color-magenta>header>.jarviswidget-ctrls a{color:#fff!important}.jarviswidget-color-magenta .nav-tabs li a:hover{color:#333!important}.jarviswidget-color-magenta>header{border-color:#6E3671!important}.jarviswidget-color-pink>header{background:#AC5287;color:#FFF}.jarviswidget-color-pink .nav-tabs li:not(.active) a,.jarviswidget-color-pink>header>.jarviswidget-ctrls a{color:#fff!important}.jarviswidget-color-pink .nav-tabs li a:hover{color:#333!important}.jarviswidget-color-pink>header{border-color:#AC5287!important}.jarviswidget-color-pinkDark>header{background:#A8829F;color:#FFF}.jarviswidget-color-pinkDark .nav-tabs li:not(.active) a,.jarviswidget-color-pinkDark>header>.jarviswidget-ctrls a{color:#fff!important}.jarviswidget-color-pinkDark .nav-tabs li a:hover{color:#333!important}.jarviswidget-color-pinkDark>header{border-color:#A8829F!important}.jarviswidget-color-yellow>header{background:#B09B5B;color:#FFF}.jarviswidget-color-yellow .nav-tabs li:not(.active) a,.jarviswidget-color-yellow>header>.jarviswidget-ctrls a{color:#fff!important}.jarviswidget-color-yellow .nav-tabs li a:hover{color:#333!important}.jarviswidget-color-yellow>header{border-color:#B09B5B!important}.jarviswidget-color-orange>header{background:#C79121;color:#FFF}.jarviswidget-color-orange .nav-tabs li:not(.active) a,.jarviswidget-color-orange>header>.jarviswidget-ctrls a{color:#fff!important}.jarviswidget-color-orange .nav-tabs li a:hover{color:#333!important}.jarviswidget-color-orange>header{border-color:#C79121!important}.jarviswidget-color-orangeDark>header{background:#A57225;color:#FFF}.jarviswidget-color-orangeDark .nav-tabs li:not(.active) a,.jarviswidget-color-orangeDark>header>.jarviswidget-ctrls a{color:#fff!important}.jarviswidget-color-orangeDark .nav-tabs li a:hover{color:#333!important}.jarviswidget-color-orangeDark>header{border-color:#A57225!important}.jarviswidget-color-darken>header{background:#404040;color:#FFF}.jarviswidget-color-darken>.nav-tabs>li:not(.active)>a,.jarviswidget-color-darken>header>.jarviswidget-ctrls a{color:#fff!important}.jarviswidget-color-darken .nav-tabs li a:hover{color:#333!important}.jarviswidget-color-darken>header{border-color:#404040!important}.jarviswidget-color-purple>header{background:#65596B;color:#FFF}.jarviswidget-color-purple .nav-tabs li:not(.active) a,.jarviswidget-color-purple>header>.jarviswidget-ctrls a{color:#fff!important}.jarviswidget-color-purple .nav-tabs li a:hover{color:#333!important}.jarviswidget-color-purple>header{border-color:#65596B!important}.jarviswidget-color-teal>header{background:#568A89;color:#FFF}.jarviswidget-color-teal .nav-tabs li:not(.active) a,.jarviswidget-color-teal>header>.jarviswidget-ctrls a{color:#fff!important}.jarviswidget-color-teal .nav-tabs li a:hover{color:#333!important}.jarviswidget-color-teal>header{border-color:#568A89!important}.jarviswidget-color-blueDark>header{background:#4C4F53;color:#FFF}.jarviswidget-color-blueDark .nav-tabs li:not(.active) a,.jarviswidget-color-blueDark>header>.jarviswidget-ctrls a{color:#fff!important}.jarviswidget-color-blueDark .nav-tabs li a:hover{color:#333!important}.jarviswidget-color-blueDark>header{border-color:#4C4F53!important}.jarviswidget-color-blue>header{background:#60747C;color:#FFF}.jarviswidget-color-blue .nav-tabs li:not(.active) a,.jarviswidget-color-blue>header>.jarviswidget-ctrls a{color:#fff!important}.jarviswidget-color-blue .nav-tabs li a:hover{color:#333!important}.jarviswidget-color-blue>header{border-color:#60747C!important}.jarviswidget-color-blueLight>header{background:#CCDADF;color:#2b363c}.jarviswidget-color-blueLight .nav-tabs li a:hover,.jarviswidget-color-blueLight .nav-tabs li:not(.active) a,.jarviswidget-color-blueLight>header>.jarviswidget-ctrls a{color:#2b363c!important}.jarviswidget-color-blueLight>header{border-color:#92A2A8!important}.jarviswidget-color-red>header{background:#931313;color:#FFF}.jarviswidget-color-red .nav-tabs li:not(.active) a,.jarviswidget-color-red>header>.jarviswidget-ctrls a{color:#fff!important}.jarviswidget-color-red .nav-tabs li a:hover{color:#333!important}.jarviswidget-color-red>header{border-color:#931313!important}.jarviswidget-color-redLight>header{background:#A65858;color:#FFF}.jarviswidget-color-redLight .nav-tabs li:not(.active) a,.jarviswidget-color-redLight>header>.jarviswidget-ctrls a{color:#fff!important}.jarviswidget-color-redLight .nav-tabs li a:hover{color:#333!important}.jarviswidget-color-redLight>header{border-color:#A65858!important}.jarviswidget-color-white>header{background:#fff;color:#838383}.jarviswidget-color-white .nav-tabs li a:hover,.jarviswidget-color-white .nav-tabs li:not(.active) a,.jarviswidget-color-white>header>.jarviswidget-ctrls a{color:#838383!important}.jarviswidget-color-white>header{border-color:#C8C8C8!important}.jarviswidget-color-greenDark>header{background:#496949;color:#FFF}.jarviswidget-color-greenDark .nav-tabs li:not(.active) a,.jarviswidget-color-greenDark>header>.jarviswidget-ctrls a{color:#fff!important}.jarviswidget-color-greenDark .nav-tabs li a:hover{color:#333!important}.jarviswidget-color-greenDark>header{border-color:#638167!important}.jarviswidget-color-green>header{background:#356E35;color:#FFF}.jarviswidget-color-green .nav-tabs li:not(.active) a,.jarviswidget-color-green>header>.jarviswidget-ctrls a{color:#fff!important}.jarviswidget-color-green .nav-tabs li a:hover{color:#333!important}.jarviswidget-color-green>header{border-color:#638167!important}.jarviswidget-color-greenLight>header{background:#71843F;color:#FFF}.jarviswidget-color-greenLight .nav-tabs li:not(.active) a,.jarviswidget-color-greenLight>header>.jarviswidget-ctrls a{color:#fff!important}.jarviswidget-color-greenLight .nav-tabs li a:hover{color:#333!important}.jarviswidget-color-greenLight>header{border-color:#638167!important}.color-select{list-style:none;margin:0;padding:4px;min-width:166px;max-width:156px;right:-3px}.color-select li{display:block;margin:2px;float:left}.color-box,.color-select li span{display:block;width:22px;height:22px;padding:0;background:#333;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;border:1px solid rgba(0,0,0,.1);cursor:pointer}.color-select li span:hover{border:3px solid rgba(0,0,0,.2)}.color-box{position:relative;vertical-align:middle;border:1px solid rgba(255,255,255,.3)!important;outline:1px solid rgba(0,0,0,.1);background:rgba(255,255,255,.3)!important}.color-box:hover,.open .color-box{outline:1px solid rgba(0,0,0,.1)!important}.color-box:hover{-webkit-transform:scale(1.07);-moz-transform:scale(1.07)}.color-box:active{top:1px;left:1px}.widget-toolbar>.color-box{margin-top:7px;width:18px;height:18px;outline:1px solid rgba(0,0,0,.2)}.widget-toolbar>.color-box:active,.widget-toolbar>.color-box:focus,.widget-toolbar>.color-box:hover{outline:1px solid rgba(0,0,0,.25)!important}.widget-toolbar .dropdown-menu.color-select{right:-1px}.jarviswidget-ctrls a{text-decoration:none;font-size:14px;text-align:center;display:inline-block;line-height:32px;padding:0;margin:0;color:#333}.rtl .jarviswidget>header{padding:0 7px 0 0}.rtl .jarviswidget>header h2{float:right;text-align:right}.rtl .jarviswidget>header .jarviswidget-icon{float:right;margin:12px 0 0 7px}.rtl .jarviswidget-ctrls{float:left;padding:10px 0 0 3px;margin:0}.rtl .jarviswidget-ctrls .button-icon{margin:0 0 5px 5px}.rtl .jarviswidget-loader{float:left}.clearfix:after,.clearfix:before,.inner-spacer:after,.inner-spacer:before,.jarviswidget-editbox:after,.jarviswidget-editbox:before,.jarviswidget:after,.jarviswidget:before,.jarviswidget>div:after,.jarviswidget>div:before{content:"\0020";display:block;height:0;overflow:hidden;font-size:0;line-height:0;visibility:hidden}.clearfix:after,.inner-spacer:after,.jarviswidget-editbox:after,.jarviswidget:after,.jarviswidget>div:after{clear:both}.clearfix,.inner-spacer:after,.jarviswidget,.jarviswidget-editbox,.jarviswidget>div{zoom:1}.widget-toolbar{display:inline-block;float:right;width:auto;height:32px;line-height:32px;position:relative;border-left:1px solid rgba(0,0,0,.09);cursor:pointer;padding:0 8px;text-align:center}.widget-toolbar>:first-child{text-align:left}.jarviswidget header .nav-tabs{border-bottom-color:transparent}.jarviswidget header .nav-tabs>li>a{border-radius:0;border:none;padding:7px 15px 6px}.jarviswidget header .nav-tabs>li.active>a,.jarviswidget header .nav-tabs>li.active>a:focus,.jarviswidget header .nav-tabs>li.active>a:hover{color:#555;background-color:#FFF;border:1px solid #C2C2C2;border-bottom-color:transparent;border-top:none;cursor:default}.jarviswidget header:first-child .nav-tabs{float:left}.jarviswidget header:first-child .nav-tabs li{padding-left:0}.jarviswidget header:first-child .nav-tabs li a{color:#333}.jarviswidget header:first-child .nav-tabs.pull-right li:last-child a{margin-right:0!important;border-right:none!important}.jarviswidget header .nav-pills{margin:3px}.jarviswidget header .nav-pills>li>a{padding:3px 5px 4px}.widget-toolbar .btn-group{margin-top:-3px}.widget-toolbar>.btn{margin-top:-3px;font-size:12px!important;padding:1px 8px!important}.widget-toolbar .smart-form label.checkbox,.widget-toolbar .smart-form label.radio{line-height:29px}.widget-toolbar>.label{vertical-align:middle;margin-top:-3px;display:inline-block;text-align:center;font-size:12px;padding:4px 7px}.widget-toolbar>.badge{padding:5px;font-size:14px;border-radius:50%;font-weight:400;min-width:24px;text-align:center!important}.widget-toolbar .progress{width:130px;margin:7px 0 0;height:18px!important;font-size:12px;box-shadow:0 1px 0 rgba(0,0,0,0),0 0 0 1px #d1d1d1 inset;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0),0 0 0 1px #d1d1d1 inset;-moz-box-shadow:0 1px 0 transparent,0 0 0 1px #d1d1d1 inset}.widget-toolbar .progress-bar{font-size:12px}.widget-toolbar .pagination{margin:4px 0}.widget-toolbar .pagination>li>a{padding:2px 7px}.widget-toolbar .widget-text-input{max-width:220px}.widget-toolbar input[type=text]{height:28px!important;margin-top:2px}.widget-toolbar .smart-form .icon-append,.widget-toolbar .smart-form .icon-prepend,.widget-toolbar.smart-form .icon-append,.widget-toolbar.smart-form .icon-prepend{top:3px!important}.jcrop-holder{direction:ltr;text-align:left}.jcrop-hline,.jcrop-vline{background:#fff url(../img/jcrop/Jcrop.gif);font-size:0;position:absolute}.jcrop-vline{height:100%;width:1px!important}.jcrop-vline.right{right:0}.jcrop-hline{height:1px!important;width:100%}.jcrop-hline.bottom{bottom:0}.jcrop-tracker{height:100%;width:100%;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none}.jcrop-handle{background-color:#333;border:1px #eee solid;width:7px;height:7px;font-size:1px}.jcrop-handle.ord-n{left:50%;margin-left:-4px;margin-top:-4px;top:0}.jcrop-handle.ord-s{bottom:0;left:50%;margin-bottom:-4px;margin-left:-4px}.jcrop-handle.ord-e{margin-right:-4px;margin-top:-4px;right:0;top:50%}.jcrop-handle.ord-w{left:0;margin-left:-4px;margin-top:-4px;top:50%}.jcrop-handle.ord-nw{left:0;margin-left:-4px;margin-top:-4px;top:0}.jcrop-handle.ord-ne{margin-right:-4px;margin-top:-4px;right:0;top:0}.jcrop-handle.ord-se{bottom:0;margin-bottom:-4px;margin-right:-4px;right:0}.jcrop-handle.ord-sw{bottom:0;left:0;margin-bottom:-4px;margin-left:-4px}.jcrop-dragbar.ord-n,.jcrop-dragbar.ord-s{height:7px;width:100%}.jcrop-dragbar.ord-e,.jcrop-dragbar.ord-w{height:100%;width:7px}.jcrop-dragbar.ord-n{margin-top:-4px}.jcrop-dragbar.ord-s{bottom:0;margin-bottom:-4px}.jcrop-dragbar.ord-e{margin-right:-4px;right:0}.jcrop-dragbar.ord-w{margin-left:-4px}.jcrop-light .jcrop-hline,.jcrop-light .jcrop-vline{background:#fff;filter:alpha(opacity=70)!important;opacity:.7!important}.jcrop-light .jcrop-handle{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#000;border-color:#fff;border-radius:3px}.jcrop-dark .jcrop-hline,.jcrop-dark .jcrop-vline{background:#000;filter:alpha(opacity=70)!important;opacity:.7!important}.jcrop-dark .jcrop-handle{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#fff;border-color:#000;border-radius:3px}.solid-line .jcrop-hline,.solid-line .jcrop-vline{background:#fff}.jcrop-holder{display:inline-block;float:left;margin-bottom:20px}.modal .jcrop-holder{display:block;float:none!important;margin:0!important}.jcrop-holder img,img.jcrop-preview{max-width:none}.ui-jqgrid .ui-jqgrid-view{position:relative;left:0;top:0;padding:0;font-size:11px}.ui-jqgrid .ui-jqgrid-titlebar{padding:12px 13px;position:relative;font-size:12px;border-left:0 none;border-right:0 none;border-top:0 none;background-color:#f3f3f3;background-image:-moz-linear-gradient(top,#f3f3f3,#e2e2e2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f3f3f3),to(#e2e2e2));background-image:-webkit-linear-gradient(top,#f3f3f3,#e2e2e2);background-image:-o-linear-gradient(top,#f3f3f3,#e2e2e2);background-image:linear-gradient(to bottom,#f3f3f3,#e2e2e2);background-repeat:repeat-x}.ui-jqgrid .ui-jqgrid-caption{text-align:left}.ui-jqgrid .ui-jqgrid-title{font-size:15px;color:#333}.ui-jqgrid .ui-jqgrid-titlebar-close{position:absolute;top:50%;width:19px;margin:-10px 0 0 0;padding:1px;right:10px!important;cursor:pointer}.ui-jqgrid .ui-jqgrid-titlebar-close span{display:block;margin:1px}.ui-jqgrid .ui-jqgrid-titlebar-close:hover{padding:0}.ui-jqgrid .ui-jqgrid-hdiv{position:relative;margin:0;padding:0;overflow-x:hidden;border-left:0 none!important;border-top:0 none!important;border-right:0 none!important}.ui-jqgrid .ui-jqgrid-hbox{float:left;padding-right:20px}.ui-jqgrid .ui-jqgrid-htable{table-layout:fixed;margin:0}.ui-jqgrid .ui-jqgrid-htable th{padding:0 2px}.ui-jqgrid .ui-jqgrid-htable th div{overflow:hidden;position:relative}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{background:0 0}tr.ui-jqgrid-labels{background-color:#eee;background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#fafafa));background-image:-webkit-linear-gradient(top,#f2f2f2 0,#fafafa 100%);background-image:-moz-linear-gradient(top,#f2f2f2 0,#fafafa 100%);background-image:-ms-linear-gradient(top,#f2f2f2 0,#fafafa 100%);background-image:-o-linear-gradient(top,#f2f2f2 0,#fafafa 100%);background-image:-linear-gradient(top,#f2f2f2 0,#fafafa 100%);font-size:12px}.ui-jqgrid .ui-jqgrid-htable th.ui-th-column,.ui-th-column{overflow:hidden;white-space:nowrap;text-align:center;border-top:0 none;border-bottom:0 none}.ui-jqgrid .ui-jqgrid-htable th.ui-th-ltr,.ui-th-ltr{border-left:0 none}.ui-jqgrid .ui-jqgrid-htable th.ui-th-rtl,.ui-th-rtl{border-right:0 none}.ui-first-th-ltr{border-right:1px solid}.ui-first-th-rtl{border-left:1px solid}.ui-jqgrid .ui-th-div-ie{white-space:nowrap;zoom:1}.ui-jqgrid .ui-jqgrid-resize{height:20px!important;position:relative;cursor:e-resize;display:inline;overflow:hidden}.ui-jqgrid .ui-grid-ico-sort{overflow:hidden;position:absolute;display:inline;cursor:pointer!important;right:0}.ui-jqgrid .ui-icon-asc{margin-top:-4px;right:-1px}.ui-jqgrid .ui-icon-desc{margin-top:3px;height:12px}.ui-jqgrid .ui-i-asc{margin-top:0;height:16px}.ui-jqgrid .ui-i-desc{margin-top:0;margin-left:13px;height:16px}.ui-jqgrid .ui-jqgrid-sortable{cursor:pointer}.ui-jqgrid tr.ui-search-toolbar th{border-top-width:1px!important;border-top-color:inherit!important;border-top-style:ridge!important}tr.ui-search-toolbar input,tr.ui-search-toolbar select{margin:1px 0 0}.ui-jqgrid .ui-jqgrid-bdiv{position:relative;margin:0;padding:0;overflow:auto;text-align:left}.ui-jqgrid .ui-jqgrid-btable{table-layout:fixed;margin:0;outline-style:none}.ui-jqgrid tr.jqgroup,.ui-jqgrid tr.jqgrow{outline-style:none}.ui-jqgrid tr.jqgrow td{font-weight:400;overflow:hidden;white-space:pre}.ui-jqgrid tr.jqgfirstrow td{padding:0 2px;border-right-width:1px;border-right-style:solid}.ui-jqgrid tr.jqgroup td{font-weight:400;overflow:hidden;white-space:pre}.ui-jqgrid tr.jqfoot td{font-weight:700;overflow:hidden;white-space:pre}.ui-jqgrid tr.ui-row-ltr td{text-align:left}.ui-jqgrid tr.ui-row-rtl td{text-align:right}.ui-jqgrid td.jqgrid-rownum{padding:0 2px;margin:0;border:0 none}.ui-jqgrid .ui-jqgrid-resize-mark{width:2px;left:0;background-color:#777;cursor:e-resize;cursor:col-resize;position:absolute;top:0;height:100px;overflow:hidden;display:none;border:0 none;z-index:99999}.ui-jqgrid .ui-jqgrid-sdiv{position:relative;margin:0;padding:0;overflow:hidden;border-left:0 none!important;border-top:0 none!important;border-right:0 none!important}.ui-jqgrid .ui-jqgrid-ftable{table-layout:fixed;margin-bottom:0}.ui-jqgrid tr.footrow td{font-weight:700;overflow:hidden;white-space:nowrap;height:21px;padding:0 2px}.ui-jqgrid tr.footrow-ltr td{text-align:left;border-right-width:1px;border-right-color:inherit;border-right-style:solid}.ui-jqgrid tr.footrow-rtl td{text-align:right;border-left-width:1px;border-left-color:inherit;border-left-style:solid}.ui-jqgrid .ui-jqgrid-pager{border-left:0 none!important;border-right:0 none!important;border-bottom:0 none!important;margin:0!important;position:relative;white-space:nowrap;overflow:hidden;border-top:1px solid #D3D3D3}.ui-jqgrid .ui-pager-control{position:relative}.ui-jqgrid .ui-pg-table{position:relative;padding-bottom:2px;width:auto;margin:0}.ui-jqgrid .ui-pg-table td{font-weight:400;vertical-align:middle;padding:1px}.ui-jqgrid .ui-pg-button span{display:block;margin:1px;float:left}.ui-jqgrid .ui-state-disabled:hover{padding:1px}.ui-jqgrid .ui-pg-input{margin:0}.ui-jqgrid .ui-pg-selbox{line-height:18px;display:block;margin:0}.ui-jqgrid .ui-separator{height:18px;border-left:1px solid #ccc;border-right:1px solid #ccc;margin:1px;float:right}.ui-jqgrid .ui-paging-info{font-weight:400;height:19px;margin-top:3px;margin-right:4px}.ui-jqgrid .ui-jqgrid-pager .ui-pg-div{padding:1px 0;float:left;position:relative}.ui-jqgrid .ui-jqgrid-pager .ui-pg-button{cursor:pointer}.ui-jqgrid .ui-jqgrid-pager .ui-pg-div span.ui-icon{float:left;margin:0 2px}.ui-jqgrid td input,.ui-jqgrid td select .ui-jqgrid td textarea{margin:0}.ui-jqgrid td textarea{width:auto;height:auto}.ui-jqgrid .ui-jqgrid-toppager{border-left:0 none!important;border-right:0 none!important;border-top:0 none!important;margin:0!important;padding:0!important;position:relative;height:25px!important;white-space:nowrap;overflow:hidden}.ui-jqgrid .ui-jqgrid-toppager .ui-pg-div{padding:1px 0;float:left;position:relative}.ui-jqgrid .ui-jqgrid-toppager .ui-pg-button{cursor:pointer}.ui-jqgrid .ui-jqgrid-toppager .ui-pg-div span.ui-icon{float:left;margin:0 2px}.ui-jqgrid .ui-jqgrid-btable .ui-sgcollapsed span{display:block}.ui-jqgrid .ui-subgrid{margin:0;padding:0;width:100%}.ui-jqgrid .ui-subgrid table{table-layout:fixed}.ui-jqgrid .ui-subgrid tr.ui-subtblcell td{height:18px;border-right-width:1px;border-right-color:inherit;border-right-style:solid;border-bottom-width:1px;border-bottom-color:inherit;border-bottom-style:solid}.ui-jqgrid .ui-subgrid td.subgrid-data{border-top:0 none!important}.ui-jqgrid .ui-subgrid td.subgrid-cell{border-width:0 0 1px}.ui-jqgrid .ui-th-subgrid{height:20px}.ui-jqgrid .loading{position:absolute;top:45%;left:45%;width:auto;z-index:101;padding:6px;margin:5px;text-align:center;font-weight:700;display:none;border-width:2px!important;font-size:11px}.ui-jqgrid .jqgrid-overlay{display:none;z-index:100}* .jqgrid-overlay iframe{position:absolute;top:0;left:0;z-index:-1}.ui-jqgrid .ui-userdata{border-left:0 none;border-right:0 none;height:21px;overflow:hidden}.ui-jqdialog{display:none;width:300px;position:absolute;padding:.2em;font-size:11px;overflow:visible}.ui-jqdialog .ui-jqdialog-titlebar{padding:.3em .2em;position:relative}.ui-jqdialog .ui-jqdialog-title{margin:.1em 0 .2em}.ui-jqdialog .ui-jqdialog-titlebar-close{position:absolute;top:50%;width:19px;margin:-10px 0 0 0;padding:1px;height:18px;cursor:pointer}.ui-jqdialog .ui-jqdialog-titlebar-close span{display:block;margin:1px}.ui-jqdialog .ui-jqdialog-titlebar-close:focus,.ui-jqdialog .ui-jqdialog-titlebar-close:hover{padding:0}.ui-jqdialog .ui-jqdialog-content,.ui-jqdialog-content{border:0;background:0 0;height:auto}.ui-jqdialog .ui-jqconfirm{padding:.4em 1em;border-width:3px;position:absolute;bottom:10px;right:10px;overflow:visible;display:none;height:80px;width:220px;text-align:center}.ui-jqdialog>.ui-resizable-se,.ui-jqgrid>.ui-resizable-se{bottom:-3px;right:-3px}.ui-jqdialog-content .FormGrid{margin:0}.ui-jqdialog-content .DelTable,.ui-jqdialog-content .EditTable{width:100%;margin-bottom:0}.EditTable td input,.EditTable td select,.EditTable td textarea{margin:0}.EditTable td textarea{width:auto;height:auto}.ui-jqdialog-content td.EditButton{text-align:right;border-top:0 none;border-left:0 none;border-right:0 none;padding-bottom:5px;padding-top:5px}.ui-jqdialog-content td.navButton{text-align:center;border-left:0 none;border-top:0 none;border-right:0 none;padding-bottom:5px;padding-top:5px}.ui-jqdialog-content input.FormElement,.ui-jqdialog-content select.FormElement{padding:.3em}.ui-jqdialog-content .data-line{padding-top:.1em;border:0 none}.ui-jqdialog-content .CaptionTD{vertical-align:middle;border:0 none;padding:2px;white-space:nowrap}.ui-jqdialog-content .DataTD{padding:2px;border:0 none;vertical-align:top}.ui-jqdialog-content .form-view-data{white-space:pre}.fm-button{display:inline-block;margin:0 4px 0 0;padding:.4em .5em;text-decoration:none!important;cursor:pointer;position:relative;text-align:center;zoom:1}.fm-button-icon-left{padding-left:1.9em}.fm-button-icon-right{padding-right:1.9em}.fm-button-icon-left .ui-icon{right:auto;left:.2em;margin-left:0;position:absolute;top:50%;margin-top:-8px}.fm-button-icon-right .ui-icon{left:auto;right:.2em;margin-left:0;position:absolute;top:50%;margin-top:-8px}#nData,#pData{float:left;margin:3px;padding:0;width:15px}.ui-jqgrid .selected-row,div.ui-jqgrid .selected-row td{font-style:normal;border-left:0 none}.ui-inline-cancel.ui-state-hover span,.ui-inline-del.ui-state-hover span,.ui-inline-edit.ui-state-hover span,.ui-inline-save.ui-state-hover span{margin:-1px}.ui-jqgrid .tree-wrap{float:left;position:relative;height:18px;white-space:nowrap;overflow:hidden}.ui-jqgrid .tree-leaf,.ui-jqgrid .tree-minus,.ui-jqgrid .tree-plus{position:absolute;height:18px;width:18px;overflow:hidden}.ui-jqgrid .treeclick{cursor:pointer}* iframe.jqm{position:absolute;top:0;left:0;z-index:-1}.ui-jqgrid-dnd tr td{border-right-width:1px;border-right-color:inherit;border-right-style:solid;height:20px}.ui-jqgrid .ui-jqgrid-caption-rtl{text-align:right}.ui-jqgrid .ui-jqgrid-hbox-rtl{float:right;padding-left:20px}.ui-jqgrid .ui-jqgrid-resize-ltr{float:right;margin:-2px -2px -2px 0}.ui-jqgrid .ui-jqgrid-resize-rtl{float:left;margin:-2px 0 -1px -3px}.ui-jqgrid .ui-sort-rtl{left:0}.ui-jqgrid .tree-wrap-ltr{float:left}.ui-jqgrid .tree-wrap-rtl{float:right}.ui-jqgrid .ui-ellipsis{-moz-text-overflow:ellipsis;text-overflow:ellipsis}.ui-search-menu{position:absolute;padding:2px 5px}.ui-jqgrid .ui-search-table{padding:0;border:0 none;height:20px;width:100%}.ui-jqgrid .ui-search-table .ui-search-oper{width:20px}a.clearsearchclass,a.g-menu-item,a.soptclass{cursor:pointer}.ui-jqgrid .ui-search-table .ui-search-input>input,.ui-jqgrid .ui-search-table .ui-search-input>select{display:block;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.ui-jqgrid .ui-jqgrid-view button,.ui-jqgrid .ui-jqgrid-view input,.ui-jqgrid .ui-jqgrid-view select,.ui-jqgrid .ui-jqgrid-view textarea{font-size:11px}.ui-jqgrid{position:relative;border:1px solid #ccc!important;margin:0;overflow:hidden}.ui-jqgrid table,.ui-jqgrid tr.ui-row-ltr,.ui-jqgrid tr.ui-row-ltr td{border-left:none!important}.ui-jqgrid tr.ui-row-ltr td{padding:6px 4px;font-size:13px!important}.ui-jqgrid .ui-jqgrid-titlebar{border-bottom:1px solid #BEBEBE}.ui-jqgrid .ui-jqgrid-view input{margin:0!important}.ui-jqgrid .ui-jqgrid-htable th{background-color:#eee;background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#fafafa));background-image:-webkit-linear-gradient(top,#f2f2f2 0,#fafafa 100%);background-image:-moz-linear-gradient(top,#f2f2f2 0,#fafafa 100%);background-image:-ms-linear-gradient(top,#f2f2f2 0,#fafafa 100%);background-image:-o-linear-gradient(top,#f2f2f2 0,#fafafa 100%);background-image:-linear-gradient(top,#f2f2f2 0,#fafafa 100%)}.ui-jqgrid .ui-jqgrid-htable th div{padding-right:0;padding-top:5px;padding-bottom:5px;font-weight:700;background:0 0}.ui-jqgrid .ui-jqgrid-pager{font-size:12px;height:auto;padding:4px!important}.ui-jqgrid tr.jqgrow{height:30px;font-size:12px}.jqgrid-new-row{color:#1B641B!important;background-color:#A8E798!important;border-color:#7E9E64!important}.ui-jqdialog-content .DataTD{padding-bottom:5px}.ui-jqdialog-content .DataTD:last-child{padding-bottom:10px}.ui-jqgrid .ui-jqgrid-bdiv{overflow-x:hidden;height:300px!important;background:#fff}.ui-jqgrid .ui-state-hover td{background:#ecf3f8!important}.ui-jqgrid .ui-pg-button{height:auto!important}.ui-jqgrid .ui-pg-input,.ui-jqgrid .ui-pg-selbox{height:auto;font-size:inherit}.ui-jqgrid .ui-state-highlight td{color:#3a87ad!important;background-color:#d9edf7!important;border-color:#bce8f1!important}.ui-jqgrid .ui-state-highlight+.ui-widget-content>td{border-top-color:#bce8f1}.select2-container{margin:0;position:relative;display:inline-block;zoom:1;*display:inline;vertical-align:middle}.select2-container,.select2-drop,.select2-search,.select2-search input{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.select2-container .select2-choice{display:block;height:32px;padding:0 0 0 8px;overflow:hidden;position:relative;border:1px solid #ccc;white-space:nowrap;line-height:32px;color:#444;text-decoration:none;background-clip:padding-box;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#fff}.select2-container.select2-drop-above .select2-choice{border-bottom-color:#ccc}.select2-container.select2-allowclear .select2-choice .select2-chosen{margin-right:42px}.select2-container .select2-choice>.select2-chosen{margin-right:26px;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.select2-container .select2-choice abbr{display:none;width:12px;height:12px;position:absolute;right:24px;top:8px;font-size:1px;text-decoration:none;border:0;cursor:pointer;outline:0}.select2-container.select2-allowclear .select2-choice abbr{display:inline-block}.select2-container .select2-choice abbr:hover{cursor:pointer}.select2-drop-mask{border:0;margin:0;padding:0;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:9998;background:#fff;filter:alpha(opacity=0)}.select2-drop{margin-top:-1px;width:100%;position:absolute;z-index:9999;top:100%;background:#fff;color:#000;border:1px solid #ccc;border-top:0;-webkit-box-shadow:0 4px 5px rgba(0,0,0,.15);box-shadow:0 4px 5px rgba(0,0,0,.15)}.select2-drop-auto-width{border-top:1px solid #ccc;width:auto}.select2-drop-auto-width .select2-search{padding-top:4px}.select2-drop.select2-drop-above{margin-bottom:0;border-top:1px solid #5D98CC;border-top-width:3px;border-bottom:0;-webkit-box-shadow:0 -4px 5px rgba(0,0,0,.15);box-shadow:0 -4px 5px rgba(0,0,0,.15)}.select2-drop-active{border:1px solid #5D98CC;border-top:none;border-bottom-width:3px}.select2-drop.select2-drop-above.select2-drop-active{border-top-width:3px}.select2-container .select2-choice .select2-arrow{display:inline-block;width:34px;height:100%;position:absolute;right:0;top:0;border-left:1px solid #ccc;background:#eee}.select2-container .select2-choice .select2-arrow b{width:100%;height:100%;display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:relative;font-size:14px}.select2-container .select2-choice .select2-arrow b:before{content:"\f107";width:100%;height:100%;text-align:center;display:block}.select2-search{display:inline-block;width:100%;min-height:26px;margin:0;padding-left:4px;padding-right:4px;position:relative;z-index:10000;white-space:nowrap}.select2-search input{width:100%;height:auto!important;min-height:29px;padding:6px 20px 5px 10px;margin:0;outline:0;font-family:sans-serif;font-size:1em;border:1px solid #aaa;-webkit-box-shadow:none;box-shadow:none;background:#fff;background:-webkit-gradient(linear,left bottom,left top,color-stop(0.85,#fff),color-stop(0.99,#eee));background:-webkit-linear-gradient(center bottom,#fff 85%,#eee 99%);background:-moz-linear-gradient(center bottom,#fff 85%,#eee 99%);background:linear-gradient(top,#fff 85%,#eee 99%)}.select2-search:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;content:"\f002";top:25%;right:10px;color:#686868!important}.select2-drop.select2-drop-above .select2-search input{margin-top:4px}.select2-drop.select2-drop-above .select2-search:before{top:34%}.select2-search input.select2-active{background:#fff url(../img/select2-spinner.gif) no-repeat 100%;background:url(../img/select2-spinner.gif) no-repeat 100%,-webkit-gradient(linear,left bottom,left top,color-stop(0.85,#fff),color-stop(0.99,#eee));background:url(../img/select2-spinner.gif) no-repeat 100%,-webkit-linear-gradient(center bottom,#fff 85%,#eee 99%);background:url(../img/select2-spinner.gif) no-repeat 100%,-moz-linear-gradient(center bottom,#fff 85%,#eee 99%);background:url(../img/select2-spinner.gif) no-repeat 100%,linear-gradient(top,#fff 85%,#eee 99%)}.select2-container-active .select2-choice,.select2-container-active .select2-choices{border:1px solid #5D98CC;outline:0}.select2-dropdown-open .select2-choice{border-bottom-color:transparent;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;border-bottom-left-radius:0;border-bottom-right-radius:0;background-color:#fff}.select2-dropdown-open.select2-drop-above .select2-choice,.select2-dropdown-open.select2-drop-above .select2-choices{border:1px solid #5D98CC;border-top-color:transparent}.select2-dropdown-open .select2-choice .select2-arrow{background:0 0;border-left:none;filter:none}.select2-dropdown-open .select2-choice .select2-arrow b{background-position:-18px 1px}.select2-results{max-height:200px;padding:0 0 0 4px;margin:4px 4px 4px 0;position:relative;overflow-x:hidden;overflow-y:auto;-webkit-tap-highlight-color:rgba(0,0,0,0)}.select2-results ul.select2-result-sub{margin:0;padding-left:0}.select2-results ul.select2-result-sub>li .select2-result-label{padding-left:20px}.select2-results ul.select2-result-sub ul.select2-result-sub>li .select2-result-label{padding-left:40px}.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub>li .select2-result-label{padding-left:60px}.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub>li .select2-result-label{padding-left:80px}.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub>li .select2-result-label{padding-left:100px}.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub>li .select2-result-label{padding-left:110px}.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub>li .select2-result-label{padding-left:120px}.select2-results li{list-style:none;display:list-item;background-image:none}.select2-results li.select2-result-with-children>.select2-result-label{font-weight:700}.select2-results .select2-result-label{padding:3px 7px 4px;margin:0;cursor:pointer;min-height:1em;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.select2-results .select2-highlighted{background:#3276b1;color:#fff}.select2-results li em{background:#feffde;font-style:normal}.select2-results .select2-highlighted em{background:0 0}.select2-results .select2-highlighted ul{background:#fff;color:#000}.select2-results .select2-no-results,.select2-results .select2-searching,.select2-results .select2-selection-limit{background:#f4f4f4;display:list-item;padding:3px 5px}.select2-no-results{padding-left:20px}.select2-no-results:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f05a";margin-right:5px}.select2-results .select2-disabled.select2-highlighted{color:#666;background:#f4f4f4;display:list-item;cursor:default}.select2-results .select2-disabled{background:#f4f4f4;display:list-item;cursor:default}.select2-results .select2-selected{display:none}.select2-more-results.select2-active{background:#f4f4f4 url(../img/select2-spinner.gif) no-repeat 100%}.select2-more-results{background:#f4f4f4;display:list-item}.select2-container.select2-container-disabled .select2-choice{background-color:#f4f4f4;background-image:none;border:1px solid #ddd;cursor:default}.select2-container.select2-container-disabled .select2-choice .select2-arrow{background-color:#f4f4f4;background-image:none;border-left:0}.select2-container.select2-container-disabled .select2-choice abbr{display:none}.select2-container-multi .select2-choices{height:auto!important;height:1%;margin:0;padding:0;position:relative;border:1px solid #ccc;cursor:text;overflow:hidden;background-color:#fff}.select2-locked{padding:3px 5px!important}.select2-container-multi .select2-choices{min-height:26px}.select2-container-multi.select2-container-active .select2-choices{border:1px solid #5D98CC;outline:0}.select2-container-multi .select2-choices li{float:left;list-style:none}.select2-container-multi .select2-choices .select2-search-field{margin:0;padding:0;white-space:nowrap}.select2-container-multi .select2-choices .select2-search-field input{padding:5px;margin:1px 0;font-family:sans-serif;font-size:100%;color:#666;outline:0;border:0;-webkit-box-shadow:none;box-shadow:none;background:transparent!important}.select2-container-multi .select2-choices .select2-search-field input.select2-active{background:#fff url(../img/select2-spinner.gif) no-repeat 100%!important}.select2-default{color:#999!important}.select2-container-multi .select2-choices .select2-search-choice{padding:1px 28px 1px 8px;margin:4px 0 3px 5px;position:relative;line-height:18px;color:#fff;cursor:default;border:1px solid #2a6395;-webkit-background-clip:padding-box;background-clip:padding-box;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#3276b1}.select2-container-multi .select2-choices .select2-search-choice .select2-chosen{cursor:default}.select2-container-multi .select2-choices .select2-search-choice-focus{opacity:.8}.select2-search-choice-close{display:block;min-width:21px;min-height:20px;position:absolute;right:3px;top:3px;margin:0;padding:0;font-size:15px;text-decoration:none!important;font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.select2-search-choice-close:before{color:#fff;content:"\f057"}.select2-container-multi .select2-search-choice-close{display:block;top:0;right:0;padding:3px 4px 3px 6px}.select2-container-multi .select2-search-choice-close:hover{background:rgba(0,0,0,.3)}.select2-container-multi.select2-container-disabled .select2-choices{background-color:#f4f4f4;background-image:none;border:1px solid #ddd;cursor:default}.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice{padding:3px 5px;border:1px solid #4a90cc;background-image:none;background-color:#86b4dd;cursor:not-allowed}.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close{display:none;background:0 0}.select2-result-selectable .select2-match,.select2-result-unselectable .select2-match{text-decoration:underline}.select2-offscreen,.select2-offscreen:focus{clip:rect(0 0 0 0)!important;width:1px!important;height:1px!important;border:0!important;margin:0!important;padding:0!important;overflow:hidden!important;position:absolute!important;outline:0!important;left:0!important;top:0!important}.select2-display-none{display:none}.select2-measure-scrollbar{position:absolute;top:-10000px;left:-10000px;width:100px;height:100px;overflow:scroll}/*! X-editable - v1.5.0 +* In-place editing with Twitter Bootstrap, jQuery UI or pure jQuery +* http://github.com/vitalets/x-editable +* Copyright (c) 2013 Vitaliy Potapov; Licensed MIT */.editableform{margin-bottom:0}.editableform .control-group{margin-bottom:0;white-space:nowrap}.editable-buttons{display:inline-block;vertical-align:top;margin-left:7px;zoom:1;*display:inline}.editable-buttons.editable-buttons-bottom{display:block;margin-top:7px;margin-left:0}.editable-input{vertical-align:top;display:inline-block;width:auto;white-space:normal;zoom:1;*display:inline}.editable-buttons .editable-cancel{margin-left:7px}.editable-buttons button.ui-button-icon-only{height:24px;width:30px}.editableform-loading{background:url(../img/loading.gif) center center no-repeat;height:25px;width:auto;min-width:25px}.editable-inline .editableform-loading{background-position:left 5px}.editable-error-block{max-width:300px;margin:5px 0 0;width:auto;white-space:normal}.editable-error-block.ui-state-error{padding:3px}.editable-error{color:red}.editableform .editable-date{padding:0;margin:0;float:left}.editable-inline .add-on .icon-th{margin-top:3px;margin-left:1px}.editable-checklist label input[type=checkbox],.editable-checklist label span{vertical-align:middle;margin:0}.editable-checklist label{white-space:nowrap}.editable-wysihtml5{width:566px;height:250px}.editable-clear{clear:both;font-size:.9em;text-decoration:none;text-align:right}.editable-clear-x{background:url(../img/clear.png) center center no-repeat;display:block;width:13px;height:13px;position:absolute;opacity:.6;z-index:100;top:50%;right:6px;margin-top:-6px}.editable-clear-x:hover{opacity:1}.editable-pre-wrapped{white-space:pre-wrap}.editable-container.editable-popup{max-width:none!important}.editable-container.popover{width:auto}.editable-container.editable-inline{display:inline-block;vertical-align:middle;width:auto;zoom:1;*display:inline}.editable-container.ui-widget{font-size:inherit;z-index:9990}.editable-click,a.editable-click,a.editable-click:hover{text-decoration:none;border-bottom:dashed 1px #08c}.editable-click.editable-disabled,a.editable-click.editable-disabled,a.editable-click.editable-disabled:hover{color:#585858;cursor:default;border-bottom:none}.editable-empty,.editable-empty:focus,.editable-empty:hover{font-style:italic;color:#D14;text-decoration:none}.editable-unsaved{font-weight:700}.editable-bg-transition{-webkit-transition:background-color 1400ms ease-out;-moz-transition:background-color 1400ms ease-out;-o-transition:background-color 1400ms ease-out;-ms-transition:background-color 1400ms ease-out;transition:background-color 1400ms ease-out}.form-horizontal .editable{padding-top:5px;display:inline-block}.editable-address{display:block;margin-bottom:5px}.editable-address span{width:70px;display:inline-block}/*! + * Datepicker for Bootstrap + * + * Copyright 2012 Stefan Petre + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + */.editable-input .datepicker{top:0;left:0;padding:4px}.editable-input .datepicker:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2);position:absolute;top:-7px;left:6px}.editable-input .datepicker:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;top:-6px;left:7px}.editable-input .datepicker>div{display:none}.editable-input .datepicker table{width:100%;min-width:214px;margin:0}.editable-input .datepicker td,.editable-input .datepicker th{text-align:center;width:24px;height:20px}.editable-input .datepicker td.day:hover{background:#eee;cursor:pointer}.editable-input .datepicker td.day.disabled,.editable-input .datepicker td.new,.editable-input .datepicker td.old{color:#555}.editable-input .datepicker td.active,.editable-input .datepicker td.active:hover{background:#3276b1;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);border-radius:3px}.editable-input .datepicker td span{display:block;width:47px;height:54px;line-height:54px;float:left;margin:2px;cursor:pointer}.editable-input .datepicker td span:hover{background:#eee}.editable-input .datepicker td span.active{background:#3276b1;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);border-radius:3px}.editable-input .datepicker td span.old{color:#555}.editable-input .datepicker th.switch{width:145px}.editable-input .datepicker th.next,.editable-input .datepicker th.prev{font-size:19.5px}.editable-input .datepicker thead tr:first-child th{cursor:pointer}.editable-input .datepicker thead tr:first-child th:hover{background:#eee}.input-append.date .add-on i,.input-prepend.date .add-on i{display:block;cursor:pointer;width:16px;height:16px}.datepicker .prev i,.editable-input .datepicker .next i{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px}.editable-input .datepicker .prev i:before{content:"\f060"}.editable-input .datepicker .next i:before{content:"\f061"}.divMessageBox{width:100%;height:100%;position:fixed;top:0;left:0;background:rgba(0,0,0,.6);z-index:100000}.MessageBoxContainer{top:35%;color:#fff;position:relative;width:100%;background-color:#232323;background-color:rgba(0,0,0,.8);padding:20px}.MessageBoxMiddle{position:relative;left:20%;width:60%}.MessageBoxMiddle .MsgTitle{letter-spacing:-1px;font-size:24px;font-weight:300}.MessageBoxMiddle .pText{font-style:30px}.MessageBoxContainer input,.MessageBoxContainer select{width:50%;padding:5px}.MessageBoxButtonSection{width:100%;height:30px}.MessageBoxButtonSection button{float:right;margin-right:7px;padding-left:15px;padding-right:15px;font-size:14px;font-weight:700}.LoadingBoxContainer{top:20%;color:#fff;position:relative;width:100%;background-color:#232323}.LoadingBoxMiddle{position:relative;left:20%;width:50%;padding:10px}.LoadingBoxContainer .MsgTitle{font-size:26px}.LoadingBoxContainer .pText{font-style:30px}#LoadingPoints{position:absolute}.bigBox{position:fixed;right:10px;bottom:10px;background-color:#004d60;padding-left:10px;padding-top:10px;padding-right:10px;padding-bottom:5px;width:390px;height:150px;color:#fff;z-index:99999;box-sizing:content-box;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;border-left:5px solid rgba(0,0,0,.15);overflow:hidden}.bigBox span{font-size:17px;font-weight:300;letter-spacing:-1px;padding:5px 0!important;display:block}.bigBox p{font-size:13px;margin-top:10px}#divMiniIcons{position:fixed;width:415px;right:10px;bottom:180px;z-index:9999;float:right}.botClose{position:absolute;right:10px;height:16px;width:15px;cursor:pointer;font-size:18px;opacity:.5;display:block;top:15px}.botClose:hover{opacity:1}#divMiniIcons .cajita{text-align:center;vertical-align:middle;padding:4px 6px;color:#FFF;float:right;cursor:pointer;display:block;background-color:red;font-size:17px;margin-left:4px;margin-top:5px}#divMiniIcons .cajita:active{top:1px;left:1px;position:relative}.cajita img{width:23px;height:23px;padding-left:3px;padding-top:3px}.bigBox .bigboxicon{font-size:30px;text-align:left;position:absolute;top:120px;left:6px;z-index:0}.bigBox .bigboxnumber{width:100%;text-align:right;font-size:25px}#divSmallBoxes{position:fixed;right:0;top:0;z-index:9999}.SmallBox{position:absolute;right:5px;top:20px;width:420px;color:#fff;z-index:9999;overflow:hidden;border:1px solid transparent}.SmallBox:hover{border:1px solid #fff;cursor:pointer}.SmallBox .foto{font-size:50px;position:absolute;left:17px}.SmallBox .textoFull{width:93%;float:left;padding-left:20px}.SmallBox .textoFoto{width:78%;margin:3px 20px 3px 80px;float:left}.miniPic{position:absolute;bottom:8px;right:9px}.miniIcono{height:100%;font-size:20px}.SmallBox span{font-size:17px;font-weight:300;letter-spacing:-1px;display:block;margin:4px 0}.SmallBox p{font-size:13px;margin-top:2px}#pageslide{display:none;position:absolute;position:fixed;top:0;height:100%;z-index:999999;width:305px;padding:20px;background-color:#004d60;color:#FFF;-webkit-box-shadow:inset 0 0 5px 5px #222;-moz-shadow:inset 0 0 0 0 #222;box-shadow:inset 0 0 0 0 #222}.purehtml{color:#fff;font-size:16px}@media screen and (max-width:450px) and (max-width:767px){#divSmallBoxes{position:fixed;width:90%;right:0;top:0}.SmallBox{width:95%}.SmallBox:hover{box-shadow:0 0 10px #888;cursor:pointer}.SmallBox span{font-size:16px}.SmallBox p{font-size:12px;margin-top:2px}.SmallBox .textoFull{width:93%;float:left;padding-left:20px}.SmallBox .textoFoto{width:55%;margin:3px 20px 3px 80px;float:left}.bigBox{position:fixed;right:10px;bottom:10px;background-color:#004d60;padding-left:10px;padding-top:10px;padding-right:10px;padding-bottom:5px;width:88%;height:150px;color:#fff;z-index:99999}.divMessageBox{width:100%;height:100%;position:fixed;top:0;left:0;background:rgba(0,0,0,.6);z-index:100000}.MessageBoxContainer{top:25%;color:#fff;position:relative;width:100%;background-color:#232323}.MessageBoxMiddle{position:relative;left:0;width:100%;padding:3px}.MessageBoxMiddle .MsgTitle{font-size:22px}.MessageBoxMiddle .pText{font-style:10px}.MessageBoxContainer input,.MessageBoxContainer select{width:50%;padding:5px}.MessageBoxButtonSection{width:100%;height:30px}.MessageBoxButtonSection button{float:right;margin-right:5px;padding-left:15px;padding-right:15px}}.animated.fast{-ms-animation-duration:.4s}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-moz-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-o-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;-moz-animation-name:fadeIn;-o-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translateX(20px)}100%{opacity:1;-webkit-transform:translateX(0)}}@-moz-keyframes fadeInRight{0%{opacity:0;-moz-transform:translateX(20px)}100%{opacity:1;-moz-transform:translateX(0)}}@-o-keyframes fadeInRight{0%{opacity:0;-o-transform:translateX(20px)}100%{opacity:1;-o-transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(20px)}100%{opacity:1;transform:translateX(0)}}.fadeInRight{-webkit-animation-name:fadeInRight;-moz-animation-name:fadeInRight;-o-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translateY(20px)}100%{opacity:1;-webkit-transform:translateY(0)}}@-moz-keyframes fadeInUp{0%{opacity:0;-moz-transform:translateY(20px)}100%{opacity:1;-moz-transform:translateY(0)}}@-o-keyframes fadeInUp{0%{opacity:0;-o-transform:translateY(20px)}100%{opacity:1;-o-transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}100%{opacity:1;transform:translateY(0)}}.fadeInUp{-webkit-animation-name:fadeInUp;-moz-animation-name:fadeInUp;-o-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@-moz-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@-o-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;-moz-animation-name:fadeOut;-o-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutLeft{0%{opacity:1;-webkit-transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-20px)}}@-moz-keyframes fadeOutLeft{0%{opacity:1;-moz-transform:translateX(0)}100%{opacity:0;-moz-transform:translateX(-20px)}}@-o-keyframes fadeOutLeft{0%{opacity:1;-o-transform:translateX(0)}100%{opacity:0;-o-transform:translateX(-20px)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}100%{opacity:0;transform:translateX(-20px)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;-moz-animation-name:fadeOutLeft;-o-animation-name:fadeOutLeft;animation-name:fadeOutLeft}.note-editor{border:1px solid #a9a9a9}.note-editor.fullscreen{position:fixed;top:0;left:0;z-index:1050;width:100%}.note-editor.fullscreen .note-editable{background-color:#fff}.note-editor.codeview .note-editable,.note-editor.fullscreen .note-resizebar{display:none}.note-editor.codeview .note-codeable{display:block}.note-editor .note-toolbar{padding-bottom:5px;padding-left:5px;margin:0;background-color:#f5f5f5;border-bottom:1px solid #a9a9a9}.note-editor .note-toolbar>.btn-group{margin-top:5px;margin-right:5px;margin-left:0}.note-editor .note-toolbar .note-table .dropdown-menu{min-width:0;padding:5px}.note-editor .note-toolbar .note-table .dropdown-menu .note-dimension-picker{font-size:18px}.note-editor .note-toolbar .note-table .dropdown-menu .note-dimension-picker .note-dimension-picker-mousecatcher{position:absolute!important;z-index:3;width:10em;height:10em;cursor:pointer}.note-editor .note-toolbar .note-table .dropdown-menu .note-dimension-picker .note-dimension-picker-unhighlighted{position:relative!important;z-index:1;width:5em;height:5em;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIj4+Pjp6ekKlAqjAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKhmnaJzPAAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC) repeat}.note-editor .note-toolbar .note-table .dropdown-menu .note-dimension-picker .note-dimension-picker-highlighted{position:absolute!important;z-index:2;width:1em;height:1em;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIjd6vvD2f9LKLW+AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKwNDEVT0AAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC) repeat}.note-editor .note-toolbar .note-style blockquote,.note-editor .note-toolbar .note-style h1,.note-editor .note-toolbar .note-style h2,.note-editor .note-toolbar .note-style h3,.note-editor .note-toolbar .note-style h4,.note-editor .note-toolbar .note-style h5,.note-editor .note-toolbar .note-style h6{margin:0}.note-editor .note-toolbar .note-color .dropdown-toggle{width:20px;padding-left:5px}.note-editor .note-toolbar .note-color .dropdown-menu{min-width:290px}.note-editor .note-toolbar .note-color .dropdown-menu .btn-group{margin:0}.note-editor .note-toolbar .note-color .dropdown-menu .btn-group:first-child{margin:0 5px}.note-editor .note-toolbar .note-color .dropdown-menu .btn-group .note-palette-title{margin:2px 7px;font-size:12px;text-align:center;border-bottom:1px solid #eee}.note-editor .note-toolbar .note-color .dropdown-menu .btn-group .note-color-reset{padding:0 3px;margin:5px;font-size:12px;cursor:pointer;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.note-editor .note-toolbar .note-color .dropdown-menu .btn-group .note-color-reset:hover{background:#eee}.note-editor .note-toolbar .note-para .dropdown-menu{min-width:165px;padding:5px}.note-editor .note-toolbar .note-para li:first-child{margin-bottom:5px}.note-editor .note-statusbar{background-color:#f5f5f5}.note-editor .note-statusbar .note-resizebar{width:100%;height:8px;cursor:s-resize}.note-editor .note-statusbar .note-resizebar .note-icon-bar{width:20px;margin:1px auto;border-top:1px solid #a9a9a9}.note-editor .note-popover .popover{max-width:none}.note-editor .note-popover .popover .popover-content{padding:5px}.note-editor .note-popover .popover .popover-content a{display:inline-block;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.note-editor .note-popover .popover .popover-content .btn-group+.btn-group{margin-left:5px}.note-editor .note-popover .popover .arrow{left:20px}.note-editor .note-handle .note-control-selection{position:absolute;display:none;border:1px solid #000}.note-editor .note-handle .note-control-selection>div{position:absolute}.note-editor .note-handle .note-control-selection .note-control-selection-bg{width:100%;height:100%;background-color:#000;-webkit-opacity:.3;-khtml-opacity:.3;-moz-opacity:.3;opacity:.3;-ms-filter:alpha(opacity=30);filter:alpha(opacity=30)}.note-editor .note-handle .note-control-selection .note-control-handle,.note-editor .note-handle .note-control-selection .note-control-holder{width:7px;height:7px;border:1px solid #000}.note-editor .note-handle .note-control-selection .note-control-sizing{width:7px;height:7px;background-color:#fff;border:1px solid #000}.note-editor .note-handle .note-control-selection .note-control-nw{top:-5px;left:-5px;border-right:0;border-bottom:0}.note-editor .note-handle .note-control-selection .note-control-ne{top:-5px;right:-5px;border-bottom:0;border-left:none}.note-editor .note-handle .note-control-selection .note-control-sw{bottom:-5px;left:-5px;border-top:0;border-right:0}.note-editor .note-handle .note-control-selection .note-control-se{right:-5px;bottom:-5px;cursor:se-resize}.note-editor .note-handle .note-control-selection .note-control-selection-info{right:0;bottom:0;padding:5px;margin:5px;font-size:12px;color:#fff;background-color:#000;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-opacity:.7;-khtml-opacity:.7;-moz-opacity:.7;opacity:.7;-ms-filter:alpha(opacity=70);filter:alpha(opacity=70)}.note-editor .note-dialog>div{display:none}.note-editor .note-dialog .note-image-dialog .note-dropzone{min-height:200px;font-size:30px;line-height:6;color:#d3d3d3;text-align:center;border:4px dashed #d3d3d3}.note-editor .note-dialog .note-help-dialog{font-size:12px;color:#ccc;background:0 0;background-color:#222!important;border:0;-webkit-opacity:.9;-khtml-opacity:.9;-moz-opacity:.9;opacity:.9;-ms-filter:alpha(opacity=90);filter:alpha(opacity=90)}.note-editor .note-dialog .note-help-dialog .modal-content{background:0 0;border:1px solid #fff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.note-editor .note-dialog .note-help-dialog a{font-size:12px;color:#fff}.note-editor .note-dialog .note-help-dialog .title{padding-bottom:5px;font-size:14px;font-weight:700;color:#fff;border-bottom:#fff 1px solid}.note-editor .note-dialog .note-help-dialog .modal-close{font-size:14px;color:#dd0;cursor:pointer}.note-editor .note-dialog .note-help-dialog .note-shortcut-layout{width:100%}.note-editor .note-dialog .note-help-dialog .note-shortcut-layout td{vertical-align:top}.note-editor .note-dialog .note-help-dialog .note-shortcut{margin-top:8px}.note-editor .note-dialog .note-help-dialog .note-shortcut th{font-size:13px;color:#dd0;text-align:left}.note-editor .note-dialog .note-help-dialog .note-shortcut td:first-child{min-width:110px;padding-right:10px;font-family:"Courier New";color:#dd0;text-align:right}.note-editor .note-editable{padding:10px;overflow:scroll;outline:0}.note-editor .note-codeable{display:none;width:100%;padding:10px;margin-bottom:0;font-family:Menlo,Monaco,monospace,sans-serif;font-size:14px;color:#ccc;background-color:#222;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;box-shadow:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;resize:none}.note-editor .dropdown-menu{min-width:90px}.note-editor .dropdown-menu.right{right:0;left:auto}.note-editor .dropdown-menu.right::before{right:9px;left:auto!important}.note-editor .dropdown-menu.right::after{right:10px;left:auto!important}.note-editor .dropdown-menu li a i{color:#00bfff;visibility:hidden}.note-editor .dropdown-menu li a.checked i{visibility:visible}.note-editor .note-color-palette{line-height:1}.note-editor .note-color-palette div .note-color-btn{width:17px;height:17px;padding:0;margin:0;border:1px solid #fff}.note-editor .note-color-palette div .note-color-btn:hover{border:1px solid #000}.no-padding .note-editor{border:none}.note-editor .note-editable{background-color:rgba(48,126,204,.05)}.note-editor .note-editable:focus{background-color:#fff}.note-editor .note-statusbar .note-resizebar{border-top:1px solid #DBDBDB}.note-editor .note-statusbar:hover{background:#EEE}.note-editor .note-statusbar:active{background:#eaeaea}.superbox *,.superbox :after,.superbox :before{margin:0;padding:0;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-webkit-font-smoothing:antialiased;-moz-font-smoothing:antialiased;-o-font-smoothing:antialiased;font-smoothing:antialiased;text-rendering:optimizeLegibility}.superbox-list{display:inline-block;*display:inline;zoom:1;width:12.5%;padding:5px;position:relative}.superbox-list.active:before{content:"\f0d8";font-family:FontAwesome;display:block;position:absolute;left:43%;bottom:-34px;z-index:2;text-align:center;font-size:45px;color:#222}.superbox-img{max-width:100%;width:100%;cursor:pointer}.superbox-show{text-align:left;position:relative;background-color:#222;width:100%;float:left;padding:25px 0 12px 25px;display:none;margin:5px 0}.superbox-current-img{max-width:100%;float:left;padding-right:25px;padding-bottom:13px}.superbox-img:hover{opacity:.8}.superbox-float{float:left}.superbox-close{opacity:.7;cursor:pointer;position:absolute;top:15px;right:15px;transition:all .1s linear 0s}.superbox-close:hover{opacity:1}.superbox-imageinfo{display:inline-block;max-width:500px;color:#fff;padding:0 25px 0 0}.superbox-imageinfo span{font-size:13px;color:#a19994;margin-right:-2px;padding-top:10px;display:inline-block;padding-bottom:13px}.superbox-imageinfo>:first-child{margin-bottom:10px;font-weight:700}.superbox-imageinfo span p:last-child{margin-top:30px}@media only screen and (min-width:320px){.superbox-list{width:50%}}@media only screen and (min-width:486px){.superbox-list{width:25%}}@media only screen and (min-width:768px){.superbox-list{width:16.66666667%}}@media only screen and (min-width:1025px){.superbox-list{width:12.5%}}@media only screen and (min-width:1824px){.superbox-list{width:12.5%}}.voice-command-active #speech-btn>span>a{background:url(../img/voicecommand/active-btn.gif) no-repeat center center #0e70ca;border:1px solid #125A9C;color:rgba(255,255,255,.9)}.animated{-webkit-animation-duration:1s;-moz-animation-duration:1s;-o-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;-moz-animation-fill-mode:both;-o-animation-fill-mode:both;animation-fill-mode:both}.animated.fast{-webkit-animation-duration:.5s;-moz-animation-duration:.5s;-o-animation-duration:.5s;animation-duration:.5s}.animated.hinge{-webkit-animation-duration:2s;-moz-animation-duration:2s;-o-animation-duration:2s;animation-duration:2s}@-webkit-keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}@-moz-keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}@-o-keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}.animated.flash{-webkit-animation-name:flash;-moz-animation-name:flash;-o-animation-name:flash;animation-name:flash}@-webkit-keyframes shake{0%,100%{-webkit-transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px)}}@-moz-keyframes shake{0%,100%{-moz-transform:translateX(0)}10%,30%,50%,70%,90%{-moz-transform:translateX(-10px)}20%,40%,60%,80%{-moz-transform:translateX(10px)}}@-o-keyframes shake{0%,100%{-o-transform:translateX(0)}10%,30%,50%,70%,90%{-o-transform:translateX(-10px)}20%,40%,60%,80%{-o-transform:translateX(10px)}}@keyframes shake{0%,100%{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}.animated.shake{-webkit-animation-name:shake;-moz-animation-name:shake;-o-animation-name:shake;animation-name:shake}@-webkit-keyframes bounce{0%,100%,20%,50%,80%{-webkit-transform:translateY(0)}40%{-webkit-transform:translateY(-30px)}60%{-webkit-transform:translateY(-15px)}}@-moz-keyframes bounce{0%,100%,20%,50%,80%{-moz-transform:translateY(0)}40%{-moz-transform:translateY(-30px)}60%{-moz-transform:translateY(-15px)}}@-o-keyframes bounce{0%,100%,20%,50%,80%{-o-transform:translateY(0)}40%{-o-transform:translateY(-30px)}60%{-o-transform:translateY(-15px)}}@keyframes bounce{0%,100%,20%,50%,80%{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}.animated.bounce{-webkit-animation-name:bounce;-moz-animation-name:bounce;-o-animation-name:bounce;animation-name:bounce}@-webkit-keyframes tada{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(0.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.1) rotate(-3deg)}100%{-webkit-transform:scale(1) rotate(0)}}@-moz-keyframes tada{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(0.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.1) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.1) rotate(-3deg)}100%{-moz-transform:scale(1) rotate(0)}}@-o-keyframes tada{0%{-o-transform:scale(1)}10%,20%{-o-transform:scale(0.9) rotate(-3deg)}30%,50%,70%,90%{-o-transform:scale(1.1) rotate(3deg)}40%,60%,80%{-o-transform:scale(1.1) rotate(-3deg)}100%{-o-transform:scale(1) rotate(0)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(0.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}100%{transform:scale(1) rotate(0)}}.animated.tada{-webkit-animation-name:tada;-moz-animation-name:tada;-o-animation-name:tada;animation-name:tada}@-webkit-keyframes swing{100%,20%,40%,60%,80%{-webkit-transform-origin:top center}20%{-webkit-transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg)}100%{-webkit-transform:rotate(0deg)}}@-moz-keyframes swing{20%{-moz-transform:rotate(15deg)}40%{-moz-transform:rotate(-10deg)}60%{-moz-transform:rotate(5deg)}80%{-moz-transform:rotate(-5deg)}100%{-moz-transform:rotate(0deg)}}@-o-keyframes swing{20%{-o-transform:rotate(15deg)}40%{-o-transform:rotate(-10deg)}60%{-o-transform:rotate(5deg)}80%{-o-transform:rotate(-5deg)}100%{-o-transform:rotate(0deg)}}@keyframes swing{20%{transform:rotate(15deg)}40%{transform:rotate(-10deg)}60%{transform:rotate(5deg)}80%{transform:rotate(-5deg)}100%{transform:rotate(0deg)}}.animated.swing{-webkit-transform-origin:top center;-moz-transform-origin:top center;-o-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;-moz-animation-name:swing;-o-animation-name:swing;animation-name:swing}@-webkit-keyframes wobble{0%{-webkit-transform:translateX(0%)}15%{-webkit-transform:translateX(-25%) rotate(-5deg)}30%{-webkit-transform:translateX(20%) rotate(3deg)}45%{-webkit-transform:translateX(-15%) rotate(-3deg)}60%{-webkit-transform:translateX(10%) rotate(2deg)}75%{-webkit-transform:translateX(-5%) rotate(-1deg)}100%{-webkit-transform:translateX(0%)}}@-moz-keyframes wobble{0%{-moz-transform:translateX(0%)}15%{-moz-transform:translateX(-25%) rotate(-5deg)}30%{-moz-transform:translateX(20%) rotate(3deg)}45%{-moz-transform:translateX(-15%) rotate(-3deg)}60%{-moz-transform:translateX(10%) rotate(2deg)}75%{-moz-transform:translateX(-5%) rotate(-1deg)}100%{-moz-transform:translateX(0%)}}@-o-keyframes wobble{0%{-o-transform:translateX(0%)}15%{-o-transform:translateX(-25%) rotate(-5deg)}30%{-o-transform:translateX(20%) rotate(3deg)}45%{-o-transform:translateX(-15%) rotate(-3deg)}60%{-o-transform:translateX(10%) rotate(2deg)}75%{-o-transform:translateX(-5%) rotate(-1deg)}100%{-o-transform:translateX(0%)}}@keyframes wobble{0%{transform:translateX(0%)}15%{transform:translateX(-25%) rotate(-5deg)}30%{transform:translateX(20%) rotate(3deg)}45%{transform:translateX(-15%) rotate(-3deg)}60%{transform:translateX(10%) rotate(2deg)}75%{transform:translateX(-5%) rotate(-1deg)}100%{transform:translateX(0%)}}.animated.wobble{-webkit-animation-name:wobble;-moz-animation-name:wobble;-o-animation-name:wobble;animation-name:wobble}@-webkit-keyframes pulse{0%{-webkit-transform:scale(1)}50%{-webkit-transform:scale(1.1)}100%{-webkit-transform:scale(1)}}@-moz-keyframes pulse{0%{-moz-transform:scale(1)}50%{-moz-transform:scale(1.1)}100%{-moz-transform:scale(1)}}@-o-keyframes pulse{0%{-o-transform:scale(1)}50%{-o-transform:scale(1.1)}100%{-o-transform:scale(1)}}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.1)}100%{transform:scale(1)}}.animated.pulse{-webkit-animation-name:pulse;-moz-animation-name:pulse;-o-animation-name:pulse;animation-name:pulse}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) translateZ(0) rotateY(0) scale(1);-webkit-animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(170deg) scale(1);-webkit-animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);-webkit-animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(0.95);-webkit-animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(1);-webkit-animation-timing-function:ease-in}}@-moz-keyframes flip{0%{-moz-transform:perspective(400px) translateZ(0) rotateY(0) scale(1);-moz-animation-timing-function:ease-out}40%{-moz-transform:perspective(400px) translateZ(150px) rotateY(170deg) scale(1);-moz-animation-timing-function:ease-out}50%{-moz-transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);-moz-animation-timing-function:ease-in}80%{-moz-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(0.95);-moz-animation-timing-function:ease-in}100%{-moz-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(1);-moz-animation-timing-function:ease-in}}@-o-keyframes flip{0%{-o-transform:perspective(400px) translateZ(0) rotateY(0) scale(1);-o-animation-timing-function:ease-out}40%{-o-transform:perspective(400px) translateZ(150px) rotateY(170deg) scale(1);-o-animation-timing-function:ease-out}50%{-o-transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);-o-animation-timing-function:ease-in}80%{-o-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(0.95);-o-animation-timing-function:ease-in}100%{-o-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(1);-o-animation-timing-function:ease-in}}@keyframes flip{0%{transform:perspective(400px) translateZ(0) rotateY(0) scale(1);animation-timing-function:ease-out}40%{transform:perspective(400px) translateZ(150px) rotateY(170deg) scale(1);animation-timing-function:ease-out}50%{transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);animation-timing-function:ease-in}80%{transform:perspective(400px) translateZ(0) rotateY(360deg) scale(0.95);animation-timing-function:ease-in}100%{transform:perspective(400px) translateZ(0) rotateY(360deg) scale(1);animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible!important;-webkit-animation-name:flip;-moz-backface-visibility:visible!important;-moz-animation-name:flip;-o-backface-visibility:visible!important;-o-animation-name:flip;backface-visibility:visible!important;animation-name:flip}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-10deg)}70%{-webkit-transform:perspective(400px) rotateX(10deg)}100%{-webkit-transform:perspective(400px) rotateX(0deg);opacity:1}}@-moz-keyframes flipInX{0%{-moz-transform:perspective(400px) rotateX(90deg);opacity:0}40%{-moz-transform:perspective(400px) rotateX(-10deg)}70%{-moz-transform:perspective(400px) rotateX(10deg)}100%{-moz-transform:perspective(400px) rotateX(0deg);opacity:1}}@-o-keyframes flipInX{0%{-o-transform:perspective(400px) rotateX(90deg);opacity:0}40%{-o-transform:perspective(400px) rotateX(-10deg)}70%{-o-transform:perspective(400px) rotateX(10deg)}100%{-o-transform:perspective(400px) rotateX(0deg);opacity:1}}@keyframes flipInX{0%{transform:perspective(400px) rotateX(90deg);opacity:0}40%{transform:perspective(400px) rotateX(-10deg)}70%{transform:perspective(400px) rotateX(10deg)}100%{transform:perspective(400px) rotateX(0deg);opacity:1}}.animated.flipInX{-webkit-backface-visibility:visible!important;-webkit-animation-name:flipInX;-moz-backface-visibility:visible!important;-moz-animation-name:flipInX;-o-backface-visibility:visible!important;-o-animation-name:flipInX;backface-visibility:visible!important;animation-name:flipInX}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px) rotateX(0deg);opacity:1}100%{-webkit-transform:perspective(400px) rotateX(90deg);opacity:0}}@-moz-keyframes flipOutX{0%{-moz-transform:perspective(400px) rotateX(0deg);opacity:1}100%{-moz-transform:perspective(400px) rotateX(90deg);opacity:0}}@-o-keyframes flipOutX{0%{-o-transform:perspective(400px) rotateX(0deg);opacity:1}100%{-o-transform:perspective(400px) rotateX(90deg);opacity:0}}@keyframes flipOutX{0%{transform:perspective(400px) rotateX(0deg);opacity:1}100%{transform:perspective(400px) rotateX(90deg);opacity:0}}.animated.flipOutX{-webkit-animation-name:flipOutX;-webkit-backface-visibility:visible!important;-moz-animation-name:flipOutX;-moz-backface-visibility:visible!important;-o-animation-name:flipOutX;-o-backface-visibility:visible!important;animation-name:flipOutX;backface-visibility:visible!important}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-10deg)}70%{-webkit-transform:perspective(400px) rotateY(10deg)}100%{-webkit-transform:perspective(400px) rotateY(0deg);opacity:1}}@-moz-keyframes flipInY{0%{-moz-transform:perspective(400px) rotateY(90deg);opacity:0}40%{-moz-transform:perspective(400px) rotateY(-10deg)}70%{-moz-transform:perspective(400px) rotateY(10deg)}100%{-moz-transform:perspective(400px) rotateY(0deg);opacity:1}}@-o-keyframes flipInY{0%{-o-transform:perspective(400px) rotateY(90deg);opacity:0}40%{-o-transform:perspective(400px) rotateY(-10deg)}70%{-o-transform:perspective(400px) rotateY(10deg)}100%{-o-transform:perspective(400px) rotateY(0deg);opacity:1}}@keyframes flipInY{0%{transform:perspective(400px) rotateY(90deg);opacity:0}40%{transform:perspective(400px) rotateY(-10deg)}70%{transform:perspective(400px) rotateY(10deg)}100%{transform:perspective(400px) rotateY(0deg);opacity:1}}.animated.flipInY{-webkit-backface-visibility:visible!important;-webkit-animation-name:flipInY;-moz-backface-visibility:visible!important;-moz-animation-name:flipInY;-o-backface-visibility:visible!important;-o-animation-name:flipInY;backface-visibility:visible!important;animation-name:flipInY}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px) rotateY(0deg);opacity:1}100%{-webkit-transform:perspective(400px) rotateY(90deg);opacity:0}}@-moz-keyframes flipOutY{0%{-moz-transform:perspective(400px) rotateY(0deg);opacity:1}100%{-moz-transform:perspective(400px) rotateY(90deg);opacity:0}}@-o-keyframes flipOutY{0%{-o-transform:perspective(400px) rotateY(0deg);opacity:1}100%{-o-transform:perspective(400px) rotateY(90deg);opacity:0}}@keyframes flipOutY{0%{transform:perspective(400px) rotateY(0deg);opacity:1}100%{transform:perspective(400px) rotateY(90deg);opacity:0}}.animated.flipOutY{-webkit-backface-visibility:visible!important;-webkit-animation-name:flipOutY;-moz-backface-visibility:visible!important;-moz-animation-name:flipOutY;-o-backface-visibility:visible!important;-o-animation-name:flipOutY;backface-visibility:visible!important;animation-name:flipOutY}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-moz-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-o-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.animated.fadeIn{-webkit-animation-name:fadeIn;-moz-animation-name:fadeIn;-o-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translateY(20px)}100%{opacity:1;-webkit-transform:translateY(0)}}@-moz-keyframes fadeInUp{0%{opacity:0;-moz-transform:translateY(20px)}100%{opacity:1;-moz-transform:translateY(0)}}@-o-keyframes fadeInUp{0%{opacity:0;-o-transform:translateY(20px)}100%{opacity:1;-o-transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}100%{opacity:1;transform:translateY(0)}}.animated.fadeInUp{-webkit-animation-name:fadeInUp;-moz-animation-name:fadeInUp;-o-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translateY(-20px)}100%{opacity:1;-webkit-transform:translateY(0)}}@-moz-keyframes fadeInDown{0%{opacity:0;-moz-transform:translateY(-20px)}100%{opacity:1;-moz-transform:translateY(0)}}@-o-keyframes fadeInDown{0%{opacity:0;-o-transform:translateY(-20px)}100%{opacity:1;-o-transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-20px)}100%{opacity:1;transform:translateY(0)}}.animated.fadeInDown{-webkit-animation-name:fadeInDown;-moz-animation-name:fadeInDown;-o-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translateX(-20px)}100%{opacity:1;-webkit-transform:translateX(0)}}@-moz-keyframes fadeInLeft{0%{opacity:0;-moz-transform:translateX(-20px)}100%{opacity:1;-moz-transform:translateX(0)}}@-o-keyframes fadeInLeft{0%{opacity:0;-o-transform:translateX(-20px)}100%{opacity:1;-o-transform:translateX(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(-20px)}100%{opacity:1;transform:translateX(0)}}.animated.fadeInLeft{-webkit-animation-name:fadeInLeft;-moz-animation-name:fadeInLeft;-o-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translateX(20px)}100%{opacity:1;-webkit-transform:translateX(0)}}@-moz-keyframes fadeInRight{0%{opacity:0;-moz-transform:translateX(20px)}100%{opacity:1;-moz-transform:translateX(0)}}@-o-keyframes fadeInRight{0%{opacity:0;-o-transform:translateX(20px)}100%{opacity:1;-o-transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(20px)}100%{opacity:1;transform:translateX(0)}}.animated.fadeInRight{-webkit-animation-name:fadeInRight;-moz-animation-name:fadeInRight;-o-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0)}}@-moz-keyframes fadeInUpBig{0%{opacity:0;-moz-transform:translateY(2000px)}100%{opacity:1;-moz-transform:translateY(0)}}@-o-keyframes fadeInUpBig{0%{opacity:0;-o-transform:translateY(2000px)}100%{opacity:1;-o-transform:translateY(0)}}@keyframes fadeInUpBig{0%{opacity:0;transform:translateY(2000px)}100%{opacity:1;transform:translateY(0)}}.animated.fadeInUpBig{-webkit-animation-name:fadeInUpBig;-moz-animation-name:fadeInUpBig;-o-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translateY(-2000px)}100%{opacity:1;-webkit-transform:translateY(0)}}@-moz-keyframes fadeInDownBig{0%{opacity:0;-moz-transform:translateY(-2000px)}100%{opacity:1;-moz-transform:translateY(0)}}@-o-keyframes fadeInDownBig{0%{opacity:0;-o-transform:translateY(-2000px)}100%{opacity:1;-o-transform:translateY(0)}}@keyframes fadeInDownBig{0%{opacity:0;transform:translateY(-2000px)}100%{opacity:1;transform:translateY(0)}}.animated.fadeInDownBig{-webkit-animation-name:fadeInDownBig;-moz-animation-name:fadeInDownBig;-o-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translateX(-2000px)}100%{opacity:1;-webkit-transform:translateX(0)}}@-moz-keyframes fadeInLeftBig{0%{opacity:0;-moz-transform:translateX(-2000px)}100%{opacity:1;-moz-transform:translateX(0)}}@-o-keyframes fadeInLeftBig{0%{opacity:0;-o-transform:translateX(-2000px)}100%{opacity:1;-o-transform:translateX(0)}}@keyframes fadeInLeftBig{0%{opacity:0;transform:translateX(-2000px)}100%{opacity:1;transform:translateX(0)}}.animated.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;-moz-animation-name:fadeInLeftBig;-o-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translateX(2000px)}100%{opacity:1;-webkit-transform:translateX(0)}}@-moz-keyframes fadeInRightBig{0%{opacity:0;-moz-transform:translateX(2000px)}100%{opacity:1;-moz-transform:translateX(0)}}@-o-keyframes fadeInRightBig{0%{opacity:0;-o-transform:translateX(2000px)}100%{opacity:1;-o-transform:translateX(0)}}@keyframes fadeInRightBig{0%{opacity:0;transform:translateX(2000px)}100%{opacity:1;transform:translateX(0)}}.animated.fadeInRightBig{-webkit-animation-name:fadeInRightBig;-moz-animation-name:fadeInRightBig;-o-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@-moz-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@-o-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.animated.fadeOut{-webkit-animation-name:fadeOut;-moz-animation-name:fadeOut;-o-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutUp{0%{opacity:1;-webkit-transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-20px)}}@-moz-keyframes fadeOutUp{0%{opacity:1;-moz-transform:translateY(0)}100%{opacity:0;-moz-transform:translateY(-20px)}}@-o-keyframes fadeOutUp{0%{opacity:1;-o-transform:translateY(0)}100%{opacity:0;-o-transform:translateY(-20px)}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(-20px)}}.animated.fadeOutUp{-webkit-animation-name:fadeOutUp;-moz-animation-name:fadeOutUp;-o-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutDown{0%{opacity:1;-webkit-transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(20px)}}@-moz-keyframes fadeOutDown{0%{opacity:1;-moz-transform:translateY(0)}100%{opacity:0;-moz-transform:translateY(20px)}}@-o-keyframes fadeOutDown{0%{opacity:1;-o-transform:translateY(0)}100%{opacity:0;-o-transform:translateY(20px)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(20px)}}.animated.fadeOutDown{-webkit-animation-name:fadeOutDown;-moz-animation-name:fadeOutDown;-o-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutLeft{0%{opacity:1;-webkit-transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-20px)}}@-moz-keyframes fadeOutLeft{0%{opacity:1;-moz-transform:translateX(0)}100%{opacity:0;-moz-transform:translateX(-20px)}}@-o-keyframes fadeOutLeft{0%{opacity:1;-o-transform:translateX(0)}100%{opacity:0;-o-transform:translateX(-20px)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}100%{opacity:0;transform:translateX(-20px)}}.animated.fadeOutLeft{-webkit-animation-name:fadeOutLeft;-moz-animation-name:fadeOutLeft;-o-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutRight{0%{opacity:1;-webkit-transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(20px)}}@-moz-keyframes fadeOutRight{0%{opacity:1;-moz-transform:translateX(0)}100%{opacity:0;-moz-transform:translateX(20px)}}@-o-keyframes fadeOutRight{0%{opacity:1;-o-transform:translateX(0)}100%{opacity:0;-o-transform:translateX(20px)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}100%{opacity:0;transform:translateX(20px)}}.animated.fadeOutRight{-webkit-animation-name:fadeOutRight;-moz-animation-name:fadeOutRight;-o-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutUpBig{0%{opacity:1;-webkit-transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-2000px)}}@-moz-keyframes fadeOutUpBig{0%{opacity:1;-moz-transform:translateY(0)}100%{opacity:0;-moz-transform:translateY(-2000px)}}@-o-keyframes fadeOutUpBig{0%{opacity:1;-o-transform:translateY(0)}100%{opacity:0;-o-transform:translateY(-2000px)}}@keyframes fadeOutUpBig{0%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(-2000px)}}.animated.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;-moz-animation-name:fadeOutUpBig;-o-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes fadeOutDownBig{0%{opacity:1;-webkit-transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(2000px)}}@-moz-keyframes fadeOutDownBig{0%{opacity:1;-moz-transform:translateY(0)}100%{opacity:0;-moz-transform:translateY(2000px)}}@-o-keyframes fadeOutDownBig{0%{opacity:1;-o-transform:translateY(0)}100%{opacity:0;-o-transform:translateY(2000px)}}@keyframes fadeOutDownBig{0%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(2000px)}}.animated.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;-moz-animation-name:fadeOutDownBig;-o-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1;-webkit-transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-2000px)}}@-moz-keyframes fadeOutLeftBig{0%{opacity:1;-moz-transform:translateX(0)}100%{opacity:0;-moz-transform:translateX(-2000px)}}@-o-keyframes fadeOutLeftBig{0%{opacity:1;-o-transform:translateX(0)}100%{opacity:0;-o-transform:translateX(-2000px)}}@keyframes fadeOutLeftBig{0%{opacity:1;transform:translateX(0)}100%{opacity:0;transform:translateX(-2000px)}}.animated.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;-moz-animation-name:fadeOutLeftBig;-o-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRightBig{0%{opacity:1;-webkit-transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(2000px)}}@-moz-keyframes fadeOutRightBig{0%{opacity:1;-moz-transform:translateX(0)}100%{opacity:0;-moz-transform:translateX(2000px)}}@-o-keyframes fadeOutRightBig{0%{opacity:1;-o-transform:translateX(0)}100%{opacity:0;-o-transform:translateX(2000px)}}@keyframes fadeOutRightBig{0%{opacity:1;transform:translateX(0)}100%{opacity:0;transform:translateX(2000px)}}.animated.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;-moz-animation-name:fadeOutRightBig;-o-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes bounceIn{0%{opacity:0;-webkit-transform:scale(0.3)}50%{opacity:1;-webkit-transform:scale(1.05)}70%{-webkit-transform:scale(0.9)}100%{-webkit-transform:scale(1)}}@-moz-keyframes bounceIn{0%{opacity:0;-moz-transform:scale(0.3)}50%{opacity:1;-moz-transform:scale(1.05)}70%{-moz-transform:scale(0.9)}100%{-moz-transform:scale(1)}}@-o-keyframes bounceIn{0%{opacity:0;-o-transform:scale(0.3)}50%{opacity:1;-o-transform:scale(1.05)}70%{-o-transform:scale(0.9)}100%{-o-transform:scale(1)}}@keyframes bounceIn{0%{opacity:0;transform:scale(0.3)}50%{opacity:1;transform:scale(1.05)}70%{transform:scale(0.9)}100%{transform:scale(1)}}@-webkit-keyframes slideInDown{0%{opacity:0;-webkit-transform:translateY(-2000px)}100%{-webkit-transform:translateY(0)}}@-moz-keyframes slideInDown{0%{opacity:0;-moz-transform:translateY(-2000px)}100%{-moz-transform:translateY(0)}}@-o-keyframes slideInDown{0%{opacity:0;-o-transform:translateY(-2000px)}100%{-o-transform:translateY(0)}}@keyframes slideInDown{0%{opacity:0;transform:translateY(-2000px)}100%{transform:translateY(0)}}.slideInDown{-webkit-animation-name:slideInDown;-moz-animation-name:slideInDown;-o-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{0%{opacity:0;-webkit-transform:translateX(-2000px)}100%{-webkit-transform:translateX(0)}}@-moz-keyframes slideInLeft{0%{opacity:0;-moz-transform:translateX(-2000px)}100%{-moz-transform:translateX(0)}}@-o-keyframes slideInLeft{0%{opacity:0;-o-transform:translateX(-2000px)}100%{-o-transform:translateX(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translateX(-2000px)}100%{transform:translateX(0)}}.slideInLeft{-webkit-animation-name:slideInLeft;-moz-animation-name:slideInLeft;-o-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{0%{opacity:0;-webkit-transform:translateX(2000px)}100%{-webkit-transform:translateX(0)}}@-moz-keyframes slideInRight{0%{opacity:0;-moz-transform:translateX(2000px)}100%{-moz-transform:translateX(0)}}@-o-keyframes slideInRight{0%{opacity:0;-o-transform:translateX(2000px)}100%{-o-transform:translateX(0)}}@keyframes slideInRight{0%{opacity:0;transform:translateX(2000px)}100%{transform:translateX(0)}}.slideInRight{-webkit-animation-name:slideInRight;-moz-animation-name:slideInRight;-o-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideOutLeft{0%{-webkit-transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-2000px)}}@-moz-keyframes slideOutLeft{0%{-moz-transform:translateX(0)}100%{opacity:0;-moz-transform:translateX(-2000px)}}@-o-keyframes slideOutLeft{0%{-o-transform:translateX(0)}100%{opacity:0;-o-transform:translateX(-2000px)}}@keyframes slideOutLeft{0%{transform:translateX(0)}100%{opacity:0;transform:translateX(-2000px)}}.slideOutLeft{-webkit-animation-name:slideOutLeft;-moz-animation-name:slideOutLeft;-o-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{0%{-webkit-transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(2000px)}}@-moz-keyframes slideOutRight{0%{-moz-transform:translateX(0)}100%{opacity:0;-moz-transform:translateX(2000px)}}@-o-keyframes slideOutRight{0%{-o-transform:translateX(0)}100%{opacity:0;-o-transform:translateX(2000px)}}@keyframes slideOutRight{0%{transform:translateX(0)}100%{opacity:0;transform:translateX(2000px)}}.slideOutRight{-webkit-animation-name:slideOutRight;-moz-animation-name:slideOutRight;-o-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{0%{-webkit-transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-2000px)}}@-moz-keyframes slideOutUp{0%{-moz-transform:translateY(0)}100%{opacity:0;-moz-transform:translateY(-2000px)}}@-o-keyframes slideOutUp{0%{-o-transform:translateY(0)}100%{opacity:0;-o-transform:translateY(-2000px)}}@keyframes slideOutUp{0%{transform:translateY(0)}100%{opacity:0;transform:translateY(-2000px)}}.slideOutUp{-webkit-animation-name:slideOutUp;-moz-animation-name:slideOutUp;-o-animation-name:slideOutUp;animation-name:slideOutUp}.animated.bounceIn{-webkit-animation-name:bounceIn;-moz-animation-name:bounceIn;-o-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceInUp{0%{opacity:0;-webkit-transform:translateY(2000px)}60%{opacity:1;-webkit-transform:translateY(-30px)}80%{-webkit-transform:translateY(10px)}100%{-webkit-transform:translateY(0)}}@-moz-keyframes bounceInUp{0%{opacity:0;-moz-transform:translateY(2000px)}60%{opacity:1;-moz-transform:translateY(-30px)}80%{-moz-transform:translateY(10px)}100%{-moz-transform:translateY(0)}}@-o-keyframes bounceInUp{0%{opacity:0;-o-transform:translateY(2000px)}60%{opacity:1;-o-transform:translateY(-30px)}80%{-o-transform:translateY(10px)}100%{-o-transform:translateY(0)}}@keyframes bounceInUp{0%{opacity:0;transform:translateY(2000px)}60%{opacity:1;transform:translateY(-30px)}80%{transform:translateY(10px)}100%{transform:translateY(0)}}.animated.bounceInUp{-webkit-animation-name:bounceInUp;-moz-animation-name:bounceInUp;-o-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceInDown{0%{opacity:0;-webkit-transform:translateY(-2000px)}60%{opacity:1;-webkit-transform:translateY(30px)}80%{-webkit-transform:translateY(-10px)}100%{-webkit-transform:translateY(0)}}@-moz-keyframes bounceInDown{0%{opacity:0;-moz-transform:translateY(-2000px)}60%{opacity:1;-moz-transform:translateY(30px)}80%{-moz-transform:translateY(-10px)}100%{-moz-transform:translateY(0)}}@-o-keyframes bounceInDown{0%{opacity:0;-o-transform:translateY(-2000px)}60%{opacity:1;-o-transform:translateY(30px)}80%{-o-transform:translateY(-10px)}100%{-o-transform:translateY(0)}}@keyframes bounceInDown{0%{opacity:0;transform:translateY(-2000px)}60%{opacity:1;transform:translateY(30px)}80%{transform:translateY(-10px)}100%{transform:translateY(0)}}.animated.bounceInDown{-webkit-animation-name:bounceInDown;-moz-animation-name:bounceInDown;-o-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%{opacity:0;-webkit-transform:translateX(-2000px)}60%{opacity:1;-webkit-transform:translateX(30px)}80%{-webkit-transform:translateX(-10px)}100%{-webkit-transform:translateX(0)}}@-moz-keyframes bounceInLeft{0%{opacity:0;-moz-transform:translateX(-2000px)}60%{opacity:1;-moz-transform:translateX(30px)}80%{-moz-transform:translateX(-10px)}100%{-moz-transform:translateX(0)}}@-o-keyframes bounceInLeft{0%{opacity:0;-o-transform:translateX(-2000px)}60%{opacity:1;-o-transform:translateX(30px)}80%{-o-transform:translateX(-10px)}100%{-o-transform:translateX(0)}}@keyframes bounceInLeft{0%{opacity:0;transform:translateX(-2000px)}60%{opacity:1;transform:translateX(30px)}80%{transform:translateX(-10px)}100%{transform:translateX(0)}}.animated.bounceInLeft{-webkit-animation-name:bounceInLeft;-moz-animation-name:bounceInLeft;-o-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%{opacity:0;-webkit-transform:translateX(2000px)}60%{opacity:1;-webkit-transform:translateX(-30px)}80%{-webkit-transform:translateX(10px)}100%{-webkit-transform:translateX(0)}}@-moz-keyframes bounceInRight{0%{opacity:0;-moz-transform:translateX(2000px)}60%{opacity:1;-moz-transform:translateX(-30px)}80%{-moz-transform:translateX(10px)}100%{-moz-transform:translateX(0)}}@-o-keyframes bounceInRight{0%{opacity:0;-o-transform:translateX(2000px)}60%{opacity:1;-o-transform:translateX(-30px)}80%{-o-transform:translateX(10px)}100%{-o-transform:translateX(0)}}@keyframes bounceInRight{0%{opacity:0;transform:translateX(2000px)}60%{opacity:1;transform:translateX(-30px)}80%{transform:translateX(10px)}100%{transform:translateX(0)}}.animated.bounceInRight{-webkit-animation-name:bounceInRight;-moz-animation-name:bounceInRight;-o-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceOut{0%{-webkit-transform:scale(1)}25%{-webkit-transform:scale(0.95)}50%{opacity:1;-webkit-transform:scale(1.1)}100%{opacity:0;-webkit-transform:scale(0.3)}}@-moz-keyframes bounceOut{0%{-moz-transform:scale(1)}25%{-moz-transform:scale(0.95)}50%{opacity:1;-moz-transform:scale(1.1)}100%{opacity:0;-moz-transform:scale(0.3)}}@-o-keyframes bounceOut{0%{-o-transform:scale(1)}25%{-o-transform:scale(0.95)}50%{opacity:1;-o-transform:scale(1.1)}100%{opacity:0;-o-transform:scale(0.3)}}@keyframes bounceOut{0%{transform:scale(1)}25%{transform:scale(0.95)}50%{opacity:1;transform:scale(1.1)}100%{opacity:0;transform:scale(0.3)}}.animated.bounceOut{-webkit-animation-name:bounceOut;-moz-animation-name:bounceOut;-o-animation-name:bounceOut;animation-name:bounceOut}@-webkit-keyframes bounceOutUp{0%{-webkit-transform:translateY(0)}20%{opacity:1;-webkit-transform:translateY(20px)}100%{opacity:0;-webkit-transform:translateY(-2000px)}}@-moz-keyframes bounceOutUp{0%{-moz-transform:translateY(0)}20%{opacity:1;-moz-transform:translateY(20px)}100%{opacity:0;-moz-transform:translateY(-2000px)}}@-o-keyframes bounceOutUp{0%{-o-transform:translateY(0)}20%{opacity:1;-o-transform:translateY(20px)}100%{opacity:0;-o-transform:translateY(-2000px)}}@keyframes bounceOutUp{0%{transform:translateY(0)}20%{opacity:1;transform:translateY(20px)}100%{opacity:0;transform:translateY(-2000px)}}.animated.bounceOutUp{-webkit-animation-name:bounceOutUp;-moz-animation-name:bounceOutUp;-o-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes bounceOutDown{0%{-webkit-transform:translateY(0)}20%{opacity:1;-webkit-transform:translateY(-20px)}100%{opacity:0;-webkit-transform:translateY(2000px)}}@-moz-keyframes bounceOutDown{0%{-moz-transform:translateY(0)}20%{opacity:1;-moz-transform:translateY(-20px)}100%{opacity:0;-moz-transform:translateY(2000px)}}@-o-keyframes bounceOutDown{0%{-o-transform:translateY(0)}20%{opacity:1;-o-transform:translateY(-20px)}100%{opacity:0;-o-transform:translateY(2000px)}}@keyframes bounceOutDown{0%{transform:translateY(0)}20%{opacity:1;transform:translateY(-20px)}100%{opacity:0;transform:translateY(2000px)}}.animated.bounceOutDown{-webkit-animation-name:bounceOutDown;-moz-animation-name:bounceOutDown;-o-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{0%{-webkit-transform:translateX(0)}20%{opacity:1;-webkit-transform:translateX(20px)}100%{opacity:0;-webkit-transform:translateX(-2000px)}}@-moz-keyframes bounceOutLeft{0%{-moz-transform:translateX(0)}20%{opacity:1;-moz-transform:translateX(20px)}100%{opacity:0;-moz-transform:translateX(-2000px)}}@-o-keyframes bounceOutLeft{0%{-o-transform:translateX(0)}20%{opacity:1;-o-transform:translateX(20px)}100%{opacity:0;-o-transform:translateX(-2000px)}}@keyframes bounceOutLeft{0%{transform:translateX(0)}20%{opacity:1;transform:translateX(20px)}100%{opacity:0;transform:translateX(-2000px)}}.animated.bounceOutLeft{-webkit-animation-name:bounceOutLeft;-moz-animation-name:bounceOutLeft;-o-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{0%{-webkit-transform:translateX(0)}20%{opacity:1;-webkit-transform:translateX(-20px)}100%{opacity:0;-webkit-transform:translateX(2000px)}}@-moz-keyframes bounceOutRight{0%{-moz-transform:translateX(0)}20%{opacity:1;-moz-transform:translateX(-20px)}100%{opacity:0;-moz-transform:translateX(2000px)}}@-o-keyframes bounceOutRight{0%{-o-transform:translateX(0)}20%{opacity:1;-o-transform:translateX(-20px)}100%{opacity:0;-o-transform:translateX(2000px)}}@keyframes bounceOutRight{0%{transform:translateX(0)}20%{opacity:1;transform:translateX(-20px)}100%{opacity:0;transform:translateX(2000px)}}.animated.bounceOutRight{-webkit-animation-name:bounceOutRight;-moz-animation-name:bounceOutRight;-o-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes rotateIn{0%{-webkit-transform-origin:center center;-webkit-transform:rotate(-200deg);opacity:0}100%{-webkit-transform-origin:center center;-webkit-transform:rotate(0);opacity:1}}@-moz-keyframes rotateIn{0%{-moz-transform-origin:center center;-moz-transform:rotate(-200deg);opacity:0}100%{-moz-transform-origin:center center;-moz-transform:rotate(0);opacity:1}}@-o-keyframes rotateIn{0%{-o-transform-origin:center center;-o-transform:rotate(-200deg);opacity:0}100%{-o-transform-origin:center center;-o-transform:rotate(0);opacity:1}}@keyframes rotateIn{0%{transform-origin:center center;transform:rotate(-200deg);opacity:0}100%{transform-origin:center center;transform:rotate(0);opacity:1}}.animated.rotateIn{-webkit-animation-name:rotateIn;-moz-animation-name:rotateIn;-o-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(90deg);opacity:0}100%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(0);opacity:1}}@-moz-keyframes rotateInUpLeft{0%{-moz-transform-origin:left bottom;-moz-transform:rotate(90deg);opacity:0}100%{-moz-transform-origin:left bottom;-moz-transform:rotate(0);opacity:1}}@-o-keyframes rotateInUpLeft{0%{-o-transform-origin:left bottom;-o-transform:rotate(90deg);opacity:0}100%{-o-transform-origin:left bottom;-o-transform:rotate(0);opacity:1}}@keyframes rotateInUpLeft{0%{transform-origin:left bottom;transform:rotate(90deg);opacity:0}100%{transform-origin:left bottom;transform:rotate(0);opacity:1}}.animated.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;-moz-animation-name:rotateInUpLeft;-o-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(-90deg);opacity:0}100%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(0);opacity:1}}@-moz-keyframes rotateInDownLeft{0%{-moz-transform-origin:left bottom;-moz-transform:rotate(-90deg);opacity:0}100%{-moz-transform-origin:left bottom;-moz-transform:rotate(0);opacity:1}}@-o-keyframes rotateInDownLeft{0%{-o-transform-origin:left bottom;-o-transform:rotate(-90deg);opacity:0}100%{-o-transform-origin:left bottom;-o-transform:rotate(0);opacity:1}}@keyframes rotateInDownLeft{0%{transform-origin:left bottom;transform:rotate(-90deg);opacity:0}100%{transform-origin:left bottom;transform:rotate(0);opacity:1}}.animated.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;-moz-animation-name:rotateInDownLeft;-o-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(0);opacity:1}}@-moz-keyframes rotateInUpRight{0%{-moz-transform-origin:right bottom;-moz-transform:rotate(-90deg);opacity:0}100%{-moz-transform-origin:right bottom;-moz-transform:rotate(0);opacity:1}}@-o-keyframes rotateInUpRight{0%{-o-transform-origin:right bottom;-o-transform:rotate(-90deg);opacity:0}100%{-o-transform-origin:right bottom;-o-transform:rotate(0);opacity:1}}@keyframes rotateInUpRight{0%{transform-origin:right bottom;transform:rotate(-90deg);opacity:0}100%{transform-origin:right bottom;transform:rotate(0);opacity:1}}.animated.rotateInUpRight{-webkit-animation-name:rotateInUpRight;-moz-animation-name:rotateInUpRight;-o-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(90deg);opacity:0}100%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(0);opacity:1}}@-moz-keyframes rotateInDownRight{0%{-moz-transform-origin:right bottom;-moz-transform:rotate(90deg);opacity:0}100%{-moz-transform-origin:right bottom;-moz-transform:rotate(0);opacity:1}}@-o-keyframes rotateInDownRight{0%{-o-transform-origin:right bottom;-o-transform:rotate(90deg);opacity:0}100%{-o-transform-origin:right bottom;-o-transform:rotate(0);opacity:1}}@keyframes rotateInDownRight{0%{transform-origin:right bottom;transform:rotate(90deg);opacity:0}100%{transform-origin:right bottom;transform:rotate(0);opacity:1}}.animated.rotateInDownRight{-webkit-animation-name:rotateInDownRight;-moz-animation-name:rotateInDownRight;-o-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateOut{0%{-webkit-transform-origin:center center;-webkit-transform:rotate(0);opacity:1}100%{-webkit-transform-origin:center center;-webkit-transform:rotate(200deg);opacity:0}}@-moz-keyframes rotateOut{0%{-moz-transform-origin:center center;-moz-transform:rotate(0);opacity:1}100%{-moz-transform-origin:center center;-moz-transform:rotate(200deg);opacity:0}}@-o-keyframes rotateOut{0%{-o-transform-origin:center center;-o-transform:rotate(0);opacity:1}100%{-o-transform-origin:center center;-o-transform:rotate(200deg);opacity:0}}@keyframes rotateOut{0%{transform-origin:center center;transform:rotate(0);opacity:1}100%{transform-origin:center center;transform:rotate(200deg);opacity:0}}.animated.rotateOut{-webkit-animation-name:rotateOut;-moz-animation-name:rotateOut;-o-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(0);opacity:1}100%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(-90deg);opacity:0}}@-moz-keyframes rotateOutUpLeft{0%{-moz-transform-origin:left bottom;-moz-transform:rotate(0);opacity:1}100%{-moz-transform-origin:left bottom;-moz-transform:rotate(-90deg);opacity:0}}@-o-keyframes rotateOutUpLeft{0%{-o-transform-origin:left bottom;-o-transform:rotate(0);opacity:1}100%{-o-transform-origin:left bottom;-o-transform:rotate(-90deg);opacity:0}}@keyframes rotateOutUpLeft{0%{transform-origin:left bottom;transform:rotate(0);opacity:1}100%{transform-origin:left bottom;transform:rotate(-90deg);opacity:0}}.animated.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;-moz-animation-name:rotateOutUpLeft;-o-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(0);opacity:1}100%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(90deg);opacity:0}}@-moz-keyframes rotateOutDownLeft{0%{-moz-transform-origin:left bottom;-moz-transform:rotate(0);opacity:1}100%{-moz-transform-origin:left bottom;-moz-transform:rotate(90deg);opacity:0}}@-o-keyframes rotateOutDownLeft{0%{-o-transform-origin:left bottom;-o-transform:rotate(0);opacity:1}100%{-o-transform-origin:left bottom;-o-transform:rotate(90deg);opacity:0}}@keyframes rotateOutDownLeft{0%{transform-origin:left bottom;transform:rotate(0);opacity:1}100%{transform-origin:left bottom;transform:rotate(90deg);opacity:0}}.animated.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;-moz-animation-name:rotateOutDownLeft;-o-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(0);opacity:1}100%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(90deg);opacity:0}}@-moz-keyframes rotateOutUpRight{0%{-moz-transform-origin:right bottom;-moz-transform:rotate(0);opacity:1}100%{-moz-transform-origin:right bottom;-moz-transform:rotate(90deg);opacity:0}}@-o-keyframes rotateOutUpRight{0%{-o-transform-origin:right bottom;-o-transform:rotate(0);opacity:1}100%{-o-transform-origin:right bottom;-o-transform:rotate(90deg);opacity:0}}@keyframes rotateOutUpRight{0%{transform-origin:right bottom;transform:rotate(0);opacity:1}100%{transform-origin:right bottom;transform:rotate(90deg);opacity:0}}.animated.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;-moz-animation-name:rotateOutUpRight;-o-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(0);opacity:1}100%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(-90deg);opacity:0}}@-moz-keyframes rotateOutDownRight{0%{-moz-transform-origin:right bottom;-moz-transform:rotate(0);opacity:1}100%{-moz-transform-origin:right bottom;-moz-transform:rotate(-90deg);opacity:0}}@-o-keyframes rotateOutDownRight{0%{-o-transform-origin:right bottom;-o-transform:rotate(0);opacity:1}100%{-o-transform-origin:right bottom;-o-transform:rotate(-90deg);opacity:0}}@keyframes rotateOutDownRight{0%{transform-origin:right bottom;transform:rotate(0);opacity:1}100%{transform-origin:right bottom;transform:rotate(-90deg);opacity:0}}.animated.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;-moz-animation-name:rotateOutDownRight;-o-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes hinge{0%{-webkit-transform:rotate(0);-webkit-transform-origin:top left;-webkit-animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);-webkit-transform-origin:top left;-webkit-animation-timing-function:ease-in-out}40%{-webkit-transform:rotate(60deg);-webkit-transform-origin:top left;-webkit-animation-timing-function:ease-in-out}80%{-webkit-transform:rotate(60deg) translateY(0);opacity:1;-webkit-transform-origin:top left;-webkit-animation-timing-function:ease-in-out}100%{-webkit-transform:translateY(700px);opacity:0}}@-moz-keyframes hinge{0%{-moz-transform:rotate(0);-moz-transform-origin:top left;-moz-animation-timing-function:ease-in-out}20%,60%{-moz-transform:rotate(80deg);-moz-transform-origin:top left;-moz-animation-timing-function:ease-in-out}40%{-moz-transform:rotate(60deg);-moz-transform-origin:top left;-moz-animation-timing-function:ease-in-out}80%{-moz-transform:rotate(60deg) translateY(0);opacity:1;-moz-transform-origin:top left;-moz-animation-timing-function:ease-in-out}100%{-moz-transform:translateY(700px);opacity:0}}@-o-keyframes hinge{0%{-o-transform:rotate(0);-o-transform-origin:top left;-o-animation-timing-function:ease-in-out}20%,60%{-o-transform:rotate(80deg);-o-transform-origin:top left;-o-animation-timing-function:ease-in-out}40%{-o-transform:rotate(60deg);-o-transform-origin:top left;-o-animation-timing-function:ease-in-out}80%{-o-transform:rotate(60deg) translateY(0);opacity:1;-o-transform-origin:top left;-o-animation-timing-function:ease-in-out}100%{-o-transform:translateY(700px);opacity:0}}@keyframes hinge{0%{transform:rotate(0);transform-origin:top left;animation-timing-function:ease-in-out}20%,60%{transform:rotate(80deg);transform-origin:top left;animation-timing-function:ease-in-out}40%{transform:rotate(60deg);transform-origin:top left;animation-timing-function:ease-in-out}80%{transform:rotate(60deg) translateY(0);opacity:1;transform-origin:top left;animation-timing-function:ease-in-out}100%{transform:translateY(700px);opacity:0}}.animated.hinge{-webkit-animation-name:hinge;-moz-animation-name:hinge;-o-animation-name:hinge;animation-name:hinge}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0px) rotate(0deg)}}@-moz-keyframes rollIn{0%{opacity:0;-moz-transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-moz-transform:translateX(0px) rotate(0deg)}}@-o-keyframes rollIn{0%{opacity:0;-o-transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-o-transform:translateX(0px) rotate(0deg)}}@keyframes rollIn{0%{opacity:0;transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;transform:translateX(0px) rotate(0deg)}}.animated.rollIn{-webkit-animation-name:rollIn;-moz-animation-name:rollIn;-o-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1;-webkit-transform:translateX(0px) rotate(0deg)}100%{opacity:0;-webkit-transform:translateX(100%) rotate(120deg)}}@-moz-keyframes rollOut{0%{opacity:1;-moz-transform:translateX(0px) rotate(0deg)}100%{opacity:0;-moz-transform:translateX(100%) rotate(120deg)}}@-o-keyframes rollOut{0%{opacity:1;-o-transform:translateX(0px) rotate(0deg)}100%{opacity:0;-o-transform:translateX(100%) rotate(120deg)}}@keyframes rollOut{0%{opacity:1;transform:translateX(0px) rotate(0deg)}100%{opacity:0;transform:translateX(100%) rotate(120deg)}}.animated.rollOut{-webkit-animation-name:rollOut;-moz-animation-name:rollOut;-o-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes lightSpeedIn{0%{-webkit-transform:translateX(100%) skewX(-30deg);opacity:0}60%{-webkit-transform:translateX(-20%) skewX(30deg);opacity:1}80%{-webkit-transform:translateX(0%) skewX(-15deg);opacity:1}100%{-webkit-transform:translateX(0%) skewX(0deg);opacity:1}}@-moz-keyframes lightSpeedIn{0%{-moz-transform:translateX(100%) skewX(-30deg);opacity:0}60%{-moz-transform:translateX(-20%) skewX(30deg);opacity:1}80%{-moz-transform:translateX(0%) skewX(-15deg);opacity:1}100%{-moz-transform:translateX(0%) skewX(0deg);opacity:1}}@-o-keyframes lightSpeedIn{0%{-o-transform:translateX(100%) skewX(-30deg);opacity:0}60%{-o-transform:translateX(-20%) skewX(30deg);opacity:1}80%{-o-transform:translateX(0%) skewX(-15deg);opacity:1}100%{-o-transform:translateX(0%) skewX(0deg);opacity:1}}@keyframes lightSpeedIn{0%{transform:translateX(100%) skewX(-30deg);opacity:0}60%{transform:translateX(-20%) skewX(30deg);opacity:1}80%{transform:translateX(0%) skewX(-15deg);opacity:1}100%{transform:translateX(0%) skewX(0deg);opacity:1}}.animated.lightSpeedIn{-webkit-animation-name:lightSpeedIn;-moz-animation-name:lightSpeedIn;-o-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;-moz-animation-timing-function:ease-out;-o-animation-timing-function:ease-out;animation-timing-function:ease-out;-webkit-animation-duration:.5s;-moz-animation-duration:.5s;-o-animation-duration:.5s;animation-duration:.5s}@-webkit-keyframes lightSpeedOut{0%{-webkit-transform:translateX(0%) skewX(0deg);opacity:1}100%{-webkit-transform:translateX(100%) skewX(-30deg);opacity:0}}@-moz-keyframes lightSpeedOut{0%{-moz-transform:translateX(0%) skewX(0deg);opacity:1}100%{-moz-transform:translateX(100%) skewX(-30deg);opacity:0}}@-o-keyframes lightSpeedOut{0%{-o-transform:translateX(0%) skewX(0deg);opacity:1}100%{-o-transform:translateX(100%) skewX(-30deg);opacity:0}}@keyframes lightSpeedOut{0%{transform:translateX(0%) skewX(0deg);opacity:1}100%{transform:translateX(100%) skewX(-30deg);opacity:0}}.animated.lightSpeedOut{-webkit-animation-name:lightSpeedOut;-moz-animation-name:lightSpeedOut;-o-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;-moz-animation-timing-function:ease-in;-o-animation-timing-function:ease-in;animation-timing-function:ease-in;-webkit-animation-duration:.25s;-moz-animation-duration:.25s;-o-animation-duration:.25s;animation-duration:.25s}.fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg)}100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)}100%{-o-transform:rotate(359deg)}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg)}100%{-ms-transform:rotate(359deg)}}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}/*! + * jQuery UI Bootstrap (1.0 alpha) + * http://addyosmani.github.io/jqueryui-bootstrap/ + * + * Copyright 2012 - 2013, Addy Osmani + * Dual licensed under the MIT or GPL Version 2 licenses. + * + * Portions copyright jQuery UI & Twitter Bootstrap + */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:after,.ui-helper-clearfix:before{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden}.ui-helper-clearfix{display:block;min-height:0}* html .ui-helper-clearfix{height:1%}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:alpha(opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;z-index:99999;display:block}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-widget{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px}.ui-widget .ui-widget{font-size:13px}.ui-widget button,.ui-widget input,.ui-widget select,.ui-widget textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:inherit}.ui-widget-content{border:1px solid #aaa;background:#fff;color:#404040}.ui-widget-header{font-weight:700;background-color:#F5F5F5;border-color:#DDD;color:#333}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{color:#333;background-color:#fff;font-weight:400;border:1px solid #ccc}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-focus,.ui-state-hover,.ui-widget-content .ui-state-focus,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-focus,.ui-widget-header .ui-state-hover{color:#333;background-color:#ebebeb;border-color:#adadad;text-decoration:none}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:#333;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #adadad;font-weight:400;color:#333}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#333;text-decoration:none}.ui-widget :active{outline:0}.ui-state-default,.ui-state-error,.ui-state-highlight{position:relative;border-width:1px;border-style:solid}.ui-state-default p,.ui-state-error p,.ui-state-highlight p{font-size:13px;font-weight:400;line-height:18px;margin:7px 15px}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#2d6987}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.ui-state-error a,.ui-state-error-text,.ui-widget-content .ui-state-error a,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error a,.ui-widget-header .ui-state-error-text{color:#953b39}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:700}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:alpha(opacity=70);font-weight:400}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:alpha(opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:alpha(opacity=35)}.ui-icon{width:16px;height:16px;background-image:url(../img/jqueryui/ui-icons_222222_256x240.png)}.ui-widget-content .ui-icon,.ui-widget-header .ui-icon{background-image:url(../img/jqueryui/ui-icons_222222_256x240.png)}.ui-state-default .ui-icon{background-image:url(../img/jqueryui/ui-icons_888888_256x240.png)}.ui-state-active .ui-icon,.ui-state-focus .ui-icon,.ui-state-hover .ui-icon{background-image:url(../img/jqueryui/ui-icons_454545_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(../img/jqueryui/ui-icons_2e83ff_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(../img/jqueryui/ui-icons_f6cf3b_256x240.png)}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-first,.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.ui-corner-left,.ui-corner-tl,.ui-corner-top{-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px}.ui-corner-right,.ui-corner-top,.ui-corner-tr{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px}.ui-corner-bl,.ui-corner-bottom,.ui-corner-left{-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px}.ui-corner-bottom,.ui-corner-br,.ui-corner-right{-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px}.ui-widget-overlay{opacity:.3;filter:alpha(opacity=30);width:100%}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa;opacity:.3;filter:alpha(opacity=30);-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px}.ui-accordion{width:100%}.ui-accordion .ui-accordion-li-fix{display:inline}.ui-accordion .ui-accordion-header-active{border-bottom:0!important}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;min-height:0}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-noicons{padding-left:.7em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{border-top:0 none;margin-top:-3px;position:relative;top:1px;margin-bottom:2px;overflow:auto;display:none}.ui-accordion .ui-accordion-content-active{display:block}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.428571429;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;border:1px solid #ccc;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.ui-button:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.ui-button:focus,.ui-button:hover{color:#333;background-color:#ebebeb;border-color:#adadad;text-decoration:none}fieldset[disabled] ui-button,fieldset[disabled] ui-button.ui-state-active,fieldset[disabled] ui-button:active,fieldset[disabled] ui-button:focus,fieldset[disabled] ui-button:hover,ui-button.disabled,ui-button.disabled.active,ui-button.disabled:active,ui-button.disabled:focus,ui-button.disabled:hover,ui-button[disabled],ui-button[disabled].active,ui-button[disabled]:active,ui-button[disabled]:focus,ui-button[disabled]:hover{background-color:#fff;border-color:#ccc}.ui-btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.ui-btn-sm,.ui-btn-xs{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.ui-btn-xs{padding:1px 5px}.ui-btn-block{display:block;width:100%;padding-right:0;padding-left:0}.ui-btn-block+.ui-btn-block{margin-top:5px}input[type=button].ui-btn-block,input[type=reset].ui-btn-block,input[type=submit].ui-btn-block{width:100%}.ui-button-text-icon-primary .ui-button-icon-primary{float:left}.ui-button-text-icon-primary{padding:2px 7px 3px}.ui-button-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.ui-button-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.ui-button-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.ui-button-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.ui-button-inverse{color:#fff;background-color:#222;border-color:#080808}.ui-button-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.ui-button-error{color:#fff;background-color:#c43c35;border-color:#882a25}.ui-button-danger:hover,.ui-button-info:hover,.ui-button-inverse:hover,.ui-button-primary:hover,.ui-button-success:hover,.ui-button-warning:hover{text-decoration:none}.ui-button-primary:focus,.ui-button-primary:hover{color:#fff;background-color:#3276b1;border-color:#285e8e}.ui-button-success:hover{color:#fff;background-color:#47a447;border-color:#398439}.ui-button-info:hover{color:#fff;background-color:#39b3d7;border-color:#269abc}.ui-button-danger:hover{color:#fff;background-color:#d2322d;border-color:#ac2925}.ui-button-warning:hover{color:#fff;background-color:#ed9c28;border-color:#d58512}.ui-button-inverse:hover{color:#fff;background-color:#363636;border-color:#000}.ui-button-icon-only{width:2.2em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button-text-icon-primary .ui-button-icon-primary.ui-icon{margin-top:5px}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999px;display:none}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-icons-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon{margin-bottom:0;margin-top:0;top:50%}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px;margin-right:-6px}.ui-button-icons-only .ui-button-icon-primary,.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary{left:.5em}.ui-button-icons-only .ui-button-icon-secondary,.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-state-active{color:#fff;background-color:#428bca;border-color:#357ebd}.ui-buttonset .ui-state-active.ui-state-hover{color:#fff;background-color:#3276b1;border-color:#285e8e}.ui-buttonset .ui-button{margin-left:0;margin-right:-.4em}button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-menu{list-style:none;margin:0;display:block;outline:0}.ui-menu .ui-menu{margin-top:-3px;position:absolute;list-style:none}.ui-menu .ui-menu-item{margin:0;padding:0;width:100%;list-style:none;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-divider{margin:5px -2px 5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;min-height:0;font-weight:400}.ui-menu .ui-menu-item a.ui-corner-all{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.ui-menu .ui-menu-item a.ui-state-active,.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-widget-content{font-weight:700;margin:0;background-color:#428BCA;border-color:#357EBD;color:#FFF;display:block;white-space:nowrap}.ui-menu .ui-menu-item a.ui-state-active{padding:1px .4em}.ui-menu .ui-state-disabled{line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right}.ui-menu{margin-bottom:2em}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:0 0;vertical-align:middle}.ui-spinner-button{height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-dialog{position:absolute;top:0;left:0;padding:0;width:300px;overflow:hidden;background-clip:padding-box;background-color:#fff;border-radius:6px;-moz-box-shadow:0 3px 7px rgba(0,0,0,.3);outline:medium none;z-index:1050}.ui-dialog .ui-dialog-titlebar{position:relative;border:0 0 0 1px solid;border-color:#fff;font-size:18px;text-decoration:none;-webkit-border-bottom-right-radius:0;-moz-border-radius-bottomright:0;border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;-moz-border-radius-bottomleft:0;border-bottom-left-radius:0;border-bottom:1px solid #ccc}.ui-dialog .ui-dialog-title{float:left;color:#404040;font-weight:700;padding:5px;text-overflow:ellipsis;overflow:hidden}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:19px;margin:-20px 0 0 0;padding:1px;height:18px;font-size:20px;font-weight:700;line-height:13.5px;text-shadow:0 1px 0 #fff;filter:alpha(opacity=25);-khtml-opacity:.25;-moz-opacity:.25;opacity:.25;background:0 0;border:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin:1px;text-indent:9999px}.ui-dialog .ui-dialog-titlebar-close:focus,.ui-dialog .ui-dialog-titlebar-close:hover{padding:1px;filter:alpha(opacity=90);-moz-opacity:.9;opacity:.9}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:0 0;overflow:auto}.ui-dialog .ui-dialog-buttonpane{border-width:1px 0 0;background-image:none;margin:.5em 0 0;background-color:#fff;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;margin-bottom:0}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{cursor:pointer}.ui-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-dialog-buttonpane .ui-dialog-buttonset .ui-button{color:#fff;background-color:#428bca;border-color:#357ebd}.ui-dialog-buttonpane .ui-dialog-buttonset .ui-button.ui-state-hover{color:#fff;background-color:#3276b1;border-color:#285e8e}.ui-dialog-buttonset .ui-button:not(:first-child){cursor:pointer;display:inline-block;color:#333;background-color:#fff;border:1px solid #ccc;-webkit-transition:.1s linear all;-moz-transition:.1s linear all;-o-transition:.1s linear all;transition:.1s linear all;overflow:visible}.ui-dialog-buttonset .ui-button:not(:first-child) .ui-state-hover{color:#333;background-color:#ebebeb;border-color:#adadad;text-decoration:none}.ui-dialog-buttonset .ui-button.ui-button-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.ui-dialog-buttonset .ui-button.ui-button-info.ui-state-hover{color:#fff;background-color:#39b3d7;border-color:#269abc}.ui-dialog-buttonset .ui-button.ui-button-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.ui-dialog-buttonset .ui-button.ui-button-success.ui-state-hover{color:#fff;background-color:#47a447;border-color:#398439}.ui-dialog-buttonset .ui-button.ui-button-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.ui-dialog-buttonset .ui-button.ui-button-warning.ui-state-hover{color:#fff;background-color:#ed9c28;border-color:#d58512}.ui-dialog-buttonset .ui-button.ui-button-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.ui-dialog-buttonset .ui-button.ui-button-danger.ui-state-hover{color:#fff;background-color:#d2322d;border-color:#ac2925}.ui-dialog-buttonset .ui-button.ui-button-inverse{color:#fff;background-color:#222;border-color:#080808}.ui-dialog-buttonset .ui-button.ui-button-inverse.ui-state-hover{color:#fff;background-color:#363636;border-color:#000}.ui-slider{position:relative;text-align:left}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:16px;height:18px;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0;color:#fff;background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.ui-slider-horizontal{height:10px;background:#D5D5D5;border:none}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em;background-color:#fff;border-color:#CCC}.ui-slider-horizontal .ui-slider-handle:focus{background-color:#fff;border-color:#357EBD}.ui-slider-horizontal .ui-slider-handle:hover{background-color:#fff;border-color:#285E8E;outline:0}.ui-slider-horizontal .ui-slider-handle:active{background-color:#428BCA;border-color:#3276B1}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-tabs{position:relative;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.ui-tabs .ui-tabs-nav{border:solid #ddd;border-width:0 0 1px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;background:0 0}.ui-tabs .ui-tabs-nav li{position:relative;top:0;float:left;margin-bottom:-1px;border:0;list-style:none;white-space:nowrap}.ui-tabs-nav .ui-state-default{border:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.ui-tabs .ui-tabs-nav li a{float:left;-webkit-border-radius:4px 4px 0 0;padding:8px 12px;font-weight:400;text-decoration:none;outline:0;background:0 0}.ui-tabs .ui-tabs-nav li a:hover{border:1px solid #f5f5f5;border-bottom:1px solid #ddd;background-color:#f5f5f5}.ui-tabs .ui-tabs-nav li.ui-tabs-active a{border:1px solid #ddd;border-bottom:1px solid #fff;background-color:#fff;color:#555}.ui-tabs .ui-tabs-nav li.ui-tabs-active:hover{background:#fff;cursor:text}.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-tabs-active a,.ui-tabs .ui-tabs-nav li.ui-tabs-loading a{cursor:text}.ui-tabs .ui-tabs-panel{display:block;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;background:0 0}.ui-tabs .ui-tabs-hide{display:none!important}.ui-tabs .ui-tabs-nav li{filter:none}.ui-tooltip{display:block;font-size:11px;opacity:.8;position:absolute;visibility:visible;z-index:1024;max-width:200px;background:#000;border:1px solid #000;color:#FFF;padding:3px 8px;text-align:center;text-decoration:none;-webkit-box-shadow:inset 0 1px 0 #000;-moz-box-shadow:inset 0 1px 0 #000;box-shadow:inset 0 1px 0 #000;border-radius:4px}body .ui-tooltip{border-width:1px}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;border:0;font-weight:700;width:100%;padding:4px 0;background-color:#f5f5f5;color:gray}.ui-datepicker .ui-datepicker-next,.ui-datepicker .ui-datepicker-prev{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-next span,.ui-datepicker .ui-datepicker-prev span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month-year{width:100%}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td a,.ui-datepicker td span{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker-cover{display:none;display:block;position:absolute;z-index:-1;filter:mask();top:-4px;left:-4px;width:200px;height:200px}.ui-datepicker th{font-weight:700;color:gray}.ui-datepicker-today a:hover{background-color:gray;color:#fff}.ui-datepicker-today a{background-color:#BFBFBF;cursor:pointer;padding:0 4px;margin-bottom:0}.ui-datepicker td a{margin-bottom:0;border:0}.ui-datepicker td:hover{color:#fff}.ui-datepicker td .ui-state-default{border:0;background:0 0;margin-bottom:0;padding:5px;color:gray;text-align:center;filter:none}.ui-datepicker td .ui-state-highlight{color:#fff;background-color:#A90329;text-shadow:0 -1px 0 rgba(0,0,0,.25);border-color:rgba(0,0,0,.1)rgba(0,0,0,.1)rgba(0,0,0,.25);-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.ui-datepicker td .ui-state-active{color:#333;background-color:#ebebeb;margin-bottom:0;font-size:normal;text-shadow:0;border-color:rgba(0,0,0,.1)rgba(0,0,0,.1)rgba(0,0,0,.25);-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.ui-datepicker td .ui-state-hover{color:#fff;background:#428bca;background-color:#428bca;text-shadow:0 -1px 0 rgba(0,0,0,.25);border-color:#357ebd;border-color:rgba(0,0,0,.1)rgba(0,0,0,.1)rgba(0,0,0,.25);-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.ui-progressbar{height:2em;margin-bottom:20px;border:0;overflow:hidden;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.ui-progressbar .ui-progressbar-value{margin:0;height:100%;color:#fff;background-color:#428BCA;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;transition:width .6s ease}.ui-progressbar .ui-progressbar-overlay{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent 25%,transparent 50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent 25%,transparent 50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent 25%,transparent 50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent 75%,transparent);background-size:40px 40px;-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-toolbar{padding:7px 14px;margin:0 0 18px;background-color:#f5f5f5;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top,#fff,#f5f5f5);background-image:-moz-linear-gradient(top,#fff,#f5f5f5);background-image:-o-linear-gradient(top,#fff,#f5f5f5);background-image:linear-gradient(top,#fff,#f5f5f5);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0);border:1px solid #ddd;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.customfile-button{padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.428571429;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;border:1px solid #ccc;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}div.wijmo-wijmenu{padding:0 20px;background-color:#222;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top,#333,#222);background-image:-moz-linear-gradient(top,#333,#222);background-image:-o-linear-gradient(top,#333,#222);background-image:linear-gradient(top,#333,#222);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.25),inset 0 -1px 0 rgba(0,0,0,.1);-moz-box-shadow:0 1px 3px rgba(0,0,0,.25),inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:0 1px 3px rgba(0,0,0,.25),inset 0 -1px 0 rgba(0,0,0,.1)}.wijmo-wijmenu .ui-state-default .wijmo-wijmenu-text{color:#bfbfbf}.wijmo-wijmenu .ui-state-hover{background:#444;background:rgba(255,255,255,.05)}.wijmo-wijmenu .ui-state-hover .wijmo-wijmenu-text{color:#fff}div.wijmo-wijmenu .ui-widget-header h3{position:relative;margin-top:1px;padding:0}.wijmo-wijmenu h3 a{color:#fff;display:block;float:left;font-size:20px;font-weight:200;line-height:1;margin-left:-20px;margin-top:1px;padding:8px 20px 12px}.wijmo-wijmenu h3 a:hover{background-color:rgba(255,255,255,.05);color:#fff;text-decoration:none}.wijmo-wijmenu .ui-widget-header{border:0}.wijmo-wijmenu .wijmo-wijmenu-parent .wijmo-wijmenu-child{padding:.3em 0}div.wijmo-wijmenu .wijmo-wijmenu-item .wijmo-wijmenu-child{background:#333;border:0;margin:0;padding:6px 0;width:160px;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.2);-moz-box-shadow:0 2px 4px rgba(0,0,0,.2);box-shadow:0 2px 4px rgba(0,0,0,.2)}div.wijmo-wijmenu .wijmo-wijmenu-item{margin:0;border:0}.wijmo-wijmenu a.wijmo-wijmenu-link{margin:0;line-height:19px;padding:10px 10px 11px;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}div.wijmo-wijmenu .wijmo-wijmenu-child .wijmo-wijmenu-link{display:block;float:none;padding:4px 15px;width:auto}div.wijmo-wijmenu .wijmo-wijmenu-child .wijmo-wijmenu-text{float:none}.wijmo-wijmenu .wijmo-wijmenu-item .wijmo-wijmenu-child .ui-state-hover{background:#191919}.wijmo-wijmenu .wijmo-wijmenu-item .wijmo-wijmenu-separator{padding:5px 0;background-image:none;background-color:#222;border-top:1px solid #444;border-bottom:0;border-left:0;border-right:0}.wijmo-wijmenu .wijmo-wijmenu-item input{-moz-transition:none 0s ease 0s;background-color:rgba(255,255,255,.3);border:1px solid #111;border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1)inset,0 1px 0 rgba(255,255,255,.25);-moz-box-shadow:0 1px 2px rgba(0,0,0,.1)inset,0 1px 0 rgba(255,255,255,.25);box-shadow:0 1px 2px rgba(0,0,0,.1)inset,0 1px 0 rgba(255,255,255,.25);color:rgba(255,255,255,.75);font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;line-height:1;margin:5px 10px 0;padding:4px 9px;width:100px}.wijmo-wijmenu .wijmo-wijmenu-item input:hover{background-color:rgba(255,255,255,.5);color:#fff}.wijmo-wijmenu .wijmo-wijmenu-item input:focus{background-color:#fff;border:0 none;-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);-moz-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15);color:#404040;outline:0 none;padding:5px 10px;text-shadow:0 1px 0 #fff}.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.wijmo-wijmenu .ui-state-default{text-shadow:none}.wijmo-wijmenu .ui-state-default{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;color:#bfbfbf;filter:none}.ui-button-icon-primary.ui-icon[class*=" icon-"]:before,.ui-button-icon-primary.ui-icon[class^=icon-]:before,.ui-button-icon-secondary.ui-icon[class*=" icon-"]:before,.ui-button-icon-secondary.ui-icon[class^=icon-]:before{font-size:inherit;margin-left:7px!important;margin-left:5px;display:inline;text-decoration:inherit;color:inherit}.ui-state-default .ui-icon[class*=" icon-"]{background:0 0;margin-left:-12px}.flag{width:16px;height:11px;background:url(../img/flags/flags.png) no-repeat;margin-top:-.18em;display:inline-block}.flag.flag-ad{background-position:-16px 0}.flag.flag-ae{background-position:-32px 0}.flag.flag-af{background-position:-48px 0}.flag.flag-ag{background-position:-64px 0}.flag.flag-ai{background-position:-80px 0}.flag.flag-al{background-position:-96px 0}.flag.flag-am{background-position:-112px 0}.flag.flag-an{background-position:-128px 0}.flag.flag-ao{background-position:-144px 0}.flag.flag-ar{background-position:-160px 0}.flag.flag-as{background-position:-176px 0}.flag.flag-at{background-position:-192px 0}.flag.flag-au{background-position:-208px 0}.flag.flag-aw{background-position:-224px 0}.flag.flag-az{background-position:-240px 0}.flag.flag-ba{background-position:0 -11px}.flag.flag-bb{background-position:-16px -11px}.flag.flag-bd{background-position:-32px -11px}.flag.flag-be{background-position:-48px -11px}.flag.flag-bf{background-position:-64px -11px}.flag.flag-bg{background-position:-80px -11px}.flag.flag-bh{background-position:-96px -11px}.flag.flag-bi{background-position:-112px -11px}.flag.flag-bj{background-position:-128px -11px}.flag.flag-bm{background-position:-144px -11px}.flag.flag-bn{background-position:-160px -11px}.flag.flag-bo{background-position:-176px -11px}.flag.flag-br{background-position:-192px -11px}.flag.flag-bs{background-position:-208px -11px}.flag.flag-bt{background-position:-224px -11px}.flag.flag-bv{background-position:-240px -11px}.flag.flag-bw{background-position:0 -22px}.flag.flag-by{background-position:-16px -22px}.flag.flag-bz{background-position:-32px -22px}.flag.flag-ca{background-position:-48px -22px}.flag.flag-catalonia{background-position:-64px -22px}.flag.flag-cd{background-position:-80px -22px}.flag.flag-cf{background-position:-96px -22px}.flag.flag-cg{background-position:-112px -22px}.flag.flag-ch{background-position:-128px -22px}.flag.flag-ci{background-position:-144px -22px}.flag.flag-ck{background-position:-160px -22px}.flag.flag-cl{background-position:-176px -22px}.flag.flag-cm{background-position:-192px -22px}.flag.flag-cn{background-position:-208px -22px}.flag.flag-co{background-position:-224px -22px}.flag.flag-cr{background-position:-240px -22px}.flag.flag-cu{background-position:0 -33px}.flag.flag-cv{background-position:-16px -33px}.flag.flag-cw{background-position:-32px -33px}.flag.flag-cy{background-position:-48px -33px}.flag.flag-cz{background-position:-64px -33px}.flag.flag-de{background-position:-80px -33px}.flag.flag-dj{background-position:-96px -33px}.flag.flag-dk{background-position:-112px -33px}.flag.flag-dm{background-position:-128px -33px}.flag.flag-do{background-position:-144px -33px}.flag.flag-dz{background-position:-160px -33px}.flag.flag-ec{background-position:-176px -33px}.flag.flag-ee{background-position:-192px -33px}.flag.flag-eg{background-position:-208px -33px}.flag.flag-eh{background-position:-224px -33px}.flag.flag-england{background-position:-240px -33px}.flag.flag-er{background-position:0 -44px}.flag.flag-es{background-position:-16px -44px}.flag.flag-et{background-position:-32px -44px}.flag.flag-eu{background-position:-48px -44px}.flag.flag-fi{background-position:-64px -44px}.flag.flag-fj{background-position:-80px -44px}.flag.flag-fk{background-position:-96px -44px}.flag.flag-fm{background-position:-112px -44px}.flag.flag-fo{background-position:-128px -44px}.flag.flag-fr{background-position:-144px -44px}.flag.flag-ga{background-position:-160px -44px}.flag.flag-gb{background-position:-176px -44px}.flag.flag-gd{background-position:-192px -44px}.flag.flag-ge{background-position:-208px -44px}.flag.flag-gf{background-position:-224px -44px}.flag.flag-gg{background-position:-240px -44px}.flag.flag-gh{background-position:0 -55px}.flag.flag-gi{background-position:-16px -55px}.flag.flag-gl{background-position:-32px -55px}.flag.flag-gm{background-position:-48px -55px}.flag.flag-gn{background-position:-64px -55px}.flag.flag-gp{background-position:-80px -55px}.flag.flag-gq{background-position:-96px -55px}.flag.flag-gr{background-position:-112px -55px}.flag.flag-gs{background-position:-128px -55px}.flag.flag-gt{background-position:-144px -55px}.flag.flag-gu{background-position:-160px -55px}.flag.flag-gw{background-position:-176px -55px}.flag.flag-gy{background-position:-192px -55px}.flag.flag-hk{background-position:-208px -55px}.flag.flag-hm{background-position:-224px -55px}.flag.flag-hn{background-position:-240px -55px}.flag.flag-hr{background-position:0 -66px}.flag.flag-ht{background-position:-16px -66px}.flag.flag-hu{background-position:-32px -66px}.flag.flag-ic{background-position:-48px -66px}.flag.flag-id{background-position:-64px -66px}.flag.flag-ie{background-position:-80px -66px}.flag.flag-il{background-position:-96px -66px}.flag.flag-im{background-position:-112px -66px}.flag.flag-in{background-position:-128px -66px}.flag.flag-io{background-position:-144px -66px}.flag.flag-iq{background-position:-160px -66px}.flag.flag-ir{background-position:-176px -66px}.flag.flag-is{background-position:-192px -66px}.flag.flag-it{background-position:-208px -66px}.flag.flag-je{background-position:-224px -66px}.flag.flag-jm{background-position:-240px -66px}.flag.flag-jo{background-position:0 -77px}.flag.flag-jp{background-position:-16px -77px}.flag.flag-ke{background-position:-32px -77px}.flag.flag-kg{background-position:-48px -77px}.flag.flag-kh{background-position:-64px -77px}.flag.flag-ki{background-position:-80px -77px}.flag.flag-km{background-position:-96px -77px}.flag.flag-kn{background-position:-112px -77px}.flag.flag-kp{background-position:-128px -77px}.flag.flag-kr{background-position:-144px -77px}.flag.flag-kurdistan{background-position:-160px -77px}.flag.flag-kw{background-position:-176px -77px}.flag.flag-ky{background-position:-192px -77px}.flag.flag-kz{background-position:-208px -77px}.flag.flag-la{background-position:-224px -77px}.flag.flag-lb{background-position:-240px -77px}.flag.flag-lc{background-position:0 -88px}.flag.flag-li{background-position:-16px -88px}.flag.flag-lk{background-position:-32px -88px}.flag.flag-lr{background-position:-48px -88px}.flag.flag-ls{background-position:-64px -88px}.flag.flag-lt{background-position:-80px -88px}.flag.flag-lu{background-position:-96px -88px}.flag.flag-lv{background-position:-112px -88px}.flag.flag-ly{background-position:-128px -88px}.flag.flag-ma{background-position:-144px -88px}.flag.flag-mc{background-position:-160px -88px}.flag.flag-md{background-position:-176px -88px}.flag.flag-me{background-position:-192px -88px}.flag.flag-mg{background-position:-208px -88px}.flag.flag-mh{background-position:-224px -88px}.flag.flag-mk{background-position:-240px -88px}.flag.flag-ml{background-position:0 -99px}.flag.flag-mm{background-position:-16px -99px}.flag.flag-mn{background-position:-32px -99px}.flag.flag-mo{background-position:-48px -99px}.flag.flag-mp{background-position:-64px -99px}.flag.flag-mq{background-position:-80px -99px}.flag.flag-mr{background-position:-96px -99px}.flag.flag-ms{background-position:-112px -99px}.flag.flag-mt{background-position:-128px -99px}.flag.flag-mu{background-position:-144px -99px}.flag.flag-mv{background-position:-160px -99px}.flag.flag-mw{background-position:-176px -99px}.flag.flag-mx{background-position:-192px -99px}.flag.flag-my{background-position:-208px -99px}.flag.flag-mz{background-position:-224px -99px}.flag.flag-na{background-position:-240px -99px}.flag.flag-nc{background-position:0 -110px}.flag.flag-ne{background-position:-16px -110px}.flag.flag-nf{background-position:-32px -110px}.flag.flag-ng{background-position:-48px -110px}.flag.flag-ni{background-position:-64px -110px}.flag.flag-nl{background-position:-80px -110px}.flag.flag-no{background-position:-96px -110px}.flag.flag-np{background-position:-112px -110px}.flag.flag-nr{background-position:-128px -110px}.flag.flag-nu{background-position:-144px -110px}.flag.flag-nz{background-position:-160px -110px}.flag.flag-om{background-position:-176px -110px}.flag.flag-pa{background-position:-192px -110px}.flag.flag-pe{background-position:-208px -110px}.flag.flag-pf{background-position:-224px -110px}.flag.flag-pg{background-position:-240px -110px}.flag.flag-ph{background-position:0 -121px}.flag.flag-pk{background-position:-16px -121px}.flag.flag-pl{background-position:-32px -121px}.flag.flag-pm{background-position:-48px -121px}.flag.flag-pn{background-position:-64px -121px}.flag.flag-pr{background-position:-80px -121px}.flag.flag-ps{background-position:-96px -121px}.flag.flag-pt{background-position:-112px -121px}.flag.flag-pw{background-position:-128px -121px}.flag.flag-py{background-position:-144px -121px}.flag.flag-qa{background-position:-160px -121px}.flag.flag-re{background-position:-176px -121px}.flag.flag-ro{background-position:-192px -121px}.flag.flag-rs{background-position:-208px -121px}.flag.flag-ru{background-position:-224px -121px}.flag.flag-rw{background-position:-240px -121px}.flag.flag-sa{background-position:0 -132px}.flag.flag-sb{background-position:-16px -132px}.flag.flag-sc{background-position:-32px -132px}.flag.flag-scotland{background-position:-48px -132px}.flag.flag-sd{background-position:-64px -132px}.flag.flag-se{background-position:-80px -132px}.flag.flag-sg{background-position:-96px -132px}.flag.flag-sh{background-position:-112px -132px}.flag.flag-si{background-position:-128px -132px}.flag.flag-sk{background-position:-144px -132px}.flag.flag-sl{background-position:-160px -132px}.flag.flag-sm{background-position:-176px -132px}.flag.flag-sn{background-position:-192px -132px}.flag.flag-so{background-position:-208px -132px}.flag.flag-somaliland{background-position:-224px -132px}.flag.flag-sr{background-position:-240px -132px}.flag.flag-ss{background-position:0 -143px}.flag.flag-st{background-position:-16px -143px}.flag.flag-sv{background-position:-32px -143px}.flag.flag-sx{background-position:-48px -143px}.flag.flag-sy{background-position:-64px -143px}.flag.flag-sz{background-position:-80px -143px}.flag.flag-tc{background-position:-96px -143px}.flag.flag-td{background-position:-112px -143px}.flag.flag-tf{background-position:-128px -143px}.flag.flag-tg{background-position:-144px -143px}.flag.flag-th{background-position:-160px -143px}.flag.flag-tj{background-position:-176px -143px}.flag.flag-tk{background-position:-192px -143px}.flag.flag-tl{background-position:-208px -143px}.flag.flag-tm{background-position:-224px -143px}.flag.flag-tn{background-position:-240px -143px}.flag.flag-to{background-position:0 -154px}.flag.flag-tr{background-position:-16px -154px}.flag.flag-tt{background-position:-32px -154px}.flag.flag-tv{background-position:-48px -154px}.flag.flag-tw{background-position:-64px -154px}.flag.flag-tz{background-position:-80px -154px}.flag.flag-ua{background-position:-96px -154px}.flag.flag-ug{background-position:-112px -154px}.flag.flag-um{background-position:-128px -154px}.flag.flag-us{background-position:-144px -154px}.flag.flag-uy{background-position:-160px -154px}.flag.flag-uz{background-position:-176px -154px}.flag.flag-va{background-position:-192px -154px}.flag.flag-vc{background-position:-208px -154px}.flag.flag-ve{background-position:-224px -154px}.flag.flag-vg{background-position:-240px -154px}.flag.flag-vi{background-position:0 -165px}.flag.flag-vn{background-position:-16px -165px}.flag.flag-vu{background-position:-32px -165px}.flag.flag-wales{background-position:-48px -165px}.flag.flag-wf{background-position:-64px -165px}.flag.flag-ws{background-position:-80px -165px}.flag.flag-ye{background-position:-96px -165px}.flag.flag-yt{background-position:-112px -165px}.flag.flag-za{background-position:-128px -165px}.flag.flag-zanzibar{background-position:-144px -165px}.flag.flag-zm{background-position:-160px -165px}.flag.flag-zw{background-position:-176px -165px}:-webkit-full-screen #fullscreen>:first-child>a{background-color:#e8e8e8;background-image:-moz-linear-gradient(top,#5a5a5a 0,#686868 100%);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#5a5a5a),color-stop(100%,#686868));background-image:-webkit-linear-gradient(to bottom,#5a5a5a 0,#686868 100%);background-image:-o-linear-gradient(to bottom,#5a5a5a 0,#686868 100%);background-image:-ms-linear-gradient(to bottom,#5a5a5a 0,#686868 100%);background-image:linear-gradient(to bottom,#5a5a5a 0,#686868 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5A5A5A', endColorstr='#686868', GradientType=0);-webkit-box-shadow:inset 0 0 3px 1px rgba(0,0,0,.15);box-shadow:inset 0 0 3px 1px rgba(0,0,0,.15);color:#fff;border-color:#494949}:-moz-full-screen #fullscreen>:first-child>a{background-color:#e8e8e8;background-image:-moz-linear-gradient(top,#5a5a5a 0,#686868 100%);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#5a5a5a),color-stop(100%,#686868));background-image:-webkit-linear-gradient(to bottom,#5a5a5a 0,#686868 100%);background-image:-o-linear-gradient(to bottom,#5a5a5a 0,#686868 100%);background-image:-ms-linear-gradient(to bottom,#5a5a5a 0,#686868 100%);background-image:linear-gradient(to bottom,#5a5a5a 0,#686868 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5A5A5A', endColorstr='#686868', GradientType=0);-webkit-box-shadow:inset 0 0 3px 1px rgba(0,0,0,.15);box-shadow:inset 0 0 3px 1px rgba(0,0,0,.15);color:#fff;border-color:#494949}:-ms-fullscreen #fullscreen>:first-child>a{background-color:#e8e8e8;background-image:-moz-linear-gradient(top,#5a5a5a 0,#686868 100%);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#5a5a5a),color-stop(100%,#686868));background-image:-webkit-linear-gradient(to bottom,#5a5a5a 0,#686868 100%);background-image:-o-linear-gradient(to bottom,#5a5a5a 0,#686868 100%);background-image:-ms-linear-gradient(to bottom,#5a5a5a 0,#686868 100%);background-image:linear-gradient(to bottom,#5a5a5a 0,#686868 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5A5A5A', endColorstr='#686868', GradientType=0);-webkit-box-shadow:inset 0 0 3px 1px rgba(0,0,0,.15);box-shadow:inset 0 0 3px 1px rgba(0,0,0,.15);color:#fff;border-color:#494949}:full-screen #fullscreen>:first-child>a{background-color:#e8e8e8;background-image:-moz-linear-gradient(top,#5a5a5a 0,#686868 100%);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#5a5a5a),color-stop(100%,#686868));background-image:-webkit-linear-gradient(to bottom,#5a5a5a 0,#686868 100%);background-image:-o-linear-gradient(to bottom,#5a5a5a 0,#686868 100%);background-image:-ms-linear-gradient(to bottom,#5a5a5a 0,#686868 100%);background-image:linear-gradient(to bottom,#5a5a5a 0,#686868 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5A5A5A', endColorstr='#686868', GradientType=0);-webkit-box-shadow:inset 0 0 3px 1px rgba(0,0,0,.15);box-shadow:inset 0 0 3px 1px rgba(0,0,0,.15);color:#fff;border-color:#494949}:fullscreen #fullscreen>:first-child>a{background-color:#e8e8e8;background-image:-moz-linear-gradient(top,#5a5a5a 0,#686868 100%);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#5a5a5a),color-stop(100%,#686868));background-image:-webkit-linear-gradient(to bottom,#5a5a5a 0,#686868 100%);background-image:-o-linear-gradient(to bottom,#5a5a5a 0,#686868 100%);background-image:-ms-linear-gradient(to bottom,#5a5a5a 0,#686868 100%);background-image:linear-gradient(to bottom,#5a5a5a 0,#686868 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5A5A5A', endColorstr='#686868', GradientType=0);-webkit-box-shadow:inset 0 0 3px 1px rgba(0,0,0,.15);box-shadow:inset 0 0 3px 1px rgba(0,0,0,.15);color:#fff;border-color:#494949}:-webkit-full-screen video{width:100%;height:100%}.ui-widget-overlay{background:#AAA;height:100%;z-index:949!important;position:fixed;top:0;left:0}.slider{margin-top:0;margin-bottom:30px}.slider.slider-vertical{margin-bottom:0;margin-right:5px}.ui-menu{width:155px;padding:2px;-webkit-box-shadow:0 2px 4px rgba(30,30,100,.25);-moz-box-shadow:0 2px 4px rgba(30,30,100,.25);box-shadow:0 2px 4px rgba(30,30,100,.25);background:#fff;border:1px solid rgba(0,0,0,.2);z-index:1}.ui-menu .ui-state-disabled{margin:.4em 0 .2em!important;background:none!important;color:#999!important;font-weight:400!important;cursor:default}.ui-icon-carat-1-e:before{content:"\f105";font-family:FontAwesome;font-size:14px;display:inline}.ui-menu .ui-menu-item a .ui-menu-icon{width:auto;height:auto;top:0;left:auto;right:auto;bottom:auto;text-indent:0}.ui-tabs .ui-tabs-nav li a{border-radius:0;-moz-border-radius:0;background-color:#F5F5F5;border:1px solid #F5F5F5;border-bottom:1px solid #ddd;color:#838383}.ui-tabs .ui-tabs-nav li{margin-right:3px}.ui-tabs .ui-tabs-nav li.ui-tabs-active a{font-weight:700;border-top-width:0!important;margin-top:1px!important;-webkit-box-shadow:0 -2px 0 #57889c;-moz-box-shadow:0 -2px 0 #57889c;box-shadow:0 -2px 0 #57889c}.ui-tabs .ui-tabs-panel{border:1px solid #ddd;margin:0;padding:10px 13px;border-top:none}.ui-tabs .ui-tabs-nav{margin-bottom:0}.ui-accordion .ui-accordion-header{background-color:#fbfbfb;font-size:15px;padding:10px 15px 10px 36px!important}.ui-accordion .ui-accordion-content,.ui-accordion .ui-accordion-header{border-radius:0;-moz-border-radius:0;-webkit-border-radius:0}.ui-accordion .ui-accordion-content{padding:15px}.ui-accordion-header-active+.ui-accordion-content{border-top:1px solid #ddd}.ui-accordion .ui-accordion-header{margin-top:-2px}.ui-accordion .ui-accordion-header,.ui-accordion-content{border-color:#ddd!important}.ui-accordion-header-icon{text-indent:0!important;background-image:none!important;text-align:center;line-height:normal;left:12px!important;margin-top:-6px!important;font-size:14px!important}.ui-datepicker .ui-datepicker-next,.ui-datepicker .ui-datepicker-prev{text-align:center;margin-top:2px}.ui-datepicker-next>:first-child,.ui-datepicker-prev>:first-child{text-indent:0!important}.ui-datepicker .ui-datepicker-next span,.ui-datepicker .ui-datepicker-prev span{background:none!important}.noUi-target *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-touch-callout:none;-ms-touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;cursor:default}.noUi-base{width:100%;height:14px;position:relative;max-width:100%;max-height:100%;border:1px solid #bfbfbf;z-index:1}.noUi-origin-lower{background:#72a8d7}.noUi-handle{background:#858585;height:30px;width:16px;border:1px solid #fff;margin:-8px 0 0 -8px;cursor:default}.noUi-handle:hover{background:#6c6c6c}.noUi-active{cursor:default;box-shadow:rgba(0,0,0,.1)1px 1px 1px 0;background:#686868;height:32px;width:18px;margin:-9px 0 0 -8px;border:none}.noUi-active:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;content:"";display:block;height:100%;border:1px solid #ddd}.noUi-connect{background:#3276b1}.noUi-background{background:#eee;border:none}.noUi-origin{position:absolute;right:0;top:0;bottom:0;z-index:0}.noUi-origin-upper{background:inherit!important}.noUi-z-index{z-index:10}.noUi-vertical{width:10px;height:100%}.noUi-vertical .noUi-origin{bottom:0;left:0}.noUi-vertical .noUi-handle{margin:-8px 0 0 -3px}.noUi-target[disabled] .noUi-base{background:#999}.noUi-target[disabled] .noUi-connect{background:#BBB}.noUi-state-tap .noUi-origin{-webkit-transition:left .3s,top .3s;transition:left .3s,top .3s}.ui-spinner-input{margin:0!important;height:30px;padding:6px 24px 6px 12px}.ui-spinner-input.spinner-left{padding:6px 12px 6px 24px}.ui-spinner{width:100%}.ui-spinner-input.spinner-left+.ui-spinner-button,.ui-spinner-input.spinner-left+.ui-spinner-button+.ui-spinner-button{right:auto;left:0}.ui-spinner-down,.ui-spinner-up{background:#739e73;border-radius:0}.ui-spinner-up:active,.ui-spinner-up:focus,.ui-spinner-up:hover{background:#5b835b}.ui-spinner-down:active,.ui-spinner-down:focus,.ui-spinner-down:hover{background:#77021d}.ui-spinner-down{background:#c2032f}.ui-spinner-down:before,.ui-spinner-up:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f067";color:#fff;font-size:14px;margin-top:1px}.ui-spinner-down:before{content:"\f068"}.ui-spinner-down>:first-child,.ui-spinner-up>:first-child{display:none}.ui-spinner-button{width:19px}.ui-spinner-input.spinner-both{padding:6px 30px}.ui-spinner-input.spinner-both+.ui-spinner-button+.ui-spinner-button{left:0;right:auto}.ui-spinner-input.spinner-both+.ui-spinner-button,.ui-spinner-input.spinner-both+.ui-spinner-button+.ui-spinner-button{height:30px;width:25px}.ui-spinner-input.spinner-both+.ui-spinner-up+.ui-spinner-down:before,.ui-spinner-input.spinner-both+.ui-spinner-up:before{margin-top:8px}.ui-dialog{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5);border:1px solid #999;border:1px solid rgba(0,0,0,.2)}.widget-header>:first-child{margin:13px 0}.ui-dialog .ui-dialog-titlebar{padding:0 10px;background:#fff;border-bottom-color:#eee}.ui-dialog .ui-dialog-title{margin:0}.ui-dialog .ui-dialog-titlebar-close{margin-top:-16px;margin-right:4px}.ui-dialog-titlebar-close:before{content:"\f00d";font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:13px}.ui-dialog .ui-dialog-buttonpane button{margin:0 .4em 0 0}.ui-dialog .ui-dialog-buttonpane{margin-top:13px;padding:19px 15px 20px;text-align:right;border-top:1px solid #eee}.ui-autocomplete{z-index:905!important}.the-price{background-color:rgba(220,220,220,.17);box-shadow:0 1px 0 #dcdcdc,inset 0 1px 0 #fff;padding:20px;margin:0}.the-price h1{line-height:1em;padding:0;margin:0}.subscript{font-size:21px;color:#999}.ribbon{position:absolute;right:9px;top:-4px}.pricing-big{border:none!important}.pricing-big .panel-heading{border-radius:5px 5px 0 0}.pricing-big .panel-title{text-transform:capitalize;font-size:18px;padding:20px 0;text-align:center;border-radius:5px 5px 0 0;margin:0;font-weight:700}.pricing-big .the-price{padding:20px 0;background:#333;text-align:center;font-size:24px;font-weight:700;color:#FFF;box-shadow:none!important;-moz-box-shadow:none!important}.pricing-big .subscript{font-size:18px;color:#999;margin-left:5px}.price-features{background:#FAFAFA;padding:20px 15px;min-height:230px;font-size:13.5px}.price-features li+li{margin-top:10px}.pricing-big .panel-footer{border-radius:0 0 5px 5px}.pricing-big .panel-footer .btn{padding:15px 0;border-radius:3px;font-weight:700;font-size:14px}.pricing-big .panel-footer .btn span{font-weight:400;font-style:italic}.pricing-big .panel-footer{background-color:#F2F2F2!important}.pricing-big .panel-footer>div{padding:15px 0 10px;display:block;font-size:13px}.pricing-big table{background:#FAFAFA;padding:20px 15px;height:230px;text-align:left}.pace{-webkit-pointer-events:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.pace-inactive{display:none}.pace .pace-progress{background:#3276b1;position:fixed;z-index:2000;top:0;left:0;height:2px;-webkit-transition:width 1s;-moz-transition:width 1s;-o-transition:width 1s;transition:width 1s}.pace .pace-progress-inner{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #29d,0 0 5px #29d;opacity:1;-webkit-transform:rotate(3deg) translate(0px,-4px);-moz-transform:rotate(3deg) translate(0px,-4px);-ms-transform:rotate(3deg) translate(0px,-4px);-o-transform:rotate(3deg) translate(0px,-4px);transform:rotate(3deg) translate(0px,-4px)}.pace .pace-activity{display:block;position:fixed;z-index:2000;top:63px;right:40px;width:14px;height:14px;border:solid 2px transparent;border-top-color:#29d;border-left-color:#29d;border-radius:10px;-webkit-animation:pace-spinner 400ms linear infinite;-moz-animation:pace-spinner 400ms linear infinite;-ms-animation:pace-spinner 400ms linear infinite;-o-animation:pace-spinner 400ms linear infinite;animation:pace-spinner 400ms linear infinite}@-webkit-keyframes pace-spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes pace-spinner{0%{-moz-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes pace-spinner{0%{-o-transform:rotate(0deg);transform:rotate(0deg)}100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes pace-spinner{0%{-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes pace-spinner{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}#chat-container *,#chat-container :after,#chat-container :before{box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box}#chat-container input[type=text]{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}#chat-container{position:absolute;width:250px;height:270px;z-index:2;border-left:1px solid #CDCECF;right:-251px;top:0;background:#fff;transition-duration:.25s;-webkit-transition-duration:.25s;-moz-transition-duration:.25s;-o-transition-duration:.25s;-ms-transition-duration:.25s}#chat-container:hover,#chat-container:hover .chat-list-open-close{border-color:#A7A7A7}#chat-container.open{right:0;top:0}#chat-container .chat-list-open-close{display:block;width:25px;height:25px;border:1px solid #CDCECF;border-right:1px solid #f2f4f8!important;position:absolute;left:-32px;top:7%;border-radius:50% 0 0 50%;padding:3px 1px 3px 5px;font-size:21px;line-height:22px;cursor:pointer;color:#868686;box-shadow:inset 0 .2em 0 rgba(0,0,0,.05);-moz-box-shadow:inset 0 .2em 0 rgba(0,0,0,.05);background:#f2f4f8;text-align:center}#chat-container .chat-list-open-close b{position:absolute;right:0;background:#ed1c24;line-height:9px;height:10px;width:10px;top:3px;border:1px solid #FFF;border-radius:3px;font-size:9px;text-align:center;vertical-align:middle;color:#fff;font-weight:400}#chat-container.open .chat-list-open-close i:before{content:"\f00d"!important}#chat-container.open .chat-list-open-close b{display:none}#chat-container .chat-list-body{height:217px;overflow-y:scroll;overflow-x:hidden;display:block;padding:0;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;background:#f2f4f8}#chat-container #chat-users{list-style:none;margin:10px 0;padding:0}#chat-container #chat-users li{margin-bottom:3px;margin-left:5px}#chat-container #chat-users li a{display:block;font-size:13px;color:#3d3d3d;text-decoration:none!important;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;padding:3px 8px 3px 3px;line-height:33px;vertical-align:middle}#chat-container #chat-users li a:hover{background:#e0e4ee}#chat-container #chat-users li a img{width:33px;height:auto;margin-right:10px}#chat-container #chat-users li a i{color:#ACACAC;font-size:8px;line-height:34px;font-style:normal}#chat-container #chat-users li a i.last-online{font-size:12px;letter-spacing:-1px}#chat-container .chat-list-footer{overflow:hidden;border-top:1px solid #CCC;padding:10px;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}#chat-container .chat-list-footer input[type=text]{border:1px solid #bababa!important}#chat-container .control-group{padding:0}.chat-body{background:#FAFAFA;background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJod…EiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);background:-moz-linear-gradient(top,#fafafa 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#fafafa),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#fafafa 0,#fff 100%);background:-o-linear-gradient(top,#fafafa 0,#fff 100%);background:-ms-linear-gradient(top,#fafafa 0,#fff 100%);background:linear-gradient(to bottom,#f5fcff 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fafafa', endColorstr='#ffffff', GradientType=0);box-shadow:inset 2px 2px 5px rgba(0,0,0,.04);-moz-box-shadow:inset -2px -2px 5px rgba(0,0,0,.04);display:block;height:270px;overflow-y:scroll;overflow-x:hidden;padding:10px;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;border:1px solid #fff;border-top:none}.chat-body ul{margin:0;padding:0}.chat-body li.message{display:block;position:relative;margin:20px 20px 0}.chat-body li:first-child{margin-top:10px}.chat-body li.message img{display:inline-block;border-left:4px solid #fff;position:absolute}.chat-body li.message img.online{border-left-color:#00a300}.chat-body li.message img.offline{border-left-color:#ddd}.chat-body li.message img.busy{border-left-color:#A90329}.chat-body li.message img.away{border-left-color:#ffc40d}.chat-body li.message .message-text{display:inline-block;vertical-align:top;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;padding:0;margin-left:65px;line-height:normal}.chat-body li.message .message-text time{position:absolute;top:1px;right:0;font-size:10px;line-height:10px;color:#AFAFAF}.chat-body li.message .message-text .chat-file:nth-child(3){margin-top:15px}.chat-body li.message .message-text .chat-file{display:block;margin:3px 0;padding:4px;border:1px dotted #ddd;background:rgba(0,0,0,.05);border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;text-align:right;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.chat-body li.message .message-text .chat-file.row-fluid [class*=span]{min-height:10px!important}.chat-body li.message .message-text .chat-file b{font-style:italic;white-space:nowrap;width:250px;overflow:hidden;text-overflow:ellipsis;text-align:left}.chat-body li.message .message-text a.username{display:block;font-weight:700;margin-bottom:4px;vertical-align:top;line-height:14px;font-size:14px;letter-spacing:-1px;text-decoration:none!important}.profile-message{background:none!important;height:auto!important;box-shadow:none!important;-moz-box-shadow:none!important;-webkit-box-shadow:none!important;overflow:hidden}.profile-message li.message.message-reply{margin-left:85px!important;background:#F7F7F7;padding:10px;margin:3px 0 0 20px}.profile-message li.message.message-reply img{width:35px!important}.profile-message li.message.message-reply .message-text{margin-left:45px!important}.profile-message .wall-comment-reply{margin-left:85px;margin-bottom:20px}.chat-footer{border-top:1px solid rgba(0,0,0,.1);background:rgba(248,248,248,.9);padding:0 10px 15px;position:relative;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.textarea-div{background-color:#FFF;border:1px solid #CCC;border-bottom:none;margin:10px 0 0}.typearea{cursor:text;overflow-x:hidden;overflow-y:auto;max-height:90px;padding:5px 25px 5px 5px;position:relative;border-bottom:1px solid #EEE}.typearea textarea{width:100%;border-color:transparent!important;box-sizing:border-box;box-shadow:none;-moz-box-shadow:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-box-shadow:none;overflow:hidden;padding:0;margin:0;-webkit-transition:height .2s;-moz-transition:height .2s;transition:height .2s;outline:0;resize:none;min-height:61px}textarea.clone{position:absolute;visibility:hidden}.textarea-controls{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:5px;display:block;background-color:#FFF;border:1px solid #CCC;border-top:none;height:43px;line-height:33px;overflow:hidden}.textarea-controls>label{margin:3px 10px 0}.textarea-controls .smart-form .checkbox{padding-left:22px!important}@media (min-width:768px) and (max-width:880px){.chat-body li.message .message-text .chat-file b{width:150px}}@media only screen and (min-width:320px) and (max-width:479px){.chat-body li.message .message-text .chat-file b{width:150px}}@media (max-width:480px){.chat-body li.message .message-text .chat-file b{width:150px}}.smart-form *,.smart-form :after,.smart-form :before{margin:0;padding:0;box-sizing:content-box;-moz-box-sizing:content-box}.smart-form .btn{box-sizing:border-box;-moz-box-sizing:border-box}.smart-form .checkbox+.checkbox,.smart-form .radio+.radio{margin-top:0}.smart-form footer .btn{float:right;height:31px;margin:10px 0 0 5px;padding:0 22px;font:300 15px/29px 'Open Sans',Helvetica,Arial,sans-serif;cursor:pointer}.smart-form legend{padding-top:15px}.smart-form{margin:0;outline:0;color:#666;position:relative}.smart-form header{display:block;padding:8px 0;border-bottom:1px dashed rgba(0,0,0,.2);background:#fff;font-size:16px;font-weight:300;color:#232323;margin:10px 14px 0}.smart-form fieldset{display:block;padding:25px 14px 5px;border:none;background:rgba(255,255,255,.9);position:relative}.smart-form fieldset+fieldset{border-top:1px solid rgba(0,0,0,.1)}.smart-form section{margin-bottom:15px;position:relative}.smart-form footer{display:block;padding:7px 14px 15px;border-top:1px solid rgba(0,0,0,.1);background:rgba(248,248,248,.9)}.smart-form footer:after{content:'';display:table;clear:both}.smart-form .label{display:block;margin-bottom:6px;line-height:19px;font-weight:400;font-size:13px;color:#333;text-align:left}.smart-form .label.col{margin:0;padding-top:7px}.note,.smart-form .note{margin-top:6px;padding:0 1px;font-size:11px;line-height:15px;color:#999}.smart-form .note a{font-size:13px}.smart-form .button,.smart-form .checkbox,.smart-form .input,.smart-form .radio,.smart-form .select,.smart-form .textarea,.smart-form .toggle{position:relative;display:block;font-weight:400}.smart-form .input input,.smart-form .select select,.smart-form .textarea textarea{display:block;box-sizing:border-box;-moz-box-sizing:border-box;width:100%;height:32px;padding:8px 10px;outline:0;border-width:1px;border-style:solid;border-radius:0;background:#fff;font:13px/16px 'Open Sans',Helvetica,Arial,sans-serif;color:#404040;appearance:normal;-moz-appearance:none;-webkit-appearance:none}.smart-form .input-file .button{position:absolute;top:4px;right:4px;float:none;height:22px;margin:0;padding:0 14px;font-size:13px;line-height:22px}.smart-form .input-file .button:hover{box-shadow:none}.smart-form .input-file .button input{position:absolute;top:0;right:0;padding:0;font-size:30px;cursor:pointer;opacity:0}.smart-form .select i{position:absolute;top:10px;right:11px;width:5px;height:11px;background:#fff;box-shadow:0 0 0 9px #fff}.smart-form .select i:after,.smart-form .select i:before{content:'';position:absolute;right:0;border-right:4px solid transparent;border-left:4px solid transparent}.smart-form .select i:after{bottom:0;border-top:4px solid #404040}.smart-form .select i:before{top:0;border-bottom:4px solid #404040}.smart-form .select-multiple select{height:auto}.smart-form .textarea textarea{height:auto;resize:none}.smart-form .textarea-resizable textarea{resize:vertical}.smart-form .textarea-expandable textarea{height:31px}.smart-form .textarea-expandable textarea:focus{height:auto}.smart-form .checkbox,.smart-form .radio{margin-bottom:4px;padding-left:25px;line-height:25px;color:#404040;cursor:pointer;font-size:13px}.smart-form .checkbox:last-child,.smart-form .radio:last-child{margin-bottom:0}.smart-form .checkbox input,.smart-form .radio input{position:absolute;left:-9999px}.smart-form .checkbox i,.smart-form .radio i{position:absolute;top:3px;left:0;display:block;width:17px;height:17px;outline:0;border-width:1px;border-style:solid;background:#FFF}.smart-form .radio i{border-radius:50%}.smart-form .checkbox input+i:after,.smart-form .radio input+i:after{position:absolute;opacity:0;transition:opacity .1s;-o-transition:opacity .1s;-ms-transition:opacity .1s;-moz-transition:opacity .1s;-webkit-transition:opacity .1s}.smart-form .radio input+i:after{content:'';top:4px;left:4px;width:9px;height:9px;border-radius:50%}.smart-form .checkbox input+i:after{content:'\f00c';top:-1px;left:1px;width:15px;height:15px;font:400 16px/19px FontAwesome;text-align:center}.smart-form .checkbox input:checked:hover+i:after{content:'\f00d'}.smart-form .checkbox input:checked:disabled:hover+i:after{content:'\f00c'}.smart-form .checkbox input:checked+i:after,.smart-form .radio input:checked+i:after{opacity:1}.smart-form .inline-group{margin:0 -15px -4px 0}.smart-form .inline-group:after{content:'';display:table;clear:both}.smart-form .inline-group .checkbox,.smart-form .inline-group .radio{float:left;margin-right:30px}.smart-form .inline-group .checkbox:last-child,.smart-form .inline-group .radio:last-child{margin-bottom:4px}.smart-form .toggle{margin-bottom:4px;padding-right:61px;font-size:15px;line-height:25px;color:#404040;cursor:pointer}.smart-form .toggle:last-child{margin-bottom:0}.smart-form .toggle input{position:absolute;left:-9999px}.smart-form .toggle i{content:'';position:absolute;top:4px;right:0;display:block;width:49px;height:17px;border-width:1px;border-style:solid;border-radius:12px;background:#fff}.smart-form .toggle i:after{content:attr(data-swchoff-text);position:absolute;top:2px;right:8px;left:8px;font-style:normal;font-size:9px;line-height:13px;font-weight:700;text-align:left;color:#5f5f5f}.smart-form .toggle i:before{content:'';position:absolute;z-index:1;top:4px;right:4px;display:block;width:9px;height:9px;border-radius:50%;opacity:1;transition:right .2s;-o-transition:right .2s;-ms-transition:right .2s;-moz-transition:right .2s;-webkit-transition:right .2s}.smart-form .toggle input:checked+i:after{content:attr(data-swchon-text);text-align:right}.smart-form .toggle input:checked+i:before{right:36px}.smart-form .rating{margin-bottom:4px;font-size:13px;line-height:25px;color:#404040}.smart-form .rating:last-child{margin-bottom:0}.smart-form .rating input{position:absolute;left:-9999px}.smart-form .rating label{display:block;float:right;height:17px;margin-top:5px;padding:0 2px;font-size:17px;line-height:17px;cursor:pointer}.smart-form .button{float:right;height:31px;overflow:hidden;margin:10px 0 0 5px;padding:0 25px;outline:0;border:0;font:300 15px/31px 'Open Sans',Helvetica,Arial,sans-serif;text-decoration:none;color:#fff;cursor:pointer}.smart-form .icon-append,.smart-form .icon-prepend{position:absolute;top:5px;width:22px;height:22px;font-size:14px;line-height:22px;text-align:center}.smart-form .icon-append{right:5px;padding-left:3px;border-left-width:1px;border-left-style:solid}.smart-form .icon-prepend{left:5px;padding-right:3px;border-right-width:1px;border-right-style:solid}.smart-form .input .icon-prepend+input,.smart-form .textarea .icon-prepend+textarea{padding-left:37px}.smart-form .input .icon-append+input,.smart-form .textarea .icon-append+textarea{padding-right:37px}.smart-form .input .icon-prepend+.icon-append+input,.smart-form .textarea .icon-prepend+.icon-append+textarea{padding-left:37px}.smart-form .row{margin:0 -15px}.smart-form .row:after{content:'';display:table;clear:both}.smart-form .col{float:left;min-height:1px;padding-right:15px;padding-left:15px;box-sizing:border-box;-moz-box-sizing:border-box}.smart-form .col-1{width:8.33%}.smart-form .col-2{width:16.66%}.smart-form .col-3{width:25%}.smart-form .col-4{width:33.33%}.smart-form .col-5{width:41.66%}.smart-form .col-6{width:50%}.smart-form .col-8{width:66.67%}.smart-form .col-9{width:75%}.smart-form .col-10{width:83.33%}@media screen and (max-width:600px){.smart-form .col{float:none;width:100%}}.smart-form .select select{padding:5px}.smart-form .tooltip{position:absolute;z-index:99999;left:-9999px;padding:2px 8px 3px;font-size:11px;line-height:16px;font-weight:400;background:rgba(0,0,0,.9);color:#fff;opacity:0;transition:margin .3s,opacity .3s;-o-transition:margin .3s,opacity .3s;-ms-transition:margin .3s,opacity .3s;-moz-transition:margin .3s,opacity .3s;-webkit-transition:margin .3s,opacity .3s}.smart-form .tooltip:after{content:'';position:absolute}.smart-form .input input:focus+.tooltip,.smart-form .textarea textarea:focus+.tooltip{opacity:1}.smart-form .tooltip-top-right{bottom:100%;margin-bottom:15px}.smart-form .tooltip-top-right:after{top:100%;right:11px;border-top:4px solid rgba(0,0,0,.9);border-right:4px solid transparent;border-left:4px solid transparent}.smart-form .input input:focus+.tooltip-top-right,.smart-form .textarea textarea:focus+.tooltip-top-right{right:0;left:auto;margin-bottom:5px}.smart-form .tooltip-top-left{bottom:100%;margin-bottom:15px}.smart-form .tooltip-top-left:after{top:100%;left:11px;border-top:4px solid rgba(0,0,0,.9);border-right:4px solid transparent;border-left:4px solid transparent}.smart-form .input input:focus+.tooltip-top-left,.smart-form .textarea textarea:focus+.tooltip-top-left{right:auto;left:0;margin-bottom:5px}.smart-form .tooltip-right{top:4px;white-space:nowrap;margin-left:15px}.smart-form .tooltip-right:after{top:6px;right:100%;border-top:4px solid transparent;border-right:4px solid rgba(0,0,0,.9);border-bottom:4px solid transparent}.smart-form .input input:focus+.tooltip-right,.smart-form .textarea textarea:focus+.tooltip-right{left:100%;margin-left:5px}.smart-form .tooltip-left{top:4px;white-space:nowrap;margin-right:15px}.smart-form .tooltip-left:after{top:6px;left:100%;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:4px solid rgba(0,0,0,.9)}.smart-form .input input:focus+.tooltip-left,.smart-form .textarea textarea:focus+.tooltip-left{right:100%;left:auto;margin-right:5px}.smart-form .tooltip-bottom-right{top:100%;margin-top:15px}.smart-form .tooltip-bottom-right:after{bottom:100%;right:11px;border-right:4px solid transparent;border-bottom:4px solid rgba(0,0,0,.9);border-left:4px solid transparent}.smart-form .input input:focus+.tooltip-bottom-right,.smart-form .textarea textarea:focus+.tooltip-bottom-right{right:0;left:auto;margin-top:5px}.smart-form .tooltip-bottom-left{top:100%;margin-top:15px}.smart-form .tooltip-bottom-left:after{bottom:100%;left:11px;border-right:4px solid transparent;border-bottom:4px solid rgba(0,0,0,.9);border-left:4px solid transparent}.smart-form .input input:focus+.tooltip-bottom-left,.smart-form .textarea textarea:focus+.tooltip-bottom-left{right:auto;left:0;margin-top:5px}.smart-form .checkbox i,.smart-form .icon-append,.smart-form .icon-prepend,.smart-form .input input,.smart-form .radio i,.smart-form .select select,.smart-form .textarea textarea,.smart-form .toggle i{border-color:#BDBDBD;transition:border-color .3s;-o-transition:border-color .3s;-ms-transition:border-color .3s;-moz-transition:border-color .3s;-webkit-transition:border-color .3s}.smart-form .toggle i:before{background-color:#3276B1}.smart-form .rating label{color:#ccc;transition:color .3s;-o-transition:color .3s;-ms-transition:color .3s;-moz-transition:color .3s;-webkit-transition:color .3s}.smart-form .button{background-color:#3276B1;opacity:.8;transition:opacity .2s;-o-transition:opacity .2s;-ms-transition:opacity .2s;-moz-transition:opacity .2s;-webkit-transition:opacity .2s}.smart-form .button.button-secondary{background-color:#b3b3b3}.smart-form .icon-append,.smart-form .icon-prepend{color:#A2A2A2}.smart-form .checkbox:hover i,.smart-form .input:hover input,.smart-form .radio:hover i,.smart-form .select:hover select,.smart-form .textarea:hover textarea,.smart-form .toggle:hover i{border-color:#5D98CC}.smart-form .rating input+label:hover,.smart-form .rating input+label:hover~label{color:#3276B1}.smart-form .button:hover{opacity:1}.smart-form .checkbox:hover i,.smart-form .radio:hover i,.smart-form .toggle:hover i{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.1);box-shadow:inset 0 1px 1px rgba(0,0,0,.1)}.smart-form .checkbox:active i,.smart-form .radio:active i,.smart-form .toggle:active i{background:#F0F0F0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.1);box-shadow:inset 0 1px 1px rgba(0,0,0,.1)}.smart-form .checkbox input:focus+i,.smart-form .input input:focus,.smart-form .radio input:focus+i,.smart-form .select select:focus,.smart-form .textarea textarea:focus,.smart-form .toggle input:focus+i{border-color:#3276B1}.smart-form .radio input+i:after{background-color:#3276B1}.smart-form .checkbox input+i:after{color:#3276B1}.smart-form .checkbox input:checked+i,.smart-form .radio input:checked+i,.smart-form .toggle input:checked+i{border-color:#3276B1}.smart-form .rating input:checked~label{color:#3276B1}.smart-form .checkbox.state-error i,.smart-form .radio.state-error i,.smart-form .state-error input,.smart-form .state-error select,.smart-form .state-error textarea,.smart-form .toggle.state-error i{background:#fff0f0;border-color:#A90329}.smart-form .toggle.state-error input:checked+i{background:#fff0f0}.smart-form .state-error+em{display:block;margin-top:6px;padding:0 1px;font-style:normal;font-size:11px;line-height:15px;color:#D56161}.smart-form .rating.state-error+em{margin-top:-4px;margin-bottom:4px}.smart-form .state-error select+i{background:#FFF0F0;box-shadow:0 0 0 9px #FFF0F0}.state-error .icon-append,.state-error .icon-prepend{color:#ed1c24}.smart-form .checkbox.state-success i,.smart-form .radio.state-success i,.smart-form .state-success input,.smart-form .state-success select,.smart-form .state-success textarea,.smart-form .toggle.state-success i{background:#f0fff0;border-color:#7DC27D}.smart-form .toggle.state-success input:checked+i{background:#f0fff0}.smart-form .note-success{color:#6fb679}.smart-form .state-success select+i{background:#f0fff0;box-shadow:0 0 0 9px #f0fff0}.smart-form .button.state-disabled,.smart-form .checkbox.state-disabled,.smart-form .input.state-disabled input,.smart-form .radio.state-disabled,.smart-form .select.state-disabled,.smart-form .textarea.state-disabled,.smart-form .toggle.state-disabled{cursor:default!important;opacity:.6!important}.smart-form .checkbox.state-disabled:hover i,.smart-form .input.state-disabled:hover input,.smart-form .radio.state-disabled:hover i,.smart-form .select.state-disabled:hover select,.smart-form .textarea.state-disabled:hover textarea,.smart-form .toggle.state-disabled:hover i{border-color:#e5e5e5!important}.smart-form .state-disabled.checkbox input+i:after,.smart-form .state-disabled.checkbox input:checked+i,.smart-form .state-disabled.radio input+i:after,.smart-form .state-disabled.radio input:checked+i,.smart-form .state-disabled.toggle input:checked+i{border-color:#e5e5e5!important;color:#333!important}.smart-form .state-disabled.radio input+i:after{background-color:#333}.smart-form .message{display:none;color:#6fb679}.smart-form .message i{display:block;margin:0 auto 20px;width:81px;height:81px;border:1px solid #6fb679;border-radius:50%;font-size:30px;line-height:81px}.smart-form.submited fieldset,.smart-form.submited footer{display:none}.smart-form.submited .message{display:block;padding:25px 30px;background:rgba(255,255,255,.9);font:300 18px/27px 'Open Sans',Helvetica,Arial,sans-serif;text-align:center}.smart-form .ui-widget-content .ui-spinner-input{margin:0;border:0;box-shadow:none!important;height:29px}.smart-form-modal{position:fixed;z-index:1;display:none;width:400px}.smart-form-modal-overlay{position:fixed;top:0;left:0;display:none;width:100%;height:100%;background:rgba(0,0,0,.7)}.ui-timepicker-div .ui-widget-header{margin-bottom:8px}.ui-timepicker-div dl{text-align:left}.ui-timepicker-div dl dt{float:left;clear:left;padding:0 0 0 5px}.ui-timepicker-div dl dd{margin:17px 10px 12px 40%}.ui-timepicker-div td{font-size:90%}.ui-tpicker-grid-label{background:0 0;border:none;margin:0;padding:0}.ui-timepicker-rtl{direction:rtl}.ui-timepicker-rtl dl{text-align:right;padding:0 5px 0 0}.ui-timepicker-rtl dl dt{float:right;clear:right}.ui-timepicker-rtl dl dd{margin:0 40% 10px 10px}.smart-form input.input-lg{height:44px;padding:10px 16px;font-size:17px;line-height:1.33}.smart-form input.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5}.smart-form input.input-xs{height:24px;padding:2px 10px;font-size:11px;line-height:1.5}.smart-form select.input-sm{height:30px;line-height:15px;font-size:12px}.smart-form select.input-sm+i{height:10px}.smart-form select.input-lg{height:44px;line-height:22px;font-size:17px}.smart-form select.input-lg+i{height:11px;top:17px}.smart-form .checkbox input+input[type=hidden]+i:after{content:'\f00c';top:-1px;left:1px;width:15px;height:15px;font:400 16px/19px FontAwesome;text-align:center}.smart-form .checkbox input:checked:hover+input[type=hidden]+i:after{content:'\f00d'}.smart-form .checkbox input:checked:disabled:hover+input[type=hidden]+i:after{content:'\f00c'}.smart-form .checkbox input:checked+input[type=hidden]+i:after{opacity:1}.smart-form .toggle input:checked+input[type=hidden]+i:after{content:attr(data-swchon-text);text-align:right}.smart-form .toggle input:checked+input[type=hidden]+i:before{right:36px}.error-box{max-width:900px;margin:0 auto}.error-text{font-weight:400;color:#fff;letter-spacing:-4px;font-size:700%;margin-bottom:30px;text-shadow:0 1px 0 #ccc,0 2px 0 #bfbfbf,0 3px 0 #bbb,0 4px 0 #b9b9b9,0 5px 0 #aaa,0 6px 1px rgba(0,0,0,.1),0 0 5px rgba(0,0,0,.1),0 1px 3px rgba(0,0,0,.3),0 3px 5px rgba(0,0,0,.2),0 5px 10px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.2),0 20px 20px rgba(0,0,0,.15)}.error-search{width:300px;margin:0 auto 20px}.error-icon-shadow{text-shadow:0 1px 0 #803838,0 2px 0 #a85d5d,0 3px 0 #b86565,0 4px 0 #d86f6f,0 5px 0 #b3a5a5,0 6px 1px rgba(131,51,51,.1),0 0 5px rgba(102,30,30,.1),0 1px 3px rgba(95,15,15,.3),0 3px 5px rgba(100,23,23,.2),0 5px 10px rgba(114,30,30,.25),0 10px 10px rgba(94,15,15,.2),0 20px 20px rgba(121,38,38,.15)}.display-image{margin-top:-60px;margin-right:20px}.terms-body{max-height:400px;overflow:auto}#extr-page{background:#fff;overflow:visible}#extr-page .container{border:none}#extr-page #header{margin:0;height:71px;border-bottom:1px solid #eee!important;overflow:hidden;padding:0 30px;border-width:0;min-height:28px;background:#f4f4f4!important}#extr-page #main{padding-top:20px}#extr-page #header #logo{margin-top:22px;margin-left:0}#extr-page #header #logo img{width:137px}#extr-page-header-space{float:right;text-align:right;display:block;vertical-align:middle;line-height:71px}#extr-page-header-space>:first-child{font-size:13px;margin-right:14px;vertical-align:-3px;font-weight:400}#extr-page-header-space .btn{font-weight:700;text-transform:uppercase}#extr-page-header-space>*{display:inline-block}#extr-page #main{background:#fff;margin:0}#extr-page .hero{background-image:url(../img/gradient/login.png);background-repeat:no-repeat;background-position:0 137px;height:360px;width:100%;float:left}#extr-page h4.paragraph-header{color:#565656;font-size:15px;font-weight:400;line-height:22px;margin-top:15px;width:270px}#extr-page h5.about-heading{color:#565656;font-size:15px;font-weight:700;line-height:24px;margin:0 0 5px}#extr-page .login-header-big{font-weight:400}#extr-page .login-desc-box-l{min-height:350px;width:50%}#extr-page .login-app-icons{vertical-align:top;margin-top:90px;width:300px}@media (min-width:768px) and (max-width:880px){#extr-page #header{padding:0 5px!important}}@media only screen and (min-width:0) and (max-width:679px){#extr-page #header{padding:0 5px!important}#extr-page #header #logo img{width:135px}#extr-page #header #logo{margin-top:22px}}.dd{position:relative;display:block;margin:0;padding:0;max-width:600px;list-style:none;font-size:13px;line-height:20px}.dd-list{display:block;position:relative;margin:0;padding:0;list-style:none}.dd-list .dd-list{padding-left:30px}.dd-collapsed .dd-list{display:none}.dd-empty,.dd-item,.dd-placeholder{display:block;position:relative;margin:0;padding:0;min-height:20px;font-size:13px;line-height:20px}.dd-handle{display:block;font-size:15px;margin:5px 0;padding:7px 15px;color:#333;text-decoration:none;border:1px solid #cfcfcf;background:#fbfbfb}.dd-item>button{position:relative;cursor:pointer;float:left;width:25px;height:20px;margin:7px 10px;line-height:22px!important;padding:0;text-indent:100%;white-space:nowrap;overflow:hidden;border:0;background:rgba(0,0,0,0);text-align:center;display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:18px}.dd-item>button:before{content:'\f055';display:block;position:absolute;width:100%;text-align:center;text-indent:0;color:#0091d9}.dd-item>button[data-action=collapse]:before{content:'\f056';color:#a90329}.dd-empty,.dd-placeholder{margin:5px 0;padding:0;min-height:30px;background:#f2fbff;border:1px dashed #b6bcbf;box-sizing:border-box;-moz-box-sizing:border-box}.dd-empty{border:1px dashed #bbb;min-height:100px;background-color:#eee;background-image:-webkit-linear-gradient(45deg,#fff 25%,transparent 25%,transparent 75%,#fff 75%,#fff),-webkit-linear-gradient(45deg,#fff 25%,transparent 25%,transparent 75%,#fff 75%,#fff);background-image:-moz-linear-gradient(45deg,#fff 25%,transparent 25%,transparent 75%,#fff 75%,#fff),-moz-linear-gradient(45deg,#fff 25%,transparent 25%,transparent 75%,#fff 75%,#fff);background-image:linear-gradient(45deg,#fff 25%,transparent 25%,transparent 75%,#fff 75%,#fff),linear-gradient(45deg,#fff 25%,transparent 25%,transparent 75%,#fff 75%,#fff);background-size:60px 60px;background-position:0 0,30px 30px}.dd-dragel{position:absolute;pointer-events:none;z-index:9999}.dd-dragel>.dd-item .dd-handle{margin-top:0}.dd-dragel .dd-handle{-webkit-box-shadow:2px 4px 6px 0 rgba(0,0,0,.1);box-shadow:2px 4px 6px 0 rgba(0,0,0,.1)}.nestable-lists{display:block;clear:both;padding:30px 0;width:100%;border:0;border-top:2px solid #bfbfbf;border-bottom:2px solid #bfbfbf}#nestable-menu{padding:0;margin:10px 0 20px}#nestable-output,#nestable2-output{width:100%;padding:5px}@media only screen and (min-width:700px){.dd{float:left;width:100%}.dd+.dd{margin-left:2%}}.dd-hover>.dd-handle{background:#2ea8e5!important}.dd3-content{display:block;margin:5px 0;padding:6px 10px 8px 40px;font-size:15px;color:#333;text-decoration:none;border:1px solid #cfcfcf;background:#fbfbfb}.dd3-content:hover{color:#2ea8e5;background:#fff}.dd-dragel>.dd3-item>.dd3-content{margin:0}.dd3-item>button{margin-left:38px}.dd3-handle{position:absolute;margin:0;left:0;top:0;cursor:move;width:30px;text-indent:100%;white-space:nowrap;overflow:hidden;border:1px solid #aaa;background:#bfbfbf;background:-webkit-linear-gradient(top,#ddd 0,#bbb 100%);background:-moz-linear-gradient(top,#ddd 0,#bbb 100%);background:linear-gradient(top,#ddd 0,#bbb 100%);display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:18px;padding:8px 15px}.dd3-handle:before{content:'\f0c9';display:block;position:absolute;left:0;top:3px;width:100%;text-align:center;text-indent:0;color:#818181;font-weight:400;line-height:28px}.dd3-handle:hover:before{color:#C27616}.dd-handle:hover,.dd-handle:hover+.dd-list .dd-handle{background:#FDDFB3!important;border:1px solid #FAA937;color:#333!important}.dd-handle>span{font-size:13px;color:#777}.dd-dragel>.dd-item>.dd-handle{border-left-width:4px}.dd-dragel>li.dd-item.dd3-item{position:relative;top:10px;left:10px;z-index:999}#calendar-container{position:relative}.fc table,html .fc{font-size:12px}.dt-header.calender-spacer{height:46px;display:block}.jarviswidget #calendar{margin-top:-18px}.fc-widget-content,.fc-widget-header{border-right:none}tr td.fc-first,tr.fc-first th.fc-first{border-left:none}tr.fc-last td{border-bottom:none}.jarviswidget .fc-header-title h2{text-shadow:0 1px 0 #fff;margin-top:-12px;margin-left:10px;font-size:14px;font-weight:700;margin-bottom:0}.fc-event-time,.fc-event-title{padding:3px 0 2px 3px;display:inline-block;line-height:16px;font-weight:700;font-size:11px;box-sizing:border-box}#calendar-buttons{position:absolute;right:14px;top:5px}.dropzone,td.fc-other-month{background-image:-webkit-gradient(linear,left top,right bottom,color-stop(0.25,rgba(0,0,0,.03)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(0,0,0,.03)),color-stop(0.75,rgba(0,0,0,.03)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(135deg,rgba(0,0,0,.03)25%,transparent 25%,transparent 50%,rgba(0,0,0,.03)50%,rgba(0,0,0,.03)75%,transparent 75%,transparent);background-image:-moz-linear-gradient(135deg,rgba(0,0,0,.03)25%,transparent 25%,transparent 50%,rgba(0,0,0,.03)50%,rgba(0,0,0,.03)75%,transparent 75%,transparent);background-image:-ms-linear-gradient(135deg,rgba(0,0,0,.03)25%,transparent 25%,transparent 50%,rgba(0,0,0,.03)50%,rgba(0,0,0,.03)75%,transparent 75%,transparent);background-image:-o-linear-gradient(135deg,rgba(0,0,0,.03)25%,transparent 25%,transparent 50%,rgba(0,0,0,.03)50%,rgba(0,0,0,.03)75%,transparent 75%,transparent);background-image:linear-gradient(135deg,rgba(0,0,0,.03)25%,transparent 25%,transparent 50%,rgba(0,0,0,.03)50%,rgba(0,0,0,.03)75%,transparent 75%,transparent);background-color:#FAFCFD;background-size:16px 16px}.fc-corner-right .fc-event-inner{padding-right:15px}.btn-select-tick i{display:none}.btn-select-tick .btn:hover i{opacity:.3;display:block}.btn-select-tick .active i{display:block;opacity:1!important}#external-events>li{margin:6px 4px 6px 0;display:inline-block}#external-events>li>:first-child{padding:5px 10px 10px;cursor:move;display:block}#external-events>li>:first-child:after{color:#fff;color:rgba(255,255,255,.7);content:attr(data-description);font-size:11px;font-weight:400;display:block;line-height:0;margin:7px 0;text-transform:lowercase}.table-wrap{overflow:auto}.inbox-body{position:relative}.inbox-body .table-wrap{background:#fff;padding:10px 14px 7px;position:relative;margin-left:200px;overflow-x:hidden}.inbox-body.no-content-padding{margin-top:0;background:#fff;overflow:hidden}.inbox-nav-bar{height:70px;margin-bottom:0;padding:20px 14px;background:#fff}.inbox-nav-bar .page-title{display:inline-block;margin:0;width:196px;line-height:33px;vertical-align:middle}.inbox-footer{position:absolute;bottom:-53px}.inbox-footer .btn-group,.inbox-paging{margin-left:10px}#inbox-table{font-size:13px;border-top:none;border-left-color:transparent!important;border-right-color:transparent!important}#inbox-table tbody tr:hover{cursor:pointer;background:#E4E4E4}#inbox-table tr td{border-right:none;border-left:none;line-height:26px;padding:6px 4px 7px!important}#inbox-table .inbox-table-icon{padding-left:15px!important}#inbox-table tbody tr th{overflow:hidden}#inbox-table.table tbody>tr>td{border-color:#fff!important}#inbox-table .checkbox,#inbox-table .radio{margin-top:-1px;margin-bottom:0}.inbox-data-attachment,.inbox-table-icon{width:28px;text-align:left;padding-left:12px!important;padding-right:0!important}.inbox-data-from{width:200px}.inbox-data-from>:first-child{width:200px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.inbox-data-date{width:80px;padding-left:7px!important;padding-right:0!important}.inbox-data-message>:first-child{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;height:27px;color:#8A8A8A}.inbox-data-message>:first-child span{color:#111}.inbox-data-message>:first-child span.label{color:#fff}.inbox-data-message>:first-child>:first-child:after{content:" - "}.unread td{background:#fff}.unread .inbox-data-date>:first-child,.unread .inbox-data-from>:first-child,.unread .inbox-data-message>:first-child>:first-child{font-weight:700}tr.highlight td,tr.unread.highlight td{background:#ffc!important;color:#333}.inbox-checkbox-triggered{display:inline-block}.inbox-checkbox-triggered>.btn-group{margin-right:10px}.inbox-checkbox-triggered>.btn-group .btn{padding-left:14px;padding-right:14px}.inbox-side-bar{height:100%;position:absolute;background:#fff;display:block;width:200px;padding:10px 0 10px 14px;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch}.inbox-side-bar::-webkit-scrollbar{width:0!important}.inbox-side-bar h6{font-weight:400;font-size:11px;display:block;padding:0 15px;text-transform:uppercase;color:#838383}.inbox-side-bar h6 a{font-size:14px;margin-top:-2px}.inbox-side-bar h6 .tooltip{text-transform:none!important}.inbox-side-bar>.btn{margin-bottom:35px}.inbox-side-bar .input-group{margin-bottom:25px}#compose-mail-mini{margin-left:4px}.inbox-space{display:block;width:185px}.inbox-space>.progress{margin-top:5px}.inbox-menu-lg{list-style:none;padding:0;margin:0 0 20px}.inbox-menu-lg li a{display:block;padding:6px 15px 7px;font-size:13px;color:#333}.inbox-menu-lg li{display:block;width:100%}.inbox-menu-lg li a:hover{text-decoration:none;background:#f4f4f4}.inbox-menu-lg li.active a{font-weight:700;background:#F0F0F0;border-bottom:1px solid #E7E7E7;color:#3276b1}.inbox-menu-sm{list-style:none;padding:0;margin:0 0 20px}.inbox-menu-sm li a{display:block;padding:8px 15px 10px;font-size:13px;color:#333}.inbox-menu-sm li{display:block;width:100%}.inbox-menu-sm li a:hover{text-decoration:none;background:#f4f4f4}.inbox-menu-sm li.active a{font-weight:700;background:#F0F0F0;border-bottom:1px solid #E7E7E7;color:#3276b1}.email-open-header{margin:-10px 0 0 0;font-size:20px;border-bottom:1px solid #bfbfbf;border-top:1px solid #eee;padding:15px 3px}.email-open-header>span{font-size:10px;font-weight:400;padding:3px 5px;letter-spacing:normal;text-transform:uppercase;vertical-align:middle;line-height:33px;background:#ACACAC}.inbox-info-bar{padding:10px 0;border-bottom:1px solid #bfbfbf}.inbox-info-bar img{width:35px;height:auto;display:inline-block;vertical-align:middle;margin-right:7px;margin-left:2px;border-left:3px solid #fff}.inbox-download,.inbox-message{padding:15px 4px;border-bottom:1px solid #bfbfbf}.inbox-download-list{list-style:none;margin:5px 0 0;padding:0}.inbox-download-list li{display:inline-block;margin:0 5px 0 0;vertical-align:top}.inbox-download-list li>:first-child{margin-bottom:0;width:150px;overflow:hidden}.inbox-download-list li>:first-child:hover{background:#fff;border-color:silver}.inbox-download-list li>:first-child>:first-child{text-align:center;display:block;color:#D6D6D6}.inbox-download-list li>:first-child>:first-child>.fa{font-size:150px}.inbox-download-list li>:first-child>:first-child>img{max-width:120px}.inbox-compose-footer{padding:10px;background:#F5F5F5;border-bottom:1px solid #A9A9A9}.inbox-compose-footer,.inbox-download,.inbox-info-bar,.inbox-message{margin-right:240px;position:relative}.email-infobox{display:block;width:180px;border-bottom:1px solid #bfbfbf;padding-bottom:0;padding-top:15px;position:absolute;top:65px;right:15px}.inbox-info-bar .form-group{margin:0}.inbox-info-bar .form-group input,.inbox-info-bar .select2-container-multi .select2-choices{border-color:#fff!important}.inbox-info-bar .select2-choices>div{display:none}.inbox-info-bar .col-md-1,.inbox-info-bar .col-md-11{padding-left:0;padding-right:0}.fileinput{padding-top:3px}.hidden{display:none}.inbox-info-bar em{position:absolute;top:6px;right:20px;text-align:right;font-style:normal}.email-reply-text>div{border-left:1px solid #D6D6D6;padding-left:10px;margin-left:50px;color:#A9A9A9}.inbox-body .note-editor .note-editable{height:100% important}.email-reply-text>:first-child{padding-left:45px}@media (max-width:1280px){.inbox-compose-footer,.inbox-info-bar,.inbox-message{margin-right:0}.email-infobox{display:none}}@media (max-width:1024px){.inbox-side-bar{display:none!important}.inbox-body .table-wrap{margin-left:0!important}.inbox-info-bar .col-md-1,.inbox-info-bar .col-md-11{padding-left:26px;padding-right:26px}}.profile-pic{text-align:right}.profile-pic>img{border-radius:0;position:relative;border:5px solid #fff;top:-30px;left:10px;display:inline-block;text-align:right;z-index:4;max-width:100px;margin-bottom:-30px}.profile-carousel .carousel-inner{max-height:150px}.friends-list li{margin-bottom:10px;margin-right:3px;padding:0}.friends-list img{width:35px;border:1px solid #fff;outline:1px solid #bfbfbf}.profile-link-btn{color:#999;font-size:14px}time.icon{font-size:14px;display:block;position:relative;width:35px;height:43px;background-color:#fff;margin:3px auto;border-radius:7px;box-shadow:0 1px 0 #bdbdbd,0 2px 0 #fff,0 3px 0 #EEE9E9,0 4px 0 #fff,0 5px 0 #FFF,0 0 0 1px #D3D3D3;overflow:hidden}time.icon *{display:block;width:100%;font-size:10px;font-weight:700;font-style:normal;text-align:center}time.icon strong{position:absolute;top:0;padding:2px 0;color:#fff;background-color:#3a3633;-webkit-box-shadow:0 2px 0 #3a3633;box-shadow:0 2px 0 #3a3633;border-radius:6px 6px 0 0}time.icon em{position:absolute;bottom:3px;color:#3276b1}time.icon span{width:100%;font-size:15px;letter-spacing:-.05em;padding-top:21px;color:#2f2f2f}.user{display:block;float:left;width:170px;margin:0 15px 15px 0;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap}.user img{float:left;width:35px;margin-right:5px}.user .email{color:#999;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap}.search-results{padding:18px 5px}.search-results+.search-results{border-top:1px dashed #E3E3E3}.search-results>:first-child{margin-bottom:4px;font-weight:400}.search-results>:first-child a{text-decoration:underline}.search-results .url{font-style:normal;font-size:14px}.search-results img{display:inline-block;margin-top:4px;margin-right:4px;width:80px}.search-results>div{display:inline-block;vertical-align:top}.search-results .note{margin:0;line-height:normal}.search-results .note a{text-decoration:none!important;color:#333}.search-results .note a:hover{color:#ed1c24}.todo-group-title{margin:0;line-height:31px;padding:0 0 0 10px;background:#fafafa;border-bottom:1px solid #e7e7e7;border-top:1px solid #f4f4f4;color:#999}.todo{margin:0;padding:0;min-height:5px;list-style:none}.todo>li{display:block;position:relative;overflow:hidden;border-bottom:1px solid #e7e7e7;margin:0 5px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAQCAYAAADagWXwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0RkQ1OEY4NTM4NUIxMUUzQjdCMUMxQzJCQUE3MTMxOCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0RkQ1OEY4NjM4NUIxMUUzQjdCMUMxQzJCQUE3MTMxOCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRGRDU4RjgzMzg1QjExRTNCN0IxQzFDMkJBQTcxMzE4IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRGRDU4Rjg0Mzg1QjExRTNCN0IxQzFDMkJBQTcxMzE4Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+pTD+wgAAACtJREFUeNpimDBhwn8gYABhdDYjiIELMDHgAUwTJ06Ea0VnjxpLO2MBAgwAGYZLegQbQ3UAAAAASUVORK5CYII=) 1px 11px no-repeat}.todo>li:last-child,.todo>li:only-child{border-bottom:none}.todo>li>:first-child{display:block;border-right:1px solid #FFE1EB;height:100%;padding:6px 11px 6px 18px;width:20px;vertical-align:top;position:absolute}.todo>li>:first-child:hover{cursor:move}.todo>li.complete>:first-child:hover{cursor:default}.todo>li.complete{background:0 0}.todo>li>p{height:100%;margin-left:52px;border-left:1px solid #FFE1EB;display:inline-block;padding:8px 0 6px 7px;margin-bottom:0;min-height:37px;line-height:normal;font-size:14px;font-weight:500;color:#333}.todo>li>p>span{display:block;line-height:12px;font-size:10px;font-weight:400}.todo>li>p>:first-child{margin-top:-5px;color:#999;margin-bottom:4px}.todo>li>p>.date{color:#bfbfbf}.todo>li.complete>*{text-decoration:line-through;font-style:italic}.todo>li.ui-sortable-helper{border-top:1px solid #eee;background:rgba(113,132,63,.1)}.smart-timeline{position:relative}.smart-timeline-list{list-style:none;margin:0;padding:0}.smart-timeline-list:after{content:" ";background-color:#eee;position:absolute;display:block;width:2px;top:0;left:95px;bottom:0;z-index:1}.smart-timeline-list li{position:relative;margin:0;padding:15px 0}.smart-timeline-list>li:hover{background-color:#f4f4f4}.smart-timeline-hover li:hover{background-color:#f9f9f9}.smart-timeline-icon{background:#3276b1;color:#fff;border-radius:50%;position:absolute;width:32px;height:32px;line-height:28px;font-size:14px;text-align:center;left:80px;top:10px;z-index:100;padding:2px}.smart-timeline-icon>img{height:32px;width:32px;border-radius:50%;margin-top:-2px;margin-left:-2px;border:2px solid #3276b1}.smart-timeline-time{float:left;width:70px;text-align:right}.smart-timeline-time>small{font-style:italic}.smart-timeline-content{margin-left:123px}.table-forum thead tr{background:none!important}.table-forum thead tr th{font-size:17px;font-weight:400;border-bottom-color:#F1F1F1}.table-forum tr td{border-top-style:dashed!important;padding-top:12px!important;padding-bottom:12px!important}.table-forum tr td h4{font-size:15px;font-weight:700}.table-forum tr td h4 small{font-size:13px;display:block;margin-top:2px}.table-forum tr td>i{margin-top:4px;padding-left:10px}.table-forum tr.locked h4>a:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f023"}.table-forum tr.closed h4>a{text-decoration:line-through;color:#848484;cursor:not-allowed}.forum-attachment{margin-top:20px;display:block}.ajax-loading-error{margin-top:70px;display:block;text-align:center;font-size:23px;font-weight:700}.ajax-notifications .ajax-loading-error{text-align:center;margin-top:20px;font-size:15px}.ajax-notifications .ajax-loading-animation{font-size:15px;text-align:center;margin-top:70px}html{margin:0;padding:0;min-height:100%;background:url(../img/mybg.png) #fff;position:relative}body{margin:0;padding:0;min-height:100%;background:url(../img/mybg.png) #fff;direction:ltr}body.mobile-view-activated.hidden-menu{overflow-x:hidden}body.modal-open{overflow:hidden!important}a:active,a:focus,a:hover,button,button:active,button:focus,embed,input::-moz-focus-inner,object{outline:0}h1,h2,h3,h4{margin:0;font-family:"Open Sans",Arial,Helvetica,Sans-Serif;font-weight:300}.page-title{margin:12px 0 28px}.page-title span{font-size:16px;color:#333;display:inline-block;vertical-align:1px}label{font-weight:400}:focus{outline:0!important}a,button,input{-ms-touch-action:none!important}.uneditable-input:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{outline:0;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important}.form-control,.input-lg,.input-sm,.input-xs{border-radius:0!important;-webkit-border-radius:0!important;-moz-border-radius:0!important}.input-xs{height:24px;padding:2px 10px;font-size:11px;line-height:1.5}.btn-xs{padding:1px 5px}.btn-sm{padding:6px 10px 5px}.btn-lg{padding:10px 16px}.no-space{margin:0}.no-space>[class*=col-]{margin:0!important;padding-right:0;padding-left:0}#content{padding:10px 14px;position:relative}body.container{position:absolute;left:0;right:0;padding:0;border-left:1px solid #bfbfbf;border-right:1px solid #bfbfbf;box-shadow:0 2px 70px rgba(0,0,0,.45)}h1{letter-spacing:-1px;font-size:24px;margin:10px 0}h1 small{font-size:18px;font-weight:300;letter-spacing:-1px}.lead{font-size:19px}h2{letter-spacing:-1px;font-size:22px;margin:20px 0;line-height:normal}h3{display:block;font-size:19px;font-weight:400;margin:20px 0;line-height:normal}h4{line-height:normal}h5{font-size:17px;font-weight:300;margin:10px 0;line-height:normal}h6{font-size:15px;margin:10px 0;font-weight:700;line-height:normal}.row-seperator-header{margin:15px 14px 20px;border-bottom:none;display:block;color:#646464;font-size:20px;font-weight:400}.center-canvas,.center-child-canvas>canvas{display:block!important;margin:0 auto!important}.bordered{border:1px solid rgba(0,0,0,.2)}.bordered:hover{border:1px solid rgba(0,0,0,.4)}aside{display:block;overflow:hidden;background:#3a3633;background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIxMDAlIiB5Mj0iMCUiPgogICAgPHN0b3Agb2Zmc2V0PSI5NyUiIHN0b3AtY29sb3I9IiMzYTM2MzMiIHN0b3Atb3BhY2l0eT0iMSIvPgogICAgPHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjMmEyNzI1IiBzdG9wLW9wYWNpdHk9IjEiLz4KICA8L2xpbmVhckdyYWRpZW50PgogIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGZpbGw9InVybCgjZ3JhZC11Y2dnLWdlbmVyYXRlZCkiIC8+Cjwvc3ZnPg==);background:-moz-linear-gradient(left,#3a3633 93%,#2a2725 100%);background:-webkit-gradient(linear,left top,right top,color-stop(93%,#3a3633),color-stop(100%,#2a2725));background:-webkit-linear-gradient(left,#3a3633 93%,#2a2725 100%);background:-o-linear-gradient(left,#3a3633 93%,#2a2725 100%);background:-ms-linear-gradient(left,#3a3633 93%,#2a2725 100%);background:linear-gradient(to right,#3a3633 93%,#2a2725 100%);min-height:100%}#header{display:block;height:49px;margin:0;padding:0 13px 0 0;background-color:#f3f3f3;background-image:-moz-linear-gradient(top,#f3f3f3,#e2e2e2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f3f3f3),to(#e2e2e2));background-image:-webkit-linear-gradient(top,#f3f3f3,#e2e2e2);background-image:-o-linear-gradient(top,#f3f3f3,#e2e2e2);background-image:linear-gradient(to bottom,#f3f3f3,#e2e2e2);background-repeat:repeat-x;position:relative;z-index:905}#header>div{display:inline-block;vertical-align:middle;height:49px;float:left}#header>div.open{font-weight:700}.fixed-header #header{position:fixed;width:100%;z-index:905;top:0;border-bottom:2px solid #999;border-bottom:1px solid rgba(0,0,0,.3);box-shadow:-11px 12px 23px rgba(0,0,0,.1)}.fixed-header.fixed-ribbon #header{border-bottom:none;box-shadow:none}.container.fixed-header #header{max-width:1164px}.fixed-header #header .ajax-dropdown{z-index:906}.fixed-header #shortcut{position:fixed}.fixed-header #main{margin-top:49px}#logo-group>span{display:inline-block;height:39px;float:left}#logo-group span#activity{-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;cursor:default!important;display:inline-block;font-weight:700;height:24px;width:24px;padding:2px;text-align:center;text-decoration:none!important;-moz-user-select:none;-webkit-user-select:none;background-color:#f8f8f8;background-image:-webkit-gradient(linear,left top,left bottom,from(#f8f8f8),to(#f1f1f1));background-image:-webkit-linear-gradient(top,#f8f8f8,#f1f1f1);background-image:-moz-linear-gradient(top,#f8f8f8,#f1f1f1);background-image:-ms-linear-gradient(top,#f8f8f8,#f1f1f1);background-image:-o-linear-gradient(top,#f8f8f8,#f1f1f1);background-image:linear-gradient(top,#f8f8f8,#f1f1f1);border:1px solid #bfbfbf;color:#c4bab6;font-size:19px;margin:10px 0 0;position:relative}#logo-group span#activity:hover{border:1px solid #bfbfbf;transition:all 0s;cursor:pointer!important;-webkit-box-shadow:inset 0 0 4px 1px rgba(0,0,0,.08);box-shadow:inset 0 0 4px 1px rgba(0,0,0,.08)}#logo{display:inline-block;width:175px;margin-top:13px;margin-left:9px}#logo img{width:110px;height:auto;padding-left:3px}#logo-group>span b.badge{position:absolute;top:-5px;right:-5px;cursor:pointer;background:#0091d9;display:inline-block;font-size:10px;box-shadow:inset 1px 1px 0 rgba(0,0,0,.1),inset 0 -1px 0 rgba(0,0,0,.07);color:#fff;font-weight:700;border-radius:50%;-moz-border-radius:50%;-webkit-border-radius:50%;padding:2px 4px 3px;text-align:center;line-height:normal}#activity.active .badge{background:#006fa6!important}#project-context,.project-context{display:inline-block;padding:7px 13px 0;position:relative}#project-context>span,.project-context>span{display:block}#project-context>:first-child,.project-context>:first-child{display:block;color:#bfbfbf;font-size:10px;font-weight:700;text-transform:uppercase;text-shadow:0 0 1px #fff;padding-left:0;text-align:left}#project-selector,.project-selector{max-width:97%;white-space:nowrap;background:0 0;border:none;padding:0;text-align:left;color:#555;font-size:14px;cursor:pointer}#project-selector:hover,.project-selector:hover{color:#333}.header-search{position:relative}.header-search.pull-right{margin-left:6px}.header-search>input[type=text]{display:block;box-sizing:border-box;-moz-box-sizing:border-box;min-width:200px;width:100%;height:30px;padding:0 10px;outline:0;border-width:1px;border-style:solid;border-radius:0;border-color:#bfbfbf;background:#fff;color:#404040;appearance:normal;-moz-appearance:none;-webkit-appearance:none;margin-top:10px;line-height:normal}.header-search>button{background:0 0;border:none;color:#6D6A69;font-size:17px;height:30px;line-height:30px;margin:0;padding:0;position:absolute;right:0;top:10px;width:30px;z-index:2}#search-mobile{display:none}#cancel-search-js{position:absolute;display:none;background:#a90329;z-index:3;color:#fff;padding:0;right:10px;top:10px;text-align:center;height:29px;line-height:29px;width:30px;font-size:17px;text-decoration:none!important}#header>:first-child,aside{width:220px}#left-panel{position:absolute;top:0;left:0;z-index:904;padding-top:49px}#main{margin-left:220px;padding:0;padding-bottom:52px;min-height:500px}#ribbon{min-height:40px;background:#474544;padding:0 13px;position:relative}#ribbon .breadcrumb{display:inline-block;margin:0;padding:11px 34px 11px 0!important;background:0 0;vertical-align:top}#ribbon .breadcrumb,#ribbon .breadcrumb a{color:#BBB!important;text-decoration:none!Important}#ribbon .breadcrumb li:last-child,#ribbon .breadcrumb>.active{color:#E4E4E4}.fixed-ribbon #ribbon{position:fixed;right:0;left:220px;top:49px;z-index:901}.container.fixed-ribbon #ribbon{width:944px;left:590px}.fixed-ribbon #content{padding-top:50px}.minified.fixed-ribbon #ribbon{left:45px}.hidden-menu.fixed-ribbon #ribbon{left:10px}.fixed-navigation #left-panel{height:100%;position:fixed}.fixed-navigation nav{-webkit-overflow-scrolling:touch;overflow-y:auto;height:100%;padding-bottom:49px}.fixed-navigation nav>ul{padding-right:15px;position:relative;height:100%;width:114%;overflow-x:hidden;overflow-y:scroll}.mobile-detected.fixed-navigation nav>ul{padding-right:30px!important}.minified.fixed-navigation nav{-webkit-overflow-scrolling:none;overflow:visible;height:auto;padding-bottom:0}.minified.fixed-navigation nav>ul{overflow:visible;padding-right:0;width:100%}nav ul li a:active{background:#616161!important}nav ul{width:100%;padding:40px 28px 25px 0;padding:0;margin:0;font-size:13px;line-height:.5em;list-style:none;position:relative}nav ul .active>a{color:#fff!important;position:relative}nav ul li.active>a:before{content:"\f0d9";font-family:FontAwesome;display:block;height:27px;line-height:normal;width:27px;position:absolute;right:-21px;font-size:20px;color:#eee}nav ul li.active.open>a:before{content:""}nav>ul>li:last-child.open{border-bottom:1px solid rgba(255,255,255,.15)}nav ul li{overflow:hidden}nav ul li a{line-height:normal;font-size:14px;padding:10px 10px 10px 11px;color:#a8a8a8;display:block;font-weight:400;text-decoration:none!important;position:relative}nav>ul>li>ul>li>a,nav>ul>li>ul>li>ul>li>a{padding-top:7px;padding-bottom:7px}nav ul li a:focus{color:#c9c9c9}nav ul li a:hover{color:#fff;text-decoration:none}nav ul b{float:right;font-size:11px;margin-top:2px}nav ul span.menu-item-parent{display:inline-block;margin:0;padding:0}nav ul li.open>a,nav ul li.open>a b{color:#fff!important}nav>ul>li>a b{position:absolute!important;right:10px;top:10px}nav>ul>li>a>i{margin-right:5px;width:15px;display:inline-block;text-align:center;position:relative}nav>ul>li>a>i>em{font-size:9px;display:block;padding:2px;position:absolute;top:-8px;right:-6px;text-decoration:none;font-style:normal;background:#ED1C24;color:#fff;min-width:13px;border-radius:50%;max-height:13px;line-height:8px;font-weight:700;vertical-align:baseline;white-space:nowrap;text-align:center;border:1px solid rgba(255,255,255,.1)}nav ul li li{border-bottom:none;position:relative}nav>ul>li>ul::before{content:"";display:block;position:absolute;z-index:1;left:23px;top:0;bottom:0;border-left:1px solid #7A7A7A}nav>ul ul li::before{content:"";display:block;position:absolute;width:8px;left:23px;top:16px;border-top:1px solid #7A7A7A;z-index:1}nav>ul ul ul li::before{content:"";display:block;position:absolute;width:18px;left:10px;top:17px;border-top:1px solid transparent}nav>ul ul li a i{font-size:14px!important;width:18px!important;text-align:center!important;vertical-align:0!important;line-height:1!important}nav>ul>li:hover>ul::before,nav>ul>li:hover>ul>li::before{border-color:#ACACAC!important}nav ul ul{margin:0;display:none;background:rgba(69,69,69,.6);padding:7px 0}nav ul ul ul{background:0 0;padding:0}nav ul ul li{margin:0;padding:0}nav ul ul li>a{padding-left:42px;font-size:14px;font-weight:400;outline:0}nav ul ul li>a:hover{background-color:rgba(69,69,69,.8);color:#fff}nav ul ul ul li a{color:#bfbfbf;padding:8px 10px 8px 60px;font-size:14px}nav ul ul ul li a:hover{background-color:#4C4F53;color:#fff}nav ul ul ul ul li a{padding-left:80px}nav ul ul ul ul ul li a{padding-left:100px}nav ul ul ul ul ul ul li a{padding-left:120px}nav ul ul b{color:#B3B3B3}nav ul ul>li:hover b{color:#D5D9E2}.header-dropdown-list{list-style:none;float:right;position:relative;margin:0}.header-dropdown-list>li{display:inline-block;padding-right:5px}.header-dropdown-list>li>.dropdown-toggle{margin-top:16px;display:block}.smart-accordion-default.panel-group{margin-bottom:0}.smart-accordion-default.panel-group .panel+.panel{margin-top:-1px}.smart-accordion-default.panel-group .panel-heading{padding:0}.smart-accordion-default.panel-group .panel-title a{display:block;padding:10px 15px;text-decoration:none!important}.panel-group .panel,.smart-accordion-default .panel-heading{border-radius:0;-webkit-border-radius:0;-moz-border-radius:0}.smart-accordion-default .panel-default>.panel-heading{background-color:#fcfcfc}.smart-accordion-default .panel-default{border-color:#c3c3c3}.smart-accordion-default .panel-title>a.collapsed>.fa,.smart-accordion-default .panel-title>a>:first-child{display:none}.smart-accordion-default .panel-title>a.collapsed>:first-child{display:inline-block}.no-padding .smart-accordion-default>div{border-left:none!important;border-right:none!important}.no-padding .smart-accordion-default>div:first-child{border-top:none!important}.no-padding .smart-accordion-default>div:last-child{border-bottom:none!important}.onoffswitch-container{margin-top:4px;margin-left:7px;display:inline-block}.onoffswitch{position:relative;width:50px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;margin-top:3px;margin-bottom:3px;margin-left:5px;display:inline-block;vertical-align:middle}.onoffswitch-checkbox{display:none}.onoffswitch-label{display:block;overflow:hidden;cursor:pointer;border:1px solid #626262;border-radius:50px;border-color:#adadad #b3b3b3 #9e9e9e;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.onoffswitch-inner{width:200%;margin-left:-100%;display:block}.onoffswitch-inner:after,.onoffswitch-inner:before{float:left;width:50%;height:15px;padding:0;line-height:15px;font-size:10px;font-family:Trebuchet,Arial,sans-serif;font-weight:700;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.onoffswitch-inner:before{content:attr(data-swchon-text);text-shadow:0 -1px 0 #333;padding-left:7px;background-color:#3276b1;color:#fff;box-shadow:inset 0 2px 6px rgba(0,0,0,.5),0 1px 2px rgba(0,0,0,.05);text-align:left}.onoffswitch-inner:after{content:attr(data-swchoff-text);padding-right:7px;text-shadow:0 -1px 0 #fff;background-color:#fff;color:#555;text-align:right;box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05)}.onoffswitch-switch{width:19px;height:19px;margin:-2px;background:#fff;border:1px solid #9a9a9a;border-radius:50px;position:absolute;top:0;bottom:0;right:32px;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;background-color:#f4f4f4;background-image:-moz-linear-gradient(top,#fff,#eee);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#eee));background-image:-webkit-linear-gradient(top,#fff,#eee);background-image:-o-linear-gradient(top,#fff,#eee);background-image:linear-gradient(to bottom,#fff,#eee);background-repeat:repeat-x;-webkit-box-shadow:1px 1px 4px 0 rgba(0,0,0,.3);box-shadow:1px 1px 4px 0 rgba(0,0,0,.3)}.onoffswitch-checkbox+.onoffswitch-label .onoffswitch-switch:before,.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-switch:before{content:"\f00d";color:#a90329;display:block;text-align:center;line-height:19px;font-size:10px;text-shadow:0 -1px 0 #fff;font-weight:700;font-family:FontAwesome}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-switch:before{content:"\f00c";color:#57889c}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-inner{margin-left:0;display:block}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-switch{right:0}.onoffswitch-switch:hover{background-color:#eee}.onoffswitch-switch:active{background-color:#eee;box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05)}.onoffswitch-checkbox:checked:disabled+.onoffswitch-label .onoffswitch-inner:before,.onoffswitch-checkbox:disabled+.onoffswitch-label .onoffswitch-inner:after{text-shadow:0 1px 0 #fff;background:#bfbfbf;color:#333}.onoffswitch-checkbox:checked:disabled+.onoffswitch-label .onoffswitch-switch,.onoffswitch-checkbox:disabled+.onoffswitch-label .onoffswitch-switch{background-color:#f4f4f4;background-image:-moz-linear-gradient(top,#bfbfbf,#f4f4f4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#bfbfbf),to(#f4f4f4));background-image:-webkit-linear-gradient(top,#bfbfbf,#f4f4f4);background-image:-o-linear-gradient(top,#bfbfbf,#f4f4f4);background-image:linear-gradient(to bottom,#bfbfbf,#f4f4f4);box-shadow:none!important}.onoffswitch-checkbox:checked:disabled+.onoffswitch-label .onoffswitch-label,.onoffswitch-checkbox:disabled+.onoffswitch-label{border-color:#ababab #999 #878787!important}.onoffswitch-checkbox:checked+.onoffswitch-label{border-color:#3276b1 #2a6395 #255681}.onoffswitch+span,.onoffswitch-title{display:inline-block;vertical-align:middle;margin-top:-5px}.form-control{box-shadow:none!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important}.form hr{margin-left:-13px;margin-right:-13px;border-color:rgba(0,0,0,.1);margin-top:20px;margin-bottom:20px}.form fieldset{display:block;border:none;background:rgba(255,255,255,.9);position:relative}fieldset{position:relative}.form-actions{display:block;padding:13px 14px 15px;border-top:1px solid rgba(0,0,0,.1);background:rgba(249,249,249,.9);margin-top:25px;margin-left:-13px;margin-right:-13px;margin-bottom:-13px;text-align:right}.well .form-actions{margin-left:-19px;margin-right:-19px;margin-bottom:-19px}.well.well-lg .form-actions{margin-left:-24px;margin-right:-24px;margin-bottom:-24px}.well.well-sm .form-actions{margin-left:-9px;margin-right:-9px;margin-bottom:-9px}.popover-content .form-actions{margin:0 -14px -9px;border-radius:0 0 3px 3px;padding:9px 14px}.no-padding .form .form-actions{margin:0;display:block;padding:13px 14px 15px;border-top:1px solid rgba(0,0,0,.1);background:rgba(248,248,248,.9);text-align:right;margin-top:25px}.form header,legend{display:block;padding:8px 0;border-bottom:1px dashed rgba(0,0,0,.2);background:#fff;font-size:16px;font-weight:300;color:#222;margin:25px 0 20px}.no-padding .form header{margin:25px 14px 0}.form header:first-child{margin-top:10px}legend{font-weight:400;margin-top:0;background:0 0}.input-group-addon{padding:6px 10px;border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;transition:background-color .3s;-o-transition:background-color .3s;-ms-transition:background-color .3s;-moz-transition:background-color .3s;-webkit-transition:background-color .3s}.input-group-addon .fa{font-size:14px}.input-group-addon .fa-2x,.input-group-addon .fa-lg{font-size:2em}.input-group-addon .fa-3x,.input-group-addon .fa-4x,.input-group-addon .fa-5x{font-size:30px}input[type=text]:focus+.input-group-addon{border-color:#0091d9;background-color:#72a0ce;color:#fff}.has-warning input[type=text],.has-warning input[type=text]+.input-group-addon{border-color:#dbab57}.has-warning input[type=text]+.input-group-addon{background-color:#faf2cc;color:#c09853}.has-warning input[type=text]:focus,.has-warning input[type=text]:focus+.input-group-addon{border-color:#dbab57}.has-warning input[type=text]:focus+.input-group-addon{background-color:#e1c118;color:#fff}.has-error .input-group-addon{border-color:#b94a48;background:#f2dede;color:#b94a48}.has-error input[type=text],.has-error input[type=text]+.input-group-addon{border-color:#b94a48}.has-error input[type=text]+.input-group-addon{background-color:#f2dede;color:#b94a48}.has-error input[type=text]:focus,.has-error input[type=text]:focus+.input-group-addon{border-color:#c05e5e}.has-error input[type=text]:focus+.input-group-addon{background-color:#c05e5e;color:#fff}.has-success input[type=text]:focus+.input-group-addon{border-color:#468847;background-color:#468847;color:#fff}.form .form-group:last-child,.form .form-group:last-child .note,.form fieldset .form-group:last-child,.form fieldset .form-group:last-child .note{margin-bottom:0}.note{margin-top:6px;padding:0 1px;font-size:11px;line-height:15px;color:#999}.input-icon-right{position:relative}.input-icon-left>i,.input-icon-right>i{position:absolute;right:10px;top:30%;font-size:16px;color:#bfbfbf}.input-icon-left>i{right:auto;left:24px}.input-icon-right .form-control{padding-right:27px}.input-icon-left .form-control{padding-left:29px}input[type=color].ui-autocomplete-loading,input[type=date].ui-autocomplete-loading,input[type=datetime-local].ui-autocomplete-loading,input[type=datetime].ui-autocomplete-loading,input[type=email].ui-autocomplete-loading,input[type=month].ui-autocomplete-loading,input[type=number].ui-autocomplete-loading,input[type=password].ui-autocomplete-loading,input[type=search].ui-autocomplete-loading,input[type=tel].ui-autocomplete-loading,input[type=text].ui-autocomplete-loading,input[type=time].ui-autocomplete-loading,input[type=url].ui-autocomplete-loading,input[type=week].ui-autocomplete-loading{background-image:url(../img/select2-spinner.gif)!important;background-repeat:no-repeat;background-position:99% 50%;padding-right:27px}.input-group-addon .checkbox,.input-group-addon .radio{min-height:0;margin-right:0!important;padding-top:0}.input-group-addon label input[type=checkbox].checkbox+span,.input-group-addon label input[type=checkbox].checkbox+span:before,.input-group-addon label input[type=radio].radiobox+span,.input-group-addon label input[type=radio].radiobox+span:before{margin-right:0}.input-group-addon .onoffswitch,.input-group-addon .onoffswitch-label{margin:0}.timeline-seperator{display:block;text-align:center;color:#999;margin:20px 0 0}.timeline-seperator>:first-child{padding:4px 5px;border:1px dashed rgba(0,0,0,.1);background:#fff;font-size:11px;border-radius:4px}.timeline-seperator .btn,.timeline-seperator .btn+.dropdown-menu{margin-right:15px}.timeline-seperator:after{display:block;content:" ";margin:0 20px;border-bottom:1px dashed rgba(0,0,0,.1);margin-top:-8px}.alert{margin-bottom:20px;margin-top:0;color:#675100;border-width:0;border-left-width:5px;padding:10px;border-radius:0;-webkit-border-radius:0;-moz-border-radius:0}.alert .close{top:0;right:-5px;line-height:20px}.alert-heading{font-weight:600}.alert-danger{border-color:#953b39;color:#fff;background:#c26565;text-shadow:none}.alert-warning{border-color:#dfb56c;color:#826430;background:#efe1b3}.alert-success{border-color:#8ac38b;color:#356635;background:#cde0c4}.alert-info{border-color:#9cb4c5;color:#305d8c;background:#d6dde7}.well{background:#fbfbfb;border:1px solid #ddd;box-shadow:0 1px 1px #ececec;-webkit-box-shadow:0 1px 1px #ececec;-moz-box-shadow:0 1px 1px #ececec;position:relative}.well.well-clean{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;border-color:transparent}.well.well-glass{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;border-color:transparent;background-color:rgba(255,255,255,.25);color:#fff}.well.well-light{background:#fff;border:1px solid #e2e2e2}.widget-body .well{margin-bottom:0}.well.transparent{border:none!important;background:none!important}.jarviswidget.well.transparent>div,.jarviswidget.well.transparent>div .widget-body{padding:0!important}.well[class*=" bg-"],.well[class^=bg-]{border:1px solid #555!important}.progress-micro{height:3px!important;line-height:3px!important}.progress-xs{height:7px!important;line-height:7px!important}.progress-sm{height:14px!important;line-height:14px!important}.progress-lg{height:30px!important;line-height:30px!important}.progress .progress-bar{position:absolute;overflow:hidden;line-height:20px}.progress .progressbar-back-text{position:absolute;width:100%;height:100%;font-size:12px;line-height:20px;text-align:center}.progress .progressbar-front-text{display:block;width:100%;font-size:12px;line-height:20px;text-align:center}.progress.right .progress-bar{right:0}.progress.right .progressbar-front-text{position:absolute;right:0}.progress.vertical{width:25px;height:100%;min-height:150px;margin-right:20px;display:inline-block;margin-bottom:0}.progress.wide-bar{width:40px}.progress.vertical.bottom{position:relative}.progress.vertical.bottom .progressbar-front-text{position:absolute;bottom:0}.progress.vertical .progress-bar{width:100%;height:0;-webkit-transition:height .6s ease;transition:height .6s ease}.progress.vertical.bottom .progress-bar{position:absolute;bottom:0}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{position:relative;margin-bottom:20px;overflow:hidden;height:22px;background:#eee;box-shadow:0 1px 0 transparent,0 0 0 1px #e3e3e3 inset;-webkit-box-shadow:0 1px 0 transparent,0 0 0 1px #e3e3e3 inset;-moz-box-shadow:0 1px 0 transparent,0 0 0 1px #e3e3e3 inset;border-radius:0;-moz-border-radius:0;-webkit-border-radius:0}.progress-bar{float:left;width:0;height:100%;font-size:11px;color:#fff;text-align:center;background-color:#57889c;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);font-weight:700;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-image:url(../img/pattern/overlay-pattern.png)}.progress-striped .progress-bar{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent 25%,transparent 50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent 25%,transparent 50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent 25%,transparent 50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent 75%,transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-danger{background-color:#a90329}.progress-striped .progress-bar-danger{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent 25%,transparent 50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent 25%,transparent 50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent 25%,transparent 50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent 75%,transparent)}.progress-bar-success{background-color:#739e73}.progress-striped .progress-bar-success{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent 25%,transparent 50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent 25%,transparent 50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent 25%,transparent 50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#c79121}.progress-striped .progress-bar-warning{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent 25%,transparent 50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent 25%,transparent 50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent 25%,transparent 50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent 75%,transparent)}.progress-bar-info{background-color:#57889c}.progress-striped .progress-bar-info{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent 25%,transparent 50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent 25%,transparent 50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent 25%,transparent 50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent 75%,transparent)}.progress .bar-info,.progress-info .bar{background:#57889c}.vertical-bars{padding:0;margin:0}.vertical-bars:after{content:"";display:block;height:0;clear:both}.vertical-bars li{padding:14px 0;width:25%;display:block;float:left;text-align:center}.vertical-bars li:first-child{border-left:none}.vertical-bars>li>.progress.vertical:first-child{margin-left:auto}.vertical-bars>li>.progress.vertical{margin:0 auto;float:none}.bar-holder:first-child{border-top:none}.bar-holder{padding:18px 15px}.bar-holder .progress{margin:0}.nav-tabs>li>a .badge{font-size:11px;padding:3px 5px;opacity:.5;margin-left:5px;min-width:17px;font-weight:400}.nav-tabs>li>a>.fa{opacity:.5}.tabs-left .nav-tabs>li>a .badge{margin-right:5px;margin-left:0}.nav-tabs>li>a .label{display:inline-block;font-size:11px;margin-left:5px;opacity:.5}.nav-tabs>li.active>a .badge,.nav-tabs>li.active>a .label,.nav-tabs>li.active>a>.fa{opacity:1}.nav-tabs>li>a{border-radius:0;color:#333}.nav-tabs>li.active>a{-webkit-box-shadow:0 -2px 0 #57889c;-moz-box-shadow:0 -2px 0 #57889c;box-shadow:0 -2px 0 #57889c;border-top-width:0!important;margin-top:1px!important;font-weight:700}.tabs-left .nav-tabs>li.active>a{-webkit-box-shadow:-2px 0 0 #57889c;-moz-box-shadow:-2px 0 0 #57889c;box-shadow:-2px 0 0 #57889c;border-top-width:1px!important;border-left:none!important;margin-left:1px!important}.tabs-left .nav-pills>li.active>a{border:none!important;box-shadow:none!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important}.tabs-right .nav-tabs>li.active>a{-webkit-box-shadow:2px 0 0 #57889c;-moz-box-shadow:2px 0 0 #57889c;box-shadow:2px 0 0 #57889c;border-top-width:1px!important;border-right:none!important;margin-right:1px!important}.tabs-below .nav-tabs>li.active>a{-webkit-box-shadow:0 2px 0 #57889c;-moz-box-shadow:0 2px 0 #57889c;box-shadow:0 2px 0 #57889c;border-bottom-width:0!important;border-top:none!important;margin-top:0!important}.tabs-left>.nav-pills>li,.tabs-left>.nav-tabs>li,.tabs-right>.nav-pills>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-pills>li>a,.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-pills>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-pills,.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left>.nav-pills{border-right:none}.tabs-left>.nav-tabs>li>a{margin-right:-1px}.tabs-left>.nav-tabs>li>a:focus,.tabs-left>.nav-tabs>li>a:hover{border-color:#eee #d5d5d5 #eee #eee}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:focus,.tabs-left>.nav-tabs .active>a:hover{border-color:#d5d5d5 transparent #d5d5d5 #ddd;*border-right-color:#fff}.tabs-left>.tab-content{margin-left:109px}.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.tabs-right>.nav-tabs>li>a{margin-left:-1px}.tabs-right>.nav-tabs>li>a:focus,.tabs-right>.nav-tabs>li>a:hover{border-color:#eee #eee #eee #ddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:focus,.tabs-right>.nav-tabs .active>a:hover{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}.tabs-below>.nav-tabs,.tabs-left>.nav-tabs,.tabs-right>.nav-tabs{border-bottom:0}.pill-content>.pill-pane,.tab-content>.tab-pane{display:none}.pill-content>.active,.tab-content>.active{display:block}.tabs-below>.nav-tabs{border-top:1px solid #ddd}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below>.nav-tabs>li>a:focus,.tabs-below>.nav-tabs>li>a:hover{border-top-color:#ddd;border-bottom-color:transparent}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:focus,.tabs-below>.nav-tabs>.active>a:hover{border-color:transparent #ddd #ddd}.nav-tabs.bordered{background:#fff;border:1px solid #ddd}.nav-tabs.bordered>:first-child a{border-left-width:0!important}.nav-tabs.bordered+.tab-content{border:1px solid #ddd;border-top:none}.tabs-pull-right.nav-pills>li,.tabs-pull-right.nav-tabs>li{float:right}.tabs-pull-right.nav-pills>li:first-child>a,.tabs-pull-right.nav-tabs>li:first-child>a{margin-right:1px}.tabs-pull-right.bordered.nav-pills>li:first-child>a,.tabs-pull-right.bordered.nav-tabs>li:first-child>a{border-left-width:1px!important;margin-right:0;border-right-width:0}.jarviswidget>header>.nav-tabs.pull-left>li:first-child a{border-left-width:0!important}.btn,a:link,button{-webkit-tap-highlight-color:rgba(169,3,41,.5)}#logo-group *,.login-info,.login-info *,.minified .menu-item-parent{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.hidden-desktop{display:none!important}.dropdown-menu-xs{min-width:37px}.dropdown-menu-xs>li>a{padding:3px 10px}.dropdown-menu-xs>li>a:hover i{color:#fff!important}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropdown-submenu>a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#bfbfbf;margin-top:5px;margin-right:-10px}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px}.table.has-tickbox thead tr th:first-child{width:25px}.table.has-tickbox.smart-form tbody tr td:first-child .checkbox,.table.has-tickbox.smart-form tbody tr td:first-child .radio,.table.has-tickbox.smart-form thead tr th:first-child .checkbox,.table.has-tickbox.smart-form thead tr th:first-child .radio{padding:0!important}.fc-border-separate thead tr,.table thead tr{background-color:#eee;background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#fafafa));background-image:-webkit-linear-gradient(top,#f2f2f2 0,#fafafa 100%);background-image:-moz-linear-gradient(top,#f2f2f2 0,#fafafa 100%);background-image:-ms-linear-gradient(top,#f2f2f2 0,#fafafa 100%);background-image:-o-linear-gradient(top,#f2f2f2 0,#fafafa 100%);background-image:-linear-gradient(top,#f2f2f2 0,#fafafa 100%);font-size:12px}.fc-border-separate thead tr th{padding:4px;line-height:1.428571429}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-width:1px}.no-padding>.table-bordered,.no-padding>.table-responsive>.table-bordered{border:none!important}.no-padding>.table-bordered tbody tr td:first-child,.no-padding>.table-bordered thead tr td:first-child,.no-padding>.table-bordered thead tr th:first-child,.no-padding>.table-responsive>.table-bordered tbody tr td:first-child,.no-padding>.table-responsive>.table-bordered thead tr td:first-child,.no-padding>.table-responsive>.table-bordered thead tr th:first-child{border-left-width:0!important}.no-padding>.table-bordered tbody tr td:last-child,.no-padding>.table-bordered thead tr th:last-child,.no-padding>.table-responsive>.table-bordered tbody tr td:last-child,.no-padding>.table-responsive>.table-bordered thead tr th:last-child{border-right-width:0!important}.no-padding>.table-bordered tbody tr:last-child td,.no-padding>.table-responsive>.table-bordered tbody tr:last-child td{border-bottom-width:0!important}.no-padding .table-responsive .table{margin-bottom:0}.no-padding .note-editable .table-bordered{border:1px solid #ddd!important}.smart-form.table td .checkbox i,.smart-form.table td .radio i,.smart-form.table th .checkbox i,.smart-form.table th .radio i{top:0!important}.table-condensed.table>tbody>tr>td,.table-condensed.table>tbody>tr>th,.table-condensed.table>tfoot>tr>td,.table-condensed.table>tfoot>tr>th,.table-condensed.table>thead>tr>td,.table-condensed.table>thead>tr>th{padding:5px 10px!important}.show-stats .progress{height:7px;border-radius:0;margin-top:3px;margin-bottom:15px}.show-stats{padding-top:6px!important}.show-stat-buttons{float:left;width:100%}.show-stats .show-stat-buttons>:first-child{padding-right:5px}.show-stats .show-stat-buttons>:last-child{padding-left:5px}.show-stat-microcharts{margin-left:-10px;margin-right:-10px}.show-stat-microcharts>div{border-right:1px solid #DADADA!important;border-top:1px solid #DADADA!important;margin-top:10px!important;height:65px;overflow:hidden;padding:7px 9px}.show-stat-microcharts>:last-child{border-right:none!important}.show-stat-microcharts .sparkline{margin-top:10px;margin-right:8px;opacity:.7}.show-stat-microcharts .sparkline:hover{opacity:1}.smaller-stat{margin:0;padding:0;list-style:none}.smaller-stat li{margin-top:3px;margin-right:0}.smaller-stat li:first-child{margin-top:8px}.smaller-stat span.label{width:40px;display:block;text-align:left;opacity:.5;cursor:default}.smaller-stat span.label:hover{opacity:1}.login-info{display:block;font-size:12px;height:39px;color:#fff;border:solid transparent;border-width:1px 0;box-shadow:inset 1px 1px 0 rgba(0,0,0,.1),inset 0 -1px 0 rgba(0,0,0,.07);width:100%;margin:0!important;border-bottom:1px solid #525151}.login-info a{text-decoration:none!important;color:#a8a8a8;display:inline-block;margin-top:6px}.login-info a span{text-transform:capitalize;font-size:14px;display:inline-block;text-decoration:none;max-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.login-info a span+i{vertical-align:middle}.login-info a:hover{color:#fff}.login-info>span{height:38px;display:block;padding:0 10px;border-bottom:1px solid #1A1817}.login-info img{width:25px;height:auto;display:inline-block;vertical-align:middle;margin-top:1px;margin-right:5px;margin-left:0;border-left:3px solid #fff}img.away,img.busy,img.offline,img.online{border-left:3px solid #fff}img.online{border-left-color:#40ac2b!important}img.busy{border-left-color:#ed1c24!important}img.offline{border-left-color:#ddd!important}img.away{border-left-color:#ffc40d!important}.client-form header{padding:15px 13px;margin:0;border-bottom-style:solid;border-bottom-color:rgba(0,0,0,.1);background:rgba(248,248,248,.9)}.minified .inbox-badge{border-radius:50%;font-size:9px;padding:2px;position:absolute;top:6px;right:6px;background:#ED1C24;min-width:13px}.minifyme{border-bottom:1px solid #302F2F;background:#454545;color:#A8A8A8;text-align:center;padding:0;width:36px;height:28px;display:block;position:absolute;right:-3px;border-radius:5px 0 0 5px;cursor:pointer;margin-top:5px;font-size:19px;transition:all .1s linear 0s}.minifyme:hover{background:#646464;color:#E4E4E4;right:0}.minified .minifyme{right:0;color:#A8A8A8;position:relative;width:100%;border-radius:0;margin:0;height:34px;font-size:23px}.minified .minifyme .fa:before{content:"\f0a9"}.minified .login-info a i,.minified .login-info a span{display:none}.minified .login-info span{padding:0 5px;text-align:center}.minified .login-info img{margin:-2px 0 0;width:30px}.minified .login-info{height:38px;border-bottom:1px solid #181818}.minified #left-panel{width:45px}.minified #main{margin-left:45px}.minified #left-panel,.minified nav>ul>li{overflow:visible}.minified nav>ul>ul{min-height:100px!important;max-height:180px!important;overflow-y:scroll;overflow-x:hidden;background:#ed1c24!important}.minified nav>ul>li,.minified nav>ul>li a{position:relative}.minified nav ul>li>a{padding:10px 11px;display:block}.minified nav>ul>li>a .fa.fa-fw{display:block;width:auto;text-align:center;padding:0}.minified nav>ul>li>a>i{text-align:center;margin:0;display:block}.minified nav>ul>li.active>a::before{content:"\f0d9"}.minified nav ul ul li a{padding-left:14px}.minified nav ul ul li li a{padding-left:25px}.minified nav>ul ul li::before,.minified nav>ul>li>ul::before{left:12px}.minified nav>ul>li>a .menu-item-parent,.minified nav>ul>li>a>b{display:none}.minified nav>ul>li>a>.menu-item-parent{display:none;position:absolute;left:40px;top:-3px;width:186px;height:38px;line-height:38px;background-color:#f5f5f5;color:#333;z-index:3;-webkit-box-shadow:2px 1px 2px 0 rgba(0,0,0,.2);-moz-box-shadow:2px 1px 2px 0 rgba(0,0,0,.2);box-shadow:2px 1px 2px 0 rgba(0,0,0,.2);border-left:1px solid #bfbfbf;border-top:1px solid #D8D4D4;border-bottom:1px solid #fff;padding-left:12px}.minified nav>ul>li>ul{display:none!important;position:absolute;left:40px;width:200px;z-index:5;border:1px solid #bfbfbf;min-height:180px;-webkit-box-shadow:1px 1px 2px 0 rgba(0,0,0,.2);-moz-box-shadow:1px 1px 2px 0 rgba(0,0,0,.2);box-shadow:1px 1px 2px 0 rgba(0,0,0,.2);background:#3A3633;margin-top:-3px}.minified nav ul>li>ul>li>ul{position:relative;left:13px;border:none;margin-left:-12px;width:197px}.minified nav>ul>li:hover>a>.menu-item-parent,.minified nav>ul>li:hover>ul{display:block!important}.minified nav>ul>li>ul>li{background-color:rgba(69,69,69,.9)}.minified nav>ul>li>ul>li>ul>li{background-color:#484B50}.minified nav>ul>li{border-bottom:1px solid #1A1817;border-top:1px solid #525151}.minified nav>ul>li>ul::before{border-left:none}.minified nav>ul ul li::before{border:none}.slimScrollDiv,.slimScrollDiv>:first-child{overflow:hidden}.minified .slimScrollDiv,.minified .slimScrollDiv>:first-child{overflow:visible!important}.minified .slimScrollBar,.minified .slimScrollRail{display:none}.minified nav>ul>li>ul>li>a,.minified nav>ul>li>ul>li>ul>li>a{padding-top:7px;padding-bottom:7px}.minified nav>ul>li>ul>li>ul>li a{padding-top:6px;padding-bottom:6px}.minified nav ul ul ul ul li a{padding-left:45px}.minified nav ul ul ul ul ul li a{padding-left:62px}.minified nav ul ul ul ul ul ul li a{padding-left:82px}.pagination.pagination-alt>li>a{box-shadow:none;-moz-box-shadow:none;-webkit-box-shadow:none;border:none;margin-left:-1px}.pagination.pagination-alt>li:first-child>a{padding-left:0}.pagination>li>a,.pagination>li>span{box-shadow:inset 0 -2px 0 rgba(0,0,0,.05);-moz-box-shadow:inset 0 -2px 0 rgba(0,0,0,.05);-webkit-box-shadow:inset 0 -2px 0 rgba(0,0,0,.05)}.disabled{color:#fff}.btn-default.disabled{color:#999}.btn{border-radius:2px;-webkit-border-radius:2px;-moz-border-radius:2px;box-shadow:inset 0 -2px 0 rgba(0,0,0,.05);-moz-box-shadow:inset 0 -2px 0 rgba(0,0,0,.05);-webkit-box-shadow:inset 0 -2px 0 rgba(0,0,0,.05)}.btn:active{position:relative;top:1px;left:1px}.btn.btn-ribbon{background-color:#707070;background-image:-moz-linear-gradient(top,#777,#666);background-image:-webkit-gradient(linear,0 0,0 100%,from(#777),to(#666));background-image:-webkit-linear-gradient(top,#777,#666);background-image:-o-linear-gradient(top,#777,#666);background-image:linear-gradient(to bottom,#777,#666);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff777777', endColorstr='#ff666666', GradientType=0);color:#fff;padding:0 5px;line-height:20px;vertical-align:middle;height:20px;display:block;border:none;float:left;margin:0 8px 0 0;cursor:pointer}.btn.btn-ribbon>i{font-size:111%}.ribbon-button-alignment{padding-top:10px;display:inline-block}.ribbon-button-alignment.pull-right>.btn.btn-ribbon{margin:0 0 0 8px}.panel-purple{border-color:#6e587a}.panel-purple>.panel-heading{color:#fff;background-color:#6e587a;border-color:#6e587a}.panel-greenLight{border-color:#71843f}.panel-greenLight>.panel-heading{color:#fff;background-color:#71843f;border-color:#71843f}.panel-greenDark{border-color:#496949}.panel-greenDark>.panel-heading{color:#fff;background-color:#496949;border-color:#496949}.panel-darken{border-color:#333}.panel-darken>.panel-heading{color:#fff;background-color:#404040;border-color:#404040}.panel-pink{border-color:#ac5287}.panel-pink>.panel-heading{color:#fff;background-color:#ac5287;border-color:#ac5287}.panel-green{border-color:#356e35}.panel-green>.panel-heading{color:#fff;background-color:#356e35;border-color:#356e35}.panel-blueLight{border-color:#92a2a8}.panel-blueLight>.panel-heading{color:#fff;background-color:#92a2a8;border-color:#92a2a8}.panel-pinkDark{border-color:#a8829f}.panel-pinkDark>.panel-heading{color:#fff;background-color:#a8829f;border-color:#a8829f}.panel-redLight{border-color:#a65858}.panel-redLight>.panel-heading{color:#fff;background-color:#a65858;border-color:#a65858}.panel-red{border-color:#a90329}.panel-red>.panel-heading{color:#fff;background-color:#a90329;border-color:#a90329}.panel-teal{border-color:#568a89}.panel-teal>.panel-heading{color:#fff;background-color:#568a89;border-color:#568a89}.panel-orange{border-color:#c79121}.panel-orange>.panel-heading{color:#fff;background-color:#c79121;border-color:#c79121}.panel-blueDark{border-color:#4c4f53}.panel-blueDark>.panel-heading{color:#fff;background-color:#4c4f53;border-color:#4c4f53}.panel-magenta{border-color:#6e3671}.panel-magenta>.panel-heading{color:#fff;background-color:#6e3671;border-color:#6e3671}.panel-blue{border-color:#57889c}.panel-blue>.panel-heading{color:#fff;background-color:#57889c;border-color:#57889c}.panel-footer>.btn-block{border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;border-bottom:none;border-left:none;border-right:none}.btn-circle{width:30px;height:30px;text-align:center;padding:6px 0;font-size:12px;line-height:18px;border-radius:50%;-moz-border-radius:50%;-webkit-border-radius:50%}.btn-circle.btn-lg{width:50px;height:50px;padding:10px 15px;font-size:18px;line-height:30px;border-radius:50%;-moz-border-radius:50%;-webkit-border-radius:50%}.btn-circle.btn-xl{width:70px;height:70px;padding:10px 15px;font-size:24px;line-height:50px;border-radius:50%;-moz-border-radius:50%;-webkit-border-radius:50%}.btn-metro{margin:0 0 20px;padding-top:15px;padding-bottom:15px}.btn-metro>span{display:block;vertical-align:bottom;margin-top:10px;text-transform:uppercase}.btn-metro>span.label{position:absolute;top:0;right:0}.btn-label{position:relative;left:-12px;display:inline-block;padding:6px 12px;background:rgba(0,0,0,.15);border-radius:3px 0 0 3px}.btn-labeled{padding-top:0;padding-bottom:0}.btn-link{box-shadow:none;-webkit-box-shadow:none;font-size:14px}#left-panel{-webkit-transition:250ms cubic-bezier(0.1,.57,.1,1);transition:250ms cubic-bezier(0.1,.57,.1,1);-webkit-transform:translate(0px,0) translateZ(0px)}#main{-webkit-transition:all .2s ease-out;transition:all .2s ease-out}.chart-large,.chart-small,.chart-xl{overflow:hidden}.chart-small{height:100px;width:100%}.chart-large{height:235px;width:100%}.chart-xl{height:297px;width:100%}#flotTip{padding:3px 5px;background-color:#fff;z-index:9999;color:#333;-webkit-box-shadow:0 1px 8px rgba(0,0,0,.1);-moz-box-shadow:0 1px 8px rgba(0,0,0,.1);box-shadow:0 1px 8px rgba(0,0,0,.1);font-size:14px;border:1px solid #C1C1C1;-moz-border-radius:4px;-khtml-border-radius:4px;-webkit-border-radius:4px;border-radius:4px}#flotTip span{color:#38812D;font-weight:700}.legendLabel span{display:block;margin:0 5px}.legendColorBox{padding-left:10px;vertical-align:top;padding-top:5px}.legendColorBox div>div{width:4px;height:4px;border-radius:50%;-webkit-border-radius:50%;-moz-border-radius:50%;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box}.morris-hover.morris-default-style{border-radius:10px;padding:6px;color:#666;background:rgba(255,255,255,.8);border:solid 2px rgba(230,230,230,.8);font-family:sans-serif;font-size:12px;text-align:center}.morris-hover.morris-default-style .morris-hover-row-label{font-weight:700;margin:.25em 0}.morris-hover.morris-default-style .morris-hover-point{white-space:nowrap;margin:.1em 0}.morris-hover{position:absolute;z-index:903}.fixed-page-footer .morris-hover{z-index:900}.chart{overflow:hidden;height:220px;margin:20px 5px 10px 10px}.has-legend{margin-top:30px!important}.has-legend-unique{margin-top:19px!important}.easyPieChart{position:relative;text-align:center}.easyPieChart canvas{position:absolute;top:0;left:0}.easy-pie-chart{display:inline-block}.easy-pie-chart .percent{color:#444;font-size:12px;font-weight:700}.easy-pie-title{display:inline-block;margin:10px 6px 0;font-size:12px;font-weight:400;text-transform:uppercase;width:100px;height:19px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.easy-pie-title .icon-color-bad,.easy-pie-title .icon-color-good{font-size:18px}.icon-color-good{color:#40ac2b}.icon-color-bad{color:#ed1c24}.degree-sign:after,.percent-sign:after{content:" %";line-height:normal}.degree-sign:after{content:" °F"}.hidden-menu #left-panel{left:-210px;z-index:903}.hidden-menu #main{margin-left:10px}.hidden-menu #left-panel:hover{left:0}.hidden-menu .minifyme,.minified #hide-menu{display:none}.btn-header.pull-right{margin-left:6px}.btn-header a>span{font-size:13px;font-weight:400;line-height:30px;height:30px;display:inline-block}.btn-header>:first-child>a{-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;cursor:default!important;display:inline-block;font-weight:700;height:30px;min-width:30px;padding:2px;text-align:center;text-decoration:none!important;-moz-user-select:none;-webkit-user-select:none;background-color:#f8f8f8;background-image:-webkit-gradient(linear,left top,left bottom,from(#f8f8f8),to(#f1f1f1));background-image:-webkit-linear-gradient(top,#f8f8f8,#f1f1f1);background-image:-moz-linear-gradient(top,#f8f8f8,#f1f1f1);background-image:-ms-linear-gradient(top,#f8f8f8,#f1f1f1);background-image:-o-linear-gradient(top,#f8f8f8,#f1f1f1);background-image:linear-gradient(top,#f8f8f8,#f1f1f1);border:1px solid #bfbfbf;color:#6D6A69;font-size:17px;margin:10px 0 0}.btn-header>:first-child>a:hover{border:1px solid #bfbfbf;color:#222;transition:all 0s;cursor:pointer;-webkit-box-shadow:inset 0 0 4px 1px rgba(0,0,0,.08);box-shadow:inset 0 0 4px 1px rgba(0,0,0,.08)}.btn-header>:first-child>a:active{background-color:#e8e8e8;background-image:-moz-linear-gradient(top,#e8e8e8 0,#ededed 100%);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#e8e8e8),color-stop(100%,#ededed));background-image:-webkit-linear-gradient(top,#e8e8e8 0,#ededed 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#ededed 100%);background-image:-ms-linear-gradient(top,#e8e8e8 0,#ededed 100%);background-image:linear-gradient(to bottom,#e8e8e8 0,#ededed 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#e8e8e8', endColorstr='#ededed', GradientType=0);-webkit-box-shadow:inset 0 0 3px 1px rgba(0,0,0,.15);box-shadow:inset 0 0 3px 1px rgba(0,0,0,.15)}.hidden-menu #hide-menu>:first-child>a{background-color:#e8e8e8;background-image:-moz-linear-gradient(top,#5a5a5a 0,#686868 100%);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#5a5a5a),color-stop(100%,#686868));background-image:-webkit-linear-gradient(to bottom,#5a5a5a 0,#686868 100%);background-image:-o-linear-gradient(to bottom,#5a5a5a 0,#686868 100%);background-image:-ms-linear-gradient(to bottom,#5a5a5a 0,#686868 100%);background-image:linear-gradient(to bottom,#5a5a5a 0,#686868 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5A5A5A', endColorstr='#686868', GradientType=0);-webkit-box-shadow:inset 0 0 3px 1px rgba(0,0,0,.15);box-shadow:inset 0 0 3px 1px rgba(0,0,0,.15);color:#fff;border-color:#494949}.full-screen #fullscreen>:first-child>a:active,.hidden-menu #hide-menu>:first-child>a:active{-webkit-box-shadow:inset 0 0 6px 1px rgba(0,0,0,.2);box-shadow:inset 0 0 6px 1px rgba(0,0,0,.2)}.ajax-dropdown>:first-child{margin:0 0 3px;padding:0 0 9px}.ajax-dropdown{position:absolute;display:none;z-index:905;top:48px;left:16px;width:344px;height:435px;border-radius:0;-webkit-border-radius:0;-moz-border-radius:0;-webkit-box-shadow:0 2px 4px rgba(30,30,100,.25);-moz-box-shadow:0 2px 4px rgba(30,30,100,.25);box-shadow:0 2px 4px rgba(30,30,100,.25);padding:10px;background:#fff;border:1px solid #b3b3b3}.ajax-dropdown:after,.ajax-dropdown:before{bottom:100%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.ajax-dropdown:after{border-color:rgba(255,255,255,0);border-bottom-color:#fff;border-width:7px;left:50%;margin-left:-7px}.ajax-dropdown:before{border-color:rgba(131,131,131,0);border-bottom-color:#838383;border-width:8px;left:50%;margin-left:-8px}.ajax-dropdown .btn-group .btn{font-weight:700;text-transform:capitalize}.ajax-dropdown .btn-group>:nth-child(2){border-right-width:0;border-left-width:0}.ajax-dropdown .btn-group>:last-child{border-right-width:1px!important}.ajax-dropdown .btn-group .btn:active{top:0;left:0}.ajax-notifications{height:365px;display:block;overflow:auto;margin-right:-10px;margin-left:-10px;border-bottom:1px solid #CECECE;border-top:1px solid #CECECE;background:#E9E9E9}.ajax-notifications>.alert.alert-transparent{background-color:transparent;border-color:transparent;color:#757575;margin:13px 10px}.ajax-notifications>.alert>:first-child{margin-bottom:10px;font-weight:400}.ajax-dropdown>:last-child{font-size:13px;display:block;padding:5px 0;line-height:22px;font-weight:400}.ajax-dropdown .fa-4x.fa-border{border-width:3px;border-radius:50%;-webkit-border-radius:50%;-moz-border-radius:50%;display:block;margin:0 auto;width:46px;text-align:center;color:#D1D1D1;border-color:#D1D1D1}.dropdown-large{position:static!important}.dropdown-menu-large{margin-left:16px;margin-right:16px;padding:20px 0}.dropdown-menu-large>li>ul{padding:0;margin:0}.dropdown-menu-large>li>ul>li{list-style:none}.dropdown-menu-large>li>ul>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429;color:#333;white-space:normal}.dropdown-menu-large>li ul>li>a:focus,.dropdown-menu-large>li ul>li>a:hover{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu-large .disabled>a,.dropdown-menu-large .disabled>a:focus,.dropdown-menu-large .disabled>a:hover{color:#999}.dropdown-menu-large .disabled>a:focus,.dropdown-menu-large .disabled>a:hover{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.dropdown-menu-large .dropdown-header{color:#428bca;font-size:18px}@media (max-width:768px){.dropdown-menu-large{margin-left:0;margin-right:0}.dropdown-menu-large>li{margin-bottom:30px}.dropdown-menu-large>li:last-child{margin-bottom:0}.dropdown-menu-large .dropdown-header{padding:3px 15px!important}}.pagination-xs>li>a,.pagination-xs>li>span{padding:4px 9px;font-size:12px}.notification-body *,.notification-body:after *,.notification-body:before *{box-sizing:border-box!important;-webkit-box-sizing:border-box!important;-moz-box-sizing:border-box!important}.notification-body{padding:0 0 0 3px;margin:0;list-style:none}.notification-body>li{border-bottom:1px solid #E9E9E9;position:relative}.notification-body>li>span{background:#fff;display:block;min-height:25px;overflow:hidden;padding:8px 10px 13px;white-space:normal}.notification-body>li>span:hover{background:#F0F4F7;color:#667F8F}.notification-body>li a.msg{padding-left:50px!important}.notification-body>li a,.notification-body>li a span{display:block;position:relative;overflow:hidden}.notification-body>li a,.notification-body>li a:hover{text-decoration:none}.notification-body>li:hover .progress{background:#fff;box-shadow:0 1px 0 rgba(0,0,0,0),0 0 0 1px #a7a7a7 inset;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0),0 0 0 1px #ccc inset;-moz-box-shadow:0 1px 0 transparent,0 0 0 1px #fff inset}.notification-body>li:hover .text-muted{color:#333}.notification-body .from{font-size:14px;line-height:normal;color:#333;font-weight:400;margin-right:60px;margin-bottom:6px;height:20px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.notification-body .unread .from{font-weight:700}.notification-body .unread{background:#FFFFE0}.notification-body time{position:absolute;top:3px;right:0;font-size:11px;font-weight:400;color:#058dc7}.notification-body .msg-body,.notification-body .subject{font-size:13px;color:#A0A0A0;max-height:35px;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.notification-body .subject{font-size:13px;color:#333;max-height:22px}.bootstrapWizard{display:block;list-style:none;padding:0;position:relative;width:100%}.bootstrapWizard a:active,.bootstrapWizard a:focus,.bootstrapWizard a:hover{text-decoration:none}.bootstrapWizard li{display:block;float:left;width:25%;text-align:center;padding-left:0}.bootstrapWizard li:before{border-top:3px solid #55606E;content:"";display:block;font-size:0;overflow:hidden;position:relative;top:11px;right:1px;width:100%;z-index:1}.bootstrapWizard li:first-child:before{left:50%;max-width:50%}.bootstrapWizard li:last-child:before{max-width:50%;width:50%}.bootstrapWizard li.complete .step{background:#0aa66e;padding:1px 6px;border:3px solid #55606E}.bootstrapWizard li .step i{font-size:10px;font-weight:400;position:relative;top:-1.5px}.bootstrapWizard li .step{background:#B2B5B9;color:#fff;display:inline;font-size:15px;font-weight:700;padding:7px 13px;border:3px solid transparent;border-radius:50%;line-height:normal;position:relative;text-align:center;z-index:2;transition:all .1s linear 0s}.bootstrapWizard li.active .step,.bootstrapWizard li.active.complete .step{background:#0091d9;color:#fff;font-weight:700;padding:7px 13px;font-size:15px;border-radius:50%;border:3px solid #55606E}.bootstrapWizard li.active .title,.bootstrapWizard li.complete .title{color:#2B3D53}.bootstrapWizard li .title{color:#bfbfbf;display:block;font-size:13px;line-height:15px;max-width:100%;position:relative;table-layout:fixed;text-align:center;top:20px;word-wrap:break-word;z-index:104}.wizard-actions{display:block;list-style:none;padding:0;position:relative;width:100%}.wizard-actions li{display:inline}.tab-content.transparent{background-color:transparent}.fuelux .wizard{position:relative;overflow:hidden;background-color:#f9f9f9;border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*zoom:1;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,.065);box-shadow:0 1px 4px rgba(0,0,0,.065)}.fuelux .wizard:after,.fuelux .wizard:before{display:table;line-height:0;content:""}.fuelux .wizard:after{clear:both}.fuelux .wizard ul{width:4000px;padding:0;margin:0;list-style:none outside none}.fuelux .wizard ul.previous-disabled li.complete{cursor:default}.fuelux .wizard ul.previous-disabled li.complete:hover{color:#356e35;cursor:default;background:#f3f4f5}.fuelux .wizard ul.previous-disabled li.complete:hover .chevron:before{border-left-color:#f3f4f5}.fuelux .wizard ul li{position:relative;float:left;height:46px;padding:0 20px 0 30px;margin:0;font-size:16px;line-height:46px;color:#999;cursor:default;background:#ededed}.fuelux .wizard ul li .chevron{position:absolute;top:0;right:-14px;z-index:1;display:block;border:24px solid transparent;border-right:0;border-left:14px solid #d4d4d4}.fuelux .wizard ul li .chevron:before{position:absolute;top:-24px;right:1px;display:block;border:24px solid transparent;border-right:0;border-left:14px solid #ededed;content:""}.fuelux .wizard ul li.complete{color:#468847;background:#f3f4f5}.fuelux .wizard ul li.complete:hover{cursor:pointer;background:#e7eff8}.fuelux .wizard ul li.complete:hover .chevron:before{border-left:14px solid #e7eff8}.fuelux .wizard ul li.complete .chevron:before{border-left:14px solid #f3f4f5}.fuelux .wizard ul li.active{color:#3a87ad;background:#f1f6fc}.fuelux .wizard ul li.active .chevron:before{border-left:14px solid #f1f6fc}.fuelux .wizard ul li .badge{margin-right:8px}.fuelux .wizard ul li:first-child{padding-left:20px;border-radius:4px 0 0 4px}.fuelux .wizard .actions{position:absolute;right:0;z-index:2;float:right;padding-right:15px;padding-left:15px;line-height:46px;vertical-align:middle;background-color:#eee;border-left:1px solid #d4d4d4}.fuelux .wizard .actions a{margin-right:8px;font-size:12px;line-height:45px}.fuelux .wizard .actions .btn-prev i{margin-right:5px}.fuelux .wizard .actions .btn-next i{margin-left:5px}.fuelux .step-content .step-pane{display:none}.fuelux .step-content .active{display:block}.fuelux .step-content .active .btn-group .active{display:inline-block}.jarvismetro-tile{float:left;display:block;background-color:#fff;width:100px;height:70px;cursor:pointer;box-shadow:inset 0 0 1px #FFC;border:1px dotted #C5C5C5;text-decoration:none;color:#fff;font-weight:300;font-smooth:always;margin:0 10px 20px 0;padding:5px;position:relative}.jarvismetro-tile:hover{z-index:10;-webkit-transform:scale(1.07);-moz-transform:scale(1.07)}.jarvismetro-tile.big-cubes{width:120px;height:120px}.jarvismetro-tile.double{width:249px}.jarvismetro-tile:active{top:1px;left:1px}.jarvismetro-tile .iconbox{text-align:center}.jarvismetro-tile .iconbox i{display:block;margin:15px auto 0;height:75px}.jarvismetro-tile .iconbox span{display:block;text-align:left}.jarvismetro-tile .iconbox span>span{position:absolute;right:-3px;bottom:-3px;border-radius:50%;padding:5px;border:1px solid #fff}.selected{border:1px solid #0091d9!important;position:relative}.selected:before{display:block;position:absolute;content:"\f00c";color:#fff;right:4px;top:3px;font-family:FontAwesome;z-index:2}.selected:after{width:0;height:0;border-top:35px solid #0091d9;border-left:35px solid rgba(0,0,0,0);position:absolute;display:block;right:0;content:"";top:0;z-index:1}#shortcut{position:absolute;top:0;left:0;height:auto;width:100%;background-color:#33302F;background-color:rgba(0,0,0,.85);z-index:907;display:none;color:#fff;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#shortcut ul{padding:15px 20px 10px;list-style:none;margin:0;box-shadow:0 4px 10px rgba(0,0,0,.3);-moz-box-shadow:0 4px 10px rgba(0,0,0,.3);border-bottom:1px solid #423F3F}#shortcut ul li{display:inline-block;width:auto}#shortcut ul li .jarvismetro-tile{margin:0 3px 3px;border:none;border-radius:0;-moz-border-radius:0;-webkit-border-radius:0}#shortcut ul li .jarvismetro-tile:hover{color:#fff;text-decoration:none}#shortcut ul li .jarvismetro-tile:active,#shortcut ul li .jarvismetro-tile:focus{left:0;top:0}.shortcut-on #response-btn{display:none!important}.shortcut-on #left-bar .navbar,.shortcut-on #main .navbar{border:none!important}.arrow-box-up:after,.arrow-box-up:before{bottom:100%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.arrow-box-up:after{border-color:rgba(255,255,255,0);border-bottom-color:#fff;border-width:7px;left:50%;margin-left:-7px}.arrow-box-up:before{border-color:rgba(131,131,131,0);border-bottom-color:#838383;border-width:8px;left:50%;margin-left:-8px}.arrow-box-up-right:after,.arrow-box-up-right:before{bottom:100%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.arrow-box-up-right:after{border-color:rgba(255,255,255,0);border-bottom-color:#fff;border-width:7px;right:10px;margin-left:-7px}.arrow-box-up-right:before{border-color:rgba(131,131,131,0);border-bottom-color:#838383;border-width:8px;right:9px;margin-left:-8px}.tooltip-inner{padding:5px 10px;font-size:11px;font-family:Arial,Helvetica,sans-serif;font-weight:700;border-radius:0}.jqstooltip{padding:7px!important;border-radius:3px!important;-webkit-border-radius:3px!important;-moz-border-radius:3px!important;border:none!important;background-color:#000!important;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box}.jqstooltip .jqsfield{font-family:"Segoe UI","Open Sans",Calibri,Candara,Arial,sans-serif;font-size:11px}#sparks{display:block;list-style:none;margin:10px 0 0;padding:0;text-align:right}#sparks li{display:inline-block;max-height:47px;overflow:hidden;text-align:left;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box}#sparks li h5{color:#555;float:left;font-size:11px;font-weight:400;margin:-3px 0 0 0;padding:0;border:none;text-transform:uppercase}#sparks li span{color:#636363;display:block}#sparks li{border-left:1px dotted #c7c7c7;padding:0 10px}#sparks li:last-child{padding-right:0}#sparks li:first-child{border-left:none;padding-left:0}.sparks-info{min-width:70px}.sparks-info span{font-size:18px;line-height:20px;margin:0;text-transform:none}.sparks-info .sparkline{display:block;float:right;margin:3px 0 0 20px}.custom-scroll::-webkit-scrollbar{-webkit-overflow-scrolling:touch;height:10px;width:10px}.custom-scroll::-webkit-scrollbar:hover{background-color:#E9E9E9;border:1px solid #dbdbdb}.custom-scroll::-webkit-scrollbar-button:end:increment,.custom-scroll::-webkit-scrollbar-button:start:decrement{background:0 0;display:block;height:0}.custom-scroll::-webkit-scrollbar-track{background-clip:padding-box;border:solid transparent}.custom-scroll::-webkit-scrollbar-track-piece{-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;-webkit-border-radius:0;background-color:transparent;border-radius:0}.custom-scroll::-webkit-scrollbar-thumb{-moz-box-shadow:inset 1px 1px 0 rgba(0,0,0,.1),inset 0 -1px 0 rgba(0,0,0,.07);-webkit-box-shadow:inset 1px 1px 0 rgba(0,0,0,.1),inset 0 -1px 0 rgba(0,0,0,.07);background-clip:padding-box;background-color:rgba(0,0,0,.2);border:none;box-shadow:inset 1px 1px 0 rgba(0,0,0,.1),inset 0 -1px 0 rgba(0,0,0,.07)}.custom-scroll::-webkit-scrollbar-thumb:horizontal,.custom-scroll::-webkit-scrollbar-thumb:vertical{-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;-webkit-border-radius:0;background-color:#bfbfbf;border-radius:0}.custom-scroll::-webkit-scrollbar-thumb:active{-moz-box-shadow:inset 1px 1px 3px rgba(0,0,0,.33);-webkit-box-shadow:inset 1px 1px 3px rgba(0,0,0,.33);background-color:rgba(0,0,0,.44);box-shadow:inset 1px 1px 3px rgba(0,0,0,.33)}.custom-scroll::-webkit-scrollbar-thumb:hover{background-color:#959595}.twitter-typeahead .tt-hint,.twitter-typeahead .tt-query{margin-bottom:0}.tt-dropdown-menu{min-width:160px;margin-top:2px;padding:5px 0;background-color:#fff;border:1px solid #bfbfbf;border:1px solid rgba(0,0,0,.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.tt-suggestion{display:block;padding:3px 20px}.tt-suggestion.tt-is-under-cursor{color:#fff;background-color:#0081c2}.tt-suggestion.tt-is-under-cursor a{color:#fff}.tt-suggestion p{margin:0}.google_maps{width:100%;height:350px;position:relative}.google_maps *{box-sizing:content-box;-webkit-box-sizing:content-box;-moz-box-sizing:content-box}.google_maps img{max-width:none}.header-btn{margin-top:5px}.tree{min-height:20px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.tree li{list-style-type:none;margin:0;padding:5px;position:relative}.tree ul ul li:hover{background:rgba(0,0,0,.015)}.tree li:after,.tree li:before{content:'';left:-20px;position:absolute;right:auto}.tree li:before{border-left:1px solid #999;bottom:50px;height:100%;top:-11px;width:1px;-webkit-transition:"border-color 0.1s ease 0.1s";-moz-transition:"border-color 0.1s ease 0.1s";-o-transition:"border-color 0.1s ease 0.1s";transition:"border-color 0.1s ease 0.1s"}.tree li:after{border-top:1px solid #999;height:20px;top:18px;width:25px}.tree li span{-moz-border-radius:5px;-webkit-border-radius:5px;border:1px dotted #999;border-radius:5px;display:inline-block;padding:3px 8px;text-decoration:none;-webkit-transition:color .2s ease .1s,background-color .2s ease .1s,border-color .3s ease .2s;-moz-transition:color .2s ease .1s,background-color .2s ease .1s,border-color .3s ease .2s;-o-transition:color .2s ease .1s,background-color .2s ease .1s,border-color .3s ease .2s;transition:color .2s ease .1s,background-color .2s ease .1s,border-color .3s ease .2s}.tree li.parent_li>span{cursor:pointer;padding:7px}.tree>ul>li::after,.tree>ul>li:before{border:0}.tree li:last-child::before{height:30px}.tree li.parent_li>span:hover,.tree li.parent_li>span:hover+ul li span{background:#eee;border:1px solid #94a0b4;color:#000}.tree>ul{padding-left:0}.tree ul ul{padding-left:34px;padding-top:10px}.tree li.parent_li>span:hover{background-color:#DF8505;border:1px solid #C67605;color:#fff}.tree li.parent_li>span:hover+ul li::before{border-left-color:#F89406}.tree li.parent_li>span:hover+ul li::after{border-top-color:#F89406}.tree li.parent_li>span:hover+ul li span{background:#FDDFB3!important;border:1px solid #FAA937;color:#000}.jvectormap-label{position:absolute;display:none;border:solid 1px #CDCDCD;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;background:#292929;color:#fff;font-family:sans-serif,Verdana;font-size:smaller;padding:3px}.jvectormap-zoomin,.jvectormap-zoomout{position:absolute;background:#292929;padding:4px;width:22px;height:22px;cursor:pointer;line-height:10px;text-align:center;font-size:14px;border-radius:2px;-webkit-border-radius:2px;-moz-border-radius:2px;box-shadow:inset 0 -2px 0 rgba(0,0,0,.05);-moz-box-shadow:inset 0 -2px 0 rgba(0,0,0,.05);-webkit-box-shadow:inset 0 -2px 0 rgba(0,0,0,.05);background-color:#fff;border:1px solid #bfbfbf}.jvectormap-zoomin:hover,.jvectormap-zoomout:hover{background:#eee;border-color:#d9d9d9}.jvectormap-zoomin{top:0}.jvectormap-zoomout{top:24px}.vector-map{height:300px;width:100%;padding:10px}#heat-fill{display:block;position:relative;margin-bottom:20px;background:#333;height:7px;width:200px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAAABCAIAAAAU3Xa1AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowMDE4MkZGMzMzOTgxMUUzODZBQUNFQUNFOTk0NEUxRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowMDE4MkZGNDMzOTgxMUUzODZBQUNFQUNFOTk0NEUxRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAwMTgyRkYxMzM5ODExRTM4NkFBQ0VBQ0U5OTQ0RTFGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAwMTgyRkYyMzM5ODExRTM4NkFBQ0VBQ0U5OTQ0RTFGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+rG8MDAAAAM5JREFUeNpUUtESwyAIg8ft9v8/W4ElBPWKV1AIiKEeEWVuVlWjINSVONBnirQDxukNgcuyTQsBzLHMDsLIQQw+nIL71JqNJ5GZJXApFNpmtlagQjfS2xGbkFA4Iwu+hu0sK3Wl3nOwNv7TvPrWk3X0eW9dK1pU9hK2eTuWb2ySJmlziutA3iBxmblPNvA5PNsuUpoDY80+Z0SW1IRpDEqwC58C14tsr1f8le8si0aojdADr/1UjaclsFashX8GGkL9wDxtRsV6ft/PX4ABADRzhOVIOJaAAAAAAElFTkSuQmCC)}.fill-a,.fill-b{width:20px;text-align:right;overflow:hidden;text-overflow:ellipsis;display:block;background:#fff;padding-right:4px;position:absolute;left:0;margin-top:-7px;font-weight:700}.fill-b{text-align:left;position:absolute;right:0;left:auto;top:0;width:60px;padding-left:4px;padding-right:0}.cke_top{background:rgba(248,248,248,.9)!important;background-image:none!important}.multiselect-container{position:absolute;list-style-type:none;margin:0;padding:0}.multiselect-container .input-group{margin:5px}.multiselect-container>li{padding:0}.multiselect-container>li>a.multiselect-all label{font-weight:700}.multiselect-container>li>label.multiselect-group{margin:0;padding:3px 20px;height:100%;font-weight:700}.multiselect-container>li>a>label{margin:0;height:100%;cursor:pointer;font-weight:400}.multiselect-container>li>a>label.checkbox,.multiselect-container>li>a>label.radio{margin:0}.multiselect-container>li>a>label>input[type=checkbox]{margin-bottom:5px}.btn-group>.btn-group:nth-child(2)>.multiselect.btn{border-top-left-radius:4px;border-bottom-left-radius:4px}.input-group .icon-addon .form-control{border-radius:0}.icon-addon{position:relative;color:#555;display:block}.icon-addon:after,.icon-addon:before{display:table;content:" "}.icon-addon:after{clear:both}.icon-addon .fa,.icon-addon .glyphicon,.icon-addon.addon-md .fa,.icon-addon.addon-md .glyphicon{position:absolute;z-index:2;left:10px;width:20px;margin-left:-2.5px;text-align:center;padding:10px 0;top:1px}.icon-addon.addon-lg .form-control{line-height:1.33;height:46px;font-size:18px;padding:10px 16px 10px 40px}.input-group-lg .icon-addon.addon-lg+.input-group-btn>.btn{height:46px}.icon-addon.addon-sm .form-control{height:30px;padding:5px 10px 5px 28px;font-size:12px;line-height:1.5}.icon-addon.addon-lg .fa,.icon-addon.addon-lg .glyphicon{font-size:18px;margin-left:0;left:11px;top:4px}.icon-addon .form-control,.icon-addon.addon-md .form-control{padding-left:30px;float:left;font-weight:400}.icon-addon.addon-sm .fa,.icon-addon.addon-sm .glyphicon{margin-left:0;font-size:12px;left:5px;top:-1px}.icon-addon .form-control:focus+.fa,.icon-addon .form-control:focus+.glyphicon,.icon-addon:hover .fa,.icon-addon:hover .glyphicon{color:#2580db}.icon-addon input:disabled+.fa,.icon-addon input:disabled+.glyphicon,.icon-addon select:disabled+.fa,.icon-addon select:disabled+.glyphicon{color:#ccc}html.hidden-menu-mobile-lock{overflow-x:hidden}.no-content-padding{margin:-10px -14px 0 -14px}.no-padding{padding:0!important}.no-padding>pre{margin:30px}.no-padding .dataTables_wrapper table,.no-padding>table{border:none!important;margin-bottom:0!important;border-bottom-width:0!important}.no-padding-bottom{padding-bottom:0!important}.padding-5{padding:5px!important}.padding-7{padding:7px!important}.padding-10{padding:10px!important}.padding-gutter{padding:13px!important}.padding-top-10{padding-top:10px!important}.padding-top-15{padding-top:15px!important}.padding-bottom-10{padding-bottom:10px!important}.padding-bottom-0{padding-bottom:0!important}.padding-top-0{padding-top:0!important}.no-padding .dataTables_wrapper table tr td:last-child,.no-padding .dataTables_wrapper table tr th:last-child,.no-padding>table tr td:last-child,.no-padding>table tr th:last-child{border-right:none!important}.no-padding .dataTables_wrapper table tr td:first-child,.no-padding .dataTables_wrapper table tr th:first-child,.no-padding>table tr td:first-child,.no-padding>table tr th:first-child{border-left:none!important}.no-padding .dataTables_wrapper table tbody tr:last-child td{border-bottom:0}.semi-bold{font-weight:400!important}.ultra-light{font-weight:300!important}.font-xs{font-size:85%!important}.font-sm{font-size:95%!important}.font-md{font-size:130%!important}.font-lg{font-size:160%!important}.font-xl{font-size:200%!important}.font-400{font-size:400%!important}.no-margin{margin:0!important}.margin-top-5{margin-top:5px!important}.margin-top-10{margin-top:10px!important}.margin-bottom-5{margin-bottom:5px!important}.margin-bottom-10{margin-bottom:10px!important}.margin-right-5{margin-right:5px!important}.margin-top-0{margin-top:0!important}.margin-bottom-0{margin-bottom:0!important}.no-border,.well[class*=" bg-"].no-border{border-width:0!important}.no-border-transparent{border-color:transparent!important}.no-border-radius{border-radius:0;-moz-border-radius:0;-webkit-border-radius:0}.display-inline{display:inline-block!important}.display-normal{display:inline!important}.cursor-pointer{cursor:pointer}.hover-transparent{opacity:.5}.hover-transparent:hover{opacity:1}.text-align-center,.text-center{text-align:center!important}.text-align-left,.text-left{text-align:left!important}.text-align-right,.text-right{text-align:right!important}hr.simple{margin-top:10px;margin-bottom:10px;border-style:dashed}.pull-right{float:right!Important}.pull-left{float:left!Important}.air{position:absolute;z-index:5}.air-bottom{bottom:0}.air-top{top:0}.air-top-right{top:0;right:0}.air-top-left{top:0;left:0}.air-bottom-left{bottom:0;left:0}.air-bottom-right{bottom:0;right:0}.display-none{display:none!important}.checkbox input[type=checkbox].checkbox+span,.checkbox-inline input[type=checkbox].checkbox+span,.radio input[type=radio].radiobox+span,.radiobox-inline input[type=radio].radiobox+span{margin-left:-20px}.form-inline .checkbox input[type=checkbox].checkbox+span,.form-inline .radiobox input[type=radio].radiobox+span{margin-left:0}.form-inline .checkbox,.form-inline .radiobox{padding-left:0}input[type=checkbox].checkbox+span,label input[type=radio].radiobox+span{vertical-align:middle;line-height:20px}input[type=checkbox].checkbox+span,input[type=checkbox].checkbox+span:after,input[type=checkbox].checkbox+span:before,input[type=radio].radiobox+span,input[type=radio].radiobox+span:after,input[type=radio].radiobox+span:before{box-sizing:content-box!important;-webkit-box-sizing:content-box!important;-moz-box-sizing:content-box!important}input[type=checkbox].checkbox,input[type=radio].radiobox{visibility:hidden;position:absolute;z-index:20;width:18px;height:18px}label input[type=checkbox].checkbox+span,label input[type=radio].radiobox+span{position:relative;z-index:19;display:inline-block;margin:0;line-height:17px;min-height:14px;min-width:14px;margin-right:5px}label input[type=checkbox].checkbox+span:hover,label input[type=radio].radiobox+span:hover{cursor:pointer}label input[type=checkbox].checkbox+span:before,label input[type=radio].radiobox+span:before{font-family:FontAwesome;font-size:12px;border-radius:0;content:"\a0";display:inline-block;text-align:center;vertical-align:middle;padding:1px;height:12px;line-height:12px;min-width:12px;margin-right:5px;border:1px solid #bfbfbf;background-color:#f4f4f4;font-weight:400;margin-top:-1px}label input[type=radio].radiobox+span:before{content:"\a0";border-radius:50%;-moz-border-radius:50%;-webkit-border-radius:50%;box-shadow:inset 0 2px 3px 0 rgba(0,0,0,.1),0 1px 0 0 rgba(255,255,255,.2)}label input[type=radio].radiobox:checked+span{font-weight:700}label input[type=radio].radiobox:checked+span:before{content:"\f111";color:#2E7BCC}label input[type=radio].radiobox.style-3:checked+span:before{color:#a90329;border-color:#a90329}label input[type=radio].radiobox.style-2:checked+span:before{color:#66665e;border-color:#4d90fe;font-size:9px}label input[type=radio].radiobox.style-2:checked+span{font-weight:400}label input[type=radio].radiobox.style-1+span:before{font-size:9px;background:#fff;text-shadow:none;box-shadow:none!important;border-width:1px;height:13px;line-height:13px;min-width:13px}label input[type=radio].radiobox.style-1:checked+span:before{font-size:10px;color:#333;border-color:#333;background:#fff}label input[type=radio].radiobox.style-1:checked+span{font-weight:400}label:hover input[type=radio].radiobox+span:before,label:hover input[type=radio].radiobox:checked+span:before{color:#2E7BCC;border-color:#2E7BCC}label:hover input[type=radio].radiobox.style-3+span:before,label:hover input[type=radio].radiobox.style-3:checked+span:before{color:#a90329;border-color:#a90329}label:hover input[type=radio].radiobox.style-2:checked+span:before{color:#66665e;border-color:#4d90fe}label:hover input[type=radio].radiobox.style-1+span:before,label:hover input[type=radio].radiobox.style-1:checked+span:before{color:#333;border-color:#333;background:#fff}label:active input[type=radio].radiobox+span:before{box-shadow:inset 0 2px 3px 0 rgba(0,0,0,.3),0 1px 0 0 rgba(255,255,255,.4)}label input[type=radio][disabled].radiobox+span,label input[type=radio][disabled].radiobox:checked+span,label:hover input[type=radio][disabled].radiobox:checked+span:before{color:#A7A7A7;cursor:not-allowed}label input[type=radio][disabled].radiobox:checked+span:before{content:"\f111"}label input[type=radio][disabled].radiobox+span:before,label input[type=radio][disabled].radiobox:checked+span:before,label:active input[type=radio][disabled].radiobox:checked+span:before,label:hover input[type=radio][disabled].radiobox:checked+span:before{background:#eee!important;border-color:#CCC!important;box-shadow:none;color:#A7A7A7}label input[type=checkbox].checkbox+span:before{content:"\a0"}label input[type=checkbox].checkbox:checked+span:before{content:"\f00c"}label input[type=checkbox].checkbox:checked+span{font-weight:700}label input[type=checkbox].checkbox:checked+span:before{color:#2E7BCC}label input[type=checkbox].checkbox.style-3:checked+span:before{color:#fff;border-color:#a90329;background:#a90329}label input[type=checkbox].checkbox.style-2+span:before{background:0 0;border-color:#c1c1c1;box-shadow:none}label input[type=checkbox].checkbox.style-2:checked+span:before{content:"\f00c";color:#66665e;border-color:#4d90fe;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MUQ0MEM4RUFEQUE4MTFFMkEwMjM5NzlCRjAxM0UwRjciIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MUQ0MEM4RUJEQUE4MTFFMkEwMjM5NzlCRjAxM0UwRjciPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoxRDQwQzhFOERBQTgxMUUyQTAyMzk3OUJGMDEzRTBGNyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoxRDQwQzhFOURBQTgxMUUyQTAyMzk3OUJGMDEzRTBGNyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsD/PVAAAAAQSURBVHjaYv7//78vQIABAAlYA05NMPppAAAAAElFTkSuQmCC) #fff}label input[type=checkbox].checkbox.style-2:checked+span{font-weight:400}label input[type=checkbox].checkbox.style-1+span:before{color:#333;background:#fff;text-shadow:none;box-shadow:none!important;border-width:1px;height:12px;line-height:13px;min-width:12px}label input[type=checkbox].checkbox.style-1:checked+span:before{color:#333;border-color:#333}label input[type=checkbox].checkbox.style-1:checked+span{font-weight:400}label:active input[type=checkbox].checkbox+span:before{box-shadow:inset 0 2px 3px 0 rgba(0,0,0,.3),0 1px 0 0 rgba(255,255,255,.4)}label:hover input[type=checkbox].checkbox+span:before{color:#2E7BCC;border-color:#2E7BCC}label:hover input[type=checkbox].checkbox.style-3+span:before{color:#fff;border-color:#A90327}label:hover input[type=checkbox].checkbox.style-2+span:before{box-shadow:inset 0 2px 3px 0 rgba(0,0,0,.1),0 1px 0 0 rgba(255,255,255,.2)}label:hover input[type=checkbox].checkbox.style-2:checked+span:before{box-shadow:inset 0 2px 3px 0 rgba(0,0,0,.3),0 1px 0 0 rgba(255,255,255,.4)}label:hover input[type=checkbox].checkbox.style-1+span:before{border-color:#333}label:active input[type=checkbox].checkbox:checked+span:before{color:#fff;background:#2E7BCC;border-color:#2E7BCC}label:active input[type=checkbox].checkbox.style-3:checked+span:before{color:#a90329;background:#fff;border-color:#a90329}label:active input[type=checkbox].checkbox.style-2+span:before,label:active input[type=checkbox].checkbox.style-2:checked+span:before{color:#66665e;background:0 0;border-color:#c1c1c1;box-shadow:inset 0 2px 3px 0 rgba(0,0,0,.3),0 1px 0 0 rgba(255,255,255,.4)}label:active input[type=checkbox].checkbox.style-1:checked+span:before{color:#fff;background:#333;border-color:#333}label input[type=checkbox][disabled].checkbox+span,label input[type=checkbox][disabled].checkbox:checked+span,label:hover input[type=checkbox][disabled].checkbox:checked+span:before{color:#A7A7A7;cursor:not-allowed}label input[type=checkbox][disabled].checkbox.style-2:checked+span:before,label input[type=checkbox][disabled].checkbox:checked+span:before{content:"\f00c"}label input[type=checkbox][disabled].checkbox+span:before,label input[type=checkbox][disabled].checkbox:checked+span:before,label:active input[type=checkbox][disabled].checkbox:checked+span:before,label:hover input[type=checkbox][disabled].checkbox:checked+span:before{background:#eee!important;border-color:#CCC!important;color:#A7A7A7;box-shadow:none!important}.open>.dropdown-menu{-webkit-animation-name:flipInX;-moz-animation-name:flipInX;-o-animation-name:flipInX;animation-name:flipInX;-webkit-animation-duration:.4s;-moz-animation-duration:.4s;-o-animation-duration:.4s;animation-duration:.4s;-webkit-animation-fill-mode:both;-moz-animation-fill-mode:both;-o-animation-fill-mode:both;animation-fill-mode:both}.active+.ajax-dropdown{-webkit-animation-name:flipInY;-moz-animation-name:flipInY;-o-animation-name:flipInY;animation-name:flipInY;-webkit-animation-duration:.7s;-moz-animation-duration:.7s;-o-animation-duration:.7s;animation-duration:.7s;-webkit-animation-fill-mode:both;-moz-animation-fill-mode:both;-o-animation-fill-mode:both;animation-fill-mode:both}.square{display:block;float:left;margin-right:10px;height:20px;width:20px}[class*=" bg-"],[class^=bg-]{filter:none!important}.txt-color-blue{color:#57889c!important}.txt-color-blueLight{color:#92a2a8!important}.txt-color-blueDark{color:#4c4f53!important}.txt-color-green{color:#356e35!important}.txt-color-greenLight{color:#71843f!important}.txt-color-greenDark{color:#496949!important}.txt-color-red{color:#a90329!important}.txt-color-yellow{color:#b09b5b!important}.txt-color-orange{color:#b19a6b!important}.txt-color-orangeDark{color:#a57225!important}.txt-color-pink{color:#ac5287!important}.txt-color-pinkDark{color:#a8829f!important}.txt-color-purple{color:#6e587a!important}.txt-color-darken{color:#404040!important}.txt-color-lighten{color:#d5e7ec!important}.txt-color-white{color:#fff!important}.txt-color-grayDark{color:#525252!important}.txt-color-magenta{color:#6e3671!important}.txt-color-teal{color:#568a89!important}.txt-color-redLight{color:#a65858!important}.bg-color-blue{background-color:#57889c!important}.bg-color-blueLight{background-color:#92a2a8!important}.bg-color-blueDark{background-color:#4c4f53!important}.bg-color-green{background-color:#356e35!important}.bg-color-greenLight{background-color:#71843f!important}.bg-color-greenDark{background-color:#496949!important}.bg-color-red{background-color:#a90329!important}.bg-color-yellow{background-color:#b09b5b!important}.bg-color-orange{background-color:#c79121!important}.bg-color-orangeDark{background-color:#a57225!important}.bg-color-pink{background-color:#ac5287!important}.bg-color-pinkDark{background-color:#a8829f!important}.bg-color-purple{background-color:#6e587a!important}.bg-color-darken{background-color:#404040!important}.bg-color-lighten{background-color:#d5e7ec!important}.bg-color-white{background-color:#fff!important}.bg-color-grayDark{background-color:#525252!important}.bg-color-magenta{background-color:#6e3671!important}.bg-color-teal{background-color:#568a89!important}.bg-color-redLight{background-color:#a65858!important}.page-footer{height:52px;padding:15px 13px 0;padding-left:233px;border-top:1px solid #CECECE;background:#2a2725;width:100%;position:absolute;display:block;bottom:0}.fixed-page-footer .page-footer{position:fixed;z-index:901}.minified .page-footer{padding-left:58px}.container.fixed-page-footer .page-footer{max-width:1164px}.hidden-menu .page-footer{padding-left:20px}@media (max-width:979px){html.hidden-menu-mobile-lock{overflow-x:hidden}#main{width:100%!important}.page-footer{padding:15px 14px 0}.profile-pic>img{width:110px}.profile-pic{float:left}.profile-pic>img{margin-right:10px}.profile-pic+div,.profile-pic+div+div{padding-left:30px;padding-right:30px}#fullscreen>:first-child>a{display:none!important}body.container{border:none!important;width:100%!important}.inbox-data-message>:first-child{height:50px;overflow:hidden}.show-stats .show-stat-buttons>:first-child{padding-right:13px}.show-stats .show-stat-buttons>:last-child{padding-left:13px}.inbox-checkbox-triggered>.btn-group .btn{padding-left:10px;padding-right:10px}.inbox-body .table-wrap{padding:0!important;padding-left:5px!important;padding-right:5px!important}.inbox-nav-bar{padding-left:5px;padding-right:5px}.inbox-data-message>:first-child>:first-child{display:block!important;font-size:14px}.inbox-table-icon>:first-child{margin-top:12px}#inbox-table .inbox-table-icon{padding-left:10px!important}.header-search.pull-right{margin-left:0}.visible-tablet{display:inline-block!important}.display-inline.hidden-tablet,.hidden-tablet{display:none!important}.jarviswidget header h2{width:310px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dropzone .dz-default.dz-message{background-size:100%;width:200px;height:43px;margin-left:-112px;margin-top:-23.5px}}@media (min-width:768px) and (max-width:979px){#main{margin-left:0}#left-panel{left:-220px}.minified #left-panel{left:0}#hide-menu>:first-child>a{margin-top:9px;width:40px}.btn-header a{margin-top:9px!important;width:40px!important}#hide-menu i{color:#6D6A69;font-size:100%}.hidden-menu #hide-menu i{color:#fff}#hide-menu i::before{content:"\f0c9"}.hidden-menu #left-panel{left:0}.hidden-menu #main{position:relative;left:210px}.hidden-menu.fixed-ribbon #ribbon{left:220px;width:100%}.fixed-ribbon #ribbon{left:0}.jarviswidget header h2{width:200px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.header-search>input[type=text]{margin-top:9px}}@media (min-width:768px) and (max-width:880px){#main{margin-left:0;overflow-x:hidden}#left-panel{left:-220px}.no-content-padding{margin:0 -14px!important}.inbox-nav-bar.no-content-padding{margin-top:-10px!important}.minified #left-panel{left:0}#hide-menu>:first-child>a,.btn-header a{margin-top:5px!important;width:40px!important;height:39px!important;line-height:38px!important}#logo{margin-top:10px}#logo img{width:127px}.btn-header.transparent a{border:none!important;background:0 0;margin-left:0;width:25px!important;box-shadow:none!important}.btn-header.transparent a:hover{color:#a90329}#hide-menu i{color:#6D6A69;font-size:121%}.hidden-menu #hide-menu i{color:#fff}#hide-menu i::before{content:"\f0c9"}.hidden-menu #left-panel{left:0}.hidden-menu #main{position:relative;left:210px}.hidden-menu.fixed-ribbon #ribbon{left:220px;width:100%}.fixed-ribbon #ribbon{left:0}.jarviswidget header h2{width:180px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.header-search>input[type=text]{margin-top:9px}}@media (max-width:767px){.profile-pic>img{width:100px}#main{margin-left:0;overflow-x:hidden}#left-panel{left:-220px}.show-stat-microcharts>div{margin-top:0!important;border-right:none!important}.show-stat-buttons{padding-left:10px!important;padding-right:10px!important}#content,#ribbon{padding-left:5px;padding-right:5px}#header{padding-right:5px}#logo{margin-left:4px}.no-content-padding{margin:0 -5px!important}.inbox-nav-bar.no-content-padding{margin-top:-10px!important}.minified #left-panel{left:0}.btn-header.transparent a{border:none!important;background:0 0;margin-left:0;width:25px!important;box-shadow:none!important}.btn-header.transparent a:hover{color:#a90329}#hide-menu>:first-child>a,.btn-header a{margin-top:5px!important;width:40px!important;height:39px!important;line-height:38px!important}#hide-menu>:first-child>a{width:50px!important}#logo{margin-top:10px}#logo img{width:127px}#hide-menu i{color:#6D6A69;font-size:121%}.hidden-menu #hide-menu i{color:#fff}#hide-menu i::before{content:"\f0c9"}.hidden-menu #left-panel{left:0}.hidden-menu #main{position:relative;left:210px}.hidden-menu.fixed-ribbon #ribbon{left:220px;width:100%}.fixed-ribbon #ribbon{left:0}body.fixed-navigation.hidden-menu{overflow:hidden!important}.fixed-ribbon #content{padding-top:52px}.header-search{display:none}#search-mobile{display:block}.search-mobile .header-search{display:block;position:absolute;top:0;width:100%;height:49px;background:#333;padding:0 2px;box-sizing:border-box;left:0}.search-mobile .header-search>input[type=text]{margin-top:2px;height:45px;border-color:#333;padding-right:75px}.search-mobile .header-search>button{height:29px;line-height:29px;background:#DDD;right:44px}.search-mobile #search-mobile{display:none}.search-mobile #cancel-search-js{display:block}.jarviswidget header h2{width:250px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}}@media only screen and (min-width:0) and (max-width:679px){.profile-pic>img{width:90px}#main{margin-left:0;overflow-x:hidden}#left-panel{left:-220px}.show-stat-microcharts>div{margin-top:0!important;border-right:none!important}.show-stat-buttons{padding-left:10px!important;padding-right:10px!important}#content,#ribbon{padding-left:5px;padding-right:5px}#header{padding-right:5px}#logo{margin-left:4px}.no-content-padding{margin:0 -5px!important}.inbox-nav-bar.no-content-padding{margin-top:-10px!important}.minified #left-panel{left:0}#header{background:#fff}#ribbon{border-bottom:1px solid #CFCFCF;border-top:1px solid #E6E6E6;background:#F5F5F5}#ribbon .breadcrumb,#ribbon .breadcrumb a{color:#6D6C6C!important}#ribbon .breadcrumb li:last-child,#ribbon .breadcrumb>.active{color:#333!important}#hide-menu>:first-child>a,.btn-header a{margin-top:5px!important;width:40px!important;height:39px!important;line-height:38px!important}#hide-menu>:first-child>a{width:50px!important}#logo{margin-top:10px}#logo img{width:127px}.btn-header.transparent a{border:none!important;background:0 0;margin-left:0;width:25px!important;box-shadow:none!important}.btn-header.transparent a:hover{color:#a90329}#hide-menu i{color:#6D6A69;font-size:121%}.hidden-menu #hide-menu i{color:#fff}#hide-menu i::before{content:"\f0c9"}.hidden-menu #left-panel{left:0}.hidden-menu #main{position:relative;left:210px}.hidden-menu.fixed-ribbon #ribbon{left:220px;width:100%}.fixed-ribbon #ribbon{left:0}.header-search{display:none}#search-mobile{display:block}.search-mobile .header-search{display:block;position:absolute;top:0;width:100%;height:49px;background:#333;padding:0 2px;box-sizing:border-box;left:0}.search-mobile .header-search>input[type=text]{margin-top:2px;height:45px;border-color:#333;padding-right:75px}.search-mobile .header-search>button{height:29px;line-height:29px;background:#DDD;right:44px}.search-mobile #search-mobile{display:none}.search-mobile #cancel-search-js{display:block}.hidden-tablet{display:none!important}.jarviswidget header h2{width:300px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}}@media only screen and (min-width:320px) and (max-width:479px){.page-title{display:none}.profile-pic{text-align:left}.profile-pic>img{width:90px;margin-left:0;top:-25px;margin-right:0}.profile-pic+div>h1{font-size:20px}.profile-pic+div>h1 small{font-size:16px}.profile-carousel .carousel-indicators{top:10px}#main{margin-left:0;overflow-x:hidden}#left-panel{left:-220px}.show-stat-microcharts>div{margin-top:0!important;border-right:none!important}.show-stat-buttons{padding-left:10px!important;padding-right:10px!important}#content,#ribbon{padding-left:5px;padding-right:5px}#header{padding-right:5px}#logo{margin-left:4px}.no-content-padding{margin:0 -5px!important}.inbox-nav-bar.no-content-padding{margin-top:-10px!important}.minified #left-panel{left:0}#header{background:#fff}#ribbon{border-bottom:1px solid #CFCFCF;border-top:1px solid #E6E6E6;background:#F5F5F5}#ribbon .breadcrumb,#ribbon .breadcrumb a{color:#6D6C6C!important}#ribbon .breadcrumb li:last-child,#ribbon .breadcrumb>.active{color:#333!important}#logo{width:135px}#logo-group{width:169px!important}#sparks{text-align:center;background:#E0E0E0;padding:10px 0;margin-bottom:15px}#sparks li{padding:0 10px 0 20px}#hide-menu>:first-child>a,.btn-header a{margin-top:5px!important;width:40px!important;height:39px!important;line-height:38px!important}#logo{margin-top:10px}#logo img{width:127px}.btn-header.transparent a{border:none!important;background:0 0;margin-left:0;width:25px!important;box-shadow:none!important}.btn-header.transparent a:hover{color:#a90329}#hide-menu>:first-child>a{width:46px!important}#hide-menu i{color:#6D6A69;font-size:121%}.hidden-menu #hide-menu i{color:#fff}#hide-menu i::before{content:"\f0c9"}.hidden-menu #left-panel{left:0}.hidden-menu #main{position:relative;left:210px}.hidden-menu.fixed-ribbon #ribbon{left:220px;width:100%}.fixed-ribbon #ribbon{left:0}.hidden-mobile{display:none!important}.visible-mobile{display:inline-block!important}.ajax-notifications{height:250px}.ajax-dropdown{width:299px;height:320px;left:0;top:49px}.ajax-dropdown:before{margin-left:-14px}.ajax-dropdown:after{margin-left:-13px}.header-search{display:none}#search-mobile{display:block;margin-left:0}.search-mobile .header-search{display:block;position:absolute;top:0;width:100%;height:49px;background:#333;padding:0 2px;box-sizing:border-box;left:0}.search-mobile .header-search>input[type=text]{margin-top:2px;height:45px;border-color:#333;padding-right:75px}.search-mobile .header-search>button{height:29px;line-height:29px;background:#DDD;right:44px}.search-mobile #search-mobile{display:none}.search-mobile #cancel-search-js{display:block}.jarviswidget header h2{width:135px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}}#extr-page #main{margin-top:0!important}#mobile-profile-img{display:none}.menu-on-top #mobile-profile-img{display:block!important;padding-right:2px!important;padding-left:2px!important}.menu-on-top #mobile-profile-img a.userdropdown img{width:30px;margin-top:5px;margin-left:2px;border-radius:3px;border:1px solid #797979!important}.menu-on-top .page-footer{padding:15px 13px 0}.menu-on-top.hidden-menu #left-panel{left:0}.menu-on-top #main{margin-left:0!important;margin-top:69px!important}.menu-on-top #hide-menu,.menu-on-top #logout,.menu-on-top .minifyme{display:none!important}.menu-on-top aside#left-panel{width:100%!important;min-height:0!important;height:auto;overflow:visible;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.25);box-shadow:0 2px 4px 0 rgba(0,0,0,.25);border-bottom:1px solid #222;border-top:1px solid #333}.menu-on-top aside#left-panel nav>ul{display:block;width:100%}.menu-on-top aside#left-panel nav>ul>li:first-child{margin-left:0}.menu-on-top aside#left-panel nav>ul>li{position:relative;height:auto!important;padding:0!important;display:inline-block;float:left;border-right:1px solid #222;border-left:1px solid #4E4E4E;overflow:visible}.menu-on-top aside#left-panel nav>ul>li>a{display:inline-block;height:68px;text-shadow:none!important;font-size:13px;text-decoration:none;line-height:22px;padding:10px 9px!important}.menu-on-top li.active>a{font-weight:700!important}.menu-on-top .login-info,.menu-on-top nav>ul>li>a b{display:none}.menu-on-top aside#left-panel nav>ul>li>a>i{display:block!important;margin:1px 0 4px;line-height:inherit;text-align:center;font-size:18px;margin-bottom:2px;width:100%}.menu-on-top .menu-item-parent{max-width:72px;min-width:50px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center;font-size:13px}.menu-on-top .menu-item-parent+span{float:none!important;top:5px;right:5px;position:absolute}.menu-on-top nav ul ul li a{padding-left:10px!important;font-size:13px}.menu-on-top aside#left-panel nav>ul>li:hover{background:#fff;background:-moz-linear-gradient(top,#cfcfcf 0,#fff 66%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#cfcfcf),color-stop(66%,#fff));background:-webkit-linear-gradient(top,#cfcfcf 0,#fff 66%);background:-o-linear-gradient(top,#cfcfcf 0,#fff 66%);background:-ms-linear-gradient(top,#cfcfcf 0,#fff 66%);background:linear-gradient(to bottom,#cfcfcf 0,#fff 66%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#cfcfcf', endColorstr='#ffffff', GradientType=0)}.menu-on-top aside#left-panel nav>ul>li:hover>a{color:#333!important;border-left:1px solid #c7c7c7;border-right:1px solid #c7c7c7;padding-left:8px!important;padding-right:8px!important}.menu-on-top aside#left-panel nav>ul>li>ul{position:absolute!important;background:#3a3633}.menu-on-top aside#left-panel nav>ul>li:hover>ul{display:block!important}.menu-on-top aside#left-panel nav ul li.active>a:before{content:""!important}.menu-on-top nav>ul ul li::before,.menu-on-top nav>ul>li>ul::before{border:none}.menu-on-top nav ul ul li a,.menu-on-top nav ul ul ul li a{color:#4C4F53}.menu-on-top nav ul ul li a:hover,.menu-on-top nav ul ul li:hover>a,.menu-on-top nav ul ul ul li a:hover{color:#fff;background-color:#4C4F53}.menu-on-top nav>ul ul ul{border-top:1px solid #c7c7c7!important}.menu-on-top nav ul ul li{overflow:visible}.menu-on-top nav ul ul,.menu-on-top nav ul ul ul{background:#fff!important;border:1px solid #c7c7c7;-moz-box-shadow:inset 0 -4px 0 0 #bd2a2a;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);border-bottom:1px solid #BD2A2A;border-top:none;width:200px;border-radius:0;padding:3px;margin-left:0}.menu-on-top nav>ul ul li:hover>ul{display:block;position:absolute;z-index:999;left:100%;top:-8px;background:#333}.menu-on-top nav>ul>li>a:after{content:"\f0dd"!important;top:76%!important;color:#636363!important;left:46%}.menu-on-top nav ul ul li:hover>a:after,.menu-on-top nav>ul ul>li a:after,.menu-on-top nav>ul ul>li a:hover:after,.menu-on-top nav>ul>li>a:after{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f0da";display:block!important;position:absolute;top:9px;right:4px;color:#333}.menu-on-top nav ul ul li:hover>a:after,.menu-on-top nav>ul ul>li a:hover:after{color:#fff}.menu-on-top nav>ul ul>li a:only-child:after,.menu-on-top nav>ul>li>a:only-child:after{content:""!important}.menu-on-top nav ul ul .active>a{color:#333!important}.menu-on-top nav ul ul .active>a:hover,.menu-on-top nav ul ul li.active:hover>a{color:#fff!important}.menu-on-top .slimScrollDiv,.menu-on-top nav{overflow:visible!important}body.menu-on-top.fixed-header{padding-top:49px}body.menu-on-top.fixed-header.fixed-navigation nav>ul{padding-right:0;position:relative;height:auto;width:auto;overflow:visible}body.menu-on-top.fixed-header.fixed-navigation.fixed-ribbon #ribbon{left:0;top:118px}@media (max-width:979px){.menu-on-top #mobile-profile-img a.userdropdown img{width:39px;margin-top:0;margin-left:2px;border-radius:3px;margin-right:-3px}.menu-on-top .btn-header.pull-right{margin-left:0!important}.menu-on-top #main{margin-top:0!important}.menu-on-top #left-panel{left:0;display:none}body.menu-on-top.fixed-header.fixed-navigation.fixed-ribbon #ribbon{top:49px}.menu-on-top.hidden-menu #left-panel{display:block}.menu-on-top.hidden-menu #main{left:0!important}.menu-on-top #hide-menu{display:block!important}.menu-on-top aside#left-panel nav{height:300px!important;overflow:scroll;overflow-x:hidden!important;-webkit-overflow-scrolling:touch}.menu-on-top .menu-item-parent{white-space:inherit;overflow:visible;text-overflow:inherit;text-align:left;min-width:85%;max-width:85%;padding-left:5px}.menu-on-top .menu-item-parent+span{top:50%;margin-top:-8px}.menu-on-top nav li.active>ul{display:block}.menu-on-top nav>ul>li.active{background:#fff;background:-moz-linear-gradient(top,#cfcfcf 0,#fff 66%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#cfcfcf),color-stop(66%,#fff));background:-webkit-linear-gradient(top,#cfcfcf 0,#fff 66%);background:-o-linear-gradient(top,#cfcfcf 0,#fff 66%);background:-ms-linear-gradient(top,#cfcfcf 0,#fff 66%);background:linear-gradient(to bottom,#cfcfcf 0,#fff 66%)}.menu-on-top nav>ul>li.active>a{color:#333!important}.menu-on-top nav ul ul li:hover>a:after,.menu-on-top nav>ul ul>li a:after,.menu-on-top nav>ul ul>li a:hover:after,.menu-on-top nav>ul>li>a:after{top:50%;right:15px;font-size:15px;margin-top:-8px;content:"\f0dd"!important}.menu-on-top nav>ul ul>li a:only-child:after,.menu-on-top nav>ul>li>a:only-child:after{content:""!important}.menu-on-top nav>ul>li>a:after{top:50%!important;left:auto;margin-top:-14px;font-size:20px}.menu-on-top nav ul ul,.menu-on-top nav ul ul ul{padding:0;border:none}.menu-on-top nav ul ul ul{border-bottom:2px solid #333}.menu-on-top aside#left-panel nav>ul>li{width:100%}.menu-on-top aside#left-panel nav>ul>li>a{height:auto;display:block;padding:8px 9px!important;border-bottom:1px dotted #585858}.menu-on-top nav>ul>li>ul>li>a,.menu-on-top nav>ul>li>ul>li>ul>li>a{padding-top:10px;padding-bottom:10px}.menu-on-top aside#left-panel nav>ul>li>a>i{display:inline!important}.menu-on-top aside#left-panel nav>ul li ul{position:relative!important;width:100%;top:0;left:0}.menu-on-top aside#left-panel nav>ul>li:active>ul,.menu-on-top aside#left-panel nav>ul>li:focus>ul{display:block!important}} \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/css/smartadmin-skins.min.css b/src/main/webapp/WEB-INF/views/src/css/smartadmin-skins.min.css new file mode 100644 index 0000000..64bd918 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/css/smartadmin-skins.min.css @@ -0,0 +1 @@ +.smart-style-1 a{transition:color .1s linear 0s,background-color .1s linear 0s!important}.smart-style-1 body.container{border-left:1px solid rgba(34,38,46,.4);border-right:1px solid rgba(34,38,46,.4)}.smart-style-1 #header{background-image:none;background-color:#22262e}.smart-style-1 .project-context>:first-child{color:#697B92;text-shadow:0 0 1px #111318}.smart-style-1 #ribbon{background:#e6e6e6}.smart-style-1 #ribbon .breadcrumb li:last-child,.smart-style-1 #ribbon .breadcrumb>.active{color:#868686}.smart-style-1 #ribbon .breadcrumb,.smart-style-1 #ribbon .breadcrumb a{color:#747474!important}.smart-style-1 .breadcrumb>li+li:before{color:#646464}.smart-style-1 .project-selector{color:#B9B9B9}.smart-style-1 .dropdown-menu,.smart-style-1 .open>.dropdown-menu{padding:4px}.smart-style-1 .dropdown-menu>li>a{border-radius:4px;margin:3px 0}.smart-style-1 .btn.btn-ribbon{background-color:#697486;background-image:-moz-linear-gradient(top,#6f7d94,#697486);background-image:-webkit-gradient(linear,0 0,0 100%,from(#6f7d94),to(#697486));background-image:-webkit-linear-gradient(top,#6f7d94,#697486);background-image:-o-linear-gradient(top,#6f7d94,#697486);background-image:linear-gradient(to bottom,#6f7d94,#697486)}.smart-style-1 #logo-group span#activity{background:#0d0f12;border:1px solid #0d0f12;color:#fff;cursor:pointer}.smart-style-1 .btn-header>:first-child>a{background:#fb3c4a;border:1px solid #fb3c4a;color:#fff!important;cursor:pointer!important}.smart-style-1 .btn-header>:first-child>a:hover{opacity:.9}.smart-style-1 #cancel-search-js{background:#fb3c4a;line-height:29px!important}.smart-style-1 .MsgTitle .txt-color-orangeDark{color:#fb3c4a!important}@media (max-width:979px) and (min-width:768px){.smart-style-1 #hide-menu i{color:#fff!important}}@media only screen and (max-width:679px) and (min-width:0){.smart-style-1 #hide-menu i{color:#fff!important}}@media only screen and (max-width:479px) and (min-width:320px){.smart-style-1 #sparks{background:#fff}.smart-style-1 #cancel-search-js,.smart-style-1 .search-mobile .header-search>button{border-radius:3px}}.smart-style-1 .minifyme{background:#434953}.smart-style-1 .minifyme:hover{background:#5C6C86;color:#e1e8f3}.smart-style-1 #show-shortcut:hover>i{color:#fff}.smart-style-1 .page-footer,.smart-style-1 .superbox-show,.smart-style-1 aside{background:#1b1e24}.smart-style-1 .superbox-list.active:before{color:#1b1e24}.smart-style-1 #logo-group{background:#22262e!important}.smart-style-1 .login-info,.smart-style-1 .login-info span{border-bottom:none}.smart-style-1 nav ul b{font-size:14px;margin-top:0}.smart-style-1 nav ul b .fa-plus-square-o:before{content:"\f104"}.smart-style-1 nav ul b .fa-minus-square-o:before{content:"\f107"}.smart-style-1 .header-search>input[type=text]{border-color:#FFF!important;border-radius:2px}.smart-style-1 nav ul ul li>a{text-shadow:0 1px 1px #000;font-size:13px;padding-left:43px;color:#e1eaf1;display:block;font-weight:300;padding-top:6px!important;padding-bottom:6px!important}.smart-style-1 nav ul ul ul li a{padding:8px 17px 8px 54px!important}.smart-style-1 nav ul ul ul ul li a{padding-left:72px!important}.smart-style-1 nav ul ul ul ul ul li a{padding-left:90px!important}.smart-style-1 nav ul ul ul ul ul ul li a{padding-left:108px!important}.smart-style-1 nav>ul ul li::before,.smart-style-1 nav>ul>li>ul::before{border:none!important}.smart-style-1 nav>ul>li>a>i{font-size:17px;vertical-align:0}.smart-style-1 nav>ul>li>a b{right:17px;top:12px}.smart-style-1 nav>ul>li>a>i:after{border:1px solid #fff}.smart-style-1 nav ul ul{background:#22262E}.smart-style-1 nav ul ul li>a:hover{background:#1b1e24!important}.smart-style-1 .login-info a,.smart-style-1 .login-info strong,.smart-style-1 nav ul li a{color:#8b91a0}.smart-style-1 nav ul li a:active{background:0 0}.smart-style-1 nav ul li a:hover{color:#E1EAF1}.smart-style-1 .header-dropdown-list a.dropdown-toggle{color:#FFF;text-decoration:none}.smart-style-1 nav ul li a{padding:12px 17px 12px 16px}.smart-style-1 .login-info{height:auto}.smart-style-1 .login-info>span{padding:5px 10px}.smart-style-1 .login-info img{width:35px;border-radius:50%}.smart-style-1 .login-info a{margin-top:2px}.smart-style-1 .login-info a span{max-width:136px}.smart-style-1 .login-info a:hover{color:#fff}.smart-style-1 #logo-group>span .badge{background:#0aa699}.smart-style-1 #activity.active .badge{background:#0aa699!important}.smart-style-1 .ajax-dropdown{background:#E2E8F1}.smart-style-1 .ajax-notifications{background:#fff}.smart-style-1 nav>ul>li>a:hover i{-webkit-animation-name:none;-moz-animation-name:none;-o-animation-name:none;animation-name:none}.smart-style-1 img.online{border-left-color:#0AA699!important}.smart-style-1 .onoffswitch-inner:before{background-color:#36AECC!important}.smart-style-1 .bg-color-red{background-color:#fb3c4a!important}.smart-style-1 .pagination>.active>a,.smart-style-1 .pagination>.active>a:focus,.smart-style-1 .pagination>.active>a:hover,.smart-style-1 .pagination>.active>span,.smart-style-1 .pagination>.active>span:focus,.smart-style-1 .pagination>.active>span:hover{background-color:#36AECC;border-color:#36AECC}.smart-style-1.minified .login-info a{margin-top:6px}.smart-style-1.minified nav ul li a{padding:12px 17px 12px 14px}.smart-style-1.minified nav>ul>li>a>i{font-size:18px}.smart-style-1.minified nav>ul>li{border-bottom:1px solid #131416;border-top:1px solid #303031}.smart-style-1.minified nav>ul>li>ul{background:#1B1E24}.smart-style-1.minified nav>ul>li>ul>li{background:#22262E}.smart-style-1.minified .login-info img{width:30px!important}.smart-style-1.minified .login-info span{padding:0 5px!important}.smart-style-1.minified nav ul ul li>a:hover{background:#30343D!important}.smart-style-1.minified nav ul>li>ul>li>ul,.smart-style-1.minified nav>ul>li>ul>li>ul>li{background:#1B1E24}.smart-style-1.minified nav ul ul li>a{padding-left:13px;padding-right:13px!important}.smart-style-1.minified nav ul ul ul li a{padding-left:33px!important;padding-right:13px!important}.smart-style-1.minified nav ul ul ul ul li a{padding-left:43px!important;padding-right:13px!important}.smart-style-1.minified nav ul ul ul ul ul li a{padding-left:53px!important;padding-right:13px!important}.smart-style-1.minified nav ul ul ul ul ul ul li a{padding-left:63px!important;padding-right:13px!important}.smart-style-1 .jarviswidget-color-darken>header{background:#1B1E24!important;border-color:#1B1E24!important}.smart-style-1 .jarviswidget-color-blueDark>header{background:#353D4B!important;border-color:#353D4B!important}.smart-style-1 .jarviswidget-color-blue>header{background:#688F9E;border-color:#6A838D!important}.smart-style-1 .jarviswidget-color-purple>header{background:#736086}.smart-style-1 .jarviswidget-color-red>header{background:#C02631;border-color:#8F2129!important}.smart-style-1 .jarviswidget .bg-color-red{background:#C02631!important}.smart-style-1 .jarviswidget .bg-color-greenLight,.smart-style-1 .jarviswidget-color-greenLight>header{border-color:#96B447!important;background:#96B447!important}.smart-style-1 .jarviswidget .bg-color-yellow,.smart-style-1 .jarviswidget-color-yellow>header{border-color:#DBB727!important;background:#FDD01C!important;color:#25241F}.smart-style-1 .jarviswidget .bg-color-pink,.smart-style-1 .jarviswidget-color-pink>header{background:#DB8EBB!important}.smart-style-1.menu-on-top nav ul ul li>a{text-shadow:none!important;color:#646E75}.smart-style-1.menu-on-top aside{background:#14161B}.smart-style-1.menu-on-top aside#left-panel{-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.25);box-shadow:0 2px 4px 0 rgba(0,0,0,.25);border-bottom:1px solid #222;border-top:1px solid #333}.smart-style-1.menu-on-top aside#left-panel nav>ul>li{border-right:1px solid transparent;border-left:1px solid transparent}.smart-style-1.menu-on-top aside#left-panel nav>ul>li:hover{border-right-color:#333;border-left-color:#333}.smart-style-1.menu-on-top aside#left-panel nav>ul>li>a{text-shadow:none!important;font-size:13px;padding:10px 9px!important}.smart-style-1.menu-on-top nav ul ul li a{padding-left:10px!important;font-size:13px}.smart-style-1.menu-on-top aside#left-panel nav>ul>li:hover{background:#fff;background:-moz-linear-gradient(top,#04070c 0,#2e3e57 66%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#cfcfcf),color-stop(66%,#2e3e57));background:-webkit-linear-gradient(top,#04070c 0,#2e3e57 66%);background:-o-linear-gradient(top,#04070c 0,#2e3e57 66%);background:-ms-linear-gradient(top,#04070c 0,#2e3e57 66%);background:linear-gradient(to bottom,#04070c,#2e3e57 66%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#04070C', endColorstr='#2E3E57', GradientType=0)}.smart-style-1.menu-on-top aside#left-panel nav>ul>li:hover>a{color:#F1F1F1!important;border-left:1px solid #000;border-right:1px solid #000;padding-left:8px!important;padding-right:8px!important}.smart-style-1.menu-on-top aside#left-panel nav>ul>li>ul{background:#3a3633}.smart-style-1.menu-on-top nav ul ul li a,.smart-style-1.menu-on-top nav ul ul ul li a{color:#D8DEE5}.smart-style-1.menu-on-top nav ul ul li a:hover,.smart-style-1.menu-on-top nav ul ul ul li a:hover{color:#fff;background-color:#1b1e24!important}.smart-style-1.menu-on-top nav ul ul li:hover>a{color:#fff;background-color:#1b1e24}.smart-style-1.menu-on-top nav>ul ul ul{border-top:1px solid #c7c7c7!important}.smart-style-1.menu-on-top nav ul ul,.smart-style-1.menu-on-top nav ul ul ul{background:#2e3e57!important;border:1px solid transparent;padding:0}.smart-style-1.menu-on-top nav>ul ul li:hover>ul{background:#333}.smart-style-1.menu-on-top nav>ul>li>a:after{color:#8AA1B3!important}.smart-style-1.menu-on-top nav ul ul li:hover>a:after,.smart-style-1.menu-on-top nav>ul ul>li a:after,.smart-style-1.menu-on-top nav>ul ul>li a:hover:after,.smart-style-1.menu-on-top nav>ul>li>a:after{color:#D5D5D5}.smart-style-1.menu-on-top nav ul ul li:hover>a:after,.smart-style-1.menu-on-top nav>ul ul>li a:hover:after{color:#fff}.smart-style-1.menu-on-top nav>ul ul>li a:only-child:after,.smart-style-1.menu-on-top nav>ul>li>a:only-child:after{content:""!important}.smart-style-1.menu-on-top nav ul ul .active>a,.smart-style-1.menu-on-top nav ul ul .active>a:hover,.smart-style-1.menu-on-top nav ul ul li.active:hover>a{color:#fff!important}.smart-style-2 #shortcut{background-color:rgba(255,255,255,.9)}.smart-style-2 #shortcut ul{-webkit-box-shadow:0 4px 10px rgba(0,0,0,.3);box-shadow:0 4px 10px rgba(0,0,0,.3);border-bottom:1px solid #A8BADB}body.smart-style-2{background:#fff}.smart-style-2 #header,.smart-style-2 .page-footer,.smart-style-2 .superbox-show{background-image:none;background-color:#2C3742}.smart-style-2 .superbox-list.active:before{color:#2C3742}.smart-style-2 .superbox-img-description{color:#9EA8B1!important}.smart-style-2 .project-context>:first-child{text-shadow:none}.smart-style-2 .project-selector{color:#B2C1D5}.smart-style-2 .project-selector:hover{color:#fff}.smart-style-2 #logo-group span#activity{background:none!important;border:none!important;color:#C5C6CA}.smart-style-2 #logo-group span#activity:hover{color:#fff}.smart-style-2 .header-search>input[type=text]{background:#161B22;border:1px solid #0F1217;color:#fff;border-radius:4px}.smart-style-2 #hide-menu a>i,.smart-style-2 .btn-header>:first-child>a{background:0 0;border:none!important;color:#C5C6CA!important;box-shadow:none!important}.smart-style-2 #hide-menu a:hover i,.smart-style-2 .btn-header>:first-child>a:hover{color:#fff!important;cursor:pointer!important}.smart-style-2 .header-dropdown-list a.dropdown-toggle,.smart-style-2 .header-search>button{color:#C5C6CA}.smart-style-2 #ribbon{background:#fff}.smart-style-2.fixed-ribbon #ribbon{border-bottom:1px solid #E0E0E0}.smart-style-2 .btn.btn-ribbon{background:#9498A0}.smart-style-2 #ribbon .breadcrumb,.smart-style-2 #ribbon .breadcrumb a,.smart-style-2 #ribbon .breadcrumb li:last-child,.smart-style-2 #ribbon .breadcrumb>.active{color:#7C7C7C!important}.smart-style-2 aside{background:#F7F7F7;background:-webkit-gradient(linear,left top,right top,color-stop(99%,#f7f7f7),color-stop(100%,#cacaca));background:-webkit-linear-gradient(left,#f7f7f7 99%,#cacaca 100%);background:-webkit-gradient(linear,top left,top right,from(#f7f7f7),to(#cacaca));background:linear-gradient(to right,#f7f7f7 99%,#cacaca 100%);min-height:100%}.smart-style-2 #left-panel{padding-right:15px;padding-left:15px;padding-bottom:15px;padding-top:64px}.menu-on-top.smart-style-2 #left-panel{padding-top:49px!important}.smart-style-2 #logo-group>span .badge{background:#008DC4}.smart-style-2 .login-info,.smart-style-2 .login-info span{border:0!important;box-shadow:none!important}.smart-style-2 .login-info span{padding:5px 10px 7px;background:#FFF;border-radius:4px}.smart-style-2 .login-info a span{padding:0;font-size:16px!important;max-width:105px}.smart-style-2 .login-info{margin-bottom:7px!important;height:auto}.smart-style-2 .login-info a{font-size:16px!important;color:#33455A;margin-top:2px}.smart-style-2 .login-info img{width:35px}.smart-style-2 nav ul li a{color:#69737A!important;font-size:12px!important}.smart-style-2 nav>ul>li>a{padding-top:16px;padding-bottom:16px}.smart-style-2 nav ul ul>li:hover b{color:#69737A!important}.smart-style-2 nav>ul>li>a>i{font-size:25px!important}.smart-style-2 nav>ul>li>a b{top:16px}.smart-style-2 nav ul ul{background:0 0}.smart-style-2 nav ul .active>a,.smart-style-2 nav ul li.open>a,.smart-style-2 nav ul li.open>a b{color:#202427!important;font-weight:700}.smart-style-2 nav ul li a:hover,.smart-style-2 nav ul ul li>a:hover{color:#202427!important;background:none!important}.smart-style-2 nav ul ul li>a{padding-left:23px}.smart-style-2 nav>ul ul li::before,.smart-style-2 nav>ul>li>ul::before{border:none!important}.smart-style-2 nav ul ul ul li a{padding-left:30px}.smart-style-2 nav ul ul ul ul li a{padding-left:40px}.smart-style-2 nav ul ul ul ul ul li a{padding-left:50px}.smart-style-2 nav ul ul ul ul ul ul li a{padding-left:60px}.smart-style-2 .jarviswidget-color-blueDark>header{background:#2C3742!important;border-color:#2C3742!important}.smart-style-2 .btn-primary,.smart-style-2 .smart-form .button{background-color:#3b9ff3;border-color:#3292E2}.smart-style-2 .btn-primary.active,.smart-style-2 .btn-primary:active,.smart-style-2 .btn-primary:focus,.smart-style-2 .btn-primary:hover,.smart-style-2 .open .dropdown-toggle.btn-primary{background-color:#3E90D4;border-color:#2F7DBE}.smart-style-2 .dropdown-menu>li>a:focus,.smart-style-2 .dropdown-menu>li>a:hover{background-color:#3E90D4}.smart-style-2 .btn-success{background-color:#96bf48;border-color:#84A83E}.smart-style-2 .btn-success.active,.smart-style-2 .btn-success:active,.smart-style-2 .btn-success:focus,.smart-style-2 .btn-success:hover,.smart-style-2 .open .dropdown-toggle.btn-success{background-color:#89AD45;border-color:#78973B}.smart-style-2 .btn-danger{background-color:#DB4A67;border-color:#CA4862}.smart-style-2 .btn-danger.active,.smart-style-2 .btn-danger:active,.smart-style-2 .btn-danger:focus,.smart-style-2 .btn-danger:hover,.smart-style-2 .open .dropdown-toggle.btn-danger{background-color:#CF4762;border-color:#C0455E}.smart-style-2 .btn-warning{background-color:#E2B14A;border-color:#C99D42}.smart-style-2 .btn-warning.active,.smart-style-2 .btn-warning:active,.smart-style-2 .btn-warning:focus,.smart-style-2 .btn-warning:hover,.smart-style-2 .open .dropdown-toggle.btn-warning{background-color:#D6A848;border-color:#C09844}.smart-style-2 .pagination>.active>a,.smart-style-2 .pagination>.active>a:focus,.smart-style-2 .pagination>.active>a:hover,.smart-style-2 .pagination>.active>span,.smart-style-2 .pagination>.active>span:focus,.smart-style-2 .pagination>.active>span:hover{background-color:#3b9ff3}.smart-style-2.minified .login-info a{margin-top:4px}.smart-style-2.minified #left-panel{padding:0!important;padding-top:50px!important}.smart-style-2.minified nav ul>li>a{padding:12px 11px}.smart-style-2.minified nav>ul>li>ul,.smart-style-2.minified nav>ul>li>ul>li,.smart-style-2.minified nav>ul>li>ul>li>ul>li{background:#fff!important}.smart-style-2.minified nav>ul>li{border-bottom:1px solid #E6E6E6;border-top:1px solid #FFF}.smart-style-2.minified nav>ul>li>a>i{font-size:18px!important}.smart-style-2.minified .login-info span{padding:0}.smart-style-2.minified .login-info{margin:0!important}.smart-style-2.minified nav ul li.active>a:before{height:23px;right:-19px;top:7px;font-size:20px;color:#FFF}.smart-style-2 .bg-color-red{background:#DB4A67!important}.smart-style-2 .bg-color-blue{background:#4387bf!important}.smart-style-2 .smart-form .checkbox input:checked+i,.smart-style-2 .smart-form .radio input:checked+i,.smart-style-2 .smart-form .toggle input:checked+i{border-color:#3b9ff3}.smart-style-2 .smart-form .toggle i:before{background-color:#3b9ff3}.smart-form .rating input+label:hover,.smart-form .rating input+label:hover~label{color:#3b9ff3}.smart-style-2 .bg-color-greenLight{background-color:#89AD45!important}.smart-style-2 .bg-color-orange{background-color:#D6A848!important}.smart-style-2 .bg-color-teal{background-color:#5ba0a3!important}.smart-style-2 .minifyme{background:#D7DAE2;border-bottom:1px solid #818181;color:#7E7E7E}.smart-style-2 .minifyme:hover{color:#4E4E4E}.smart-style-2 .onoffswitch-inner:before{background:#3b9ff3;border-color:#3b9ff3 #257DC7 #2A7DC4}.smart-style-2 .onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-switch:before{color:#84A83E}.smart-style-2.menu-on-top .menu-item-parent{font-size:10px}.smart-style-2.menu-on-top #left-panel{padding-right:0;padding-left:0;padding-bottom:0}.smart-style-2.menu-on-top nav ul ul li>a{text-shadow:none!important;color:#646E75}.smart-style-2.menu-on-top aside{background:inherit}.smart-style-2.menu-on-top aside#left-panel{-webkit-box-shadow:none;box-shadow:none;border-bottom:1px solid #B8B8B8;border-top:1px solid #333}.smart-style-2.menu-on-top aside#left-panel nav>ul>li{border-right:1px solid transparent;border-left:1px solid transparent}.smart-style-2.menu-on-top aside#left-panel nav>ul>li:hover{background:#2e3e57;border-right-color:#fff;border-left-color:#fff}.smart-style-2.menu-on-top aside#left-panel nav>ul>li>a{text-shadow:none!important;font-size:13px;padding:10px 9px!important}.smart-style-2.menu-on-top nav ul ul li a{padding-left:10px!important;font-size:13px}.smart-style-2.menu-on-top aside#left-panel nav>ul>li:hover>a{color:#F1F1F1!important;border-left:1px solid #000;border-right:1px solid #000;padding-left:8px!important;padding-right:8px!important}.smart-style-2.menu-on-top aside#left-panel nav>ul>li>ul{background:#2C3742}.smart-style-2.menu-on-top nav ul ul li a,.smart-style-2.menu-on-top nav ul ul ul li a{color:#ADBED3!important}.smart-style-2.menu-on-top nav ul ul li a:hover,.smart-style-2.menu-on-top nav ul ul ul li a:hover{color:#fff;background-color:#5E6C88!important}.smart-style-2.menu-on-top nav ul ul li:hover>a{color:#fff!important;background-color:#5E6C88}.smart-style-2.menu-on-top nav>ul ul ul{border-top:1px solid #c7c7c7!important}.smart-style-2.menu-on-top nav ul ul,.smart-style-2.menu-on-top nav ul ul ul{background:#2e3e57!important;border:1px solid transparent}.smart-style-2.menu-on-top nav>ul ul li:hover>ul{background:#333}.smart-style-2.menu-on-top nav>ul>li>a:after{color:#8AA1B3!important}.smart-style-2.menu-on-top nav ul ul li:hover>a:after,.smart-style-2.menu-on-top nav>ul ul>li a:after,.smart-style-2.menu-on-top nav>ul ul>li a:hover:after,.smart-style-2.menu-on-top nav>ul>li>a:after{color:#D5D5D5}.smart-style-2.menu-on-top nav ul ul li:hover>a:after,.smart-style-2.menu-on-top nav>ul ul>li a:hover:after{color:#fff}.smart-style-2.menu-on-top nav ul ul .active>a,.smart-style-2.menu-on-top nav ul ul .active>a:hover,.smart-style-2.menu-on-top nav ul ul li.active:hover>a{color:#fff!important}.smart-style-3 body,body.smart-style-3{background:#fff!important;font-family:Arial,sans-serif}.smart-style-3 #logo img{width:125px;height:auto;padding-left:3px;margin-top:-3px}.smart-style-3 #header{background-color:#f78c40;background-image:-moz-linear-gradient(top,#f78c40,#d67632);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f78c40),to(#d67632));background-image:-webkit-linear-gradient(top,#f78c40,#d67632);background-image:-o-linear-gradient(top,#f78c40,#d67632);background-image:linear-gradient(to bottom,#f78c40,#d67632)}.smart-style-3 #ribbon{background:#fff}.smart-style-3 #ribbon .breadcrumb,.smart-style-3 #ribbon .breadcrumb a{color:#7C7C7C!important}.smart-style-3 #ribbon .breadcrumb li:last-child,.smart-style-3 #ribbon .breadcrumb>.active{color:#5F5F5F}.smart-style-3.fixed-ribbon #ribbon{box-shadow:0 .0625em .3125em rgba(0,0,0,.35)}.smart-style-3 #logo-group span#activity,.smart-style-3 .btn-header>:first-child>a{background-color:#DD7C37;background-image:-moz-linear-gradient(top,#dd7c37,#b9662b);background-image:-webkit-gradient(linear,0 0,0 100%,from(#b9662b),to(#b9662b));background-image:-webkit-linear-gradient(top,#dd7c37,#b9662b);background-image:-o-linear-gradient(top,#dd7c37,#b9662b);background-image:linear-gradient(to bottom,#dd7c37,#b9662b);color:#fff!important;border:1px solid #f09d61;text-shadow:#985813 0 -1px}.smart-style-3 #hide-menu i{color:#fff!important}.smart-style-3 #logo-group span#activity:active,.smart-style-3 #logo-group span#activity:hover,.smart-style-3 .btn-header>:first-child>a:active,.smart-style-3 .btn-header>:first-child>a:hover{-webkit-box-shadow:inset 1px 1px 0 #985813,inset -1px -1px 0 #985813;-moz-box-shadow:inset 1px 1px 0 #985813,inset -1px -1px 0 #985813;box-shadow:inset 1px 1px 0 #985813,inset -1px -1px 0 #985813;background-color:#dd7a35;background-image:-moz-linear-gradient(top,#dd7a35,#984a13);background-image:-webkit-gradient(linear,0 0,0 100%,from(#dd7a35),to(#984a13));background-image:-webkit-linear-gradient(top,#dd7a35,#984a13);background-image:-o-linear-gradient(top,#dd7a35,#984a13);background-image:linear-gradient(to bottom,#dd7a35,#984a13)}.smart-style-3 .header-dropdown-list>li>.dropdown-toggle,.smart-style-3 .project-context>:first-child,.smart-style-3 .project-selector{color:#fff;text-shadow:#985813 0 -1px}.smart-style-3 .header-dropdown-list>li>.dropdown-toggle{display:block;background:rgba(0,0,0,.2);padding:2px 7px 3px;border-radius:3px;margin-top:14px}.smart-style-3 .header-search>input[type=text]{border-color:#CA854F}.smart-style-3 .header-search>button{color:#DF9B45}.smart-style-3 aside{background:#f2f2f2;border-right:2px solid #ccc}.smart-style-3 .login-info span{border-bottom:none}.smart-style-3 .login-info a span{color:#444!important}.smart-style-3 .login-info{border-bottom:1px solid #E2E2E2;background:#fff;box-shadow:none;-webkit-box-shadow:none;-moz-box-shadow:none}.smart-style-3 nav ul li a,.smart-style-3 nav ul li.open>a,.smart-style-3 nav ul li.open>a b{color:#444!important}.smart-style-3 nav>ul>li{background-color:#f2f2f2;background-image:-moz-linear-gradient(top,#f9f9f9,#f2f2f2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f9f9f9),to(#f2f2f2));background-image:-webkit-linear-gradient(top,#f9f9f9,#f2f2f2);background-image:-o-linear-gradient(top,#f9f9f9,#f2f2f2);background-image:linear-gradient(to bottom,#f9f9f9,#f2f2f2);border-bottom:1px solid #DFDFDF}.smart-style-3 nav>ul>li.active>a:before{top:10px!important}.smart-style-3 nav>ul>li>a b{top:12px}.smart-style-3 nav ul li.active>a:before{top:6px}.smart-style-3 nav>ul>li.open{border-left:4px solid #058dc7}.smart-style-3 nav>ul>li>a{padding:12px 10px 12px 11px;font-size:13px}.smart-style-3 nav>ul>li>a>i{color:#058dc7;font-size:20px}.smart-style-3 nav ul ul{background:0 0}.smart-style-3 nav ul ul li>a{font-size:13px}.smart-style-3 nav ul li a:hover{background:rgba(0,0,0,.05)!important}.smart-style-3 nav>ul>li.open>a{padding-left:7px}.smart-style-3 nav>ul>li.open ul li>a{padding-left:38px}.smart-style-3 nav>ul ul li::before,.smart-style-3 nav>ul>li>ul::before{border:none}.smart-style-3 nav ul li.active>a{font-weight:700}.smart-style-3 nav ul li.active>a:before{color:#bbb}.smart-style-3 .page-footer,.smart-style-3 .superbox-show{background:#3D3B39}.smart-style-3 .superbox-list.active:before{color:#3D3B39}.smart-style-3 nav>ul>li.open>ul>li>a{padding-left:38px}.smart-style-3.minified nav>ul>li{border-bottom:1px solid #E9E4E4;border-top:1px solid #FFF}.smart-style-3.minified nav>ul>li>ul,.smart-style-3.minified nav>ul>li>ul>li>ul>li{background-color:rgba(69,69,69,.9)}.smart-style-3.minified nav ul li a,.smart-style-3.minified nav ul li.open>a,.smart-style-3.minified nav ul li.open>a b{color:#fff!important}.smart-style-3.minified nav>ul>li.open ul li>a{padding-left:14px}.smart-style-3 .active+.ajax-dropdown{-webkit-box-shadow:1px 14px 16px rgba(61,35,14,.55);box-shadow:1px 14px 16px rgba(61,35,14,.55)}@media (max-width:979px){.smart-style-3 #content{padding-left:5px;padding-right:5px}.smart-style-3 #ribbon{margin-left:0;margin-right:0;margin-top:0;border-radius:0}}.smart-style-3 .dropdown-menu>.active>a,.smart-style-3 .dropdown-menu>.active>a:hover,.smart-style-3 .dropdown-menu>li>a:focus,.smart-style-3 .dropdown-menu>li>a:hover,.smart-style-3 .tt-suggestion.tt-is-under-cursor{background-color:#EC9519;color:#fff}.smart-style-3 .dropdown-menu>li>a{color:#4E361B}.smart-style-3 .dropdown-menu{border-radius:0;border-bottom:2px solid #ADADAD;background:#FDDFB3}.smart-style-3 .dropdown-menu .divider{background-color:#EBC7A6}.smart-style-3 .dropdown-menu-large .dropdown-header{color:#5C391E}.smart-style-3 .dropdown-menu-large>li ul>li>a:focus,.smart-style-3 .dropdown-menu-large>li ul>li>a:hover{border-radius:3px;background-color:#F1B686}.smart-style-3 input:not([type]),.smart-style-3 input[type=color],.smart-style-3 input[type=email],.smart-style-3 input[type=number],.smart-style-3 input[type=password],.smart-style-3 input[type=tel],.smart-style-3 input[type=text],.smart-style-3 input[type=url],.smart-style-3 textarea{border-top-color:#a3a3a3;border-left-color:#a3a3a3;border-bottom-color:#ccc;border-right-color:#ccc;-webkit-box-shadow:inset 0 1px 0 #d6d6d6;-moz-box-shadow:inset 0 1px 0 #d6d6d6;box-shadow:inset 0 1px 0 #d6d6d6;color:#000}.smart-style-3 .has-warning .form-control{border-color:#c09853!important}.smart-style-3 .has-error .form-control{border-color:#b94a48!important}.smart-style-3 .has-success .form-control{border-color:#468847!important}.smart-style-3 .select2-container-multi .select2-choices .select2-search-field input,.smart-style-3 .tt-hint{box-shadow:none!important;border:none!important}.smart-style-3 #shortcut{background-color:rgba(25,16,6,.85)}.smart-style-3 .SmallBox span,.smart-style-3 .bigBox span{letter-spacing:0}.smart-style-3.menu-on-top nav ul ul li>a{color:inherit}.smart-style-3.menu-on-top aside{background:inherit}.smart-style-3.menu-on-top aside#left-panel{-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.25);box-shadow:0 2px 4px 0 rgba(0,0,0,.25);border-bottom:1px solid #fff;border-top:1px solid #fff}.smart-style-3.menu-on-top aside#left-panel nav>ul>li{border-right:1px solid #E2E2E2;border-left:1px solid #FFF}.smart-style-3.menu-on-top nav ul ul,.smart-style-3.menu-on-top nav ul ul ul{border-color:#E2E2E2}.smart-style-3.menu-on-top nav ul>li>ul{left:-2px}.smart-style-3.menu-on-top aside#left-panel nav>ul>li>a{text-shadow:none!important;font-size:13px;padding:10px 9px!important;border:none!important}.smart-style-3.menu-on-top nav ul ul li a{padding-left:10px!important;font-size:13px}.smart-style-3.menu-on-top nav>ul>li>a:hover{background:#fff!important}.smart-style-3.menu-on-top nav ul ul li a:hover,.smart-style-3.menu-on-top nav ul ul li:hover>a,.smart-style-3.menu-on-top nav ul ul ul li a:hover{background:rgba(0,0,0,.05)}.smart-style-3.menu-on-top aside#left-panel nav>ul>li:hover{background:#fff}.smart-style-3.menu-on-top nav ul ul li a,.smart-style-3.menu-on-top nav ul ul ul li a{color:#D8DEE5}.smart-style-3.menu-on-top nav ul ul li a:hover,.smart-style-3.menu-on-top nav ul ul li:hover>a,.smart-style-3.menu-on-top nav ul ul ul li a:hover{color:#fff}.smart-style-3.menu-on-top nav>ul>li>a:after{color:#8AA1B3!important}.smart-style-3.menu-on-top nav ul ul li:hover>a:after,.smart-style-3.menu-on-top nav>ul ul>li a:after,.smart-style-3.menu-on-top nav>ul ul>li a:hover:after,.smart-style-3.menu-on-top nav>ul>li>a:after{color:inherit}.smart-style-1.menu-on-top nav ul ul .active>a:hover,.smart-style-1.menu-on-top nav ul ul li.active:hover>a,.smart-style-3.menu-on-top nav ul ul .active>a,.smart-style-3.menu-on-top nav ul ul .active>a:hover,.smart-style-3.menu-on-top nav ul ul li.active:hover>a{color:#333!important} \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/css/sps.css b/src/main/webapp/WEB-INF/views/src/css/sps.css new file mode 100644 index 0000000..ca81b3c --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/css/sps.css @@ -0,0 +1,49 @@ +.vaild {color: red;} +.login-info{ border-bottom: 1px solid #fff} +.login-info>span{ border-bottom: 1px solid #d7d5d5;} +nav ul .active > a{background: #538ba6} +nav ul .active > a:hover{background: #538ba6} +nav ul li.open > a, nav ul li.open > a b{color: #333 !important} +nav ul li a{ color: #333;} +nav ul li a:hover{ color: #333;} +nav ul li a:active{background:none!important} +nav ul ul{ background: none;} +nav ul ul li a:hover{ color: #333; background: none} + +.logo-tt{ display: inline-block; margin: 0px; padding: 0px; padding-left: 40px; line-height: 48px; color: #fff; font-size: 16px; font-weight: bold; font-family: "microsoft yahei", Verdana, Arial, Helvetica, sans-serif} +.logo-eng{ display: inline-block; margin: 0px; padding: 0px; padding-left: 10px; line-height: 48px; color: #fff; font-size: 14px; font-family: "microsoft yahei", Verdana, Arial, Helvetica, sans-serif} +aside{ background: #e8e8e8} +#header{ background: #538ba6} +#header>:first-child{ width: 500px;} +#ribbon{ background:none} +#ribbon .breadcrumb, #ribbon .breadcrumb a{ color: #333!important} +#ribbon .breadcrumb li:last-child, #ribbon .breadcrumb > .active{ color: #333} +.page-footer{ background: #4b4b4b;} +#main{ padding-bottom: 25px;} +.new-foot{width: 100%; height: 40px; background: #4b4b4b; color: #f2f2f2; line-height: 40px; text-align: center; font-size: 12px; z-index: 9999; position: absolute; bottom: 0;} +.btn-header > *:first-child > a{ background: none; border: 1px solid #fff; color: #fff;} +.btn-header > *:first-child > a:hover{ color: #fff;border: 1px solid #f1f1f1;} +.btn-header.pull-right{ margin-left: 10px;} +.hidden-menu #hide-menu>:first-child>a{ background: #407995; border: 1px solid #295b73} + +.header-dropdown-list,.ribbon-button-alignment,.minifyme{ display: none} +#fullscreen,#demo-setting{ display: none} +.error { + color: red; +} +.chose-tr { + background-color: #CECE07!important; +} +.tree-hide { + display: none; +} +.tdred{ + background:red; +} + +.edui-default { + z-index: 1100; +} +.widget-body .row { + padding-bottom: 10px; +} \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/fonts/fontawesome-webfont.ttf b/src/main/webapp/WEB-INF/views/src/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..5cd6cff6d6f6cf438a882e366420dbcc5dddd3f1 GIT binary patch literal 141564 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ƓCICn66&u!PHl6pn& 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%0D%8GQ!Ai?6y^fVUY%4hi>cI9O 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/fonts/glyphicons-halflings-regular.woff b/src/main/webapp/WEB-INF/views/src/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..8c54182aa5d4d1ab3c9171976b615c1dcb1dc187 GIT binary patch literal 23320 zcmY&6mA1(8T6a0V( z7zzkXUYUXEN9+9I!ap!DFOd#1wlTB=0s{G=z_>rwLFyJd-Ppy62nY!Dzg$rNAC#b> zW_IQ_KN{(eU)_(Nsd6JjiMgTUPb}E#|M~#|A(>mdoBe3JKtOVEKtTU^2nd*oEldqf zfPj=PfBaZ}zy@NZ@n!KN0s$!#{qXEt`TP45!w50c8!{TL10RAG)dniu*zrR^LTrn}O+tRb0xd~0E&>H($0brSGJ*iX z8bUAslphEzmTHiWB72`anLv4VuEY~_ za}WVZu^zT;R-~y&T~BYSiJ>00^O~gpl9q$zHI%Y>Lhsr-MaOrb%y%q|(42pX<4bce z&%S(EIYGx}q8~@4pX*EKdS?h=SI&tEv`GGM8)AScL0;U}brn10v;~p2;1NOn2Um$W z*U=i%VuwBRz@Z11qKr(qgO8vr*&X5{?12dd{6*l`Yp`?k3MDcih%qI+g!qV2n61L{ zS-80y9H-NmrN`sSUC*p$lut-w`?nyb*goYXni_zf3okCBA{zrCwXDq^$DQB5U?DQ* z61o2X9r4;yA!5sN`)f6pe9e8pguH(cK5%0-vMf9zrWWth^A{_9wXmH0nW$}wo9hf@Mt&V*5m2_W0Zac{Bwl*3N0W}7D6V5mO|AbT zMePe7b5d1qntWOB)2(kfH3+1h@`qdCj$7%?Ws`6C=E;z?vBmFy(ZuU>?ZKAjdKnE_$3iyZHlp%_ z77-FteGS2x>7s==RC=EgNc20pi}B5ZYP?<*;Yn$7M)<7;<>9ljc|Q@}q1HAXA>?XX z{-<=FYU*8Yx_bmPn*eq|(6}#S=KV{`|BZ*Xn#BSEOxT0n<2%3UJglMVh`FJxT)N*_o6m(8iH0h%=F{CzZaZ8j3d^x{KT0bRC__^79ko z=tr+cA_{hBgbop+gr}pTjdh4lR9OGJYID{f-h7TdFVsTYrJ)sVL)@`Nes|mRJSCBQ z1vY;D{cTS=MKu(Wy%|e~Iy~QIi?KJEB~oXKHbERbMSWb} zZ$4oLo6Q7!JY7E&nSn99sadal3PMV~{548>MpAHY2H1T`ZcmF;%7p*Gd@)Z2X$V%V z$1bYU`a7{N-&8b(7EKxaD_#{2yNI&{t3rygLIQh8i%wdtQ^A4QWPw@AUkIZjStyRy zt6gfVP}$xz$w}4TO!~910gWc?ujr|I`%rxo*~ZRJj0)|c2kf0tbH}jLi*?h7#a}r#3UcIh%=Rq+9Oy<}9gOY2vy$@K}ixTio-4X=M1@9qI z^=K!qz=h?boc7!Dn&OoiZq*aBh4h7*kXhO z>pcXk->0DSLp`H8gAy`9imj3RrTwYMLn%~ax2R;y6z$S#bv?dXh$n!f{I%|F6CUzH zNglJr&iX(OdhO|M-zijiorLRikL!4b&v<-I;cb2U*9AhJqg6Km0|C@3UPi3VuIeHB zEvJkk^d768V;-U<9n39OEzwHebV z^!;=ohVM{+SKmNmc(fHuOajOg)eZg4gP9Z?_0r_5C&wd<_hxoo_+<48kwZJ{Y3kdj z-euRxbNtS4ORoUDw~*0{d?YbybVf*Z&j3f0Df|p6wtg}#){z60vHIVDYyvXYiqtw5fLstI@;wPh+Bd5ldW?|#AJXDCfR%eUYew_;&(+g6-=ThC?S3>8w7??8cY@rx zXANRWBOACbA6cC_l4+aF!&NSKMmjmK4PZoF7UG%C5 zf)X%cLC&;>^$NdUhi>}OaeOh-03Qt>c;rBMl8FXlh6u#+T;)aNQAM7iYm9MwQAwQ$ zauN?iXC->xfF|9A>Yn3rfOkVpm+8&z?LmtUcZTECdVP6@K8N`=NVn%wvgYT?wv(~@ zRQi1syDn_w+iAw6*B2j_C#*4Oa=3>>HsxLFzfc-lqHiBWPsG=v_Rqfna_4v6=XxDj zbWvX=bCj4jf>-mGLa)^qT)yEMN*AOa6}Y=z5r^W#5+eB*=NMYFLlxp|l;Umkrykmm z>1Pb@=d7ZMXh-p<@vNTD{%C%$y%YYN-VTD)5%>5QvQPlpLYJRSmulc?J zubo~#6g|MIS#tM^y?0~C`jU2#a#T$VEGW;6HZHFWLEd6C6gfhTw6Hw56Q8*V+~VWN z4AL!NdF6?QxaUpsR*ZThZ22BrG(+5-Ud8j`|8n^?HPZ7*MH$Y-GdTEy_<}Ip%UH`% zC_ybkuvZT`(*5-7zTSgt1y-AX_=4Vq{_y1PK|t=n8Jsz8N`x^1R#L(Hf(SZ(R}et= z20=K0`i!{GTB{~I3$HZ!fZ7PE0K3mgrlOj^=HLjmlzB{Q!INjU2`4JhvkVArhWI3g z2BFDRMNusx)0QK>n-{_BPLkO*tH?}~b^*t2 zL|B8@3a#it1GzFLG>-jntCpno1TF0OMs-3&ICPgAm$awK{?_0%(W?W=|3Ym<2B399 z6?sOv=odFeFq-4ZH~dK}*A#W0I_F%hOcy3B(B=(oS9N?rZK6R)u8SFgYl67%j$Vzn zT2com)G;k5ej>5&f(ldAjf;DQ6!5hOSn{C{3@HGgJfyHHbCwb;JWINl)t_@@KmMH+bk8Q`tU&fRBnQ(#)4NSadxDOZI(w zdDV`IZHTev{l3e|YJOjG)!*{Qd3Bbc-oK>W2LbR{;`&r7v=uuYN}Q!j?bR6qQf6%Z zD|U^HaP=Duw&<9^4wcHPM`Vo0d8#?cwduvt)W!CY2}SzBBsBVDmS^qNq)C$4z-w!v zu|}GDNU(nCqGP?m2nGh>so7Y#2jSAF;UD3l zTWTJlAQB4XoWDz=q%Vn+jEY#AwT@9A52;uB*W>Xje?f=`^s2DJ+s}6b zZHctO--vJs(vA6u2D!C~MMV%ZF_OWKERqY*L7bn~pu>emnX~};w>xKsx+HmlModD* zRe7jxvS`Tr6uHz_O`!|yld+VyK0FQd$icoJ&6I5J_C@tYl{!GM>wg8ezB^sMFG{SP z+~tO=8DM|68>>8kL{vLa+9stZVE2&^q(j&WrimlxADG12>h3l$)MnnoG~F+Q9%u&_RYNWV-S zu8Zij1T3udO7yF++y7qK8?@Qy;j&>d29gBr(=CZ4lKGZq^?3#ajS1CkdX7~BF>3+> zYZVG#qpmz`T?l5}q@jYe4}&tAuC*{c-?JynbwY*R0wc+;hotR!1CBsHEV}H{pEV_Q zQbs{v@#pEsI<-g|xh#rQJeXH}di`N|kNqjL$UE~3So5Z0bsl-UTxtBvq=J|gu+RPErd8o zq%Cu)1CPBz7A=EEzAUR|YC=IU9%hvt-M5s$vP}yYbrS8_xEfnDFCI~k&{z?w$lx zkHl$$>l6w9E<=%h&m}p0DcU+fGPM`d($iGo+S3fJhaypcIE2yU{5H<0HCgoFK{GLe zCVD+P9e_etX_H9_t6xc?c?>7@pb;TOf6%r&2oND`VL682Y@H zo9cs|v@$?BZbm;;TeI&1a|hDjryghe`LAHHYtRh=V`G;8&hH=u_R(Y1pv%n=LH^3^ zFkvIs>V~3aP^2c9bjt$HI!&KIsHF;<6GGV<&cs3&h&!7&F_0TJrW*V^F`?h4z4b9P z)shrVOIq;gnBtPE8xy|c?B+5Qhe9v=A{q0$_8i?gn>U-#3cMhdDV#r)gg$jBSHuwk zk}gryawT5)H|i8gP1CW0tGr3sKVvSH=C;mKYmExi&<#lKQbxbVfh72pcQ7oRvXB%= zj1OXzBoz0nqSwe)?dUE|N0dA`Jm0((=&k$p`L1c)=>Mo*a}LJx~+>;2tcjSh+G1pg5Y6PO}pj8+;DLXc4La-kzxi{dPSiJ7 z8JC>pyci_t`xsI3_*zD$W!*$<4tXVP|Lyd;LAI{(?h2Cw%dD@_;lH-jHe9S+i*4E z4mm+=yxP3;fjmRcM+tj5WK$Q-9_(!w&4?Zu{~+v=o|o`vvKeY_m&uw>iUOhrn)3ws&_6vxHpM+hCYx}osCc0Y-Tyq0z_HH?lw9s=QM+-Q{gQx~FocK9j!8!mtbNX&zBR0Xt$l zvErya$XNJ@m2B@ie45(Z(19?S0|j@Eej=zw0gE??YVlwp4LSl7VHUHoo|LraFf00W znbw<}e@IUzes(fu}n<{VdSNo|T`)7axnJ2E3 zGN-K>ywjN_qvqSYS+3(Tift}Ac+Th~V)w~#F13j;D~$iUE^?zyrm7R;K!FVAfwf4+ zgEe5#q65&2_@2P9Xi0@IzKKB$Mr=t77zjDw^ry*`L~i%3hjv^6l}?gMTjnmHPNyRD!RE? zVzeC>gkFuW>V5P|ms&5GT4O@NM-mhCx+a!f0)LQsDAs{!i(cE9Ov8j9Ot~S$SX^Tu zbvv@~cen9fE3YI>r2~|YyQVnWpZ-X~m^M6OE$L`m&MG`G=33X8DprYlBgvrAjN>#) zf7F5}TO}Od#i%Pvr08HxB1L|F7Lms;vt;^z`LYoE^HAlcM$*80N!_Nc@Z0C)>z37! zB*8pC&7s#0b$L(fb6zzb_{hxyz+_iYonkQLn|M^r48oOlXXt>e7{zFo03wLhcxL@> zruxmZD;ZM5U?3RR7ni`br#{#)H87#K@FBbE7!;=-Y}c+8!h3d5JExlz2JatQJ+?rH zEiUGqC0jaoW>(Evnh`H^?>C|E?;wdM>7y!8D4dVkC<+|T0zP?LNZT4#$T22k5m50< zzoALNpZ84Yo=WEiK^k;g##y>nq*73%RqJFJOX%P{Sin)USV69lwgt`-QDJjC{IgNf zBW4`*siNB=F5h|FpHc}mY9&H}jGvvlX!|~~dIc_J`?;(WsSic(jU>39iqS|Q7u!DA zY&kA%G@cdsQv^FWgQ+Nx#A;({7tI>&nigS1N0T`xz+mg6@_{zT%;E%P(``j&bsETN zs(q(bWF8KI1M_eY6S%3}4I-pbgJgDL2EYIzPp(Kd(4_CqWI0N zt8t_kb+H2&h#4kT$#q>Ac%Z2bj@0N+O;y@sWv$8hU9Zv@p#uT7sP~{kG6820-K~jc zzx+zAW+=CEi%kufkYzrAXi1hFg5D^8VfWJSQx~1y>x~0bBV$33&FY`a087m+i@@r# zv~L(PphOgimWm81wL^lXk96(eK$#U=hQ}pu<-Srb@X)RzEK4@vVL9cwNBv&D7`P0@ zqV@&7+T19`yV}oc>o1R%dLPHOtgykfkQ$mBKeZU*==5=O;{`t7RV`&nOFus5HWa@{ zXbhx+TZxRv=(Ko|DZe>7Tjhggvxn2ed0umrYSl8cq1^h1GLxv~Ovi$ld?|yHWQbL0 z!Ivh5s&TPz0K^%VfE05%mJqQKs?A%Hu%Xt@^>Aoa$L6|fp<>G;+%>slePPEnR_yRL zj;yc0lCyoP$Ic|g#bX(o<$00nsg*!S33aGHMx(FL1IZKmm2(3;)8v{BEh zq+0};_3dYnO)g&8rn2p~Esgh&5iy4}Tc`s#l(NQVP*B`-s(Tsgb%=E*x!`vNJk-`k z+fm(7Qcae_0=zlj<0~2F)s}a7tknTT`cdo_)g;9@CX6}Sx(tZ-vBXh9eV`-C^l3uT_&kk_ zy!QGr?i9qmGaJ`03`VTK^)eYd43pD#6!NwJr0B=zjQz5pDVIxqPspfGxc527cKuN} zM+02tzw?((Ojfsh0mh)!EsE8yz$@B*zv5LC{@~DSWie_CKtd_%3$Mw8a()p(IDD|g zE`aGjSXm`BggX|S0Iz8=DQwWq7Y>nH=l2gF6&gHY9=4{U@)*&>a5Lg$i6r`O!H}dD zW;VLr?c@ISTZz-X^w-r)NsJz*7Ik*4Ly0i!Bq{Zd;rF?m8fkO1OM@>WW%j&Gv#v`$ zQmZ$kLeIBScr38Jb@l%c_PQ|;xB~H7qh?jaoofQxl!Mou$divTfpW_5t{jt5n6rPK z!vRqg8v?Nc`M^e6lM(@2!!NA&BnKun1vVjc1z9YJv06oEUF=G;UtEZ%aSas1z8-O2 z9BC#xzszD?1bF!myHOXw5=A=9o9-@Lhm!h0YZ-|@A8@Y(+_Z-DK5aN{$p1>cump2t zD5Y<$oDGvcGH&@I&=`_@&z9%lM_#_W8iyXJa<&`Ydn;~#brX*PwN-j%3hf05d z4E%>Bj9t_c-iGDTJ%p5oMe%gVzvc6bd`PTb9cQF~$q=bA787VjPi04Chi`i>W<+{G zV&FRA7KPur^W&w!IseMOaI{i>RU}bnWQwl$BQA-{N7}-t4=-KVk!vbXQ}zLtKK~Vb zh}Ni+HS~8TjiAhC5SP%}5)++t1N`_`^O*%;^P^`Rj#KY=G1%z*MAySF&MiUH~wJ&BDU^kXcQH6%9!xbzqRA z*C;FT!ttCmLLmGAVU95En90d_(qX5~%fa`pstx}K4cq`D|L4WUM|^?pXIDSM7j{_` z3G3~Fb+5YFcta__mAzP+vqYM1(W%@8)d!*dz-)tf@tMWp!rn*|T0x9DwQmg`{~HF^ z(&{06L_~x$VO)QgY!}xSiz9L|mX(gredtzS?t3cy_RjmTIU(u5dB$Pw+b^CLxKo!Kal-ql57+p#JJ3zg*_!Lh#CTQlhLZaSdUpir$y9?7cH^D{5SFz4E4#R}~cZf9Y7m zo;9Cm&MV)C>%p+!bv-*M+$WJVT;|RqRPchoQ_7BbK-|yWM-<~FecpFY< z*+V%yqBEN@TuW|VvPKxu;wzn6PE#vLx(^m2Npl0_=R`(f{eE#>@hhO=C}MNbxWW_v z>i*?56p5poIt)%$`T(F>Fbvwm_u72fIj{*&-QjYl(EG&}&x2XCp-|gm&6LNw(*^~r z(;e^7)q{$HCsydP(lnZ{CMFoZw`Di*O0teoyeuOUSTp1qVs*`Z9<21;EeAe2nsvN~ zRC6*s$3cgHx807}TdF!K-J0iGN^SO{w>QZ;&Y$k3Kg?6j$YHFGxQg*a{%}-aq4xqy z&jBywOH07(H!X%N)*9k*pouLg-u)|*fP*&bSExgq7b56vts%pZKc$!0Wz)kTr{n^c zH0~1dFP!u<3h8{HY$Lt50id%$jqN@8k8{VALlSz2UVh`a-#R#>zHXSNNR|{7e9pN> z7TX5KSq#wFmVO-1xo)>HN)vR#Rlnv;&}%R75X^KT9xE{?m|>iz_BH-9O;l0+ZPl<= zgateSH#Dy&8cL!Z-sT5hq(D<^FoqY@mUzl=C-x$j>?y7nvAexvXwZ#MsHgqBZp zatbN4V_H3K-L2vU@+EGATIm6Ap`GU7lnAV|6g`8C(61y*zDel%2}VNAy1~`blPHN= zu~bPszDZI*Nw!P&qvtzvpA@&tGdJu;DIn1jLdX; z)t`xZwPI`TdB?s+nt}J71mU}hawwEbPnX$OL8-5nO5zHu%kT?MIW=*XjkB-H;p1>i zcVuPz(G&BP?D09Rzm-PH5sJ;n5|jQEen*(AWy!9%8%FrobT2yz?d&1r2KSS&4>U<6 zI`!cdm9dC1Hqn|R>+xX&B?|~3hd5zh)13!mfVsLczdYF0Z^iL|oZ=M%0c8`h0j{;h z%1hkP*~06j7+rI@eA;#HV5_3yPVSKp^*V2eP_Sfgqg3u-*%?R0LP3RyTYh<}z$74T zm;u}KQ$iP(LarIp;*m~l_iNZU>-f~@+~!>SGMv8xF)qs2Y$b}ymmJp+*51+kk=cjL zmrRQpnwbhoGj^9~t(5N((?x;Acs$~9zAnWpC^CsfbL2PPH_JB*;3Rr>5>gypdKu}@ z_u^!zU-oM)A~Rv>w@^Qe=A>t8Iv^I5(_hL|C*0994Dztje1-tP3-Ei}#z%jPDdt{8 zyj~NQD-NaTJp#iw;$eW^b71W?UD@s5BzgyHwZ@1vXRIB(t^Jc6R_Dv)Hs|F8qoLtu zkC$6KPc3aY4^Z{pf-Y8+AhHwBfE}WYF<334Vo!l}AXb%trV`AC8!T6My>xRvk#pm3 zHHM+JX=1+RLngN;k-3IQ<#A5MJ7DB2=>^LqDb1%kc#Q5A6%d%>IN;UIK4n-`2>D{q z6jHM}#0~z-%3!K9@Y#+aN0N<0nV7!}Yjdma*li{=yZCa;H1McT5{GWCXe?F`+{8IZy5ljQQS zrTFrqEl5LQ6y%wNh;`4Sr5J9RFfaH9Na!?n-MFD%$2Vk4(|tbc=g}P52_RgNSWcn3t)I333gCka0q_DoXC$EE|u?la)3Hi z^Oqsl%8F|h!WfxtA3&}E0KOg)%}(*;8p7JP~oIr7x~qr5ZS zt}-eG#D;|kb-q_a=YwMke!SFlTUXIIIyhgBr@r1$`M=v573zGUZ&Z;ovB#T+9BM0n zr7D53GV;cMPnitw@6~l#XLgD-r1|n4y?bO!UcEc(qc7(MCKr0=6j!>Gfu7UOSM}Wr zrxrvQMB^yRGbu2{3OLrjP=6`>V`nK;{YAu2$`B8FPF$7gZq2ZawtwRV0kK!LeuHJz zBRuR2nG8L&T7&sF(BmF^9-`K%l-a6BxnQhEsSCcMv@ca`7C+N|8~^)`NY6R>9&v-F zrSt9am3)7()aGkIp=6JF|$3I0`=vgS2}W>J>gIe0La)`lZ1P z{l;udc}QmIM(7D`(wZl?Lb}i=W9(rVd}caMm3YX@2^XEe7&6ov>SA_Ul!YAv^tDYe z*R}KK;n3W|(DgTksHFp3@6t-fBvNI)YrjgMY^JK*K9SzP;OKf3rVT zZIRx%tWtOEFkX+LaNh*i3kxphn^$o6AR{?)Vf=48wJF#hmJAL{4=%^PHvR5{s~IP{ zw@K5SuH&}_b#waDN@Dr*1#;8 zj3>L`zy2mj!ymgpko;mUZsF9%+di@q6&^JI&CNM|2-W!Zeqx=@JCWw~Na&^Xr+cBx zD~Z_rhQn8JeQezgl~_%EHY<}DHhMelQ2W>38M}*g^5Ct4+hNyYc-PQrKYdKg5LHHH z5W7c4sF^;~J5~Mpel;s1wg&NA+sZYw=yb=+oocgx@pdsA=k7k;S&^0Ye2PKV+jA=J z%kv8!s;L>%L)sb~z5JD`X-KkMJ5d1~ffCHpybzHPuu8Wkh9i;1AKMAU1s;ZClWgMl z9P`0tCm%NxKJ+&MOk+0dFd)syx<+DEDBOC1G?twC@TmJP@Pf+(*wj=;G#0iQZJ(iJ zhG-xA3G|5*R@}e@#7hh_*PQ0J_Ka#hcc~Q+8mb_($57A2Z^ikOt#!vf@PA|k3?1E5 z^UZ$&A+KqZAMh0`O@?fzgWeM%dCVoQ%|~*CFOh+?GLu=z8cs0Doi&=R*WpzS47aux zHba&$jRt-gFb4(L@D#uGjmM|c$++VCtQCqFUas=KKW6lql}beIi}Ay+xI^LtKc@0l zdkQ#o-z()ZN*r?{x*<KqloOmbT5w&V zwbjn3a$Q(Enfrp$2j4p_eha~MoJ&}&iUWxSZ!8q_P97wWkI`RGWaL1RonK|Uak^P; z{w86F#atZuy~}Jq{ejUdkdpr)fS;-)D&h^{m;kRv&q0P&gY>_Wn_t;WSnIeQ`eb z%#)mE*~XX(4i>^EwvF2`&wtc>49nS`qmL5rVz_@uPo?s)>dW#p*sb5eNQ$qmB5fE7 zIKEk*|9H&Y!}-D4T&BI9rH|YQxZHIugY!WQFWiyQn?n9k3;PL8)U< z#A$~V3iae6z(8e(o%*Jz6x-yjLA3G>j@cDD{8TQFa@~$UQzl;@bJcoH%=3~W6|DQs z(HWs+Dv4k7d(U{^^k~iOA&FEyEHm?ov{QGSJr>~ zNBu!tDZKyZ{}g5cj*I*BSypu7bHuIB>1sJ{JNP717@@1r>7Y4r23)bUfoFRm^)9*) zCp9u|gQ?d{lA>+D7QCSr-=sytp!RCmlefdPbI3o?<*$WGQBXkp!Cmif{c*L*AGg&b z?7DWdx+ZbqK6&wh=w7UbYfJvH%6U0zyA-;}t7CBq?(%dq3th6bFl7)PLYI4xVL;II zyHxo?4$HrM`P6?8Tvl|24X-t54n_i-h0-n0Sl27fDZZL8HpAEcQr6*yVHCb~N7E27 zmK=cCh>pD6WTW;ikgkvgiM7ROCf}QC3cT(BH$oGu-0t^8PgZ6MX?z=8Lz0ne4T4^V z-thAcyiPMh&#zu3J_ES$FBkO~$SuMt-s!u@48@57H?*$e8Pwbi2Yrp3CQGtR8@!yj zUk8vkyy#dDr0sf^D6wod7j5Ylf6w`wCmvcUyN^|w?dyUD_KL31 zE~V1>J!2e)z`E#xwN&7d0=DYa2DB6pQ4$wj;@8aSM@4AZA{vjr3qxAHqrY=7T1`94 z_r7;6x{PXo9hdnJ!N8{tBM9uaKE8=KN-T_n=P(rOra}Vi)`j2v%gIZ{7+g3|lAtj* zB}}a4stt3~a*NENyqPR5c(%njgkzR6v4J&RA53RN_zXRj1VRWa@ngnMMCvLZvQ@+s}}=U?P|DLxeem<(Nuv7p63NlkA7!CE10D3wO$!ANw9 zObXX`YL=R6%2TeGd1?xrLK$VEwP`qN7HPlo`MM}dK3I_H9Mzu;W}$)%JINEGUpF90 z#}mTOLB17SWhL}ZMRGTaFgmU`2O4g(>;@kprlF*Cp)kpy38(i>~14$R3s?6^?3 z(HgVQFov4jM7QWqadph`*vm$aIIXJNNcy|m2$G|ntBgb!GwWC48iMztD|o=(>;15q z{$%3Oyvm9@O`4JoB64cJ6IF%XU*;BiuoJW(Z#j^UH$l#9HR{Mm7GhSUp-f9TbS(>+ z=TBhELjbeJW#KE%-tr3Zh`nd{*Z|1O0F`(MTCf5%G2HfRAaIr0SmvO)Tb5xAR`)IS zDJQ*_aT_PknaBS3@{3I7may&O+zm8(y_ea0+%G2M5N-*A7TFy3Ev_pPhhj93^hy2p zsf~STscg0VHv6)-suJJ_HvfhYQrC_Zn#OPKnOTJx| zt$bef1E2v24uA^CoX;uvbNr#<^;$Bn%#1V#=IB2G9-e7lqg49ji0~i?uStqONO;%fa+^ReCL3RZjio@nXo^g1nNPbwp1HNQV$> z1@gTfZyF)87$l6~%5yxJnEQ+ie9+G%;f-}&?6HbOe(kPIzzE$iqX`vfok4&ai`W-d zwC99WD{QBt=6MXVD;D962#XX?i!3ihIshIg{q>fXgAMys=@kLkS%9d+mfwd@#_C~~ zWK@5#ngAyP8WOs%@7M-tVjQG={`OIT#6O?~USMV}Aqz>h#^!wFb!x$Ak5eY`gw_Il z+T)(XzI$10nIxlz0YQ2v4bhDugbSQ_y@s>>rHp1+Svi2@-tSsqlpIzzPTyUJ4&6Wg z8t%*#w>(z0UiMXQELXctsZ9~k5wCOwHVp$8E;=11PHAtA3;??YDwCu|jO0#YA&u$Y zH5r8Whl=eb)AhDqcB?eTs5~8M?tF{1{8~NvkvAAqv1XpE@W8WAi4NlSL<2eyn*gM< z`9H|9_I|T^m{J0!3b3`LzciFAtd2LRu7s*s_Jsb0!7S+S7aJc*lt;`*gA-fKO8ArY zhA?VR7)jaRX;6nU@n|8Tf?%{mBM3tZ{xr8|dm^KZpSP}F*K>^y1+c#*N_x*PnQV4j zHXXs6C)_oV)=7T8wRg}#7y$*Oxzi|WxACj3t`$g+Hqob;^h}z0MYNO*)*)W%TP2K^ z8+E9AzoFgl+*G|4FIloWVp$TG!&6mGHAR&+;NTh5J^p6y6{5nltCkJrWQ|oU6qW*h zPfOY$qZTp;a(A%n4fddVdJyiB=7!MR^#1%L6Aw9d{;jcxYG!qJqe2pMrVyVhg_AWH zCaVB55F%KKa5^A)lmMTPG=x(hh32&U*SA$xDMyd3{ZPxizi!QSz5K)*82;WGBaTay zHDeWU8ME{rnLTO@q8U-xW(Oe4ST5z)w)yoW?X}$W+~i-yIXAq7T_olt03# zG2Gu}eml^<1&ha=qIj=`nCg>Wm_0+Cwd6oS*LRkQkSgAw;gvpLKW`3noP`D1=r5(` zPz>bAt@<5_%*bgTP#IghY!XJ=NFJ98zDt@(K^*}B$ts!PZjYpvq%tq5kYKLcJ@r)h zpjGeWgspjG$}U5I3;E(wFu-T*ttBj99nkVSJy04B*>3M>M=4CJBW{W+wr zmo8Lbm?dVE#ijL><;n9dCt|#Od|9HFF4#}Y<2rV})IKejs~q4`MWlQNc41Kjp$r;F zAUY8dDHmc{hLF%=Kik+j1W{WEZP4aaE0T_9G2k3)50J+n4@!F~;6Mm#3~zA2!(uNW zD?3~9!k5Ezu$*P; z0Z-5cF&^e2ZT=G7;H2(U6=DL_gI^{}SNj?dg8|^Sxt0p`cq^jwVM;7!Xjm8d4}Ns& zKcd#kpeC&YrVPU?^63<(P>{Ui+6jp;gFDhm^1pecu3C8b+kR_Tdy{IMWKB?1fmzJA zRrWbi2iAWJf`OWX5*Mgp>n7+MnqV+8M&DPEmPa?H%ZJ7^zBIqoh9?*U3kCchz3T<( z{o=DphBZPs)&O&+xL<}PTrSUw@BBJF-j`J7B@go*T)LO-j{0ZZpPSq}+fSEg4@}1L zZ8|B8jgb2gyHh2Popw{~EdhN#pk1m(0#ygca8F4f!i2@Brzr~+t!U)sEME!yD(7c} zHIM`C5Sn4OHuPfASSw^KEK{5G&ZKT-udhQ|yIrv`02n2nEE6 zJaaj=cYtkxDp%*vn;v7!mw#(ERHUI8&%?XwWWwd^?J-?@A*9kw-cvd2{8XJT$}8H$!5 z(CR70IjoaC>DD~Sdvbq8(GW$Ab&QVqs>5qM-s&(pM zPqqe9RFj;kYc-8w?^V+V%7{u54k`7Ve?+hh+r~`oRnKXVB3p_X{b-SP*}HtZ{G!PA zYJH&DPN4_-LI0Qq?XoMhMUDvc#~1H5z9hRdmx!A;m8^?6m~Y-#b1hlP<)Eq8U>?U? zbrG~tojEl{f3~|C?x{5NaaOUOJ;yJ2hOz;`4;z|OgBGHrpdB>_F3<8WI*%OHZMd3j zy2oRMzZ)xk)fy^F3L0R20hg0paZ$rdG{I|!)H%|BW%n4OCnFJO{@5hlKEt@{ZF)bo zm3&_P62l@ToZ9vsZl7rqgY|j&J=M}0aCXo$QWJ`uVjhB(*uS+H^UDM}9(ER4+JpW&Q9Bny4m*?YQ~L|5@IZr?xwVdan$7a%9{gv7nROdai@`14 zG+-^|Z})4_OtE~I#aE~AS0(LCtNXU(!?C{8pLWYD$$@TV2HsDljoVJZ)B}69$9)?5 ziNy=R_Yv5a^;THLpxNLO zy{q2MTR&jkfAcY;d3}8rjNG3Cyi-4GYlGzJkoOXtWoKd{@;N{&Tdn@M?Y}BW7UX`* zGLMt1)|BC45~;O zYEbYSZ2{~+yv)QlkAVg?M_pjZ-!GCpjqn>zMaydQ%*lyE0`=2E_1o>1!sJ380i_My zB})!KN8vNL^sR*WbvXhjt`v!TIljZl+nd*r_Ksa?e3=XQf1O-aR2;mzg<{2Bixzj6 z!AsHN?hb=%ahKw5#bL1GFgQgEgBN$VL0hCa#pd##a~|%x_wD3M@@21YV9+3{YvzBcTXYf<5#f zw@nazWj_=%=H(>O2QSy@P=u8`{8`_bk}x;!P%>I-jlqoScuG}=Yua=oBl+#ICF~F+ znS@$6yzx^4vw5R$n+4Gep@PYrOxf{U!b#0SW0W|~0Cd`pgH+d9 zHF2Y}rq%oV6;IeW|n{J_U0dOcSD`AWh!D^dDYCb*c8^ladlx6e8v=7}U zpGCJ-DErivDK7O9PLYZ!KW$fh`Bl7Ghke)_A2^fB_mP3$@dtVOu4PdD;J9^%pt#r7 z9aUCSF@MAA8f69~*msmp;gomRMsbEyIuir9mRT;mS7@#2U>)4Yq%WOoTL5&hULy8K z>kDnMX|3fn-RNuw(0Sen*8dtIY+Cz>5U7I^6VXeO{2jLdd$q><>Xl&1Vu0p7fs&1| z$PbIJ`zdYzEI~m!7&#%G%tX&h5*}N*sl~^UqaR>nhkNBS8AZM}wh=ZX zrjv;)`|w%_y2#qZAId_YsddV+wJ2*du<$W+5t&FUFZk{rEi3ntr&SUnt|%1C=Jd5_ ze_CF4u9zeMdmT+erqTwwyjqRMS zXmyK_a6D!#O9m>R+q5u*q)F~4F&iq;iKuj7YDjg=gR!K0M@3p&cI+#a>do7bc+EFf zp}{hAArKj;X%SHZ6D9Rz4`|SSmahv#VAGy11cXaX)Mt;d8M1&}1|-hAvZVNiXA6o< z6cfy5!JL;QBlt}Ru*oAMLs~|FY5`ga72TPzIc9tZFpU~37kdem-*}k9(J*PIpJJ^J zsSU)i+YsOesy~Wy%t%w6zMqz(_qC;@@v>^vIJuyqXhxU}irkNHR{VlcZHy_J-_{`! z{(i{Z^`o?+;-T}NH3_eik^=@7nJ{&KH>NC>I8$+d06Es1h|Pqo^o{1;)^}_EW(|57 zyJj+53*y)m6e5F~AR#?Ia_O;t0+cCf@_;lqd9@>cWM%$cNkbgsDZ7Cp`OsmBv5a=TQADA0^??l-fO1^j=fqzmv>$Ik zsF<+b%&B*pk!HX9Wifnau{En>S<+**we#g+tIq++C!fFshl@IZ%_AS&j%yNkj=w#j zV1zL4>BCBv?8m!_A8vU5w_+jRJAUa*K$Sh=>u;o)@%gZm(Hl#>>H9yA=VDeWW`zerl}&-1icy~%Cs2WRZT1JiK;)SUZQ>Vwq?HIZ#4y{7%`Ht@uU9-2mT?U8mz zC94OXy-c}dfYYZ@TnK!7OnYwUnU#=S)k-Tj1Py{Y_*g>!$igUn_8Hg?Yd`YAZ|zO)ET;+xY)CD|&4M8hSGJ5rwlLozN)`xJkphmTWhnkH7R zp|GN?86tSl;KdX2OoQGhRYBxMNYX@MpSn5D7F}DSPf1*q`Ib#*a4Jg@qHh z`7qyVkKaMCcRemWNY651aHvi)Dt;N!*0nRH%gv3csv7=?{>O*|2rMzztJ4FC53iHh~I24S*ZN8u3B45qTO2k zV#a%2-hio? zIFEIohf8EYWRDv0QIK6XdRv9JD+t>+-4?eH^&08HLs(EaIj}>ufdPG-&FK`ox(hP) zSX*Zqbos^?mzT7`kU=2R(_sFto#;e1-jS!3{wMk2OMcoJ>~6zIk%mvT-Jh7Kvbt$B z8|rO?J^g2Xr^H3M{Vu`P<)l*|Vr*E1X<+$j`p8kgt6ScMbN952xjmdzc;`UuBmU19zH1 zdQm<7)we%}!ruutZS5wmd;bx?EJ416t*z8Mi{3Jr!!9It;_W3U$&c}W?2NupfPAbz zaEvS>tF=;!K5Ao~-wL{`AaKW`2vX9W!v);+3Ne%UcVx zb;L=lm)%rYtA=x^cwa@f^IsmG_fHBMF!yLCJ+BFOHR>7stJd)?=Nxz%8iP-Ve6eSZD~t{%G|HvhpWj*; za3=~ov&HyCmD2vW$N+mUE$10$G3&6M?QY&iR^o`>Vh|lw=YCxOOE?w`X@(U<9Y7~6 z)Fcq!<`YOUk`P*#e17Azvnu6Onjf2;iYsll!t!`CbngkGOAaC^m4^RW((d+S-n)L~ zTM!mauKzQ?74*h_S1@6)A_2|}RmHj8#A&~vV*Vg@W*Y<^Q_2%(ZD@hdlKyCe zl)xetJ8!pZ#}qf;Cj>*iNq*>30qx?euIoKYV8uSrbVuX;KB~UnQ#KvGL+w`BNcSS1 z;U~2{1T}vKDOh?GjZqA^@8P+OEsh={qVYmQ$vY&4jYp=IpNGGesr;aBWx6o41JoSQ z(}BH4cv2?sB~?BFm6;E1bvk7aC#n*P%Oi?dG5L^1-hlm5(P&r2+cnG+!{_XV`;L8< zl|p)Pedy^d3gl4Zq{eg%;hsN&VW1 z*YjjpggMwY-|~3Adr8jW^cl@Ov{4xMvHHP;dHlW{U@^uuI}B#!zEBT+oebadmu;(T zo?I5REG^zcKLB?tC^&z^j$_l$2Lu>djULQa(#{(k8C0@jcH@Y5plQC>XSdZR<%2Fn zC1CnY9?x1zI@i^uFuX5uMtLaq!#%??TkQR2I!ifI;x}j8 zfr`BP^Q6sA8vDu}yITqBe`9jn(s4p+U@XAi4YXGwT!~ej6K_%!Fo)U1FJx5?IX7s? znI|z&$~=$$T+LNGw@LY9(K6|S?R%;K9(2@!slJPxmJQWG-*CpPI!DGkfnTM3=U`@k zo*N7*koGrw`pli4^pJpjgSMLFVm&}>!aSM4cPn7hzsL14QkK>UK(EW*q=T~B>6G2r z3kc0PU=Gmf_i1!^$IwY;XsZc*z39uQZd1T0?3v{XK|jR#Tw@inoudHrzw!~8x`ZUL zP>9mhb4GJ95$7l35USY0dK*R}JR4u>ysHdTTaV{r`q%*N4gv7}Dp8PMMD8}ve;U>< zz?5tAj*Jp>e1)7Dm#5|^+uIQ)R zX62|+|J^j_h#O};zES66?fadp5IKr-?2tmw=@pHfATcp)iM6Rfhw?q^hF;g%B>Ngy zio;8u$*OB7`R;LZ8jGhZ+?gbNu(sYscLxZv$G)#thMhWlfXW2Q$W_rJ(Q!NDXH0+x zQ3s->rPUy=JY3Vfy|$uMz(uPW}@g0hNlv$ z8ijAn!zVyZm6Y}Z3dOh3D#DU@xDFGReL@V#ku=QZMao^QT&DAIy!9xSy^UP-`SW&!tYS7JG zFuK6m-6-0VSp-+>X2;maXQ{4IlvcA2;7P8*nSegnv|P;nf$F9NvbhM?*;a6o)S^Gb z(#qjN-*PB$lw~&sFU;|DeLP1Jbw(%3@f$Qif%2~O;`X-ZWzTE(*kP+j%s0<2)Gc{o zZK-afhs+SDT!8Ina4zgiAp9*+$_7H7)cTEKJW8+e^gJKxMz$6cypGY^89fs|HazKi z9n3p~+HR|@$_yMOa9sUnF;{1K)uoFj5JlS{O;LE*{bHusUdI3Tf@H8^QTqikAog%~ zKpdW@gb&u4i17=8{|9yEsYL~NCnUb3#Jq@Qp#7zhik~?7U0OP-<_c7yiHiuw$`g5h z4Dk+W4~Sojj=p;}luTuL6Lg+6F>9i|YRt#X8cuo(eUrk>Z>~;aJ7ZEaCnWA`MdBc) zfcc&Z3TO&v%@gFl5^ijq;B^ zvz8RN(2l6Y91W9g(>MrZChD2F_&#rCv~!t_YmXK2dn;Sfp`KiR*b4t{fjQf3Q%`r#62E zj5SJx>6Fh)rVp`o2&;!MR!DuBI_q1wKrBVwev-|v@UfT;AjKp)rCR(I^k*jgDeg(( zdIc?W4ny#lvCc_WrNwMjR|zJNNMLrso)T%|FFxc4pSXieYJ+Job9`0RJB;*H!b0G7 zyjcJul}ATXgRQD@Yuqc@Nx`3oT8^GKT7Y2wB1^J~i?05JS~|{5gv0O!nY8;jhq0iY zVPoNDo!<0;UZgQ{97H7O8$7r_f}$GyC*2ad(Cb5O_SsS6e2xlbCFI@169mKacNBKf zncO?#D0m>Z?KHU#0TyrHUQLXd?I=E6L`*jy4f(hrAVIealGr`&NqObgCPsaV$ z8;05!V_^4BID!xGSMV_+$cnGE^*&HvV`wNmYWa_4B{2+)8oakTZumHz++1AiUv>v2 z#nF>*L#C+#6)*VlrjjSHLTcbM41+%nJ9?1D{^dNxjG)t8k0`ncWIu@OM^XynqfH0G z=WwG`Md9|NH0e)Y7u}|NWi1mh^%BJSW&Nd4yG7L! zA@u}#ogp?Nh4ArWVO%kyr}loh$H1|nzQ_RWz(EfYHvCCq4=quN)z(Gd%sNZ1qRFGv z^hc>BnG`qrT+|>4Uw)fXDcX!5DHZN5M4oHh9*!Q7CqcvjL}A1_)JxPVR25u2+)p?i^lS|4 zjQzB!bd8Ey${wkDsmttcR2Kpl#CSw_%6N}-o^&?yFDaL)RVk|sp31*snxmUTn+rX1 zuLX`#W=*Z`t%|L_j&!B*r;5=rQZLcp$!;nKg+9Uml|yqxGeC1j^F_la5N8H5Q>wdb z2p1WZcd5uoTc?ikYU3_oEdZ)=wYDl{Dm^PsHT{bw%L~eaR3K8cGL})_vJVJrMQa6D zNmp~5gOA&f#-}&RAC)+jT~aqW16dJJ!<{1SBRwNC-+@s#0J0xpc8U*({ev?ecGPiyM}y+{LPI^Pz?Ji3a8#5efn?b(KWc-fBU|^ znzO>c4x)cqC;rQm)MvF;V?w20k|d9a4=;gCLFjI~FAkIXegCKr4lG7?rbLS=Ln@|L z3$L)>=Fje6xLl#+7Nq=-S)MTw-AEsaotO9R?|`NzO}OzLB(ed{M5IYv+ZmE2)-yjn z2;LdNB6l201nn}Usb78XPvsv(=a!oOv=Mt%G*z0SZdP*I7d0QUxQDKO-T~4G=ztAc z@B5-Vu`Zg*ttfNbRp&NiZ?^jV+^pKthCKh^v*imA8R6#*MAthXKqK*C3<_ro+!3&|sV3VO#qfx35<~sF#wVm#wXr zv7ndFub0-Mm+PsQd81c|xtyG^oTa>+{`$UVUrwz(!b9^**P7>RzFx_3TK;;vTtKm$ zGI}yV@QugpOa4lP@k+wRO1RicT=z;;;7ZanAOryr9S->N5fBdngwX{r(}c7_!*5CkfA>g#46{`oCAdW=8fv-O$1Et7)?S0IJTuYb}cw|G&rE{b=#ln zcJ1qS4CYi+WlZDI*ue}(LFN#t^cb$&^Ceg#i;iA!~bT6jrXc!gwoNoab7xphgg zb%h{ti7#=5-h273_iFgwj`wgXy8!hHIC13FsTn2m{qdX#eajU}YW!4kITQvWO?tT;Vf8g(x{~xTU8MmMO%erSx?CP6!SO0-5{u$k4 zCf4#NV_{_?ECrJF}4UgOzZ`I+?ZFg9Uc||hEIS~1iw|&Yk-GO)NhbQ mX4Rts + + + + + + USB IC ؼ V1.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + ţ + 룺 + +
    + +
    +
    + +
    + +
    +

    + ʾ

    +

    +     1бǰע IcCardReader ؼע᷽Ϊʼ->С->롰regsvr32 + ***\IcCardReader.ocx->ȷС***Ϊؼ·

    +

    +     2IEInternet 趨 ActiveX ؼ

    +

    +     3ڷбҳIEInternet 趨ַΪվ㣬ҳȨбؿؼ

    + + diff --git a/src/main/webapp/WEB-INF/views/src/img/logo.png b/src/main/webapp/WEB-INF/views/src/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..32af08f2b5ded4d5321815002fa83312b9220965 GIT binary patch literal 5278 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 EAHN$8j{pDw literal 0 HcmV?d00001 diff --git a/src/main/webapp/WEB-INF/views/src/index.html b/src/main/webapp/WEB-INF/views/src/index.html new file mode 100644 index 0000000..2dcd432 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/index.html @@ -0,0 +1,173 @@ + + + + + + + SmartAdmin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/js/app.min.js b/src/main/webapp/WEB-INF/views/src/js/app.min.js new file mode 100644 index 0000000..7e9430a --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/app.min.js @@ -0,0 +1,29 @@ +/* ______________________________________ + ________| |_______ + \ | SmartAdmin WebApp | / + \ | Copyright © 2014 MyOrange | / + / |______________________________________| \ + /__________) (_________\ + + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * ======================================================================= + * SmartAdmin is FULLY owned and LICENSED by MYORANGE INC. + * This script may NOT be RESOLD or REDISTRUBUTED under any + * circumstances, and is only to be used with this purchased + * copy of SmartAdmin Template. + * ======================================================================= + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * ======================================================================= + * original filename: app.js + * filesize: 50,499 bytes + * author: Sunny (@bootstraphunt) + * email: info@myorange.ca + */ + +$.throttle_delay=350;$.menu_speed=235;$.navAsAjax=true;$.enableJarvisWidgets=true;$.enableMobileWidgets=false;$.fastClick=false;$.calc_navbar_height=function(){var a=null;if($("#header").length){a=$("#header").height()}if(a===null){a=$('').height()}if(a===null){return 49}return a};$.navbar_height=$.calc_navbar_height();$.root_=$("body");$.left_panel=$("#left-panel");$.shortcut_dropdown=$("#shortcut");$.bread_crumb=$("#ribbon ol.breadcrumb");$.intervalArr=new Array();var $topmenu=false;$.device=null;var ismobile=(/iphone|ipad|ipod|android|blackberry|mini|windows\sce|palm/i.test(navigator.userAgent.toLowerCase()));if(!ismobile){$.root_.addClass("desktop-detected");$.device="desktop"}else{$.root_.addClass("mobile-detected");$.device="mobile";if($.fastClick){$.root_.addClass("needsclick");FastClick.attach(document.body)}}if($("body").hasClass("menu-on-top")||localStorage.getItem("sm-setmenu")=="top"){$topmenu=true;$("body").addClass("menu-on-top")}jQuery(document).ready(function(){if($("[rel=tooltip]").length){$("[rel=tooltip]").tooltip()}$(document).mouseup(function(a){if(!$(".ajax-dropdown").is(a.target)&&$(".ajax-dropdown").has(a.target).length===0){$(".ajax-dropdown").fadeOut(150);$(".ajax-dropdown").prev().removeClass("active")}});$("button[data-btn-loading]").on("click",function(){var a=$(this);a.button("loading");setTimeout(function(){a.button("reset")},3000)})});(function(g,i,c){var a=g([]),e=g.resize=g.extend(g.resize,{}),j,l="setTimeout",k="resize",d=k+"-special-event",b="delay",f="throttleWindow";e[b]=g.throttle_delay;e[f]=true;g.event.special[k]={setup:function(){if(!e[f]&&this[l]){return false}var m=g(this);a=a.add(m);try{g.data(this,d,{w:m.width(),h:m.height()})}catch(n){g.data(this,d,{w:m.width,h:m.height})}if(a.length===1){h()}},teardown:function(){if(!e[f]&&this[l]){return false}var m=g(this);a=a.not(m);m.removeData(d);if(!a.length){clearTimeout(j)}},add:function(m){if(!e[f]&&this[l]){return false}var o;function n(t,p,q){var r=g(this),s=g.data(this,d);s.w=p!==c?p:r.width();s.h=q!==c?q:r.height();o.apply(this,arguments)}if(g.isFunction(m)){o=m;return n}else{o=m.handler;m.handler=n}}};function h(){j=i[l](function(){a.each(function(){var n;var m;var o=g(this),p=g.data(this,d);try{n=o.width()}catch(q){n=o.width}try{m=o.height()}catch(q){m=o.height}if(n!==p.w||m!==p.h){o.trigger(k,[p.w=n,p.h=m])}});h()},e[b])}})(jQuery,this);$("#main").resize(function(){check_if_mobile_width()});function check_if_mobile_width(){if($(window).width()<979){$.root_.addClass("mobile-view-activated");$.root_.removeClass("minified")}else{if($.root_.hasClass("mobile-view-activated")){$.root_.removeClass("mobile-view-activated")}}}var ie=(function(){var c,a=3,d=document.createElement("div"),b=d.getElementsByTagName("i");while(d.innerHTML="",b[0]){}return a>4?a:c}());$.fn.extend({jarvismenu:function(a){var d={accordion:"true",speed:200,closedSign:"[+]",openedSign:"[-]"};var b=$.extend(d,a);var c=$(this);c.find("li").each(function(){if($(this).find("ul").size()!==0){$(this).find("a:first").append(""+b.closedSign+"");if($(this).find("a:first").attr("href")=="#"){$(this).find("a:first").click(function(){return false})}}});c.find("li.active").each(function(){$(this).parents("ul").slideDown(b.speed);$(this).parents("ul").parent("li").find("b:first").html(b.openedSign);$(this).parents("ul").parent("li").addClass("open")});c.find("li a").click(function(){if($(this).parent().find("ul").size()!==0){if(b.accordion){if(!$(this).parent().find("ul").is(":visible")){parents=$(this).parent().parents("ul");visible=c.find("ul:visible");visible.each(function(e){var f=true;parents.each(function(g){if(parents[g]==visible[e]){f=false;return false}});if(f){if($(this).parent().find("ul")!=visible[e]){$(visible[e]).slideUp(b.speed,function(){$(this).parent("li").find("b:first").html(b.closedSign);$(this).parent("li").removeClass("open")})}}})}}if($(this).parent().find("ul:first").is(":visible")&&!$(this).parent().find("ul:first").hasClass("active")){$(this).parent().find("ul:first").slideUp(b.speed,function(){$(this).parent("li").removeClass("open");$(this).parent("li").find("b:first").delay(b.speed).html(b.closedSign)})}else{$(this).parent().find("ul:first").slideDown(b.speed,function(){$(this).parent("li").addClass("open");$(this).parent("li").find("b:first").delay(b.speed).html(b.openedSign)})}}})}});jQuery.fn.doesExist=function(){return jQuery(this).length>0};function runAllForms(){if($.fn.slider){$(".slider").slider()}if($.fn.select2){$(".select2").each(function(){var b=$(this);var a=b.attr("data-select-width")||"100%";b.select2({allowClear:true,width:a})})}if($.fn.mask){$("[data-mask]").each(function(){var c=$(this);var a=c.attr("data-mask")||"error...",b=c.attr("data-mask-placeholder")||"X";c.mask(a,{placeholder:b})})}if($.fn.autocomplete){$("[data-autocomplete]").each(function(){var b=$(this);var a=b.data("autocomplete")||["The","Quick","Brown","Fox","Jumps","Over","Three","Lazy","Dogs"];b.autocomplete({source:a})})}if($.fn.datepicker){$(".datepicker").each(function(){var b=$(this);var a=b.attr("data-dateformat")||"dd.mm.yy";b.datepicker({dateFormat:a,prevText:'',nextText:''})})}}function runAllCharts(){if($.fn.sparkline){var D,y,ar,t,E,al,h,Q,U,an,J,W,ak,k,Z,o,x,N,R,aa,P,j,a,f,r,av,am,ae,ao,H,M,F,p,I,b,i,O,g,G,l,T,n,c,aj,w,K,V,S,au,C,m,L,z,ag,v,at,e,d,u,s,af,ac,Y,X,aq,ai,ap,ah,ad,q,ab,B,A;$(".sparkline").each(function(){var ax=$(this);var aw=ax.data("sparkline-type")||"bar";if(aw=="bar"){D=ax.data("sparkline-bar-color")||ax.css("color")||"#0000f0";y=ax.data("sparkline-height")||"26px";ar=ax.data("sparkline-barwidth")||5;t=ax.data("sparkline-barspacing")||2;E=ax.data("sparkline-negbar-color")||"#A90329";al=ax.data("sparkline-barstacked-color")||["#A90329","#0099c6","#98AA56","#da532c","#4490B1","#6E9461","#990099","#B4CAD3"];ax.sparkline("html",{barColor:D,type:aw,height:y,barWidth:ar,barSpacing:t,stackedBarColor:al,negBarColor:E,zeroAxis:"false"})}if(aw=="line"){y=ax.data("sparkline-height")||"20px";v=ax.data("sparkline-width")||"90px";h=ax.data("sparkline-line-color")||ax.css("color")||"#0000f0";Q=ax.data("sparkline-line-width")||1;U=ax.data("fill-color")||"#c0d0f0";an=ax.data("sparkline-spot-color")||"#f08000";J=ax.data("sparkline-minspot-color")||"#ed1c24";W=ax.data("sparkline-maxspot-color")||"#f08000";ak=ax.data("sparkline-highlightspot-color")||"#50f050";k=ax.data("sparkline-highlightline-color")||"f02020";Z=ax.data("sparkline-spotradius")||1.5;thisChartMinYRange=ax.data("sparkline-min-y")||"undefined";thisChartMaxYRange=ax.data("sparkline-max-y")||"undefined";thisChartMinXRange=ax.data("sparkline-min-x")||"undefined";thisChartMaxXRange=ax.data("sparkline-max-x")||"undefined";thisMinNormValue=ax.data("min-val")||"undefined";thisMaxNormValue=ax.data("max-val")||"undefined";thisNormColor=ax.data("norm-color")||"#c0c0c0";thisDrawNormalOnTop=ax.data("draw-normal")||false;ax.sparkline("html",{type:"line",width:v,height:y,lineWidth:Q,lineColor:h,fillColor:U,spotColor:an,minSpotColor:J,maxSpotColor:W,highlightSpotColor:ak,highlightLineColor:k,spotRadius:Z,chartRangeMin:thisChartMinYRange,chartRangeMax:thisChartMaxYRange,chartRangeMinX:thisChartMinXRange,chartRangeMaxX:thisChartMaxXRange,normalRangeMin:thisMinNormValue,normalRangeMax:thisMaxNormValue,normalRangeColor:thisNormColor,drawNormalOnTop:thisDrawNormalOnTop})}if(aw=="pie"){o=ax.data("sparkline-piecolor")||["#B4CAD3","#4490B1","#98AA56","#da532c","#6E9461","#0099c6","#990099","#717D8A"];x=ax.data("sparkline-piesize")||90;N=ax.data("border-color")||"#45494C";R=ax.data("sparkline-offset")||0;ax.sparkline("html",{type:"pie",width:x,height:x,tooltipFormat:' ({{percent.1}}%)',sliceColors:o,borderWidth:1,offset:R,borderColor:N})}if(aw=="box"){aa=ax.data("sparkline-width")||"auto";P=ax.data("sparkline-height")||"auto";j=ax.data("sparkline-boxraw")||false;a=ax.data("sparkline-targetval")||"undefined";f=ax.data("sparkline-min")||"undefined";r=ax.data("sparkline-max")||"undefined";av=ax.data("sparkline-showoutlier")||true;am=ax.data("sparkline-outlier-iqr")||1.5;ae=ax.data("sparkline-spotradius")||1.5;ao=ax.css("color")||"#000000";H=ax.data("fill-color")||"#c0d0f0";M=ax.data("sparkline-whis-color")||"#000000";F=ax.data("sparkline-outline-color")||"#303030";p=ax.data("sparkline-outlinefill-color")||"#f0f0f0";I=ax.data("sparkline-outlinemedian-color")||"#f00000";b=ax.data("sparkline-outlinetarget-color")||"#40a020";ax.sparkline("html",{type:"box",width:aa,height:P,raw:j,target:a,minValue:f,maxValue:r,showOutliers:av,outlierIQR:am,spotRadius:ae,boxLineColor:ao,boxFillColor:H,whiskerColor:M,outlierLineColor:F,outlierFillColor:p,medianColor:I,targetColor:b})}if(aw=="bullet"){var ay=ax.data("sparkline-height")||"auto";O=ax.data("sparkline-width")||2;g=ax.data("sparkline-bullet-color")||"#ed1c24";G=ax.data("sparkline-performance-color")||"#3030f0";l=ax.data("sparkline-bulletrange-color")||["#d3dafe","#a8b6ff","#7f94ff"];ax.sparkline("html",{type:"bullet",height:ay,targetWidth:O,targetColor:g,performanceColor:G,rangeColors:l})}if(aw=="discrete"){T=ax.data("sparkline-height")||26;n=ax.data("sparkline-width")||50;c=ax.css("color");aj=ax.data("sparkline-line-height")||5;w=ax.data("sparkline-threshold")||"undefined";K=ax.data("sparkline-threshold-color")||"#ed1c24";ax.sparkline("html",{type:"discrete",width:n,height:T,lineColor:c,lineHeight:aj,thresholdValue:w,thresholdColor:K})}if(aw=="tristate"){V=ax.data("sparkline-height")||26;S=ax.data("sparkline-posbar-color")||"#60f060";au=ax.data("sparkline-negbar-color")||"#f04040";C=ax.data("sparkline-zerobar-color")||"#909090";m=ax.data("sparkline-barwidth")||5;L=ax.data("sparkline-barspacing")||2;z=ax.data("sparkline-zeroaxis")||false;ax.sparkline("html",{type:"tristate",height:V,posBarColor:ag,negBarColor:au,zeroBarColor:C,barWidth:m,barSpacing:L,zeroAxis:z})}if(aw=="compositebar"){y=ax.data("sparkline-height")||"20px";v=ax.data("sparkline-width")||"100%";ar=ax.data("sparkline-barwidth")||3;Q=ax.data("sparkline-line-width")||1;h=ax.data("sparkline-color-top")||"#ed1c24";ag=ax.data("sparkline-color-bottom")||"#333333";ax.sparkline(ax.data("sparkline-bar-val"),{type:"bar",width:v,height:y,barColor:ag,barWidth:ar});ax.sparkline(ax.data("sparkline-line-val"),{width:v,height:y,lineColor:h,lineWidth:Q,composite:true,fillColor:false})}if(aw=="compositeline"){y=ax.data("sparkline-height")||"20px";v=ax.data("sparkline-width")||"90px";at=ax.data("sparkline-bar-val");e=ax.data("sparkline-bar-val-spots-top")||null;d=ax.data("sparkline-bar-val-spots-bottom")||null;u=ax.data("sparkline-line-width-top")||1;s=ax.data("sparkline-line-width-bottom")||1;af=ax.data("sparkline-color-top")||"#333333";ac=ax.data("sparkline-color-bottom")||"#ed1c24";Y=ax.data("sparkline-spotradius-top")||1.5;X=ax.data("sparkline-spotradius-bottom")||Y;an=ax.data("sparkline-spot-color")||"#f08000";aq=ax.data("sparkline-minspot-color-top")||"#ed1c24";ai=ax.data("sparkline-maxspot-color-top")||"#f08000";ap=ax.data("sparkline-minspot-color-bottom")||aq;ah=ax.data("sparkline-maxspot-color-bottom")||ai;ad=ax.data("sparkline-highlightspot-color-top")||"#50f050";q=ax.data("sparkline-highlightline-color-top")||"#f02020";ab=ax.data("sparkline-highlightspot-color-bottom")||ad;thisHighlightLineColor2=ax.data("sparkline-highlightline-color-bottom")||q;B=ax.data("sparkline-fillcolor-top")||"transparent";A=ax.data("sparkline-fillcolor-bottom")||"transparent";ax.sparkline(at,{type:"line",spotRadius:Y,spotColor:an,minSpotColor:aq,maxSpotColor:ai,highlightSpotColor:ad,highlightLineColor:q,valueSpots:e,lineWidth:u,width:v,height:y,lineColor:af,fillColor:B});ax.sparkline(ax.data("sparkline-line-val"),{type:"line",spotRadius:X,spotColor:an,minSpotColor:ap,maxSpotColor:ah,highlightSpotColor:ab,highlightLineColor:thisHighlightLineColor2,valueSpots:d,lineWidth:s,width:v,height:y,lineColor:ac,composite:true,fillColor:A})}})}if($.fn.easyPieChart){$(".easy-pie-chart").each(function(){var ay=$(this);var aw=ay.css("color")||ay.data("pie-color"),az=ay.data("pie-track-color")||"#eeeeee",ax=parseInt(ay.data("pie-size"))||25;ay.easyPieChart({barColor:aw,trackColor:az,scaleColor:false,lineCap:"butt",lineWidth:parseInt(ax/8.5),animate:1500,rotate:-90,size:ax,onStep:function(aA){this.$el.find("span").text(~~aA)}})})}}function setup_widgets_desktop(){if($.fn.jarvisWidgets&&$.enableJarvisWidgets){$("#widget-grid").jarvisWidgets({grid:"article",widgets:".jarviswidget",localStorage:true,deleteSettingsKey:"#deletesettingskey-options",settingsKeyLabel:"Reset settings?",deletePositionKey:"#deletepositionkey-options",positionKeyLabel:"Reset position?",sortable:true,buttonsHidden:false,toggleButton:true,toggleClass:"fa fa-minus | fa fa-plus",toggleSpeed:200,onToggle:function(){},deleteButton:true,deleteClass:"fa fa-times",deleteSpeed:200,onDelete:function(){},editButton:true,editPlaceholder:".jarviswidget-editbox",editClass:"fa fa-cog | fa fa-save",editSpeed:200,onEdit:function(){},colorButton:true,fullscreenButton:true,fullscreenClass:"fa fa-expand | fa fa-compress",fullscreenDiff:3,onFullscreen:function(){},customButton:false,customClass:"folder-10 | next-10",customStart:function(){alert("Hello you, this is a custom button...")},customEnd:function(){alert("bye, till next time...")},buttonOrder:"%refresh% %custom% %edit% %toggle% %fullscreen% %delete%",opacity:1,dragHandle:"> header",placeholderClass:"jarviswidget-placeholder",indicator:true,indicatorTime:600,ajax:true,timestampPlaceholder:".jarviswidget-timestamp",timestampFormat:"Last update: %m%/%d%/%y% %h%:%i%:%s%",refreshButton:true,refreshButtonClass:"fa fa-refresh",labelError:"Sorry but there was a error:",labelUpdated:"Last Update:",labelRefresh:"Refresh",labelDelete:"Delete widget:",afterLoad:function(){},rtl:false,onChange:function(){},onSave:function(){},ajaxnav:$.navAsAjax})}}function setup_widgets_mobile(){if($.enableMobileWidgets&&$.enableJarvisWidgets){setup_widgets_desktop()}}if($.navAsAjax||$(".google_maps")){var gMapsLoaded=false;window.gMapsCallback=function(){gMapsLoaded=true;$(window).trigger("gMapsLoaded")};window.loadGoogleMaps=function(){if(gMapsLoaded){return window.gMapsCallback()}var a=document.createElement("script");a.setAttribute("type","text/javascript");a.setAttribute("src","http://maps.google.com/maps/api/js?sensor=false&callback=gMapsCallback");(document.getElementsByTagName("head")[0]||document.documentElement).appendChild(a)}}var jsArray={};function loadScript(c,d){if(!jsArray[c]){jsArray[c]=true;var a=document.getElementsByTagName("body")[0];var b=document.createElement("script");b.type="text/javascript";b.src=c;b.onload=d;a.appendChild(b)}else{if(d){d()}}}function loadURL(b,a){$.ajax({type:"GET",url:b,dataType:"html",cache:true,beforeSend:function(){if($.navAsAjax&&$(".google_maps")[0]&&(a[0]==$("#content")[0])){var e=$(".google_maps"),d=0;e.each(function(){d++;var f=document.getElementById(this.id);if(d==e.length+1){}else{if(f){f.parentNode.removeChild(f)}}})}if($.navAsAjax&&$(".dataTables_wrapper")[0]&&(a[0]==$("#content")[0])){var c=$.fn.dataTable.fnTables(true);$(c).each(function(){$(this).dataTable().fnDestroy()})}if($.navAsAjax&&$.intervalArr.length>0&&(a[0]==$("#content")[0])){while($.intervalArr.length>0){clearInterval($.intervalArr.pop())}}a.html('

    Loading...

    ');if(a[0]==$("#content")[0]){drawBreadCrumb();$("html").animate({scrollTop:0},"fast")}},success:function(c){a.css({opacity:"0.0"}).html(c).delay(50).animate({opacity:"1.0"},300)},error:function(e,c,d){a.html('

    Error 404! Page not found.

    ')},async:true})}function pageSetUp(){if($.device==="desktop"){$("[rel=tooltip]").tooltip();$("[rel=popover]").popover();$("[rel=popover-hover]").popover({trigger:"hover"});setup_widgets_desktop();runAllCharts();runAllForms()}else{$("[rel=popover]").popover();$("[rel=popover-hover]").popover({trigger:"hover"});runAllCharts();setup_widgets_mobile();runAllForms()}}$("body").on("click",function(a){$('[rel="popover"]').each(function(){if(!$(this).is(a.target)&&$(this).has(a.target).length===0&&$(".popover").has(a.target).length===0){$(this).popover("hide")}})}); diff --git a/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/config/grunt/concat.js b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/config/grunt/concat.js new file mode 100644 index 0000000..313ae6b --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/config/grunt/concat.js @@ -0,0 +1,24 @@ +module.exports = function () { + 'use strict'; + + return { + options: { + banner: '<%= meta.banner %>\n', + separator: '\n\n' + }, + dist: { + files: { + 'dist/<%= pkg.name %>.js': [ + '<%= paths.src %>/core/permissionModule.js', + '<%= paths.src %>/models/PermissionMap.js', + '<%= paths.src %>/models/Permission.js', + '<%= paths.src %>/models/Role.js', + '<%= paths.src %>/stores/PermissionStore.js', + '<%= paths.src %>/stores/RoleStore.js', + '<%= paths.src %>/core/permissionDirective.js', + '<%= paths.src %>/authorization/Authorization.js' + ] + } + } + }; +}; \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/config/grunt/jshint.js b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/config/grunt/jshint.js new file mode 100644 index 0000000..3bf31a0 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/config/grunt/jshint.js @@ -0,0 +1,16 @@ +module.exports = function () { + 'use strict'; + + return { + options: { + jshintrc: '.jshintrc', + reporter: require('jshint-stylish') + }, + all: { + src: ['src/**/*.js'] + }, + test: { + src: ['<%= paths.test %>'] + } + }; +}; \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/config/karma/karma.conf.js b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/config/karma/karma.conf.js new file mode 100644 index 0000000..40d93ad --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/config/karma/karma.conf.js @@ -0,0 +1,73 @@ +// Karma configuration +// http://karma-runner.github.io/0.12/config/configuration-file.html +// Generated on 2014-07-17 using +// generator-karma 0.8.3 + +module.exports = function(config) { + 'use strict'; + + config.set({ + // enable / disable watching file and executing tests whenever any file changes + autoWatch: true, + + // base path, that will be used to resolve files and exclude + basePath: '../../', + + // testing framework to use (jasmine/mocha/qunit/...) + frameworks: ['jasmine'], + + // list of files / patterns to load in the browser + files: [ + 'bower_components/angular/angular.js', + 'bower_components/angular-mocks/angular-mocks.js', + 'bower_components/angular-ui-router/release/angular-ui-router.js', + 'src/core/permissionModule.js', + 'src/**/*.js', + 'test/**/*.test.js' + ], + + // list of files / patterns to exclude + exclude: [], + + // web server port + port: 8080, + + // Start these browsers, currently available: + // - Chrome + // - ChromeCanary + // - Firefox + // - Opera + // - Safari (only Mac) + // - PhantomJS + // - IE (only Windows) + browsers: [ + 'PhantomJS' + ], + + reporters: ['mocha'], + + // Which plugins to enable + plugins: [ + 'karma-phantomjs-launcher', + 'karma-mocha-reporter', + 'karma-jasmine' + ], + + // Continuous Integration mode + // if true, it capture browsers, run tests and exit + singleRun: false, + + colors: true, + + // level of logging + // possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG + logLevel: config.LOG_INFO + + // Uncomment the following lines if you are using grunt's server to run the tests + // proxies: { + // '/': 'http://localhost:9000/' + // }, + // URL root prevent conflicts with the site root + // urlRoot: '_karma_' + }); +}; diff --git a/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/dist/angular-permission.js b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/dist/angular-permission.js new file mode 100644 index 0000000..3ac90d5 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/dist/angular-permission.js @@ -0,0 +1,810 @@ +/** + * angular-permission + * Route permission and access control as simple as it can get + * @version v2.1.2 - 2016-03-06 + * @link http://www.rafaelvidaurre.com + * @author Rafael Vidaurre + * @license MIT License, http://www.opensource.org/licenses/MIT + */ + +(function () { + 'use strict'; + + var permission = angular.module('permission', ['ui.router']); + + /** + * This decorator is required to access full state object instead of it's configuration + * when trying to obtain full toState state object not it's configuration + * Can be removed when implemented https://github.com/angular-ui/ui-router/issues/13. + */ + permission.config(['$stateProvider', function ($stateProvider) { + $stateProvider.decorator('parent', function (state, parentFn) { + state.self.getState = function () { + return state; + }; + return parentFn(state); + }); + }]); + + permission.run(['$rootScope', '$state', '$q', 'Authorization', 'PermissionMap', function ($rootScope, $state, $q, Authorization, PermissionMap) { + $rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams, options) { + + if (!isAuthorizationFinished() && areSetStatePermissions(toState)) { + event.preventDefault(); + setStateAuthorizationStatus(true); + + if (!areStateEventsDefaultPrevented()) { + var compensatedPermissionMap = compensatePermissionMap(toState.data.permissions); + authorizeForState(compensatedPermissionMap); + } + } + + /** + * Checks if state is qualified to be permission based verified + * + * @returns {boolean} + */ + function areSetStatePermissions(state) { + return angular.isDefined(state.data) && angular.isDefined(state.data.permissions); + } + + /** + * Sets internal state `$$finishedAuthorization` variable to prevent looping + * + * @param status {boolean} When true authorization has been already preceded + */ + function setStateAuthorizationStatus(status) { + angular.extend(toState, {'$$isAuthorizationFinished': status}); + } + + + /** + * Checks if state has been already checked for authorization + * + * @returns {boolean} + */ + function isAuthorizationFinished() { + return toState.$$isAuthorizationFinished; + } + + /** + * Checks if state events are not prevented by default + * + * @returns {boolean} + */ + function areStateEventsDefaultPrevented() { + return isStateChangePermissionStartDefaultPrevented() || isStateChangeStartDefaultPrevented(); + } + + /** + * Builds map of permissions resolving passed values to data.permissions and combine them with all its parents + * keeping the order of permissions from the newest (children) to the oldest (parent) + * + * @param statePermissionMap {Object} Current state permission map + * @returns {PermissionMap} Permission map + */ + function compensatePermissionMap(statePermissionMap) { + var permissionMap = new PermissionMap({redirectTo: statePermissionMap.redirectTo}); + + var toStatePath = $state + .get(toState.name) + .getState().path + .slice() + .reverse(); + + angular.forEach(toStatePath, function (state) { + if (areSetStatePermissions(state)) { + permissionMap.extendPermissionMap(new PermissionMap(state.data.permissions)); + } + }); + + return permissionMap; + } + + /** + * Handles state authorization + * + * @param permissions {PermissionMap} Map of permission names + */ + function authorizeForState(permissions) { + Authorization + .authorize(permissions, toParams) + .then(function () { + $rootScope.$broadcast('$stateChangePermissionAccepted', toState, toParams, options); + + $state + .go(toState.name, toParams, {notify: false}) + .then(function () { + $rootScope.$broadcast('$stateChangeSuccess', toState, toParams); + }); + }) + .catch(function (rejectedPermission) { + $rootScope.$broadcast('$stateChangePermissionDenied', toState, toParams, options); + + return permissions + .resolveRedirectState(rejectedPermission) + .then(function (redirectStateName) { + $state.go(redirectStateName, toParams); + }); + }) + .finally(function () { + setStateAuthorizationStatus(false); + $rootScope.$broadcast('$stateChangeSuccess'); + }); + } + + /** + * Checks if event $stateChangeStart hasn't been disabled by default + * + * @returns {boolean} + */ + function isStateChangeStartDefaultPrevented() { + return $rootScope.$broadcast('$stateChangeStart', toState, toParams, fromState, fromParams, options).defaultPrevented; + } + + /** + * Checks if event $stateChangePermissionStart hasn't been disabled by default + * + * @returns {boolean} + */ + function isStateChangePermissionStartDefaultPrevented() { + return $rootScope.$broadcast('$stateChangePermissionStart', toState, toParams, options).defaultPrevented; + } + }); + }]); +}()); + + +(function () { + 'use strict'; + + angular + .module('permission') + .factory('PermissionMap', ['$q', function ($q) { + + /** + * Constructs map object instructing authorization service how to handle authorizing + * + * @param permissionMap {Object} Map of permissions provided to authorization service + * @param permissionMap.only {Array} List of exclusive permission/role names allowed for authorization + * @param permissionMap.except {Array} List of exclusive permission/role names denied for authorization + * @param permissionMap.redirectTo {String|Function|Object|promise} Handling redirection when rejected + * authorization + * @param [toState] {Object} UI-Router transition state object + * @param [toParams] {Object} UI-Router transition state params + * @param [options] {Object} UI-Router transition state options + * @constructor + */ + function PermissionMap(permissionMap, toState, toParams, options) { + this.only = resolvePermissionMapProperty(permissionMap.only, toState, toParams, options); + this.except = resolvePermissionMapProperty(permissionMap.except, toState, toParams, options); + this.redirectTo = permissionMap.redirectTo; + } + + /** + * Extends permission map by pushing to it state's permissions + * + * @param permissionMap {PermissionMap} Compensated permission map + */ + PermissionMap.prototype.extendPermissionMap = function (permissionMap) { + this.only = this.only.concat(permissionMap.only); + this.except = this.except.concat(permissionMap.except); + }; + + /** + * Redirects to fallback states when permissions fail + * + * @param rejectedPermissionName {String} Permission name + * + * @return {Promise} + */ + PermissionMap.prototype.resolveRedirectState = function (rejectedPermissionName) { + if (angular.isFunction(this.redirectTo)) { + return resolveFunctionRedirect(this.redirectTo, rejectedPermissionName); + } + + if (angular.isObject(this.redirectTo)) { + return resolveObjectRedirect(this.redirectTo, rejectedPermissionName); + } + + if (angular.isString(this.redirectTo)) { + return $q.resolve(this.redirectTo); + } + + // If redirectTo state is not defined stay where you are + return $q.reject(null); + }; + + /** + * Handles function based redirection for rejected permissions + * + * @param redirectFunction {Function} Redirection function + * @param permission {String} Rejected permission + * + * @return {Promise} + */ + function resolveFunctionRedirect(redirectFunction, permission) { + return $q + .when(redirectFunction.call(null, permission)) + .then(function (redirectState) { + if (!angular.isString(redirectState)) { + throw new TypeError('When used "redirectTo" as function, returned value must be string with state name'); + } + return redirectState; + }); + } + + /** + * Handles object based redirection for rejected permissions + * + * @param redirectObject {Object} Redirection function + * @param permission {String} Rejected permission + * + * @return {Promise} + */ + function resolveObjectRedirect(redirectObject, permission) { + if (!angular.isDefined(redirectObject['default'])) { + throw new ReferenceError('When used "redirectTo" as object, property "default" must be defined'); + } + + var redirectState = redirectObject[permission]; + + if (!angular.isDefined(redirectState)) { + redirectState = redirectObject['default']; + } + + if (angular.isFunction(redirectState)) { + return resolveFunctionRedirect(redirectState, permission); + } + + if (angular.isString(redirectState)) { + return $q.resolve(redirectState); + } + } + + /** + * Handles extraction of permission map "only" and "except" properties + * @private + * + * @param property {Array|Function|promise} Permission map property "only" or "except" + * @param [toState] {Object} UI-Router transition state object + * @param [toParams] {Object} UI-Router transition state params + * @param [options] {Object} UI-Router transition state options + * + * @returns {Array} Array of permission "only" or "except" names + */ + function resolvePermissionMapProperty(property, toState, toParams, options) { + if (angular.isString(property)) { + return [property]; + } + + if (angular.isArray(property)) { + return property; + } + + if (angular.isFunction(property)) { + return property.call(null, toState, toParams, options); + } + + return []; + } + + return PermissionMap; + }]); +}()); + +(function () { + 'use strict'; + + angular + .module('permission') + .factory('Permission', ['$q', function ($q) { + + /** + * Permission definition object constructor + * + * @param permissionName {String} Name repressing permission + * @param validationFunction {Function} Function used to check if permission is valid + * @constructor + */ + function Permission(permissionName, validationFunction) { + validateConstructor(permissionName, validationFunction); + + this.permissionName = permissionName; + this.validationFunction = validationFunction; + } + + /** + * Checks if permission is still valid + * + * @param toParams {Object} UI-Router params object + * @returns {Promise} + */ + Permission.prototype.validatePermission = function (toParams) { + var validationResult = this.validationFunction.call(null, toParams, this.permissionName); + + if (!angular.isFunction(validationResult.then)) { + validationResult = wrapInPromise(validationResult, this.permissionName); + } + + return validationResult; + }; + + /** + * Converts a value into a promise, if the value is truthy it resolves it, otherwise it rejects it + * @private + * + * @param result {Boolean} Function to be wrapped into promise + * @param permissionName {String} Returned value in promise + * @return {Promise} + */ + function wrapInPromise(result, permissionName) { + var dfd = $q.defer(); + + if (result) { + dfd.resolve(permissionName); + } else { + dfd.reject(permissionName); + } + + return dfd.promise; + } + + /** + * Checks if provided permission has accepted parameter types + * @private + */ + function validateConstructor(permissionName, validationFunction) { + if (!angular.isString(permissionName)) { + throw new TypeError('Parameter "permissionName" name must be String'); + } + if (!angular.isFunction(validationFunction)) { + throw new TypeError('Parameter "validationFunction" must be Function'); + } + } + + return Permission; + }]); +}()); + +(function () { + 'use strict'; + + angular + .module('permission') + .factory('Role', ['$q', 'PermissionStore', function ($q, PermissionStore) { + + /** + * Role definition constructor + * + * @param roleName {String} Name representing role + * @param permissionNames {Array} List of permission names representing role + * @param [validationFunction] {Function} Optional function used to validate if permissions are still valid + * @constructor + */ + function Role(roleName, permissionNames, validationFunction) { + validateConstructor(roleName, permissionNames, validationFunction); + this.roleName = roleName; + this.permissionNames = permissionNames || []; + this.validationFunction = validationFunction; + + if (validationFunction) { + PermissionStore.defineManyPermissions(permissionNames, validationFunction); + } + } + + /** + * Checks if role is still valid + * + * @param [toParams] {Object} UI-Router params object + * @returns {Promise} $q.promise object + */ + Role.prototype.validateRole = function (toParams) { + + // When set permissions is provided check each of them + if (this.permissionNames.length) { + var promises = this.permissionNames.map(function (permissionName) { + if (PermissionStore.hasPermissionDefinition(permissionName)) { + var permission = PermissionStore.getPermissionDefinition(permissionName); + var validationResult = permission.validationFunction.call(null, toParams, permission.permissionName); + + if (!angular.isFunction(validationResult.then)) { + validationResult = wrapInPromise(validationResult); + } + + return validationResult; + } + + return $q.reject(null); + }); + + return $q.all(promises); + } + + // If not call validation function manually + var validationResult = this.validationFunction.call(null, toParams, this.roleName); + if (!angular.isFunction(validationResult.then)) { + validationResult = wrapInPromise(validationResult, this.roleName); + } + + return $q.resolve(validationResult); + + }; + + /** + * Converts a value into a promise, if the value is truthy it resolves it, otherwise it rejects it + * @private + * + * @param result {Boolean} Function to be wrapped into promise + * @param roleName {String} Returned value in promise + * @return {Promise} + */ + function wrapInPromise(result, roleName) { + var dfd = $q.defer(); + + if (result) { + dfd.resolve(roleName); + } else { + dfd.reject(roleName); + } + + return dfd.promise; + } + + /** + * Checks if provided permission has accepted parameter types + * @private + */ + function validateConstructor(roleName, permissionNames, validationFunction) { + if (!angular.isString(roleName)) { + throw new TypeError('Parameter "roleName" name must be String'); + } + + if (!angular.isArray(permissionNames)) { + throw new TypeError('Parameter "permissionNames" must be Array'); + } + + if (!permissionNames.length && !angular.isFunction(validationFunction)) { + throw new TypeError('Parameter "validationFunction" must be provided for empty "permissionNames" array'); + } + } + + return Role; + }]); +}()); + +(function () { + 'use strict'; + + angular + .module('permission') + .service('PermissionStore', ['Permission', function (Permission) { + var permissionStore = {}; + + this.definePermission = definePermission; + this.defineManyPermissions = defineManyPermissions; + this.removePermissionDefinition = removePermissionDefinition; + this.hasPermissionDefinition = hasPermissionDefinition; + this.getPermissionDefinition = getPermissionDefinition; + this.getStore = getStore; + this.clearStore = clearStore; + + /** + * Allows to define permission on application configuration + * + * @param permissionName {String} Name of defined permission + * @param validationFunction {Function} Function used to validate if permission is valid + */ + function definePermission(permissionName, validationFunction) { + permissionStore[permissionName] = new Permission(permissionName, validationFunction); + } + + /** + * Allows to define set of permissionNames with shared validation function on application configuration + * + * @param permissionNames {Array} Set of permission names + * @param validationFunction {Function} Function used to validate if permission is valid + */ + function defineManyPermissions(permissionNames, validationFunction) { + if (!angular.isArray(permissionNames)) { + throw new TypeError('Parameter "permissionNames" name must be Array'); + } + + angular.forEach(permissionNames, function (permissionName) { + definePermission(permissionName, validationFunction); + }); + } + + /** + * Deletes permission + * + * @param permissionName {String} Name of defined permission + */ + function removePermissionDefinition(permissionName) { + delete permissionStore[permissionName]; + } + + /** + * Checks if permission exists + * + * @param permissionName {String} Name of defined permission + * @returns {Boolean} + */ + function hasPermissionDefinition(permissionName) { + return angular.isDefined(permissionStore[permissionName]); + } + + /** + * Returns permission by it's name + * + * @returns {Object} Permissions collection + */ + function getPermissionDefinition(permissionName) { + return permissionStore[permissionName]; + } + + /** + * Returns all permissions + * + * @returns {Object} Permissions collection + */ + function getStore() { + return permissionStore; + } + + /** + * Removes all permissions + */ + function clearStore() { + permissionStore = {}; + } + }]); +}()); + +(function () { + 'use strict'; + + angular + .module('permission') + .service('RoleStore', ['Role', function (Role) { + var roleStore = {}; + + this.defineRole = defineRole; + this.getRoleDefinition = getRoleDefinition; + this.hasRoleDefinition = hasRoleDefinition; + this.removeRoleDefinition = removeRoleDefinition; + this.getStore = getStore; + this.clearStore = clearStore; + + /** + * Allows to define role + * + * @param roleName {String} Name of defined role + * @param permissions {Array} Set of permission names + * @param [validationFunction] {Function} Function used to validate if permissions in role are valid + */ + function defineRole(roleName, permissions, validationFunction) { + roleStore[roleName] = new Role(roleName, permissions, validationFunction); + } + + /** + * Deletes role from store + * + * @param roleName {String} Name of defined permission + */ + function removeRoleDefinition(roleName) { + delete roleStore[roleName]; + } + + /** + * Checks if role is defined in store + * + * @param roleName {String} Name of role + * @returns {Boolean} + */ + function hasRoleDefinition(roleName) { + return angular.isDefined(roleStore[roleName]); + } + + /** + * Returns role definition object by it's name + * + * @returns {Object} Role definition object + */ + function getRoleDefinition(roleName) { + return roleStore[roleName]; + } + + /** + * Returns all role definitions + * + * @returns {Object} Defined roles collection + */ + function getStore() { + return roleStore; + } + + /** + * Removes all role definitions + */ + function clearStore() { + roleStore = {}; + } + }]); +}()); + +(function () { + 'use strict'; + + /** + * Show/hide elements based on provided permissions/roles + * + * @example + *
    + *
    + *
    + */ + angular + .module('permission') + .directive('permission', ['$log', 'Authorization', 'PermissionMap', function ($log, Authorization, PermissionMap) { + return { + restrict: 'A', + scope: true, + bindToController: { + only: '=', + except: '=' + }, + controllerAs: 'permission', + controller: ['$scope', '$element', function ($scope, $element) { + var permission = this; + + $scope.$watchGroup(['permission.only', 'permission.except'], + function () { + try { + Authorization + .authorize(new PermissionMap({ + only: permission.only, + except: permission.except + }), null) + .then(function () { + $element.removeClass('ng-hide'); + }) + .catch(function () { + $element.addClass('ng-hide'); + }); + } catch (e) { + $element.addClass('ng-hide'); + $log.error(e.message); + } + }); + }] + }; + }]); +}()); + + +(function () { + 'use strict'; + + angular + .module('permission') + .service('Authorization', ['$q', 'PermissionMap', 'PermissionStore', 'RoleStore', function ($q, PermissionMap, PermissionStore, RoleStore) { + this.authorize = authorize; + + /** + * Checks if provided permissions are acceptable + * + * @param permissionsMap {PermissionMap} Map of permission names + * @param [toParams] {Object} UI-Router params object + * @returns {promise} $q.promise object + */ + function authorize(permissionsMap, toParams) { + return handleAuthorization(permissionsMap, toParams); + } + + /** + * Handles authorization based on provided permissions map + * @private + * + * @param permissionsMap {Object} Map of permission names + * @param toParams {Object} UI-Router params object + * @returns {promise} $q.promise object + */ + function handleAuthorization(permissionsMap, toParams) { + var deferred = $q.defer(); + + var exceptPromises = findMatchingPermissions(permissionsMap.except, toParams); + + only(exceptPromises) + .then(function (rejectedPermissions) { + deferred.reject(rejectedPermissions); + }) + .catch(function () { + if (!permissionsMap.only.length) { + deferred.resolve(null); + } + + var onlyPromises = findMatchingPermissions(permissionsMap.only, toParams); + + only(onlyPromises) + .then(function (resolvedPermissions) { + deferred.resolve(resolvedPermissions); + }) + .catch(function (rejectedPermission) { + deferred.reject(rejectedPermission); + }); + }); + + return deferred.promise; + } + + /** + * Implementation of missing $q `only` method that wits for first + * resolution of provided promise set. + * @private + * + * @param promises {Array|promise} Single or set of promises + * @returns {Promise} Returns a single promise that will be rejected with an array/hash of values, + * each value corresponding to the promise at the same index/key in the `promises` array/hash. + * If any of the promises is resolved, this resulting promise will be returned + * with the same resolution value. + */ + function only(promises) { + var deferred = $q.defer(), + counter = 0, + results = angular.isArray(promises) ? [] : {}; + + angular.forEach(promises, function (promise, key) { + counter++; + $q.when(promise) + .then(function (value) { + if (results.hasOwnProperty(key)) { + return; + } + deferred.resolve(value); + }) + .catch(function (reason) { + if (results.hasOwnProperty(key)) { + return; + } + results[key] = reason; + if (!(--counter)) { + deferred.reject(reason); + } + }); + }); + + if (counter === 0) { + deferred.reject(results); + } + + return deferred.promise; + } + + /** + * Performs iteration over list of defined permissions looking for matches + * @private + * + * @param permissionNames {Array} Set of permission names + * @param toParams {Object} UI-Router params object + * @returns {Array} Promise collection + */ + function findMatchingPermissions(permissionNames, toParams) { + return permissionNames.map(function (permissionName) { + if (RoleStore.hasRoleDefinition(permissionName)) { + var role = RoleStore.getRoleDefinition(permissionName); + return role.validateRole(toParams); + } + + if (PermissionStore.hasPermissionDefinition(permissionName)) { + var permission = PermissionStore.getPermissionDefinition(permissionName); + return permission.validatePermission(toParams); + } + + if (permissionName) { + return $q.reject(permissionName); + } + }); + } + }]); +})(); diff --git a/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/dist/angular-permission.min.js b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/dist/angular-permission.min.js new file mode 100644 index 0000000..1367692 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/dist/angular-permission.min.js @@ -0,0 +1,11 @@ +/** + * angular-permission + * Route permission and access control as simple as it can get + * @version v2.1.2 - 2016-03-06 + * @link http://www.rafaelvidaurre.com + * @author Rafael Vidaurre + * @license MIT License, http://www.opensource.org/licenses/MIT + */ + +!function(){"use strict";var a=angular.module("permission",["ui.router"]);a.config(["$stateProvider",function(a){a.decorator("parent",function(a,b){return a.self.getState=function(){return a},b(a)})}]),a.run(["$rootScope","$state","$q","Authorization","PermissionMap",function(a,b,c,d,e){a.$on("$stateChangeStart",function(c,f,g,h,i,j){function k(a){return angular.isDefined(a.data)&&angular.isDefined(a.data.permissions)}function l(a){angular.extend(f,{$$isAuthorizationFinished:a})}function m(){return f.$$isAuthorizationFinished}function n(){return r()||q()}function o(a){var c=new e({redirectTo:a.redirectTo}),d=b.get(f.name).getState().path.slice().reverse();return angular.forEach(d,function(a){k(a)&&c.extendPermissionMap(new e(a.data.permissions))}),c}function p(c){d.authorize(c,g).then(function(){a.$broadcast("$stateChangePermissionAccepted",f,g,j),b.go(f.name,g,{notify:!1}).then(function(){a.$broadcast("$stateChangeSuccess",f,g)})})["catch"](function(d){return a.$broadcast("$stateChangePermissionDenied",f,g,j),c.resolveRedirectState(d).then(function(a){b.go(a,g)})})["finally"](function(){l(!1),a.$broadcast("$stateChangeSuccess")})}function q(){return a.$broadcast("$stateChangeStart",f,g,h,i,j).defaultPrevented}function r(){return a.$broadcast("$stateChangePermissionStart",f,g,j).defaultPrevented}if(!m()&&k(f)&&(c.preventDefault(),l(!0),!n())){var s=o(f.data.permissions);p(s)}})}])}(),function(){"use strict";angular.module("permission").factory("PermissionMap",["$q",function(a){function b(a,b,c,d){this.only=e(a.only,b,c,d),this.except=e(a.except,b,c,d),this.redirectTo=a.redirectTo}function c(b,c){return a.when(b.call(null,c)).then(function(a){if(!angular.isString(a))throw new TypeError('When used "redirectTo" as function, returned value must be string with state name');return a})}function d(b,d){if(!angular.isDefined(b["default"]))throw new ReferenceError('When used "redirectTo" as object, property "default" must be defined');var e=b[d];return angular.isDefined(e)||(e=b["default"]),angular.isFunction(e)?c(e,d):angular.isString(e)?a.resolve(e):void 0}function e(a,b,c,d){return angular.isString(a)?[a]:angular.isArray(a)?a:angular.isFunction(a)?a.call(null,b,c,d):[]}return b.prototype.extendPermissionMap=function(a){this.only=this.only.concat(a.only),this.except=this.except.concat(a.except)},b.prototype.resolveRedirectState=function(b){return angular.isFunction(this.redirectTo)?c(this.redirectTo,b):angular.isObject(this.redirectTo)?d(this.redirectTo,b):angular.isString(this.redirectTo)?a.resolve(this.redirectTo):a.reject(null)},b}])}(),function(){"use strict";angular.module("permission").factory("Permission",["$q",function(a){function b(a,b){d(a,b),this.permissionName=a,this.validationFunction=b}function c(b,c){var d=a.defer();return b?d.resolve(c):d.reject(c),d.promise}function d(a,b){if(!angular.isString(a))throw new TypeError('Parameter "permissionName" name must be String');if(!angular.isFunction(b))throw new TypeError('Parameter "validationFunction" must be Function')}return b.prototype.validatePermission=function(a){var b=this.validationFunction.call(null,a,this.permissionName);return angular.isFunction(b.then)||(b=c(b,this.permissionName)),b},b}])}(),function(){"use strict";angular.module("permission").factory("Role",["$q","PermissionStore",function(a,b){function c(a,c,d){e(a,c,d),this.roleName=a,this.permissionNames=c||[],this.validationFunction=d,d&&b.defineManyPermissions(c,d)}function d(b,c){var d=a.defer();return b?d.resolve(c):d.reject(c),d.promise}function e(a,b,c){if(!angular.isString(a))throw new TypeError('Parameter "roleName" name must be String');if(!angular.isArray(b))throw new TypeError('Parameter "permissionNames" must be Array');if(!b.length&&!angular.isFunction(c))throw new TypeError('Parameter "validationFunction" must be provided for empty "permissionNames" array')}return c.prototype.validateRole=function(c){if(this.permissionNames.length){var e=this.permissionNames.map(function(e){if(b.hasPermissionDefinition(e)){var f=b.getPermissionDefinition(e),g=f.validationFunction.call(null,c,f.permissionName);return angular.isFunction(g.then)||(g=d(g)),g}return a.reject(null)});return a.all(e)}var f=this.validationFunction.call(null,c,this.roleName);return angular.isFunction(f.then)||(f=d(f,this.roleName)),a.resolve(f)},c}])}(),function(){"use strict";angular.module("permission").service("PermissionStore",["Permission",function(a){function b(b,c){i[b]=new a(b,c)}function c(a,c){if(!angular.isArray(a))throw new TypeError('Parameter "permissionNames" name must be Array');angular.forEach(a,function(a){b(a,c)})}function d(a){delete i[a]}function e(a){return angular.isDefined(i[a])}function f(a){return i[a]}function g(){return i}function h(){i={}}var i={};this.definePermission=b,this.defineManyPermissions=c,this.removePermissionDefinition=d,this.hasPermissionDefinition=e,this.getPermissionDefinition=f,this.getStore=g,this.clearStore=h}])}(),function(){"use strict";angular.module("permission").service("RoleStore",["Role",function(a){function b(b,c,d){h[b]=new a(b,c,d)}function c(a){delete h[a]}function d(a){return angular.isDefined(h[a])}function e(a){return h[a]}function f(){return h}function g(){h={}}var h={};this.defineRole=b,this.getRoleDefinition=e,this.hasRoleDefinition=d,this.removeRoleDefinition=c,this.getStore=f,this.clearStore=g}])}(),function(){"use strict";angular.module("permission").directive("permission",["$log","Authorization","PermissionMap",function(a,b,c){return{restrict:"A",scope:!0,bindToController:{only:"=",except:"="},controllerAs:"permission",controller:["$scope","$element",function(d,e){var f=this;d.$watchGroup(["permission.only","permission.except"],function(){try{b.authorize(new c({only:f.only,except:f.except}),null).then(function(){e.removeClass("ng-hide")})["catch"](function(){e.addClass("ng-hide")})}catch(d){e.addClass("ng-hide"),a.error(d.message)}})}]}}])}(),function(){"use strict";angular.module("permission").service("Authorization",["$q","PermissionMap","PermissionStore","RoleStore",function(a,b,c,d){function e(a,b){return f(a,b)}function f(b,c){var d=a.defer(),e=h(b.except,c);return g(e).then(function(a){d.reject(a)})["catch"](function(){b.only.length||d.resolve(null);var a=h(b.only,c);g(a).then(function(a){d.resolve(a)})["catch"](function(a){d.reject(a)})}),d.promise}function g(b){var c=a.defer(),d=0,e=angular.isArray(b)?[]:{};return angular.forEach(b,function(b,f){d++,a.when(b).then(function(a){e.hasOwnProperty(f)||c.resolve(a)})["catch"](function(a){e.hasOwnProperty(f)||(e[f]=a,--d||c.reject(a))})}),0===d&&c.reject(e),c.promise}function h(b,e){return b.map(function(b){if(d.hasRoleDefinition(b)){var f=d.getRoleDefinition(b);return f.validateRole(e)}if(c.hasPermissionDefinition(b)){var g=c.getPermissionDefinition(b);return g.validatePermission(e)}return b?a.reject(b):void 0})}this.authorize=e}])}(); +//# sourceMappingURL=angular-permission.min.js.map \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/dist/angular-permission.min.js.map b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/dist/angular-permission.min.js.map new file mode 100644 index 0000000..9cf233d --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/dist/angular-permission.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["angular-permission.js"],"names":["permission","angular","module","config","$stateProvider","decorator","state","parentFn","self","getState","run","$rootScope","$state","$q","Authorization","PermissionMap","$on","event","toState","toParams","fromState","fromParams","options","areSetStatePermissions","isDefined","data","permissions","setStateAuthorizationStatus","status","extend","$$isAuthorizationFinished","isAuthorizationFinished","areStateEventsDefaultPrevented","isStateChangePermissionStartDefaultPrevented","isStateChangeStartDefaultPrevented","compensatePermissionMap","statePermissionMap","permissionMap","redirectTo","toStatePath","get","name","path","slice","reverse","forEach","extendPermissionMap","authorizeForState","authorize","then","$broadcast","go","notify","rejectedPermission","resolveRedirectState","redirectStateName","defaultPrevented","preventDefault","compensatedPermissionMap","factory","this","only","resolvePermissionMapProperty","except","resolveFunctionRedirect","redirectFunction","when","call","redirectState","isString","TypeError","resolveObjectRedirect","redirectObject","ReferenceError","isFunction","resolve","property","isArray","prototype","concat","rejectedPermissionName","isObject","reject","Permission","permissionName","validationFunction","validateConstructor","wrapInPromise","result","dfd","defer","promise","validatePermission","validationResult","PermissionStore","Role","roleName","permissionNames","defineManyPermissions","length","validateRole","promises","map","hasPermissionDefinition","getPermissionDefinition","all","service","definePermission","permissionStore","removePermissionDefinition","getStore","clearStore","defineRole","roleStore","removeRoleDefinition","hasRoleDefinition","getRoleDefinition","directive","$log","restrict","scope","bindToController","controllerAs","controller","$scope","$element","$watchGroup","removeClass","addClass","e","error","message","RoleStore","permissionsMap","handleAuthorization","deferred","exceptPromises","findMatchingPermissions","rejectedPermissions","onlyPromises","resolvedPermissions","counter","results","key","value","hasOwnProperty","reason","role"],"mappings":"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","file":"angular-permission.min.js"} \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/src/core/permissionModule.js b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/src/core/permissionModule.js new file mode 100644 index 0000000..946b0ff --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/src/core/permissionModule.js @@ -0,0 +1,146 @@ +(function () { + 'use strict'; + + var permission = angular.module('permission', ['ui.router']); + + /** + * This decorator is required to access full state object instead of it's configuration + * when trying to obtain full toState state object not it's configuration + * Can be removed when implemented https://github.com/angular-ui/ui-router/issues/13. + */ + permission.config(function ($stateProvider) { + $stateProvider.decorator('parent', function (state, parentFn) { + state.self.getState = function () { + return state; + }; + return parentFn(state); + }); + }); + + permission.run(function ($rootScope, $state, $q, Authorization, PermissionMap) { + $rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams, options) { + + if (!isAuthorizationFinished() && areSetStatePermissions(toState)) { + event.preventDefault(); + setStateAuthorizationStatus(true); + + if (!areStateEventsDefaultPrevented()) { + var compensatedPermissionMap = compensatePermissionMap(toState.data.permissions); + authorizeForState(compensatedPermissionMap); + } + } + + /** + * Checks if state is qualified to be permission based verified + * + * @returns {boolean} + */ + function areSetStatePermissions(state) { + return angular.isDefined(state.data) && angular.isDefined(state.data.permissions); + } + + /** + * Sets internal state `$$finishedAuthorization` variable to prevent looping + * + * @param status {boolean} When true authorization has been already preceded + */ + function setStateAuthorizationStatus(status) { + angular.extend(toState, {'$$isAuthorizationFinished': status}); + } + + + /** + * Checks if state has been already checked for authorization + * + * @returns {boolean} + */ + function isAuthorizationFinished() { + return toState.$$isAuthorizationFinished; + } + + /** + * Checks if state events are not prevented by default + * + * @returns {boolean} + */ + function areStateEventsDefaultPrevented() { + return isStateChangePermissionStartDefaultPrevented() || isStateChangeStartDefaultPrevented(); + } + + /** + * Builds map of permissions resolving passed values to data.permissions and combine them with all its parents + * keeping the order of permissions from the newest (children) to the oldest (parent) + * + * @param statePermissionMap {Object} Current state permission map + * @returns {PermissionMap} Permission map + */ + function compensatePermissionMap(statePermissionMap) { + var permissionMap = new PermissionMap({redirectTo: statePermissionMap.redirectTo}); + + var toStatePath = $state + .get(toState.name) + .getState().path + .slice() + .reverse(); + + angular.forEach(toStatePath, function (state) { + if (areSetStatePermissions(state)) { + permissionMap.extendPermissionMap(new PermissionMap(state.data.permissions)); + } + }); + + return permissionMap; + } + + /** + * Handles state authorization + * + * @param permissions {PermissionMap} Map of permission names + */ + function authorizeForState(permissions) { + Authorization + .authorize(permissions, toParams) + .then(function () { + $rootScope.$broadcast('$stateChangePermissionAccepted', toState, toParams, options); + + $state + .go(toState.name, toParams, {notify: false}) + .then(function () { + $rootScope.$broadcast('$stateChangeSuccess', toState, toParams); + }); + }) + .catch(function (rejectedPermission) { + $rootScope.$broadcast('$stateChangePermissionDenied', toState, toParams, options); + + return permissions + .resolveRedirectState(rejectedPermission) + .then(function (redirectStateName) { + $state.go(redirectStateName, toParams); + }); + }) + .finally(function () { + setStateAuthorizationStatus(false); + $rootScope.$broadcast('$stateChangeSuccess'); + }); + } + + /** + * Checks if event $stateChangeStart hasn't been disabled by default + * + * @returns {boolean} + */ + function isStateChangeStartDefaultPrevented() { + return $rootScope.$broadcast('$stateChangeStart', toState, toParams, fromState, fromParams, options).defaultPrevented; + } + + /** + * Checks if event $stateChangePermissionStart hasn't been disabled by default + * + * @returns {boolean} + */ + function isStateChangePermissionStartDefaultPrevented() { + return $rootScope.$broadcast('$stateChangePermissionStart', toState, toParams, options).defaultPrevented; + } + }); + }); +}()); diff --git a/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/src/models/Permission.js b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/src/models/Permission.js new file mode 100644 index 0000000..4e2f72d --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/src/models/Permission.js @@ -0,0 +1,73 @@ +(function () { + 'use strict'; + + angular + .module('permission') + .factory('Permission', function ($q) { + + /** + * Permission definition object constructor + * + * @param permissionName {String} Name repressing permission + * @param validationFunction {Function} Function used to check if permission is valid + * @constructor + */ + function Permission(permissionName, validationFunction) { + validateConstructor(permissionName, validationFunction); + + this.permissionName = permissionName; + this.validationFunction = validationFunction; + } + + /** + * Checks if permission is still valid + * + * @param toParams {Object} UI-Router params object + * @returns {Promise} + */ + Permission.prototype.validatePermission = function (toParams) { + var validationResult = this.validationFunction.call(null, toParams, this.permissionName); + + if (!angular.isFunction(validationResult.then)) { + validationResult = wrapInPromise(validationResult, this.permissionName); + } + + return validationResult; + }; + + /** + * Converts a value into a promise, if the value is truthy it resolves it, otherwise it rejects it + * @private + * + * @param result {Boolean} Function to be wrapped into promise + * @param permissionName {String} Returned value in promise + * @return {Promise} + */ + function wrapInPromise(result, permissionName) { + var dfd = $q.defer(); + + if (result) { + dfd.resolve(permissionName); + } else { + dfd.reject(permissionName); + } + + return dfd.promise; + } + + /** + * Checks if provided permission has accepted parameter types + * @private + */ + function validateConstructor(permissionName, validationFunction) { + if (!angular.isString(permissionName)) { + throw new TypeError('Parameter "permissionName" name must be String'); + } + if (!angular.isFunction(validationFunction)) { + throw new TypeError('Parameter "validationFunction" must be Function'); + } + } + + return Permission; + }); +}()); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/src/models/Role.js b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/src/models/Role.js new file mode 100644 index 0000000..fa0c59c --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/src/models/Role.js @@ -0,0 +1,105 @@ +(function () { + 'use strict'; + + angular + .module('permission') + .factory('Role', function ($q, PermissionStore) { + + /** + * Role definition constructor + * + * @param roleName {String} Name representing role + * @param permissionNames {Array} List of permission names representing role + * @param [validationFunction] {Function} Optional function used to validate if permissions are still valid + * @constructor + */ + function Role(roleName, permissionNames, validationFunction) { + validateConstructor(roleName, permissionNames, validationFunction); + this.roleName = roleName; + this.permissionNames = permissionNames || []; + this.validationFunction = validationFunction; + + if (validationFunction) { + PermissionStore.defineManyPermissions(permissionNames, validationFunction); + } + } + + /** + * Checks if role is still valid + * + * @param [toParams] {Object} UI-Router params object + * @returns {Promise} $q.promise object + */ + Role.prototype.validateRole = function (toParams) { + + // When set permissions is provided check each of them + if (this.permissionNames.length) { + var promises = this.permissionNames.map(function (permissionName) { + if (PermissionStore.hasPermissionDefinition(permissionName)) { + var permission = PermissionStore.getPermissionDefinition(permissionName); + var validationResult = permission.validationFunction.call(null, toParams, permission.permissionName); + + if (!angular.isFunction(validationResult.then)) { + validationResult = wrapInPromise(validationResult); + } + + return validationResult; + } + + return $q.reject(null); + }); + + return $q.all(promises); + } + + // If not call validation function manually + var validationResult = this.validationFunction.call(null, toParams, this.roleName); + if (!angular.isFunction(validationResult.then)) { + validationResult = wrapInPromise(validationResult, this.roleName); + } + + return $q.resolve(validationResult); + + }; + + /** + * Converts a value into a promise, if the value is truthy it resolves it, otherwise it rejects it + * @private + * + * @param result {Boolean} Function to be wrapped into promise + * @param roleName {String} Returned value in promise + * @return {Promise} + */ + function wrapInPromise(result, roleName) { + var dfd = $q.defer(); + + if (result) { + dfd.resolve(roleName); + } else { + dfd.reject(roleName); + } + + return dfd.promise; + } + + /** + * Checks if provided permission has accepted parameter types + * @private + */ + function validateConstructor(roleName, permissionNames, validationFunction) { + if (!angular.isString(roleName)) { + throw new TypeError('Parameter "roleName" name must be String'); + } + + if (!angular.isArray(permissionNames)) { + throw new TypeError('Parameter "permissionNames" must be Array'); + } + + if (!permissionNames.length && !angular.isFunction(validationFunction)) { + throw new TypeError('Parameter "validationFunction" must be provided for empty "permissionNames" array'); + } + } + + return Role; + }); +}()); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/src/stores/RoleStore.js b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/src/stores/RoleStore.js new file mode 100644 index 0000000..55c58bf --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/src/stores/RoleStore.js @@ -0,0 +1,71 @@ +(function () { + 'use strict'; + + angular + .module('permission') + .service('RoleStore', function (Role) { + var roleStore = {}; + + this.defineRole = defineRole; + this.getRoleDefinition = getRoleDefinition; + this.hasRoleDefinition = hasRoleDefinition; + this.removeRoleDefinition = removeRoleDefinition; + this.getStore = getStore; + this.clearStore = clearStore; + + /** + * Allows to define role + * + * @param roleName {String} Name of defined role + * @param permissions {Array} Set of permission names + * @param [validationFunction] {Function} Function used to validate if permissions in role are valid + */ + function defineRole(roleName, permissions, validationFunction) { + roleStore[roleName] = new Role(roleName, permissions, validationFunction); + } + + /** + * Deletes role from store + * + * @param roleName {String} Name of defined permission + */ + function removeRoleDefinition(roleName) { + delete roleStore[roleName]; + } + + /** + * Checks if role is defined in store + * + * @param roleName {String} Name of role + * @returns {Boolean} + */ + function hasRoleDefinition(roleName) { + return angular.isDefined(roleStore[roleName]); + } + + /** + * Returns role definition object by it's name + * + * @returns {Object} Role definition object + */ + function getRoleDefinition(roleName) { + return roleStore[roleName]; + } + + /** + * Returns all role definitions + * + * @returns {Object} Defined roles collection + */ + function getStore() { + return roleStore; + } + + /** + * Removes all role definitions + */ + function clearStore() { + roleStore = {}; + } + }); +}()); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/src/stores/permissionStore.js b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/src/stores/permissionStore.js new file mode 100644 index 0000000..cbf2ae0 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/src/stores/permissionStore.js @@ -0,0 +1,87 @@ +(function () { + 'use strict'; + + angular + .module('permission') + .service('PermissionStore', function (Permission) { + var permissionStore = {}; + + this.definePermission = definePermission; + this.defineManyPermissions = defineManyPermissions; + this.removePermissionDefinition = removePermissionDefinition; + this.hasPermissionDefinition = hasPermissionDefinition; + this.getPermissionDefinition = getPermissionDefinition; + this.getStore = getStore; + this.clearStore = clearStore; + + /** + * Allows to define permission on application configuration + * + * @param permissionName {String} Name of defined permission + * @param validationFunction {Function} Function used to validate if permission is valid + */ + function definePermission(permissionName, validationFunction) { + permissionStore[permissionName] = new Permission(permissionName, validationFunction); + } + + /** + * Allows to define set of permissionNames with shared validation function on application configuration + * + * @param permissionNames {Array} Set of permission names + * @param validationFunction {Function} Function used to validate if permission is valid + */ + function defineManyPermissions(permissionNames, validationFunction) { + if (!angular.isArray(permissionNames)) { + throw new TypeError('Parameter "permissionNames" name must be Array'); + } + + angular.forEach(permissionNames, function (permissionName) { + definePermission(permissionName, validationFunction); + }); + } + + /** + * Deletes permission + * + * @param permissionName {String} Name of defined permission + */ + function removePermissionDefinition(permissionName) { + delete permissionStore[permissionName]; + } + + /** + * Checks if permission exists + * + * @param permissionName {String} Name of defined permission + * @returns {Boolean} + */ + function hasPermissionDefinition(permissionName) { + return angular.isDefined(permissionStore[permissionName]); + } + + /** + * Returns permission by it's name + * + * @returns {Object} Permissions collection + */ + function getPermissionDefinition(permissionName) { + return permissionStore[permissionName]; + } + + /** + * Returns all permissions + * + * @returns {Object} Permissions collection + */ + function getStore() { + return permissionStore; + } + + /** + * Removes all permissions + */ + function clearStore() { + permissionStore = {}; + } + }); +}()); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/test/authorization/Authorization.test.js b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/test/authorization/Authorization.test.js new file mode 100644 index 0000000..97f967f --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/test/authorization/Authorization.test.js @@ -0,0 +1,173 @@ +describe('service: Authorization', function () { + 'use strict'; + + var $q, $rootScope, PermissionStore, RoleStore, PermissionMap, Authorization; + + beforeEach(function () { + module('permission'); + + inject(function ($injector) { + PermissionStore = $injector.get('PermissionStore'); + RoleStore = $injector.get('RoleStore'); + PermissionMap = $injector.get('PermissionMap'); + Authorization = $injector.get('Authorization'); + $q = $injector.get('$q'); + $rootScope = $injector.get('$rootScope'); + }); + }); + + describe('method: authorize', function () { + + var isResolved; + + beforeEach(function () { + PermissionStore.definePermission('USER', function () { + return true; + }); + + PermissionStore.definePermission('ADMIN', function () { + return false; + }); + + RoleStore.defineRole('ACCOUNTANT', ['USER']); + RoleStore.defineRole('ADMIN_ACCOUNTANT', ['ADMIN']); + + isResolved = false; + }); + + it('should resolve promise when "only" matches permissions', function () { + // GIVEN + Authorization + .authorize(new PermissionMap({only: ['USER']}), null) + .then(function () { + isResolved = true; + }); + + // WHEN + $rootScope.$apply(); + + // THEN + expect(isResolved).toEqual(true); + }); + + it('should resolve promise when "only" matches roles', function () { + // GIVEN + Authorization + .authorize(new PermissionMap({only: ['ACCOUNTANT']})) + .then(function () { + isResolved = true; + }); + + // WHEN + $rootScope.$apply(); + + // THEN + expect(isResolved).toEqual(true); + }); + + it('should reject promise when "only" mismatches permissions', function () { + // GIVEN + Authorization + .authorize(new PermissionMap({only: ['ADMIN']})) + .catch(function () { + isResolved = true; + }); + + // WHEN + $rootScope.$apply(); + + // THEN + expect(isResolved).toEqual(true); + }); + + it('should reject promise when "only" mismatches roles', function () { + // GIVEN + Authorization + .authorize(new PermissionMap({only: ['ADMIN_ACCOUNTANT']})) + .catch(function () { + isResolved = true; + }); + + // WHEN + $rootScope.$apply(); + + // THEN + expect(isResolved).toEqual(true); + }); + + it('should resolve promise when "except" mismatches permissions', function () { + // GIVEN + Authorization + .authorize(new PermissionMap({except: ['ADMIN']})) + .then(function () { + isResolved = true; + }); + + // WHEN + $rootScope.$apply(); + + // THEN + expect(isResolved).toEqual(true); + }); + + it('should resolve promise when "except" mismatches roles', function () { + // GIVEN + Authorization + .authorize(new PermissionMap({except: ['ADMIN_ACCOUNTANT']})) + .then(function () { + isResolved = true; + }); + + // WHEN + $rootScope.$apply(); + + // THEN + expect(isResolved).toEqual(true); + }); + + it('should reject promise when "except" matches permissions', function () { + // GIVEN + Authorization + .authorize(new PermissionMap({except: ['USER']})) + .catch(function () { + isResolved = true; + }); + + // WHEN + $rootScope.$apply(); + + // THEN + expect(isResolved).toEqual(true); + }); + + it('should reject promise when "except" matches roles', function () { + // GIVEN + Authorization + .authorize(new PermissionMap({except: ['ACCOUNTANT']})) + .catch(function () { + isResolved = true; + }); + + // WHEN + $rootScope.$apply(); + + // THEN + expect(isResolved).toEqual(true); + }); + + it('should reject promise when permission/role is undefined', function () { + // GIVEN + Authorization + .authorize(new PermissionMap({only: ['SUPER_ADMIN']})) + .catch(function () { + isResolved = true; + }); + + // WHEN + $rootScope.$apply(); + + // THEN + expect(isResolved).toEqual(true); + }); + }); +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/test/core/permissionDirective.test.js b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/test/core/permissionDirective.test.js new file mode 100644 index 0000000..4bbf763 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/test/core/permissionDirective.test.js @@ -0,0 +1,110 @@ +describe('directive: Permission', function () { + 'use strict'; + + var $q, $compile, $rootScope, Authorization, PermissionStore, PermissionMap; + + + beforeEach(function () { + // Instantiate module + module('permission'); + + // Inject services into module + inject(function ($injector) { + $q = $injector.get('$q'); + $compile = $injector.get('$compile'); + $rootScope = $injector.get('$rootScope').$new(); + Authorization = $injector.get('Authorization'); + PermissionStore = $injector.get('PermissionStore'); + PermissionMap = $injector.get('PermissionMap'); + }); + }); + + // Initialize permissions + beforeEach(function () { + PermissionStore.definePermission('USER', function () { + return true; + }); + + PermissionStore.definePermission('ADMIN', function () { + return false; + }); + }); + + it('should show element if authorized when permissions are passed as string array', function () { + // GIVEN + var element = angular.element('
    '); + + // WHEN + $compile(element)($rootScope); + $rootScope.$digest(); + + // THEN + expect(element.hasClass('ng-hide')).toBeFalsy(); + }); + + it('should show element if authorized when permissions are passed as variable reference', function () { + // GIVEN + var element = angular.element('
    '); + $rootScope.only = ['USER']; + + // WHEN + $compile(element)($rootScope); + $rootScope.$digest(); + + // THEN + expect(element.hasClass('ng-hide')).toBeFalsy(); + }); + + it('should hide element if unauthorized when permissions are passed as string array', function () { + // GIVEN + var element = angular.element('
    '); + + // WHEN + $compile(element)($rootScope); + $rootScope.$digest(); + + // THEN + expect(element.hasClass('ng-hide')).toBeTruthy(); + }); + + it('should hide element if unauthorized when permissions are passed as variable reference', function () { + // GIVEN + var element = angular.element('
    '); + $rootScope.except = ['USER']; + + // WHEN + $compile(element)($rootScope); + $rootScope.$digest(); + + // THEN + expect(element.hasClass('ng-hide')).toBeTruthy(); + }); + + it('should watch for changes in "only" and "except" attributes', function () { + // GIVEN + var element = angular.element('
    '); + $rootScope.only = ['USER']; + $compile(element)($rootScope); + $rootScope.$digest(); + + // WHEN + $rootScope.only = ['ADMIN']; + $rootScope.$digest(); + + // THEN + expect(element.hasClass('ng-hide')).toBeTruthy(); + }); + + it('should call authorize method', function () { + // GIVEN + var element = angular.element('
    '); + spyOn(Authorization, 'authorize'); + + // WHEN + $compile(element)($rootScope); + $rootScope.$digest(); + + // THEN + expect(Authorization.authorize).toHaveBeenCalledWith(new PermissionMap({only: undefined, except: ['USER']}), null); + }); +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/test/models/Permission.test.js b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/test/models/Permission.test.js new file mode 100644 index 0000000..cf48edb --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/test/models/Permission.test.js @@ -0,0 +1,52 @@ +describe('model: Permission', function () { + 'use strict'; + + var $q, $rootScope, Permission; + + beforeEach(function () { + module('permission'); + + inject(function ($injector) { + $q = $injector.get('$q'); + $rootScope = $injector.get('$rootScope'); + Permission = $injector.get('Permission'); + }); + }); + + describe('constructor: Permission', function () { + it('should throw an exception on invalid permissionName', function () { + // GIVEN + // WHEN + // THEN + expect(function () { + new Permission(null, function () { + return true; + }); + }).toThrow(new TypeError('Parameter "permissionName" name must be String')); + }); + + it('should throw an exception on invalid validationFunction', function () { + // GIVEN + // WHEN + // THEN + expect(function () { + new Permission('valid-name', undefined); + }).toThrow(new TypeError('Parameter "validationFunction" must be Function')); + }); + + it('should return new permission definition instance for correct parameters', function () { + // GIVEN + var permissionName = 'user'; + var validationFunction = function () { + return true; + }; + + // WHEN + var permission = new Permission(permissionName, validationFunction); + + // THEN + expect(permission.permissionName).toBe(permissionName); + expect(permission.validationFunction).toBe(validationFunction); + }); + }); +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/test/models/PermissionMap/exceptParam.test.js b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/test/models/PermissionMap/exceptParam.test.js new file mode 100644 index 0000000..dd3f3fa --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/test/models/PermissionMap/exceptParam.test.js @@ -0,0 +1,192 @@ +describe('model: PermissionMap', function () { + 'use strict'; + + var $rootScope, $state, $stateProvider, PermissionStore; + + beforeEach(function () { + module('ui.router', function ($injector) { + $stateProvider = $injector.get('$stateProvider'); + }); + + module('permission'); + + inject(function ($injector) { + $state = $injector.get('$state'); + $rootScope = $injector.get('$rootScope'); + PermissionStore = $injector.get('PermissionStore'); + }); + }); + + // Initialize permissions + beforeEach(function () { + PermissionStore.definePermission('AUTHORIZED', function () { + return true; + }); + + PermissionStore.definePermission('ADMIN', function () { + return false; + }); + + PermissionStore.definePermission('UNAUTHORIZED', function () { + return false; + }); + }); + + // Set default states and go home + beforeEach(function () { + $stateProvider + .state('home', {}); + + $state.go('home'); + $rootScope.$apply(); + }); + + describe('param: except', function () { + + function authorizationTests() { + it('should go to state if authorized', function () { + // GIVEN + // WHEN + $state.go('authorized'); + $rootScope.$digest(); + + // THEN + expect($state.current.name).toBe('authorized'); + }); + + it('should go to child state if parent state is authorized', function () { + // GIVEN + $stateProvider.state('authorized.child', {}); + + // WHEN + $state.go('authorized.child'); + $rootScope.$digest(); + + // THEN + expect($state.current.name).toBe('authorized.child'); + }); + + it('should go to authorized state even if called multiple time', function () { + // GIVEN + $stateProvider.state('authorized.child', {}); + + // WHEN + $state.go('authorized.child'); + $rootScope.$digest(); + $state.go('authorized.child'); + $rootScope.$digest(); + + // THEN + expect($state.current.name).toBe('authorized.child'); + }); + + it('should not go to state if unauthorized', function () { + // GIVEN + // WHEN + $state.go('unauthorized'); + $rootScope.$digest(); + + // THEN + expect($state.current.name).toBe('home'); + }); + + it('should not go to child state if parent state is not authorized', function () { + // GIVEN + $stateProvider.state('unauthorized.child', {}); + + + // WHEN + $state.go('unauthorized.child'); + $rootScope.$digest(); + + // THEN + expect($state.current.name).toBe('home'); + }); + + it('should not go to unauthorized state even if accessed multiple times', function () { + // GIVEN + $stateProvider.state('unauthorized.child', {}); + + + // WHEN + $state.go('unauthorized.child'); + $rootScope.$digest(); + $state.go('unauthorized.child'); + $rootScope.$digest(); + + // THEN + expect($state.current.name).toBe('home'); + }); + } + + describe('used as string', function () { + beforeEach(function () { + $stateProvider + .state('authorized', { + data: { + permissions: { + except: 'UNAUTHORIZED' + } + } + }) + .state('unauthorized', { + data: { + permissions: { + except: 'AUTHORIZED' + } + } + }); + }); + + authorizationTests(); + }); + + describe('used as array', function () { + beforeEach(function () { + $stateProvider + .state('authorized', { + data: { + permissions: { + except: ['UNAUTHORIZED', 'ADMIN'] + } + } + }) + .state('unauthorized', { + data: { + permissions: { + except: ['AUTHORIZED'] + } + } + }); + }); + + authorizationTests(); + }); + + describe('used as function', function () { + beforeEach(function () { + $stateProvider + .state('authorized', { + data: { + permissions: { + except: function () { + return ['UNAUTHORIZED', 'ADMIN']; + } + } + } + }) + .state('unauthorized', { + data: { + permissions: { + except: function () { + return ['AUTHORIZED']; + } + } + } + }); + }); + + authorizationTests(); + }); + }); +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/test/models/PermissionMap/onlyParam.test.js b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/test/models/PermissionMap/onlyParam.test.js new file mode 100644 index 0000000..ed4b5d7 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/test/models/PermissionMap/onlyParam.test.js @@ -0,0 +1,192 @@ +describe('model: PermissionMap', function () { + 'use strict'; + + var $rootScope, $state, $stateProvider, PermissionStore; + + beforeEach(function () { + module('ui.router', function ($injector) { + $stateProvider = $injector.get('$stateProvider'); + }); + + module('permission'); + + inject(function ($injector) { + $state = $injector.get('$state'); + $rootScope = $injector.get('$rootScope'); + PermissionStore = $injector.get('PermissionStore'); + }); + }); + + // Initialize permissions + beforeEach(function () { + PermissionStore.definePermission('AUTHORIZED', function () { + return true; + }); + + PermissionStore.definePermission('ADMIN', function () { + return false; + }); + + PermissionStore.definePermission('UNAUTHORIZED', function () { + return false; + }); + }); + + // Set default states and go home + beforeEach(function () { + $stateProvider + .state('home', {}); + + $state.go('home'); + $rootScope.$apply(); + }); + + describe('param: only', function () { + + function authorizationTests() { + it('should go to state if authorized', function () { + // GIVEN + // WHEN + $state.go('authorized'); + $rootScope.$digest(); + + // THEN + expect($state.current.name).toBe('authorized'); + }); + + it('should go to child state if parent state is authorized', function () { + // GIVEN + $stateProvider.state('authorized.child', {}); + + // WHEN + $state.go('authorized.child'); + $rootScope.$digest(); + + // THEN + expect($state.current.name).toBe('authorized.child'); + }); + + it('should go to authorized state even if called multiple time', function () { + // GIVEN + $stateProvider.state('authorized.child', {}); + + // WHEN + $state.go('authorized.child'); + $rootScope.$digest(); + $state.go('authorized.child'); + $rootScope.$digest(); + + // THEN + expect($state.current.name).toBe('authorized.child'); + }); + + it('should not go to state if unauthorized', function () { + // GIVEN + // WHEN + $state.go('unauthorized'); + $rootScope.$digest(); + + // THEN + expect($state.current.name).toBe('home'); + }); + + it('should not go to child state if parent state is not authorized', function () { + // GIVEN + $stateProvider.state('unauthorized.child', {}); + + + // WHEN + $state.go('unauthorized.child'); + $rootScope.$digest(); + + // THEN + expect($state.current.name).toBe('home'); + }); + + it('should not go to unauthorized state even if accessed multiple times', function () { + // GIVEN + $stateProvider.state('unauthorized.child', {}); + + + // WHEN + $state.go('unauthorized.child'); + $rootScope.$digest(); + $state.go('unauthorized.child'); + $rootScope.$digest(); + + // THEN + expect($state.current.name).toBe('home'); + }); + } + + describe('used as string', function () { + beforeEach(function () { + $stateProvider + .state('authorized', { + data: { + permissions: { + only: 'AUTHORIZED' + } + } + }) + .state('unauthorized', { + data: { + permissions: { + only: 'UNAUTHORIZED' + } + } + }); + }); + + authorizationTests(); + }); + + describe('used as array', function () { + beforeEach(function () { + $stateProvider + .state('authorized', { + data: { + permissions: { + only: ['AUTHORIZED', 'ADMIN'] + } + } + }) + .state('unauthorized', { + data: { + permissions: { + only: ['UNAUTHORIZED'] + } + } + }); + }); + + authorizationTests(); + }); + + describe('used as function', function () { + beforeEach(function () { + $stateProvider + .state('authorized', { + data: { + permissions: { + only: function () { + return ['AUTHORIZED', 'ADMIN']; + } + } + } + }) + .state('unauthorized', { + data: { + permissions: { + only: function () { + return ['UNAUTHORIZED']; + } + } + } + }); + }); + + authorizationTests(); + }); + }); +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/test/models/PermissionMap/redirectToParam.test.js b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/test/models/PermissionMap/redirectToParam.test.js new file mode 100644 index 0000000..5287c74 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/test/models/PermissionMap/redirectToParam.test.js @@ -0,0 +1,292 @@ +describe('model: PermissionMap', function () { + 'use strict'; + + var $rootScope, $state, $stateProvider, $q, PermissionStore; + + beforeEach(function () { + module('ui.router', function ($injector) { + $stateProvider = $injector.get('$stateProvider'); + }); + + module('permission'); + + inject(function ($injector) { + $state = $injector.get('$state'); + $q = $injector.get('$q'); + $rootScope = $injector.get('$rootScope'); + PermissionStore = $injector.get('PermissionStore'); + }); + }); + + // Initialize permissions + beforeEach(function () { + PermissionStore.definePermission('accepted', function () { + return true; + }); + + PermissionStore.definePermission('denied', function () { + return false; + }); + }); + + // Set default states and go home + beforeEach(function () { + $stateProvider + .state('home', {}) + .state('accepted', { + data: { + permissions: {only: ['accepted']} + } + }) + .state('denied', { + data: { + permissions: { + only: ['denied'] + } + } + }); + + $state.go('home'); + $rootScope.$apply(); + }); + + describe('param: redirectTo', function () { + + describe('used as string', function () { + it('should redirect based on state name', function () { + // GIVEN + $stateProvider + .state('redirected', {}) + .state('redirect', { + data: { + permissions: { + only: ['denied'], + redirectTo: 'redirected' + } + } + }); + + // WHEN + $state.go('redirect'); + $rootScope.$digest(); + + // THEN + expect($state.current.name).toBe('redirected'); + }); + }); + + describe('used as object', function () { + it('should throw error when "default" property is not defined', function () { + // GIVEN + var error; + + $stateProvider + .state('redirect', { + data: { + permissions: { + only: ['denied'], + redirectTo: {} + } + } + }); + + // WHEN + $state.go('redirect'); + try { + $rootScope.$apply(); + } catch (err) { + error = err; + } + + // THEN + expect(error.message).toBe('When used "redirectTo" as object, property "default" must be defined'); + }); + + it('should redirect to "default" property value if rejected permission is not found', function () { + // GIVEN + $stateProvider + .state('redirect', { + data: { + permissions: { + only: ['denied'], + redirectTo: { + otherThanDenied: 'otherThanDenied', + default: 'default' + } + } + } + }) + .state('default', {}) + .state('otherThanDenied', {}); + + // WHEN + $state.go('redirect'); + $rootScope.$apply(); + + // THEN + expect($state.current.name).toBe('default'); + expect($state.current.name).not.toBe('otherThanDenied'); + }); + + it('should redirect based on results of rejected permission with string property', function () { + // GIVEN + $stateProvider + .state('redirect', { + data: { + permissions: { + only: ['denied'], + redirectTo: { + denied: 'redirected', + default: 'default' + } + } + } + }) + .state('default', {}) + .state('redirected', {}); + + // WHEN + $state.go('redirect'); + $rootScope.$apply(); + + // THEN + expect($state.current.name).toBe('redirected'); + expect($state.current.name).not.toBe('default'); + }); + + it('should redirect based on results of rejected permission with function', function () { + // GIVEN + $stateProvider + .state('redirect', { + data: { + permissions: { + only: ['denied'], + redirectTo: { + denied: function () { + return 'redirected'; + }, + default: 'default' + } + } + } + }) + .state('default', {}) + .state('redirected', {}); + + // WHEN + $state.go('redirect'); + $rootScope.$apply(); + + // THEN + expect($state.current.name).toBe('redirected'); + expect($state.current.name).not.toBe('default'); + }); + + it('should redirect based on results of rejected permission with promise', function () { + // GIVEN + $stateProvider + .state('redirect', { + data: { + permissions: { + only: ['denied'], + redirectTo: { + denied: function () { + return $q.when('redirected'); + }, + default: 'default' + } + } + } + }) + .state('default', {}) + .state('redirected', {}); + + // WHEN + $state.go('redirect'); + $rootScope.$apply(); + + // THEN + expect($state.current.name).toBe('redirected'); + expect($state.current.name).not.toBe('default'); + }); + }); + + describe('used as function/promise', function () { + it('should throw error when function do not return state string', function () { + // GIVEN + var error; + + $stateProvider + .state('redirect', { + url: '/function', + data: { + permissions: { + only: ['denied'], + redirectTo: function () { + return null; + } + } + } + }); + + // WHEN + $state.go('redirect'); + try { + $rootScope.$apply(); + } catch (err) { + error = err; + } + + // THEN + expect(error.message).toBe('When used "redirectTo" as function, returned value must be string with state name'); + }); + + it('should redirect based on results of function', function () { + // GIVEN + $stateProvider + .state('redirect', { + data: { + permissions: { + only: ['denied'], + redirectTo: function () { + return 'other'; + } + } + } + }) + .state('other', {}); + + // WHEN + $state.go('redirect'); + $rootScope.$apply(); + + // THEN + expect($state.current.name).toBe('other'); + }); + + it('should redirect with promise based functions', function () { + // GIVEN + $stateProvider.state('redirect', { + data: { + permissions: { + only: ['denied'], + redirectTo: function () { + return $q.when('other'); + } + } + } + }) + .state('other', { + url: '/other' + }); + + // WHEN + $state.go('redirect'); + $rootScope.$apply(); + + // THEN + expect($state.current.name).toBe('other'); + }); + }); + }); +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/test/stores/PermissionStore.test.js b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/test/stores/PermissionStore.test.js new file mode 100644 index 0000000..a629fd9 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/components/angular-permission/test/stores/PermissionStore.test.js @@ -0,0 +1,110 @@ +describe('service: PermissionStore', function () { + 'use strict'; + + var $q, $rootScope, PermissionStore, Permission; + + beforeEach(function () { + module('permission'); + + inject(function ($injector) { + $q = $injector.get('$q'); + $rootScope = $injector.get('$rootScope'); + PermissionStore = $injector.get('PermissionStore'); + Permission = $injector.get('Permission'); + }); + }); + + describe('method: definePermission', function () { + it('should add permission definition to store for correct parameters', function () { + // GIVEN + // WHEN + PermissionStore.definePermission('user', function () { + return true; + }); + // THEN + expect(PermissionStore.hasPermissionDefinition('user')).toBe(true); + }); + }); + + describe('method: defineManyPermissions', function () { + it('should throw error if permissionNames is not Array', function () { + // GIVEN + // WHEN + // THEN + expect(function () { + PermissionStore.defineManyPermissions({}, null); + }).toThrow(new TypeError('Parameter "permissionNames" name must be Array')); + }); + + it('should add permission definitions to store for correct set of parameters', function () { + // GIVEN + // WHEN + PermissionStore.defineManyPermissions(['user', 'admin'], function () { + return true; + }); + + // THEN + expect(PermissionStore.hasPermissionDefinition('user')).toBe(true); + expect(PermissionStore.hasPermissionDefinition('admin')).toBe(true); + }); + }); + + describe('method: getPermissionDefinition', function () { + it('should return permission definition object', function () { + // GIVEN + PermissionStore.definePermission('USER', function () { + return true; + }); + // WHEN + var permission = PermissionStore.getPermissionDefinition('USER'); + + // THEN + expect(permission instanceof Permission).toBeTruthy(); + }); + }); + + describe('method: hasPermissionDefinition', function () { + it('should check if permission is defined', function () { + // GIVEN + // WHEN + PermissionStore.definePermission('user', function () { + return true; + }); + + // THEN + expect(PermissionStore.hasPermissionDefinition('user')).toBeTruthy(); + expect(PermissionStore.hasPermissionDefinition('admin')).toBeFalsy(); + }); + }); + + describe('method: clearStore', function () { + it('should remove all permission definitions', function () { + // GIVEN + PermissionStore.defineManyPermissions(['user', 'admin', 'superAdmin'], function () { + return true; + }); + + // WHEN + PermissionStore.clearStore(); + + // THEN + expect(Object.keys(PermissionStore.getStore()).length).toBe(0); + }); + }); + + describe('method: removePermissionDefinition', function () { + it('should remove definition from store', function () { + // GIVEN + PermissionStore.defineManyPermissions(['user', 'admin'], function () { + return true; + }); + + // WHEN + PermissionStore.removePermissionDefinition('user'); + + // THEN + expect(PermissionStore.hasPermissionDefinition('user')).toBeFalsy(); + expect(PermissionStore.hasPermissionDefinition('admin')).toBeTruthy(); + }); + }); +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/js/components/angular-ui-router/CONTRIBUTING.md b/src/main/webapp/WEB-INF/views/src/js/components/angular-ui-router/CONTRIBUTING.md new file mode 100644 index 0000000..7e4fcb8 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/components/angular-ui-router/CONTRIBUTING.md @@ -0,0 +1,65 @@ + +# Report an Issue + +Help us make UI-Router better! If you think you might have found a bug, or some other weirdness, start by making sure +it hasn't already been reported. You can [search through existing issues](https://github.com/angular-ui/ui-router/search?q=wat%3F&type=Issues) +to see if someone's reported one similar to yours. + +If not, then [create a plunkr](http://bit.ly/UIR-Plunk) that demonstrates the problem (try to use as little code +as possible: the more minimalist, the faster we can debug it). + +Next, [create a new issue](https://github.com/angular-ui/ui-router/issues/new) that briefly explains the problem, +and provides a bit of background as to the circumstances that triggered it. Don't forget to include the link to +that plunkr you created! + +**Note**: If you're unsure how a feature is used, or are encountering some unexpected behavior that you aren't sure +is a bug, it's best to talk it out on +[StackOverflow](http://stackoverflow.com/questions/ask?tags=angularjs,angular-ui-router) before reporting it. This +keeps development streamlined, and helps us focus on building great software. + + +Issues only! | +-------------| +Please keep in mind that the issue tracker is for *issues*. Please do *not* post an issue if you need help or support. Instead, see one of the above-mentioned forums or [IRC](irc://irc.freenode.net/#angularjs). | + +####Purple Labels +A purple label means that **you** need to take some further action. + - ![Not Actionable - Need Info](ngdoc_assets/incomplete.png): Your issue is not specific enough, or there is no clear action that we can take. Please clarify and refine your issue. + - ![Plunkr Please](ngdoc_assets/example.png): Please [create a plunkr](http://bit.ly/UIR-Plunk) + - ![StackOverflow](ngdoc_assets/so.png): We suspect your issue is really a help request, or could be answered by the community. Please ask your question on [StackOverflow](http://stackoverflow.com/questions/ask?tags=angularjs,angular-ui-router). If you determine that is an actual issue, please explain why. + +If your issue gets labeled with purple label, no further action will be taken until you respond to the label appropriately. + +# Contribute + +**(1)** See the **[Developing](#developing)** section below, to get the development version of UI-Router up and running on your local machine. + +**(2)** Check out the [roadmap](https://github.com/angular-ui/ui-router/milestones) to see where the project is headed, and if your feature idea fits with where we're headed. + +**(3)** If you're not sure, [open an RFC](https://github.com/angular-ui/ui-router/issues/new?title=RFC:%20My%20idea) to get some feedback on your idea. + +**(4)** Finally, commit some code and open a pull request. Code & commits should abide by the following rules: + +- *Always* have test coverage for new features (or regression tests for bug fixes), and *never* break existing tests +- Commits should represent one logical change each; if a feature goes through multiple iterations, squash your commits down to one +- Make sure to follow the [Angular commit message format](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit-message-format) so your change will appear in the changelog of the next release. +- Changes should always respect the coding style of the project + + + +# Developing + +UI-Router uses grunt >= 0.4.x. Make sure to upgrade your environment and read the +[Migration Guide](http://gruntjs.com/upgrading-from-0.3-to-0.4). + +Dependencies for building from source and running tests: + +* [grunt-cli](https://github.com/gruntjs/grunt-cli) - run: `$ npm install -g grunt-cli` +* Then, install the development dependencies by running `$ npm install` from the project directory + +There are a number of targets in the gruntfile that are used to generating different builds: + +* `grunt`: Perform a normal build, runs jshint and karma tests +* `grunt build`: Perform a normal build +* `grunt dist`: Perform a clean build and generate documentation +* `grunt dev`: Run dev server (sample app) and watch for changes, builds and runs karma tests on changes. diff --git a/src/main/webapp/WEB-INF/views/src/js/components/angular-ui-router/LICENSE b/src/main/webapp/WEB-INF/views/src/js/components/angular-ui-router/LICENSE new file mode 100644 index 0000000..6413b09 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/components/angular-ui-router/LICENSE @@ -0,0 +1,21 @@ +The MIT License + +Copyright (c) 2013-2015 The AngularUI Team, Karsten Sperling + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/src/main/webapp/WEB-INF/views/src/js/components/angular-ui-router/release/angular-ui-router.min.js b/src/main/webapp/WEB-INF/views/src/js/components/angular-ui-router/release/angular-ui-router.min.js new file mode 100644 index 0000000..f1b0e35 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/components/angular-ui-router/release/angular-ui-router.min.js @@ -0,0 +1,8 @@ +/** + * State-based routing for AngularJS + * @version v0.2.18 + * @link http://angular-ui.github.com/ + * @license MIT License, http://www.opensource.org/licenses/MIT + */ +"undefined"!=typeof module&&"undefined"!=typeof exports&&module.exports===exports&&(module.exports="ui.router"),function(a,b,c){"use strict";function d(a,b){return R(new(R(function(){},{prototype:a})),b)}function e(a){return Q(arguments,function(b){b!==a&&Q(b,function(b,c){a.hasOwnProperty(c)||(a[c]=b)})}),a}function f(a,b){var c=[];for(var d in a.path){if(a.path[d]!==b.path[d])break;c.push(a.path[d])}return c}function g(a){if(Object.keys)return Object.keys(a);var b=[];return Q(a,function(a,c){b.push(c)}),b}function h(a,b){if(Array.prototype.indexOf)return a.indexOf(b,Number(arguments[2])||0);var c=a.length>>>0,d=Number(arguments[2])||0;for(d=0>d?Math.ceil(d):Math.floor(d),0>d&&(d+=c);c>d;d++)if(d in a&&a[d]===b)return d;return-1}function i(a,b,c,d){var e,i=f(c,d),j={},k=[];for(var l in i)if(i[l]&&i[l].params&&(e=g(i[l].params),e.length))for(var m in e)h(k,e[m])>=0||(k.push(e[m]),j[e[m]]=a[e[m]]);return R({},j,b)}function j(a,b,c){if(!c){c=[];for(var d in a)c.push(d)}for(var e=0;e "));if(s[c]=d,N(a))q.push(c,[function(){return b.get(a)}],j);else{var e=b.annotate(a);Q(e,function(a){a!==c&&i.hasOwnProperty(a)&&n(i[a],a)}),q.push(c,a,e)}r.pop(),s[c]=f}}function o(a){return O(a)&&a.then&&a.$$promises}if(!O(i))throw new Error("'invocables' must be an object");var p=g(i||{}),q=[],r=[],s={};return Q(i,n),i=r=s=null,function(d,f,g){function h(){--u||(v||e(t,f.$$values),r.$$values=t,r.$$promises=r.$$promises||!0,delete r.$$inheritedValues,n.resolve(t))}function i(a){r.$$failure=a,n.reject(a)}function j(c,e,f){function j(a){l.reject(a),i(a)}function k(){if(!L(r.$$failure))try{l.resolve(b.invoke(e,g,t)),l.promise.then(function(a){t[c]=a,h()},j)}catch(a){j(a)}}var l=a.defer(),m=0;Q(f,function(a){s.hasOwnProperty(a)&&!d.hasOwnProperty(a)&&(m++,s[a].then(function(b){t[a]=b,--m||k()},j))}),m||k(),s[c]=l.promise}if(o(d)&&g===c&&(g=f,f=d,d=null),d){if(!O(d))throw new Error("'locals' must be an object")}else d=k;if(f){if(!o(f))throw new Error("'parent' must be a promise returned by $resolve.resolve()")}else f=l;var n=a.defer(),r=n.promise,s=r.$$promises={},t=R({},d),u=1+q.length/3,v=!1;if(L(f.$$failure))return i(f.$$failure),r;f.$$inheritedValues&&e(t,m(f.$$inheritedValues,p)),R(s,f.$$promises),f.$$values?(v=e(t,m(f.$$values,p)),r.$$inheritedValues=m(f.$$values,p),h()):(f.$$inheritedValues&&(r.$$inheritedValues=m(f.$$inheritedValues,p)),f.then(h,i));for(var w=0,x=q.length;x>w;w+=3)d.hasOwnProperty(q[w])?h():j(q[w],q[w+1],q[w+2]);return r}},this.resolve=function(a,b,c,d){return this.study(a)(b,c,d)}}function q(a,b,c){this.fromConfig=function(a,b,c){return L(a.template)?this.fromString(a.template,b):L(a.templateUrl)?this.fromUrl(a.templateUrl,b):L(a.templateProvider)?this.fromProvider(a.templateProvider,b,c):null},this.fromString=function(a,b){return M(a)?a(b):a},this.fromUrl=function(c,d){return M(c)&&(c=c(d)),null==c?null:a.get(c,{cache:b,headers:{Accept:"text/html"}}).then(function(a){return a.data})},this.fromProvider=function(a,b,d){return c.invoke(a,null,d||{params:b})}}function r(a,b,e){function f(b,c,d,e){if(q.push(b),o[b])return o[b];if(!/^\w+([-.]+\w+)*(?:\[\])?$/.test(b))throw new Error("Invalid parameter name '"+b+"' in pattern '"+a+"'");if(p[b])throw new Error("Duplicate parameter name '"+b+"' in pattern '"+a+"'");return p[b]=new U.Param(b,c,d,e),p[b]}function g(a,b,c,d){var e=["",""],f=a.replace(/[\\\[\]\^$*+?.()|{}]/g,"\\$&");if(!b)return f;switch(c){case!1:e=["(",")"+(d?"?":"")];break;case!0:f=f.replace(/\/$/,""),e=["(?:/(",")|/)?"];break;default:e=["("+c+"|",")?"]}return f+e[0]+b+e[1]}function h(e,f){var g,h,i,j,k;return g=e[2]||e[3],k=b.params[g],i=a.substring(m,e.index),h=f?e[4]:e[4]||("*"==e[1]?".*":null),h&&(j=U.type(h)||d(U.type("string"),{pattern:new RegExp(h,b.caseInsensitive?"i":c)})),{id:g,regexp:h,segment:i,type:j,cfg:k}}b=R({params:{}},O(b)?b:{});var i,j=/([:*])([\w\[\]]+)|\{([\w\[\]]+)(?:\:\s*((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g,k=/([:]?)([\w\[\].-]+)|\{([\w\[\].-]+)(?:\:\s*((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g,l="^",m=0,n=this.segments=[],o=e?e.params:{},p=this.params=e?e.params.$$new():new U.ParamSet,q=[];this.source=a;for(var r,s,t;(i=j.exec(a))&&(r=h(i,!1),!(r.segment.indexOf("?")>=0));)s=f(r.id,r.type,r.cfg,"path"),l+=g(r.segment,s.type.pattern.source,s.squash,s.isOptional),n.push(r.segment),m=j.lastIndex;t=a.substring(m);var u=t.indexOf("?");if(u>=0){var v=this.sourceSearch=t.substring(u);if(t=t.substring(0,u),this.sourcePath=a.substring(0,m+u),v.length>0)for(m=0;i=k.exec(v);)r=h(i,!0),s=f(r.id,r.type,r.cfg,"search"),m=j.lastIndex}else this.sourcePath=a,this.sourceSearch="";l+=g(t)+(b.strict===!1?"/?":"")+"$",n.push(t),this.regexp=new RegExp(l,b.caseInsensitive?"i":c),this.prefix=n[0],this.$$paramNames=q}function s(a){R(this,a)}function t(){function a(a){return null!=a?a.toString().replace(/~/g,"~~").replace(/\//g,"~2F"):a}function e(a){return null!=a?a.toString().replace(/~2F/g,"/").replace(/~~/g,"~"):a}function f(){return{strict:p,caseInsensitive:m}}function i(a){return M(a)||P(a)&&M(a[a.length-1])}function j(){for(;w.length;){var a=w.shift();if(a.pattern)throw new Error("You cannot override a type's .pattern at runtime.");b.extend(u[a.name],l.invoke(a.def))}}function k(a){R(this,a||{})}U=this;var l,m=!1,p=!0,q=!1,u={},v=!0,w=[],x={string:{encode:a,decode:e,is:function(a){return null==a||!L(a)||"string"==typeof a},pattern:/[^\/]*/},"int":{encode:a,decode:function(a){return parseInt(a,10)},is:function(a){return L(a)&&this.decode(a.toString())===a},pattern:/\d+/},bool:{encode:function(a){return a?1:0},decode:function(a){return 0!==parseInt(a,10)},is:function(a){return a===!0||a===!1},pattern:/0|1/},date:{encode:function(a){return this.is(a)?[a.getFullYear(),("0"+(a.getMonth()+1)).slice(-2),("0"+a.getDate()).slice(-2)].join("-"):c},decode:function(a){if(this.is(a))return a;var b=this.capture.exec(a);return b?new Date(b[1],b[2]-1,b[3]):c},is:function(a){return a instanceof Date&&!isNaN(a.valueOf())},equals:function(a,b){return this.is(a)&&this.is(b)&&a.toISOString()===b.toISOString()},pattern:/[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/,capture:/([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/},json:{encode:b.toJson,decode:b.fromJson,is:b.isObject,equals:b.equals,pattern:/[^\/]*/},any:{encode:b.identity,decode:b.identity,equals:b.equals,pattern:/.*/}};t.$$getDefaultValue=function(a){if(!i(a.value))return a.value;if(!l)throw new Error("Injectable functions cannot be called at configuration time");return l.invoke(a.value)},this.caseInsensitive=function(a){return L(a)&&(m=a),m},this.strictMode=function(a){return L(a)&&(p=a),p},this.defaultSquashPolicy=function(a){if(!L(a))return q;if(a!==!0&&a!==!1&&!N(a))throw new Error("Invalid squash policy: "+a+". Valid policies: false, true, arbitrary-string");return q=a,a},this.compile=function(a,b){return new r(a,R(f(),b))},this.isMatcher=function(a){if(!O(a))return!1;var b=!0;return Q(r.prototype,function(c,d){M(c)&&(b=b&&L(a[d])&&M(a[d]))}),b},this.type=function(a,b,c){if(!L(b))return u[a];if(u.hasOwnProperty(a))throw new Error("A type named '"+a+"' has already been defined.");return u[a]=new s(R({name:a},b)),c&&(w.push({name:a,def:c}),v||j()),this},Q(x,function(a,b){u[b]=new s(R({name:b},a))}),u=d(u,{}),this.$get=["$injector",function(a){return l=a,v=!1,j(),Q(x,function(a,b){u[b]||(u[b]=new s(a))}),this}],this.Param=function(a,d,e,f){function j(a){var b=O(a)?g(a):[],c=-1===h(b,"value")&&-1===h(b,"type")&&-1===h(b,"squash")&&-1===h(b,"array");return c&&(a={value:a}),a.$$fn=i(a.value)?a.value:function(){return a.value},a}function k(c,d,e){if(c.type&&d)throw new Error("Param '"+a+"' has two type configurations.");return d?d:c.type?b.isString(c.type)?u[c.type]:c.type instanceof s?c.type:new s(c.type):"config"===e?u.any:u.string}function m(){var b={array:"search"===f?"auto":!1},c=a.match(/\[\]$/)?{array:!0}:{};return R(b,c,e).array}function p(a,b){var c=a.squash;if(!b||c===!1)return!1;if(!L(c)||null==c)return q;if(c===!0||N(c))return c;throw new Error("Invalid squash policy: '"+c+"'. Valid policies: false, true, or arbitrary string")}function r(a,b,d,e){var f,g,i=[{from:"",to:d||b?c:""},{from:null,to:d||b?c:""}];return f=P(a.replace)?a.replace:[],N(e)&&f.push({from:e,to:c}),g=o(f,function(a){return a.from}),n(i,function(a){return-1===h(g,a.from)}).concat(f)}function t(){if(!l)throw new Error("Injectable functions cannot be called at configuration time");var a=l.invoke(e.$$fn);if(null!==a&&a!==c&&!x.type.is(a))throw new Error("Default value ("+a+") for parameter '"+x.id+"' is not an instance of Type ("+x.type.name+")");return a}function v(a){function b(a){return function(b){return b.from===a}}function c(a){var c=o(n(x.replace,b(a)),function(a){return a.to});return c.length?c[0]:a}return a=c(a),L(a)?x.type.$normalize(a):t()}function w(){return"{Param:"+a+" "+d+" squash: '"+A+"' optional: "+z+"}"}var x=this;e=j(e),d=k(e,d,f);var y=m();d=y?d.$asArray(y,"search"===f):d,"string"!==d.name||y||"path"!==f||e.value!==c||(e.value="");var z=e.value!==c,A=p(e,z),B=r(e,y,z,A);R(this,{id:a,type:d,location:f,array:y,squash:A,replace:B,isOptional:z,value:v,dynamic:c,config:e,toString:w})},k.prototype={$$new:function(){return d(this,R(new k,{$$parent:this}))},$$keys:function(){for(var a=[],b=[],c=this,d=g(k.prototype);c;)b.push(c),c=c.$$parent;return b.reverse(),Q(b,function(b){Q(g(b),function(b){-1===h(a,b)&&-1===h(d,b)&&a.push(b)})}),a},$$values:function(a){var b={},c=this;return Q(c.$$keys(),function(d){b[d]=c[d].value(a&&a[d])}),b},$$equals:function(a,b){var c=!0,d=this;return Q(d.$$keys(),function(e){var f=a&&a[e],g=b&&b[e];d[e].type.equals(f,g)||(c=!1)}),c},$$validates:function(a){var d,e,f,g,h,i=this.$$keys();for(d=0;de;e++)if(b(j[e]))return;k&&b(k)}}function o(){return i=i||e.$on("$locationChangeSuccess",n)}var p,q=g.baseHref(),r=d.url();return l||o(),{sync:function(){n()},listen:function(){return o()},update:function(a){return a?void(r=d.url()):void(d.url()!==r&&(d.url(r),d.replace()))},push:function(a,b,e){var f=a.format(b||{});null!==f&&b&&b["#"]&&(f+="#"+b["#"]),d.url(f),p=e&&e.$$avoidResync?d.url():c,e&&e.replace&&d.replace()},href:function(c,e,f){if(!c.validates(e))return null;var g=a.html5Mode();b.isObject(g)&&(g=g.enabled),g=g&&h.history;var i=c.format(e);if(f=f||{},g||null===i||(i="#"+a.hashPrefix()+i),null!==i&&e&&e["#"]&&(i+="#"+e["#"]),i=m(i,g,f.absolute),!f.absolute||!i)return i;var j=!g&&i?"/":"",k=d.port();return k=80===k||443===k?"":":"+k,[d.protocol(),"://",d.host(),k,j,i].join("")}}}var i,j=[],k=null,l=!1;this.rule=function(a){if(!M(a))throw new Error("'rule' must be a function");return j.push(a),this},this.otherwise=function(a){if(N(a)){var b=a;a=function(){return b}}else if(!M(a))throw new Error("'rule' must be a function");return k=a,this},this.when=function(a,b){var c,h=N(b);if(N(a)&&(a=d.compile(a)),!h&&!M(b)&&!P(b))throw new Error("invalid 'handler' in when()");var i={matcher:function(a,b){return h&&(c=d.compile(b),b=["$match",function(a){return c.format(a)}]),R(function(c,d){return g(c,b,a.exec(d.path(),d.search()))},{prefix:N(a.prefix)?a.prefix:""})},regex:function(a,b){if(a.global||a.sticky)throw new Error("when() RegExp must not be global or sticky");return h&&(c=b,b=["$match",function(a){return f(c,a)}]),R(function(c,d){return g(c,b,a.exec(d.path()))},{prefix:e(a)})}},j={matcher:d.isMatcher(a),regex:a instanceof RegExp};for(var k in j)if(j[k])return this.rule(i[k](a,b));throw new Error("invalid 'what' in when()")},this.deferIntercept=function(a){a===c&&(a=!0),l=a},this.$get=h,h.$inject=["$location","$rootScope","$injector","$browser","$sniffer"]}function v(a,e){function f(a){return 0===a.indexOf(".")||0===a.indexOf("^")}function m(a,b){if(!a)return c;var d=N(a),e=d?a:a.name,g=f(e);if(g){if(!b)throw new Error("No reference point given for path '"+e+"'");b=m(b);for(var h=e.split("."),i=0,j=h.length,k=b;j>i;i++)if(""!==h[i]||0!==i){if("^"!==h[i])break;if(!k.parent)throw new Error("Path '"+e+"' not valid for state '"+b.name+"'");k=k.parent}else k=b;h=h.slice(i).join("."),e=k.name+(k.name&&h?".":"")+h}var l=z[e];return!l||!d&&(d||l!==a&&l.self!==a)?c:l}function n(a,b){A[a]||(A[a]=[]),A[a].push(b)}function p(a){for(var b=A[a]||[];b.length;)q(b.shift())}function q(b){b=d(b,{self:b,resolve:b.resolve||{},toString:function(){return this.name}});var c=b.name;if(!N(c)||c.indexOf("@")>=0)throw new Error("State must have a valid name");if(z.hasOwnProperty(c))throw new Error("State '"+c+"' is already defined");var e=-1!==c.indexOf(".")?c.substring(0,c.lastIndexOf(".")):N(b.parent)?b.parent:O(b.parent)&&N(b.parent.name)?b.parent.name:"";if(e&&!z[e])return n(e,b.self);for(var f in C)M(C[f])&&(b[f]=C[f](b,C.$delegates[f]));return z[c]=b,!b[B]&&b.url&&a.when(b.url,["$match","$stateParams",function(a,c){y.$current.navigable==b&&j(a,c)||y.transitionTo(b,a,{inherit:!0,location:!1})}]),p(c),b}function r(a){return a.indexOf("*")>-1}function s(a){for(var b=a.split("."),c=y.$current.name.split("."),d=0,e=b.length;e>d;d++)"*"===b[d]&&(c[d]="*");return"**"===b[0]&&(c=c.slice(h(c,b[1])),c.unshift("**")),"**"===b[b.length-1]&&(c.splice(h(c,b[b.length-2])+1,Number.MAX_VALUE),c.push("**")),b.length!=c.length?!1:c.join("")===b.join("")}function t(a,b){return N(a)&&!L(b)?C[a]:M(b)&&N(a)?(C[a]&&!C.$delegates[a]&&(C.$delegates[a]=C[a]),C[a]=b,this):this}function u(a,b){return O(a)?b=a:b.name=a,q(b),this}function v(a,e,f,h,l,n,p,q,t){function u(b,c,d,f){var g=a.$broadcast("$stateNotFound",b,c,d);if(g.defaultPrevented)return p.update(),D;if(!g.retry)return null;if(f.$retry)return p.update(),E;var h=y.transition=e.when(g.retry);return h.then(function(){return h!==y.transition?A:(b.options.$retry=!0,y.transitionTo(b.to,b.toParams,b.options))},function(){return D}),p.update(),h}function v(a,c,d,g,i,j){function m(){var c=[];return Q(a.views,function(d,e){var g=d.resolve&&d.resolve!==a.resolve?d.resolve:{};g.$template=[function(){return f.load(e,{view:d,locals:i.globals,params:n,notify:j.notify})||""}],c.push(l.resolve(g,i.globals,i.resolve,a).then(function(c){if(M(d.controllerProvider)||P(d.controllerProvider)){var f=b.extend({},g,i.globals);c.$$controller=h.invoke(d.controllerProvider,null,f)}else c.$$controller=d.controller;c.$$state=a,c.$$controllerAs=d.controllerAs,i[e]=c}))}),e.all(c).then(function(){return i.globals})}var n=d?c:k(a.params.$$keys(),c),o={$stateParams:n};i.resolve=l.resolve(a.resolve,o,i.resolve,a);var p=[i.resolve.then(function(a){i.globals=a})];return g&&p.push(g),e.all(p).then(m).then(function(a){return i})}var A=e.reject(new Error("transition superseded")),C=e.reject(new Error("transition prevented")),D=e.reject(new Error("transition aborted")),E=e.reject(new Error("transition failed"));return x.locals={resolve:null,globals:{$stateParams:{}}},y={params:{},current:x.self,$current:x,transition:null},y.reload=function(a){return y.transitionTo(y.current,n,{reload:a||!0,inherit:!1,notify:!0})},y.go=function(a,b,c){return y.transitionTo(a,b,R({inherit:!0,relative:y.$current},c))},y.transitionTo=function(b,c,f){c=c||{},f=R({location:!0,inherit:!1,relative:null,notify:!0,reload:!1,$retry:!1},f||{});var g,j=y.$current,l=y.params,o=j.path,q=m(b,f.relative),r=c["#"];if(!L(q)){var s={to:b,toParams:c,options:f},t=u(s,j.self,l,f);if(t)return t;if(b=s.to,c=s.toParams,f=s.options,q=m(b,f.relative),!L(q)){if(!f.relative)throw new Error("No such state '"+b+"'");throw new Error("Could not resolve '"+b+"' from state '"+f.relative+"'")}}if(q[B])throw new Error("Cannot transition to abstract state '"+b+"'");if(f.inherit&&(c=i(n,c||{},y.$current,q)),!q.params.$$validates(c))return E;c=q.params.$$values(c),b=q;var z=b.path,D=0,F=z[D],G=x.locals,H=[];if(f.reload){if(N(f.reload)||O(f.reload)){if(O(f.reload)&&!f.reload.name)throw new Error("Invalid reload state object");var I=f.reload===!0?o[0]:m(f.reload);if(f.reload&&!I)throw new Error("No such reload state '"+(N(f.reload)?f.reload:f.reload.name)+"'");for(;F&&F===o[D]&&F!==I;)G=H[D]=F.locals,D++,F=z[D]}}else for(;F&&F===o[D]&&F.ownParams.$$equals(c,l);)G=H[D]=F.locals,D++,F=z[D];if(w(b,c,j,l,G,f))return r&&(c["#"]=r),y.params=c,S(y.params,n),S(k(b.params.$$keys(),n),b.locals.globals.$stateParams),f.location&&b.navigable&&b.navigable.url&&(p.push(b.navigable.url,c,{$$avoidResync:!0,replace:"replace"===f.location}),p.update(!0)),y.transition=null,e.when(y.current);if(c=k(b.params.$$keys(),c||{}),r&&(c["#"]=r),f.notify&&a.$broadcast("$stateChangeStart",b.self,c,j.self,l,f).defaultPrevented)return a.$broadcast("$stateChangeCancel",b.self,c,j.self,l),null==y.transition&&p.update(),C;for(var J=e.when(G),K=D;K=D;d--)g=o[d],g.self.onExit&&h.invoke(g.self.onExit,g.self,g.locals.globals),g.locals=null;for(d=D;d=4?!!j.enabled(a):1===V&&W>=2?!!j.enabled():!!i}var e={enter:function(a,b,c){b.after(a),c()},leave:function(a,b){a.remove(),b()}};if(a.noanimation)return e;if(j)return{enter:function(a,c,f){d(a)?b.version.minor>2?j.enter(a,null,c).then(f):j.enter(a,null,c,f):e.enter(a,c,f)},leave:function(a,c){d(a)?b.version.minor>2?j.leave(a).then(c):j.leave(a,c):e.leave(a,c)}};if(i){var f=i&&i(c,a);return{enter:function(a,b,c){f.enter(a,null,b),c()},leave:function(a,b){f.leave(a),b()}}}return e}var h=f(),i=h("$animator"),j=h("$animate"),k={restrict:"ECA",terminal:!0,priority:400,transclude:"element",compile:function(c,f,h){return function(c,f,i){function j(){function a(){b&&b.remove(),c&&c.$destroy()}var b=l,c=n;c&&(c._willBeDestroyed=!0),m?(r.leave(m,function(){a(),l=null}),l=m):(a(),l=null),m=null,n=null}function k(g){var k,l=A(c,i,f,e),s=l&&a.$current&&a.$current.locals[l];if((g||s!==o)&&!c._willBeDestroyed){k=c.$new(),o=a.$current.locals[l],k.$emit("$viewContentLoading",l);var t=h(k,function(a){r.enter(a,f,function(){n&&n.$emit("$viewContentAnimationEnded"),(b.isDefined(q)&&!q||c.$eval(q))&&d(a)}),j()});m=t,n=k,n.$emit("$viewContentLoaded",l),n.$eval(p)}}var l,m,n,o,p=i.onload||"",q=i.autoscroll,r=g(i,c);c.$on("$stateChangeSuccess",function(){k(!1)}),k(!0)}}};return k}function z(a,b,c,d){return{restrict:"ECA",priority:-400,compile:function(e){var f=e.html();return function(e,g,h){var i=c.$current,j=A(e,h,g,d),k=i&&i.locals[j];if(k){g.data("$uiView",{name:j,state:k.$$state}),g.html(k.$template?k.$template:f);var l=a(g.contents());if(k.$$controller){k.$scope=e,k.$element=g;var m=b(k.$$controller,k);k.$$controllerAs&&(e[k.$$controllerAs]=m),g.data("$ngControllerController",m),g.children().data("$ngControllerController",m)}l(e)}}}}}function A(a,b,c,d){var e=d(b.uiView||b.name||"")(a),f=c.inheritedData("$uiView");return e.indexOf("@")>=0?e:e+"@"+(f?f.state.name:"")}function B(a,b){var c,d=a.match(/^\s*({[^}]*})\s*$/);if(d&&(a=b+"("+d[1]+")"),c=a.replace(/\n/g," ").match(/^([^(]+?)\s*(\((.*)\))?$/),!c||4!==c.length)throw new Error("Invalid state ref '"+a+"'");return{state:c[1],paramExpr:c[3]||null}}function C(a){var b=a.parent().inheritedData("$uiView");return b&&b.state&&b.state.name?b.state:void 0}function D(a){var b="[object SVGAnimatedString]"===Object.prototype.toString.call(a.prop("href")),c="FORM"===a[0].nodeName;return{attr:c?"action":b?"xlink:href":"href",isAnchor:"A"===a.prop("tagName").toUpperCase(),clickable:!c}}function E(a,b,c,d,e){return function(f){var g=f.which||f.button,h=e();if(!(g>1||f.ctrlKey||f.metaKey||f.shiftKey||a.attr("target"))){var i=c(function(){b.go(h.state,h.params,h.options)});f.preventDefault();var j=d.isAnchor&&!h.href?1:0;f.preventDefault=function(){j--<=0&&c.cancel(i)}}}}function F(a,b){return{relative:C(a)||b.$current,inherit:!0}}function G(a,c){return{restrict:"A",require:["?^uiSrefActive","?^uiSrefActiveEq"],link:function(d,e,f,g){var h=B(f.uiSref,a.current.name),i={state:h.state,href:null,params:null},j=D(e),k=g[1]||g[0];i.options=R(F(e,a),f.uiSrefOpts?d.$eval(f.uiSrefOpts):{});var l=function(c){c&&(i.params=b.copy(c)),i.href=a.href(h.state,i.params,i.options),k&&k.$$addStateInfo(h.state,i.params),null!==i.href&&f.$set(j.attr,i.href)};h.paramExpr&&(d.$watch(h.paramExpr,function(a){a!==i.params&&l(a)},!0),i.params=b.copy(d.$eval(h.paramExpr))),l(),j.clickable&&e.bind("click",E(e,a,c,j,function(){return i}))}}}function H(a,b){return{restrict:"A",require:["?^uiSrefActive","?^uiSrefActiveEq"],link:function(c,d,e,f){function g(b){l.state=b[0],l.params=b[1],l.options=b[2],l.href=a.href(l.state,l.params,l.options),i&&i.$$addStateInfo(l.state,l.params),l.href&&e.$set(h.attr,l.href)}var h=D(d),i=f[1]||f[0],j=[e.uiState,e.uiStateParams||null,e.uiStateOpts||null],k="["+j.map(function(a){return a||"null"}).join(", ")+"]",l={state:null,params:null,options:null,href:null};c.$watch(k,g,!0),g(c.$eval(k)),h.clickable&&d.bind("click",E(d,a,b,h,function(){return l}))}}}function I(a,b,c){return{restrict:"A",controller:["$scope","$element","$attrs","$timeout",function(b,d,e,f){function g(b,c,e){var f=a.get(b,C(d)),g=h(b,c);p.push({state:f||{name:b},params:c,hash:g}),q[g]=e}function h(a,c){if(!N(a))throw new Error("state should be a string");return O(c)?a+T(c):(c=b.$eval(c),O(c)?a+T(c):a)}function i(){for(var a=0;a0||(g(a,b,o),i())},b.$on("$stateChangeSuccess",i),i()}]}}function J(a){var b=function(b,c){return a.is(b,c)};return b.$stateful=!0,b}function K(a){var b=function(b,c,d){return a.includes(b,c,d)};return b.$stateful=!0,b}var L=b.isDefined,M=b.isFunction,N=b.isString,O=b.isObject,P=b.isArray,Q=b.forEach,R=b.extend,S=b.copy,T=b.toJson;b.module("ui.router.util",["ng"]),b.module("ui.router.router",["ui.router.util"]),b.module("ui.router.state",["ui.router.router","ui.router.util"]),b.module("ui.router",["ui.router.state"]),b.module("ui.router.compat",["ui.router"]),p.$inject=["$q","$injector"],b.module("ui.router.util").service("$resolve",p),q.$inject=["$http","$templateCache","$injector"],b.module("ui.router.util").service("$templateFactory",q);var U;r.prototype.concat=function(a,b){var c={caseInsensitive:U.caseInsensitive(),strict:U.strictMode(),squash:U.defaultSquashPolicy()};return new r(this.sourcePath+a+this.sourceSearch,R(c,b),this)},r.prototype.toString=function(){return this.source},r.prototype.exec=function(a,b){function c(a){function b(a){return a.split("").reverse().join("")}function c(a){return a.replace(/\\-/g,"-")}var d=b(a).split(/-(?!\\)/),e=o(d,b);return o(e,c).reverse()}var d=this.regexp.exec(a);if(!d)return null;b=b||{};var e,f,g,h=this.parameters(),i=h.length,j=this.segments.length-1,k={};if(j!==d.length-1)throw new Error("Unbalanced capture group in route '"+this.source+"'");var l,m;for(e=0;j>e;e++){for(g=h[e],l=this.params[g],m=d[e+1],f=0;fe;e++){for(g=h[e],k[g]=this.params[g].value(b[g]),l=this.params[g],m=b[g],f=0;ff;f++){var k=h>f,l=d[f],m=e[l],n=m.value(a[l]),p=m.isOptional&&m.type.equals(m.value(),n),q=p?m.squash:!1,r=m.type.encode(n);if(k){var s=c[f+1],t=f+1===h;if(q===!1)null!=r&&(j+=P(r)?o(r,b).join("-"):encodeURIComponent(r)),j+=s;else if(q===!0){var u=j.match(/\/$/)?/\/?(.*)/:/(.*)/;j+=s.match(u)[1]}else N(q)&&(j+=q+s);t&&m.squash===!0&&"/"===j.slice(-1)&&(j=j.slice(0,-1))}else{if(null==r||p&&q!==!1)continue;if(P(r)||(r=[r]),0===r.length)continue;r=o(r,encodeURIComponent).join("&"+l+"="),j+=(g?"&":"?")+(l+"="+r),g=!0}}return j},s.prototype.is=function(a,b){return!0},s.prototype.encode=function(a,b){return a},s.prototype.decode=function(a,b){return a},s.prototype.equals=function(a,b){return a==b},s.prototype.$subPattern=function(){var a=this.pattern.toString();return a.substr(1,a.length-2)},s.prototype.pattern=/.*/,s.prototype.toString=function(){return"{Type:"+this.name+"}"},s.prototype.$normalize=function(a){return this.is(a)?a:this.decode(a)},s.prototype.$asArray=function(a,b){function d(a,b){function d(a,b){return function(){return a[b].apply(a,arguments)}}function e(a){return P(a)?a:L(a)?[a]:[]}function f(a){switch(a.length){case 0:return c;case 1:return"auto"===b?a[0]:a;default:return a}}function g(a){return!a}function h(a,b){return function(c){if(P(c)&&0===c.length)return c;c=e(c);var d=o(c,a);return b===!0?0===n(d,g).length:f(d)}}function i(a){return function(b,c){var d=e(b),f=e(c);if(d.length!==f.length)return!1;for(var g=0;g>> 0, from = Number(arguments[2]) || 0; + from = (from < 0) ? Math.ceil(from) : Math.floor(from); + + if (from < 0) from += len; + + for (; from < len; from++) { + if (from in array && array[from] === value) return from; + } + return -1; +} + +/** + * Merges a set of parameters with all parameters inherited between the common parents of the + * current state and a given destination state. + * + * @param {Object} currentParams The value of the current state parameters ($stateParams). + * @param {Object} newParams The set of parameters which will be composited with inherited params. + * @param {Object} $current Internal definition of object representing the current state. + * @param {Object} $to Internal definition of object representing state to transition to. + */ +function inheritParams(currentParams, newParams, $current, $to) { + var parents = ancestors($current, $to), parentParams, inherited = {}, inheritList = []; + + for (var i in parents) { + if (!parents[i] || !parents[i].params) continue; + parentParams = objectKeys(parents[i].params); + if (!parentParams.length) continue; + + for (var j in parentParams) { + if (indexOf(inheritList, parentParams[j]) >= 0) continue; + inheritList.push(parentParams[j]); + inherited[parentParams[j]] = currentParams[parentParams[j]]; + } + } + return extend({}, inherited, newParams); +} + +/** + * Performs a non-strict comparison of the subset of two objects, defined by a list of keys. + * + * @param {Object} a The first object. + * @param {Object} b The second object. + * @param {Array} keys The list of keys within each object to compare. If the list is empty or not specified, + * it defaults to the list of keys in `a`. + * @return {Boolean} Returns `true` if the keys match, otherwise `false`. + */ +function equalForKeys(a, b, keys) { + if (!keys) { + keys = []; + for (var n in a) keys.push(n); // Used instead of Object.keys() for IE8 compatibility + } + + for (var i=0; i + * + * + * + * + * + * + * + * + * + * + * + * + */ +angular.module('ui.router', ['ui.router.state']); + +angular.module('ui.router.compat', ['ui.router']); diff --git a/src/main/webapp/WEB-INF/views/src/js/components/angular-ui-router/src/resolve.js b/src/main/webapp/WEB-INF/views/src/js/components/angular-ui-router/src/resolve.js new file mode 100644 index 0000000..019338d --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/components/angular-ui-router/src/resolve.js @@ -0,0 +1,252 @@ +/** + * @ngdoc object + * @name ui.router.util.$resolve + * + * @requires $q + * @requires $injector + * + * @description + * Manages resolution of (acyclic) graphs of promises. + */ +$Resolve.$inject = ['$q', '$injector']; +function $Resolve( $q, $injector) { + + var VISIT_IN_PROGRESS = 1, + VISIT_DONE = 2, + NOTHING = {}, + NO_DEPENDENCIES = [], + NO_LOCALS = NOTHING, + NO_PARENT = extend($q.when(NOTHING), { $$promises: NOTHING, $$values: NOTHING }); + + + /** + * @ngdoc function + * @name ui.router.util.$resolve#study + * @methodOf ui.router.util.$resolve + * + * @description + * Studies a set of invocables that are likely to be used multiple times. + *
    +   * $resolve.study(invocables)(locals, parent, self)
    +   * 
    + * is equivalent to + *
    +   * $resolve.resolve(invocables, locals, parent, self)
    +   * 
    + * but the former is more efficient (in fact `resolve` just calls `study` + * internally). + * + * @param {object} invocables Invocable objects + * @return {function} a function to pass in locals, parent and self + */ + this.study = function (invocables) { + if (!isObject(invocables)) throw new Error("'invocables' must be an object"); + var invocableKeys = objectKeys(invocables || {}); + + // Perform a topological sort of invocables to build an ordered plan + var plan = [], cycle = [], visited = {}; + function visit(value, key) { + if (visited[key] === VISIT_DONE) return; + + cycle.push(key); + if (visited[key] === VISIT_IN_PROGRESS) { + cycle.splice(0, indexOf(cycle, key)); + throw new Error("Cyclic dependency: " + cycle.join(" -> ")); + } + visited[key] = VISIT_IN_PROGRESS; + + if (isString(value)) { + plan.push(key, [ function() { return $injector.get(value); }], NO_DEPENDENCIES); + } else { + var params = $injector.annotate(value); + forEach(params, function (param) { + if (param !== key && invocables.hasOwnProperty(param)) visit(invocables[param], param); + }); + plan.push(key, value, params); + } + + cycle.pop(); + visited[key] = VISIT_DONE; + } + forEach(invocables, visit); + invocables = cycle = visited = null; // plan is all that's required + + function isResolve(value) { + return isObject(value) && value.then && value.$$promises; + } + + return function (locals, parent, self) { + if (isResolve(locals) && self === undefined) { + self = parent; parent = locals; locals = null; + } + if (!locals) locals = NO_LOCALS; + else if (!isObject(locals)) { + throw new Error("'locals' must be an object"); + } + if (!parent) parent = NO_PARENT; + else if (!isResolve(parent)) { + throw new Error("'parent' must be a promise returned by $resolve.resolve()"); + } + + // To complete the overall resolution, we have to wait for the parent + // promise and for the promise for each invokable in our plan. + var resolution = $q.defer(), + result = resolution.promise, + promises = result.$$promises = {}, + values = extend({}, locals), + wait = 1 + plan.length/3, + merged = false; + + function done() { + // Merge parent values we haven't got yet and publish our own $$values + if (!--wait) { + if (!merged) merge(values, parent.$$values); + result.$$values = values; + result.$$promises = result.$$promises || true; // keep for isResolve() + delete result.$$inheritedValues; + resolution.resolve(values); + } + } + + function fail(reason) { + result.$$failure = reason; + resolution.reject(reason); + } + + // Short-circuit if parent has already failed + if (isDefined(parent.$$failure)) { + fail(parent.$$failure); + return result; + } + + if (parent.$$inheritedValues) { + merge(values, omit(parent.$$inheritedValues, invocableKeys)); + } + + // Merge parent values if the parent has already resolved, or merge + // parent promises and wait if the parent resolve is still in progress. + extend(promises, parent.$$promises); + if (parent.$$values) { + merged = merge(values, omit(parent.$$values, invocableKeys)); + result.$$inheritedValues = omit(parent.$$values, invocableKeys); + done(); + } else { + if (parent.$$inheritedValues) { + result.$$inheritedValues = omit(parent.$$inheritedValues, invocableKeys); + } + parent.then(done, fail); + } + + // Process each invocable in the plan, but ignore any where a local of the same name exists. + for (var i=0, ii=plan.length; i + * var app = angular.module('app', ['ui.router.router']); + * + * app.config(function ($urlRouterProvider) { + * // Here's an example of how you might allow case insensitive urls + * $urlRouterProvider.rule(function ($injector, $location) { + * var path = $location.path(), + * normalized = path.toLowerCase(); + * + * if (path !== normalized) { + * return normalized; + * } + * }); + * }); + * + * + * @param {function} rule Handler function that takes `$injector` and `$location` + * services as arguments. You can use them to return a valid path as a string. + * + * @return {object} `$urlRouterProvider` - `$urlRouterProvider` instance + */ + this.rule = function (rule) { + if (!isFunction(rule)) throw new Error("'rule' must be a function"); + rules.push(rule); + return this; + }; + + /** + * @ngdoc object + * @name ui.router.router.$urlRouterProvider#otherwise + * @methodOf ui.router.router.$urlRouterProvider + * + * @description + * Defines a path that is used when an invalid route is requested. + * + * @example + *
    +   * var app = angular.module('app', ['ui.router.router']);
    +   *
    +   * app.config(function ($urlRouterProvider) {
    +   *   // if the path doesn't match any of the urls you configured
    +   *   // otherwise will take care of routing the user to the
    +   *   // specified url
    +   *   $urlRouterProvider.otherwise('/index');
    +   *
    +   *   // Example of using function rule as param
    +   *   $urlRouterProvider.otherwise(function ($injector, $location) {
    +   *     return '/a/valid/url';
    +   *   });
    +   * });
    +   * 
    + * + * @param {string|function} rule The url path you want to redirect to or a function + * rule that returns the url path. The function version is passed two params: + * `$injector` and `$location` services, and must return a url string. + * + * @return {object} `$urlRouterProvider` - `$urlRouterProvider` instance + */ + this.otherwise = function (rule) { + if (isString(rule)) { + var redirect = rule; + rule = function () { return redirect; }; + } + else if (!isFunction(rule)) throw new Error("'rule' must be a function"); + otherwise = rule; + return this; + }; + + + function handleIfMatch($injector, handler, match) { + if (!match) return false; + var result = $injector.invoke(handler, handler, { $match: match }); + return isDefined(result) ? result : true; + } + + /** + * @ngdoc function + * @name ui.router.router.$urlRouterProvider#when + * @methodOf ui.router.router.$urlRouterProvider + * + * @description + * Registers a handler for a given url matching. + * + * If the handler is a string, it is + * treated as a redirect, and is interpolated according to the syntax of match + * (i.e. like `String.replace()` for `RegExp`, or like a `UrlMatcher` pattern otherwise). + * + * If the handler is a function, it is injectable. It gets invoked if `$location` + * matches. You have the option of inject the match object as `$match`. + * + * The handler can return + * + * - **falsy** to indicate that the rule didn't match after all, then `$urlRouter` + * will continue trying to find another one that matches. + * - **string** which is treated as a redirect and passed to `$location.url()` + * - **void** or any **truthy** value tells `$urlRouter` that the url was handled. + * + * @example + *
    +   * var app = angular.module('app', ['ui.router.router']);
    +   *
    +   * app.config(function ($urlRouterProvider) {
    +   *   $urlRouterProvider.when($state.url, function ($match, $stateParams) {
    +   *     if ($state.$current.navigable !== state ||
    +   *         !equalForKeys($match, $stateParams) {
    +   *      $state.transitionTo(state, $match, false);
    +   *     }
    +   *   });
    +   * });
    +   * 
    + * + * @param {string|object} what The incoming path that you want to redirect. + * @param {string|function} handler The path you want to redirect your user to. + */ + this.when = function (what, handler) { + var redirect, handlerIsString = isString(handler); + if (isString(what)) what = $urlMatcherFactory.compile(what); + + if (!handlerIsString && !isFunction(handler) && !isArray(handler)) + throw new Error("invalid 'handler' in when()"); + + var strategies = { + matcher: function (what, handler) { + if (handlerIsString) { + redirect = $urlMatcherFactory.compile(handler); + handler = ['$match', function ($match) { return redirect.format($match); }]; + } + return extend(function ($injector, $location) { + return handleIfMatch($injector, handler, what.exec($location.path(), $location.search())); + }, { + prefix: isString(what.prefix) ? what.prefix : '' + }); + }, + regex: function (what, handler) { + if (what.global || what.sticky) throw new Error("when() RegExp must not be global or sticky"); + + if (handlerIsString) { + redirect = handler; + handler = ['$match', function ($match) { return interpolate(redirect, $match); }]; + } + return extend(function ($injector, $location) { + return handleIfMatch($injector, handler, what.exec($location.path())); + }, { + prefix: regExpPrefix(what) + }); + } + }; + + var check = { matcher: $urlMatcherFactory.isMatcher(what), regex: what instanceof RegExp }; + + for (var n in check) { + if (check[n]) return this.rule(strategies[n](what, handler)); + } + + throw new Error("invalid 'what' in when()"); + }; + + /** + * @ngdoc function + * @name ui.router.router.$urlRouterProvider#deferIntercept + * @methodOf ui.router.router.$urlRouterProvider + * + * @description + * Disables (or enables) deferring location change interception. + * + * If you wish to customize the behavior of syncing the URL (for example, if you wish to + * defer a transition but maintain the current URL), call this method at configuration time. + * Then, at run time, call `$urlRouter.listen()` after you have configured your own + * `$locationChangeSuccess` event handler. + * + * @example + *
    +   * var app = angular.module('app', ['ui.router.router']);
    +   *
    +   * app.config(function ($urlRouterProvider) {
    +   *
    +   *   // Prevent $urlRouter from automatically intercepting URL changes;
    +   *   // this allows you to configure custom behavior in between
    +   *   // location changes and route synchronization:
    +   *   $urlRouterProvider.deferIntercept();
    +   *
    +   * }).run(function ($rootScope, $urlRouter, UserService) {
    +   *
    +   *   $rootScope.$on('$locationChangeSuccess', function(e) {
    +   *     // UserService is an example service for managing user state
    +   *     if (UserService.isLoggedIn()) return;
    +   *
    +   *     // Prevent $urlRouter's default handler from firing
    +   *     e.preventDefault();
    +   *
    +   *     UserService.handleLogin().then(function() {
    +   *       // Once the user has logged in, sync the current URL
    +   *       // to the router:
    +   *       $urlRouter.sync();
    +   *     });
    +   *   });
    +   *
    +   *   // Configures $urlRouter's listener *after* your custom listener
    +   *   $urlRouter.listen();
    +   * });
    +   * 
    + * + * @param {boolean} defer Indicates whether to defer location change interception. Passing + no parameter is equivalent to `true`. + */ + this.deferIntercept = function (defer) { + if (defer === undefined) defer = true; + interceptDeferred = defer; + }; + + /** + * @ngdoc object + * @name ui.router.router.$urlRouter + * + * @requires $location + * @requires $rootScope + * @requires $injector + * @requires $browser + * + * @description + * + */ + this.$get = $get; + $get.$inject = ['$location', '$rootScope', '$injector', '$browser', '$sniffer']; + function $get( $location, $rootScope, $injector, $browser, $sniffer) { + + var baseHref = $browser.baseHref(), location = $location.url(), lastPushedUrl; + + function appendBasePath(url, isHtml5, absolute) { + if (baseHref === '/') return url; + if (isHtml5) return baseHref.slice(0, -1) + url; + if (absolute) return baseHref.slice(1) + url; + return url; + } + + // TODO: Optimize groups of rules with non-empty prefix into some sort of decision tree + function update(evt) { + if (evt && evt.defaultPrevented) return; + var ignoreUpdate = lastPushedUrl && $location.url() === lastPushedUrl; + lastPushedUrl = undefined; + // TODO: Re-implement this in 1.0 for https://github.com/angular-ui/ui-router/issues/1573 + //if (ignoreUpdate) return true; + + function check(rule) { + var handled = rule($injector, $location); + + if (!handled) return false; + if (isString(handled)) $location.replace().url(handled); + return true; + } + var n = rules.length, i; + + for (i = 0; i < n; i++) { + if (check(rules[i])) return; + } + // always check otherwise last to allow dynamic updates to the set of rules + if (otherwise) check(otherwise); + } + + function listen() { + listener = listener || $rootScope.$on('$locationChangeSuccess', update); + return listener; + } + + if (!interceptDeferred) listen(); + + return { + /** + * @ngdoc function + * @name ui.router.router.$urlRouter#sync + * @methodOf ui.router.router.$urlRouter + * + * @description + * Triggers an update; the same update that happens when the address bar url changes, aka `$locationChangeSuccess`. + * This method is useful when you need to use `preventDefault()` on the `$locationChangeSuccess` event, + * perform some custom logic (route protection, auth, config, redirection, etc) and then finally proceed + * with the transition by calling `$urlRouter.sync()`. + * + * @example + *
    +       * angular.module('app', ['ui.router'])
    +       *   .run(function($rootScope, $urlRouter) {
    +       *     $rootScope.$on('$locationChangeSuccess', function(evt) {
    +       *       // Halt state change from even starting
    +       *       evt.preventDefault();
    +       *       // Perform custom logic
    +       *       var meetsRequirement = ...
    +       *       // Continue with the update and state transition if logic allows
    +       *       if (meetsRequirement) $urlRouter.sync();
    +       *     });
    +       * });
    +       * 
    + */ + sync: function() { + update(); + }, + + listen: function() { + return listen(); + }, + + update: function(read) { + if (read) { + location = $location.url(); + return; + } + if ($location.url() === location) return; + + $location.url(location); + $location.replace(); + }, + + push: function(urlMatcher, params, options) { + var url = urlMatcher.format(params || {}); + + // Handle the special hash param, if needed + if (url !== null && params && params['#']) { + url += '#' + params['#']; + } + + $location.url(url); + lastPushedUrl = options && options.$$avoidResync ? $location.url() : undefined; + if (options && options.replace) $location.replace(); + }, + + /** + * @ngdoc function + * @name ui.router.router.$urlRouter#href + * @methodOf ui.router.router.$urlRouter + * + * @description + * A URL generation method that returns the compiled URL for a given + * {@link ui.router.util.type:UrlMatcher `UrlMatcher`}, populated with the provided parameters. + * + * @example + *
    +       * $bob = $urlRouter.href(new UrlMatcher("/about/:person"), {
    +       *   person: "bob"
    +       * });
    +       * // $bob == "/about/bob";
    +       * 
    + * + * @param {UrlMatcher} urlMatcher The `UrlMatcher` object which is used as the template of the URL to generate. + * @param {object=} params An object of parameter values to fill the matcher's required parameters. + * @param {object=} options Options object. The options are: + * + * - **`absolute`** - {boolean=false}, If true will generate an absolute url, e.g. "http://www.example.com/fullurl". + * + * @returns {string} Returns the fully compiled URL, or `null` if `params` fail validation against `urlMatcher` + */ + href: function(urlMatcher, params, options) { + if (!urlMatcher.validates(params)) return null; + + var isHtml5 = $locationProvider.html5Mode(); + if (angular.isObject(isHtml5)) { + isHtml5 = isHtml5.enabled; + } + + isHtml5 = isHtml5 && $sniffer.history; + + var url = urlMatcher.format(params); + options = options || {}; + + if (!isHtml5 && url !== null) { + url = "#" + $locationProvider.hashPrefix() + url; + } + + // Handle special hash param, if needed + if (url !== null && params && params['#']) { + url += '#' + params['#']; + } + + url = appendBasePath(url, isHtml5, options.absolute); + + if (!options.absolute || !url) { + return url; + } + + var slash = (!isHtml5 && url ? '/' : ''), port = $location.port(); + port = (port === 80 || port === 443 ? '' : ':' + port); + + return [$location.protocol(), '://', $location.host(), port, slash, url].join(''); + } + }; + } +} + +angular.module('ui.router.router').provider('$urlRouter', $UrlRouterProvider); diff --git a/src/main/webapp/WEB-INF/views/src/js/components/angular-ui-router/src/view.js b/src/main/webapp/WEB-INF/views/src/js/components/angular-ui-router/src/view.js new file mode 100644 index 0000000..94334d3 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/components/angular-ui-router/src/view.js @@ -0,0 +1,45 @@ + +$ViewProvider.$inject = []; +function $ViewProvider() { + + this.$get = $get; + /** + * @ngdoc object + * @name ui.router.state.$view + * + * @requires ui.router.util.$templateFactory + * @requires $rootScope + * + * @description + * + */ + $get.$inject = ['$rootScope', '$templateFactory']; + function $get( $rootScope, $templateFactory) { + return { + // $view.load('full.viewName', { template: ..., controller: ..., resolve: ..., async: false, params: ... }) + /** + * @ngdoc function + * @name ui.router.state.$view#load + * @methodOf ui.router.state.$view + * + * @description + * + * @param {string} name name + * @param {object} options option object. + */ + load: function load(name, options) { + var result, defaults = { + template: null, controller: null, view: null, locals: null, notify: true, async: true, params: {} + }; + options = extend(defaults, options); + + if (options.view) { + result = $templateFactory.fromConfig(options.view, options.params, options.locals); + } + return result; + } + }; + } +} + +angular.module('ui.router.state').provider('$view', $ViewProvider); diff --git a/src/main/webapp/WEB-INF/views/src/js/components/angular-ui-router/src/viewDirective.js b/src/main/webapp/WEB-INF/views/src/js/components/angular-ui-router/src/viewDirective.js new file mode 100644 index 0000000..c2eaa3d --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/components/angular-ui-router/src/viewDirective.js @@ -0,0 +1,351 @@ +var ngMajorVer = angular.version.major; +var ngMinorVer = angular.version.minor; +/** + * @ngdoc directive + * @name ui.router.state.directive:ui-view + * + * @requires ui.router.state.$state + * @requires $compile + * @requires $controller + * @requires $injector + * @requires ui.router.state.$uiViewScroll + * @requires $document + * + * @restrict ECA + * + * @description + * The ui-view directive tells $state where to place your templates. + * + * @param {string=} name A view name. The name should be unique amongst the other views in the + * same state. You can have views of the same name that live in different states. + * + * @param {string=} autoscroll It allows you to set the scroll behavior of the browser window + * when a view is populated. By default, $anchorScroll is overridden by ui-router's custom scroll + * service, {@link ui.router.state.$uiViewScroll}. This custom service let's you + * scroll ui-view elements into view when they are populated during a state activation. + * + * @param {string=} noanimation If truthy, the non-animated renderer will be selected (no animations + * will be applied to the ui-view) + * + * *Note: To revert back to old [`$anchorScroll`](http://docs.angularjs.org/api/ng.$anchorScroll) + * functionality, call `$uiViewScrollProvider.useAnchorScroll()`.* + * + * @param {string=} onload Expression to evaluate whenever the view updates. + * + * @example + * A view can be unnamed or named. + *
    + * 
    + * 
    + * + * + *
    + *
    + * + * You can only have one unnamed view within any template (or root html). If you are only using a + * single view and it is unnamed then you can populate it like so: + *
    + * 
    + * $stateProvider.state("home", { + * template: "

    HELLO!

    " + * }) + *
    + * + * The above is a convenient shortcut equivalent to specifying your view explicitly with the {@link ui.router.state.$stateProvider#views `views`} + * config property, by name, in this case an empty name: + *
    + * $stateProvider.state("home", {
    + *   views: {
    + *     "": {
    + *       template: "

    HELLO!

    " + * } + * } + * }) + *
    + * + * But typically you'll only use the views property if you name your view or have more than one view + * in the same template. There's not really a compelling reason to name a view if its the only one, + * but you could if you wanted, like so: + *
    + * 
    + *
    + *
    + * $stateProvider.state("home", {
    + *   views: {
    + *     "main": {
    + *       template: "

    HELLO!

    " + * } + * } + * }) + *
    + * + * Really though, you'll use views to set up multiple views: + *
    + * 
    + *
    + *
    + *
    + * + *
    + * $stateProvider.state("home", {
    + *   views: {
    + *     "": {
    + *       template: "

    HELLO!

    " + * }, + * "chart": { + * template: "" + * }, + * "data": { + * template: "" + * } + * } + * }) + *
    + * + * Examples for `autoscroll`: + * + *
    + * 
    + * 
    + *
    + * 
    + * 
    + * 
    + * 
    + * 
    + */ +$ViewDirective.$inject = ['$state', '$injector', '$uiViewScroll', '$interpolate']; +function $ViewDirective( $state, $injector, $uiViewScroll, $interpolate) { + + function getService() { + return ($injector.has) ? function(service) { + return $injector.has(service) ? $injector.get(service) : null; + } : function(service) { + try { + return $injector.get(service); + } catch (e) { + return null; + } + }; + } + + var service = getService(), + $animator = service('$animator'), + $animate = service('$animate'); + + // Returns a set of DOM manipulation functions based on which Angular version + // it should use + function getRenderer(attrs, scope) { + var statics = { + enter: function (element, target, cb) { target.after(element); cb(); }, + leave: function (element, cb) { element.remove(); cb(); } + }; + + if (!!attrs.noanimation) return statics; + + function animEnabled(element) { + if (ngMajorVer === 1 && ngMinorVer >= 4) return !!$animate.enabled(element); + if (ngMajorVer === 1 && ngMinorVer >= 2) return !!$animate.enabled(); + return (!!$animator); + } + + // ng 1.2+ + if ($animate) { + return { + enter: function(element, target, cb) { + if (!animEnabled(element)) { + statics.enter(element, target, cb); + } else if (angular.version.minor > 2) { + $animate.enter(element, null, target).then(cb); + } else { + $animate.enter(element, null, target, cb); + } + }, + leave: function(element, cb) { + if (!animEnabled(element)) { + statics.leave(element, cb); + } else if (angular.version.minor > 2) { + $animate.leave(element).then(cb); + } else { + $animate.leave(element, cb); + } + } + }; + } + + // ng 1.1.5 + if ($animator) { + var animate = $animator && $animator(scope, attrs); + + return { + enter: function(element, target, cb) {animate.enter(element, null, target); cb(); }, + leave: function(element, cb) { animate.leave(element); cb(); } + }; + } + + return statics; + } + + var directive = { + restrict: 'ECA', + terminal: true, + priority: 400, + transclude: 'element', + compile: function (tElement, tAttrs, $transclude) { + return function (scope, $element, attrs) { + var previousEl, currentEl, currentScope, latestLocals, + onloadExp = attrs.onload || '', + autoScrollExp = attrs.autoscroll, + renderer = getRenderer(attrs, scope); + + scope.$on('$stateChangeSuccess', function() { + updateView(false); + }); + + updateView(true); + + function cleanupLastView() { + var _previousEl = previousEl; + var _currentScope = currentScope; + + if (_currentScope) { + _currentScope._willBeDestroyed = true; + } + + function cleanOld() { + if (_previousEl) { + _previousEl.remove(); + } + + if (_currentScope) { + _currentScope.$destroy(); + } + } + + if (currentEl) { + renderer.leave(currentEl, function() { + cleanOld(); + previousEl = null; + }); + + previousEl = currentEl; + } else { + cleanOld(); + previousEl = null; + } + + currentEl = null; + currentScope = null; + } + + function updateView(firstTime) { + var newScope, + name = getUiViewName(scope, attrs, $element, $interpolate), + previousLocals = name && $state.$current && $state.$current.locals[name]; + + if (!firstTime && previousLocals === latestLocals || scope._willBeDestroyed) return; // nothing to do + newScope = scope.$new(); + latestLocals = $state.$current.locals[name]; + + /** + * @ngdoc event + * @name ui.router.state.directive:ui-view#$viewContentLoading + * @eventOf ui.router.state.directive:ui-view + * @eventType emits on ui-view directive scope + * @description + * + * Fired once the view **begins loading**, *before* the DOM is rendered. + * + * @param {Object} event Event object. + * @param {string} viewName Name of the view. + */ + newScope.$emit('$viewContentLoading', name); + + var clone = $transclude(newScope, function(clone) { + renderer.enter(clone, $element, function onUiViewEnter() { + if(currentScope) { + currentScope.$emit('$viewContentAnimationEnded'); + } + + if (angular.isDefined(autoScrollExp) && !autoScrollExp || scope.$eval(autoScrollExp)) { + $uiViewScroll(clone); + } + }); + cleanupLastView(); + }); + + currentEl = clone; + currentScope = newScope; + /** + * @ngdoc event + * @name ui.router.state.directive:ui-view#$viewContentLoaded + * @eventOf ui.router.state.directive:ui-view + * @eventType emits on ui-view directive scope + * @description + * Fired once the view is **loaded**, *after* the DOM is rendered. + * + * @param {Object} event Event object. + * @param {string} viewName Name of the view. + */ + currentScope.$emit('$viewContentLoaded', name); + currentScope.$eval(onloadExp); + } + }; + } + }; + + return directive; +} + +$ViewDirectiveFill.$inject = ['$compile', '$controller', '$state', '$interpolate']; +function $ViewDirectiveFill ( $compile, $controller, $state, $interpolate) { + return { + restrict: 'ECA', + priority: -400, + compile: function (tElement) { + var initial = tElement.html(); + return function (scope, $element, attrs) { + var current = $state.$current, + name = getUiViewName(scope, attrs, $element, $interpolate), + locals = current && current.locals[name]; + + if (! locals) { + return; + } + + $element.data('$uiView', { name: name, state: locals.$$state }); + $element.html(locals.$template ? locals.$template : initial); + + var link = $compile($element.contents()); + + if (locals.$$controller) { + locals.$scope = scope; + locals.$element = $element; + var controller = $controller(locals.$$controller, locals); + if (locals.$$controllerAs) { + scope[locals.$$controllerAs] = controller; + } + $element.data('$ngControllerController', controller); + $element.children().data('$ngControllerController', controller); + } + + link(scope); + }; + } + }; +} + +/** + * Shared ui-view code for both directives: + * Given scope, element, and its attributes, return the view's name + */ +function getUiViewName(scope, attrs, element, $interpolate) { + var name = $interpolate(attrs.uiView || attrs.name || '')(scope); + var inherited = element.inheritedData('$uiView'); + return name.indexOf('@') >= 0 ? name : (name + '@' + (inherited ? inherited.state.name : '')); +} + +angular.module('ui.router.state').directive('uiView', $ViewDirective); +angular.module('ui.router.state').directive('uiView', $ViewDirectiveFill); diff --git a/src/main/webapp/WEB-INF/views/src/js/components/angular-ui-router/src/viewScroll.js b/src/main/webapp/WEB-INF/views/src/js/components/angular-ui-router/src/viewScroll.js new file mode 100644 index 0000000..81114e2 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/components/angular-ui-router/src/viewScroll.js @@ -0,0 +1,52 @@ +/** + * @ngdoc object + * @name ui.router.state.$uiViewScrollProvider + * + * @description + * Provider that returns the {@link ui.router.state.$uiViewScroll} service function. + */ +function $ViewScrollProvider() { + + var useAnchorScroll = false; + + /** + * @ngdoc function + * @name ui.router.state.$uiViewScrollProvider#useAnchorScroll + * @methodOf ui.router.state.$uiViewScrollProvider + * + * @description + * Reverts back to using the core [`$anchorScroll`](http://docs.angularjs.org/api/ng.$anchorScroll) service for + * scrolling based on the url anchor. + */ + this.useAnchorScroll = function () { + useAnchorScroll = true; + }; + + /** + * @ngdoc object + * @name ui.router.state.$uiViewScroll + * + * @requires $anchorScroll + * @requires $timeout + * + * @description + * When called with a jqLite element, it scrolls the element into view (after a + * `$timeout` so the DOM has time to refresh). + * + * If you prefer to rely on `$anchorScroll` to scroll the view to the anchor, + * this can be enabled by calling {@link ui.router.state.$uiViewScrollProvider#methods_useAnchorScroll `$uiViewScrollProvider.useAnchorScroll()`}. + */ + this.$get = ['$anchorScroll', '$timeout', function ($anchorScroll, $timeout) { + if (useAnchorScroll) { + return $anchorScroll; + } + + return function ($element) { + return $timeout(function () { + $element[0].scrollIntoView(); + }, 0, false); + }; + }]; +} + +angular.module('ui.router.state').provider('$uiViewScroll', $ViewScrollProvider); diff --git a/src/main/webapp/WEB-INF/views/src/js/components/angular/angular.min.js.map b/src/main/webapp/WEB-INF/views/src/js/components/angular/angular.min.js.map new file mode 100644 index 0000000..af4c6bf --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/components/angular/angular.min.js.map @@ -0,0 +1,8 @@ +{ +"version":3, +"file":"angular.min.js", +"lineCount":288, +"mappings":"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", +"sources":["angular.js"], +"names":["window","document","undefined","minErr","isArrayLike","obj","isWindow","length","Object","nodeType","NODE_TYPE_ELEMENT","isString","isArray","forEach","iterator","context","key","isFunction","hasOwnProperty","call","isPrimitive","isBlankObject","forEachSorted","keys","sort","i","reverseParams","iteratorFn","value","nextUid","uid","setHashKey","h","$$hashKey","baseExtend","dst","objs","deep","ii","isObject","j","jj","src","extend","slice","arguments","merge","toInt","str","parseInt","inherit","parent","extra","create","noop","identity","$","valueFn","isUndefined","isDefined","getPrototypeOf","isNumber","isDate","toString","isRegExp","isScope","$evalAsync","$watch","isBoolean","isElement","node","nodeName","prop","attr","find","makeMap","items","split","nodeName_","element","lowercase","arrayRemove","array","index","indexOf","splice","copy","source","destination","stackSource","stackDest","putValue","val","result","push","ngMinErr","TYPED_ARRAY_REGEXP","test","constructor","Date","getTime","RegExp","match","lastIndex","emptyObject","shallowCopy","charAt","equals","o1","o2","t1","t2","keySet","createMap","concat","array1","array2","bind","self","fn","curryArgs","startIndex","apply","toJsonReplacer","toJson","pretty","JSON","stringify","fromJson","json","parse","timezoneToOffset","timezone","fallback","requestedTimezoneOffset","isNaN","convertTimezoneToLocal","date","reverse","timezoneOffset","getTimezoneOffset","setMinutes","getMinutes","minutes","startingTag","jqLite","clone","empty","e","elemHtml","append","html","NODE_TYPE_TEXT","replace","tryDecodeURIComponent","decodeURIComponent","parseKeyValue","keyValue","key_value","toKeyValue","parts","arrayValue","encodeUriQuery","join","encodeUriSegment","pctEncodeSpaces","encodeURIComponent","getNgAttribute","ngAttr","ngAttrPrefixes","getAttribute","angularInit","bootstrap","appElement","module","config","prefix","name","hasAttribute","candidate","querySelector","strictDi","modules","defaultConfig","doBootstrap","injector","tag","unshift","$provide","debugInfoEnabled","$compileProvider","createInjector","invoke","bootstrapApply","scope","compile","$apply","data","NG_ENABLE_DEBUG_INFO","NG_DEFER_BOOTSTRAP","angular","resumeBootstrap","angular.resumeBootstrap","extraModules","resumeDeferredBootstrap","reloadWithDebugInfo","location","reload","getTestability","rootElement","get","snake_case","separator","SNAKE_CASE_REGEXP","letter","pos","toLowerCase","bindJQuery","originalCleanData","bindJQueryFired","jqName","jq","jQuery","on","JQLitePrototype","isolateScope","controller","inheritedData","cleanData","jQuery.cleanData","elems","events","skipDestroyOnNextJQueryCleanData","elem","_data","$destroy","triggerHandler","JQLite","assertArg","arg","reason","assertArgFn","acceptArrayAnnotation","assertNotHasOwnProperty","getter","path","bindFnToScope","lastInstance","len","getBlockNodes","nodes","endNode","blockNodes","nextSibling","setupModuleLoader","ensure","factory","$injectorMinErr","$$minErr","requires","configFn","invokeLater","provider","method","insertMethod","queue","invokeQueue","moduleInstance","configBlocks","runBlocks","_invokeQueue","_configBlocks","_runBlocks","service","constant","decorator","animation","filter","directive","run","block","publishExternalAPI","version","uppercase","counter","csp","angularModule","$LocaleProvider","ngModule","$$sanitizeUri","$$SanitizeUriProvider","$CompileProvider","a","htmlAnchorDirective","input","inputDirective","textarea","form","formDirective","script","scriptDirective","select","selectDirective","style","styleDirective","option","optionDirective","ngBind","ngBindDirective","ngBindHtml","ngBindHtmlDirective","ngBindTemplate","ngBindTemplateDirective","ngClass","ngClassDirective","ngClassEven","ngClassEvenDirective","ngClassOdd","ngClassOddDirective","ngCloak","ngCloakDirective","ngController","ngControllerDirective","ngForm","ngFormDirective","ngHide","ngHideDirective","ngIf","ngIfDirective","ngInclude","ngIncludeDirective","ngInit","ngInitDirective","ngNonBindable","ngNonBindableDirective","ngPluralize","ngPluralizeDirective","ngRepeat","ngRepeatDirective","ngShow","ngShowDirective","ngStyle","ngStyleDirective","ngSwitch","ngSwitchDirective","ngSwitchWhen","ngSwitchWhenDirective","ngSwitchDefault","ngSwitchDefaultDirective","ngOptions","ngOptionsDirective","ngTransclude","ngTranscludeDirective","ngModel","ngModelDirective","ngList","ngListDirective","ngChange","ngChangeDirective","pattern","patternDirective","ngPattern","required","requiredDirective","ngRequired","minlength","minlengthDirective","ngMinlength","maxlength","maxlengthDirective","ngMaxlength","ngValue","ngValueDirective","ngModelOptions","ngModelOptionsDirective","ngIncludeFillContentDirective","ngAttributeAliasDirectives","ngEventDirectives","$anchorScroll","$AnchorScrollProvider","$animate","$AnimateProvider","$$animateQueue","$$CoreAnimateQueueProvider","$$AnimateRunner","$$CoreAnimateRunnerProvider","$browser","$BrowserProvider","$cacheFactory","$CacheFactoryProvider","$controller","$ControllerProvider","$document","$DocumentProvider","$exceptionHandler","$ExceptionHandlerProvider","$filter","$FilterProvider","$interpolate","$InterpolateProvider","$interval","$IntervalProvider","$http","$HttpProvider","$httpParamSerializer","$HttpParamSerializerProvider","$httpParamSerializerJQLike","$HttpParamSerializerJQLikeProvider","$httpBackend","$HttpBackendProvider","$location","$LocationProvider","$log","$LogProvider","$parse","$ParseProvider","$rootScope","$RootScopeProvider","$q","$QProvider","$$q","$$QProvider","$sce","$SceProvider","$sceDelegate","$SceDelegateProvider","$sniffer","$SnifferProvider","$templateCache","$TemplateCacheProvider","$templateRequest","$TemplateRequestProvider","$$testability","$$TestabilityProvider","$timeout","$TimeoutProvider","$window","$WindowProvider","$$rAF","$$RAFProvider","$$asyncCallback","$$AsyncCallbackProvider","$$jqLite","$$jqLiteProvider","$$HashMap","$$HashMapProvider","$$cookieReader","$$CookieReaderProvider","camelCase","SPECIAL_CHARS_REGEXP","_","offset","toUpperCase","MOZ_HACK_REGEXP","jqLiteAcceptsData","NODE_TYPE_DOCUMENT","jqLiteBuildFragment","tmp","fragment","createDocumentFragment","HTML_REGEXP","appendChild","createElement","TAG_NAME_REGEXP","exec","wrap","wrapMap","_default","innerHTML","XHTML_TAG_REGEXP","lastChild","childNodes","firstChild","textContent","createTextNode","argIsString","trim","jqLiteMinErr","parsed","SINGLE_TAG_REGEXP","jqLiteAddNodes","jqLiteClone","cloneNode","jqLiteDealoc","onlyDescendants","jqLiteRemoveData","querySelectorAll","descendants","l","jqLiteOff","type","unsupported","expandoStore","jqLiteExpandoStore","handle","listenerFns","removeEventListener","expandoId","ng339","jqCache","createIfNecessary","jqId","jqLiteData","isSimpleSetter","isSimpleGetter","massGetter","jqLiteHasClass","selector","jqLiteRemoveClass","cssClasses","setAttribute","cssClass","jqLiteAddClass","existingClasses","root","elements","jqLiteController","jqLiteInheritedData","documentElement","names","parentNode","NODE_TYPE_DOCUMENT_FRAGMENT","host","jqLiteEmpty","removeChild","jqLiteRemove","keepData","jqLiteDocumentLoaded","action","win","readyState","setTimeout","getBooleanAttrName","booleanAttr","BOOLEAN_ATTR","BOOLEAN_ELEMENTS","getAliasedAttrName","ALIASED_ATTR","createEventHandler","eventHandler","event","isDefaultPrevented","event.isDefaultPrevented","defaultPrevented","eventFns","eventFnsLength","immediatePropagationStopped","originalStopImmediatePropagation","stopImmediatePropagation","event.stopImmediatePropagation","stopPropagation","isImmediatePropagationStopped","event.isImmediatePropagationStopped","$get","this.$get","hasClass","classes","addClass","removeClass","hashKey","nextUidFn","objType","HashMap","isolatedUid","this.nextUid","put","anonFn","args","fnText","STRIP_COMMENTS","FN_ARGS","modulesToLoad","supportObject","delegate","provider_","providerInjector","instantiate","providerCache","providerSuffix","enforceReturnValue","enforcedReturnValue","instanceInjector","factoryFn","enforce","loadModules","moduleFn","runInvokeQueue","invokeArgs","loadedModules","message","stack","createInternalInjector","cache","getService","serviceName","caller","INSTANTIATING","err","shift","locals","$inject","$$annotate","Type","instance","prototype","returnedValue","annotate","has","$injector","instanceCache","decorFn","origProvider","orig$get","origProvider.$get","origInstance","$delegate","autoScrollingEnabled","disableAutoScrolling","this.disableAutoScrolling","getFirstAnchor","list","Array","some","scrollTo","scrollIntoView","scroll","yOffset","getComputedStyle","position","getBoundingClientRect","bottom","elemTop","top","scrollBy","hash","elm","getElementById","getElementsByName","autoScrollWatch","autoScrollWatchAction","newVal","oldVal","mergeClasses","b","splitClasses","klass","prepareAnimateOptions","options","supported","Browser","completeOutstandingRequest","outstandingRequestCount","outstandingRequestCallbacks","pop","error","cacheStateAndFireUrlChange","cacheState","fireUrlChange","history","state","cachedState","lastCachedState","lastBrowserUrl","url","lastHistoryState","urlChangeListeners","listener","clearTimeout","pendingDeferIds","isMock","$$completeOutstandingRequest","$$incOutstandingRequestCount","self.$$incOutstandingRequestCount","notifyWhenNoOutstandingRequests","self.notifyWhenNoOutstandingRequests","callback","href","baseElement","reloadLocation","self.url","sameState","sameBase","stripHash","substr","self.state","urlChangeInit","onUrlChange","self.onUrlChange","$$applicationDestroyed","self.$$applicationDestroyed","off","$$checkUrlChange","baseHref","self.baseHref","defer","self.defer","delay","timeoutId","cancel","self.defer.cancel","deferId","cacheFactory","cacheId","refresh","entry","freshEnd","staleEnd","n","link","p","nextEntry","prevEntry","caches","size","stats","id","capacity","Number","MAX_VALUE","lruHash","lruEntry","remove","removeAll","destroy","info","cacheFactory.info","cacheFactory.get","$$sanitizeUriProvider","parseIsolateBindings","directiveName","isController","LOCAL_REGEXP","bindings","definition","scopeName","$compileMinErr","mode","collection","optional","attrName","assertValidDirectiveName","hasDirectives","COMMENT_DIRECTIVE_REGEXP","CLASS_DIRECTIVE_REGEXP","ALL_OR_NOTHING_ATTRS","REQUIRE_PREFIX_REGEXP","EVENT_HANDLER_ATTR_REGEXP","this.directive","registerDirective","directiveFactory","Suffix","directives","priority","require","restrict","bindToController","controllerAs","CNTRL_REG","$$bindings","$$isolateBindings","aHrefSanitizationWhitelist","this.aHrefSanitizationWhitelist","regexp","imgSrcSanitizationWhitelist","this.imgSrcSanitizationWhitelist","this.debugInfoEnabled","enabled","safeAddClass","$element","className","$compileNodes","transcludeFn","maxPriority","ignoreDirective","previousCompileContext","nodeValue","compositeLinkFn","compileNodes","$$addScopeClass","namespace","publicLinkFn","cloneConnectFn","parentBoundTranscludeFn","transcludeControllers","futureParentElement","$$boundTransclude","$linkNode","wrapTemplate","controllerName","$$addScopeInfo","nodeList","$rootElement","childLinkFn","childScope","childBoundTranscludeFn","stableNodeList","nodeLinkFnFound","linkFns","idx","nodeLinkFn","destroyBindings","$new","$$destroyBindings","$on","transcludeOnThisElement","createBoundTranscludeFn","transclude","elementTranscludeOnThisElement","templateOnThisElement","attrs","linkFnFound","Attributes","collectDirectives","applyDirectivesToNode","$$element","terminal","previousBoundTranscludeFn","elementTransclusion","boundTranscludeFn","transcludedScope","cloneFn","controllers","containingScope","$$transcluded","attrsMap","$attr","addDirective","directiveNormalize","isNgAttr","nAttrs","attributes","attrStartName","attrEndName","ngAttrName","NG_ATTR_BINDING","PREFIX_REGEXP","directiveNName","directiveIsMultiElement","nName","addAttrInterpolateDirective","animVal","addTextInterpolateDirective","NODE_TYPE_COMMENT","byPriority","groupScan","attrStart","attrEnd","depth","groupElementsLinkFnWrapper","linkFn","compileNode","templateAttrs","jqCollection","originalReplaceDirective","preLinkFns","postLinkFns","addLinkFns","pre","post","newIsolateScopeDirective","$$isolateScope","cloneAndAnnotateFn","getControllers","elementControllers","substring","inheritType","dataName","setupControllers","controllerDirectives","controllerKey","$scope","$attrs","$transclude","controllerInstance","hasElementTranscludeDirective","linkNode","thisLinkFn","controllersBoundTransclude","cloneAttachFn","scopeToChild","templateDirective","$$originalDirective","initializeDirectiveBindings","scopeDirective","newScopeDirective","controllerForBindings","identifier","controllerResult","invokeLinkFn","template","templateUrl","terminalPriority","nonTlbTranscludeDirective","hasTranscludeDirective","hasTemplate","$compileNode","$template","childTranscludeFn","$$start","$$end","directiveValue","assertNoDuplicate","$$tlb","createComment","replaceWith","replaceDirective","contents","denormalizeTemplate","removeComments","templateNamespace","newTemplateAttrs","templateDirectives","unprocessedDirectives","markDirectivesAsIsolate","mergeTemplateAttributes","compileTemplateUrl","Math","max","tDirectives","startAttrName","endAttrName","multiElement","srcAttr","dstAttr","$set","tAttrs","linkQueue","afterTemplateNodeLinkFn","afterTemplateChildLinkFn","beforeTemplateCompileNode","origAsyncDirective","derivedSyncDirective","getTrustedResourceUrl","then","content","tempTemplateAttrs","beforeTemplateLinkNode","linkRootElement","$$destroyed","oldClasses","delayedNodeLinkFn","ignoreChildLinkFn","diff","what","previousDirective","text","interpolateFn","textInterpolateCompileFn","templateNode","templateNodeParent","hasCompileParent","$$addBindingClass","textInterpolateLinkFn","$$addBindingInfo","expressions","interpolateFnWatchAction","wrapper","getTrustedContext","attrNormalizedName","HTML","RESOURCE_URL","allOrNothing","trustedContext","attrInterpolatePreLinkFn","$$observers","newValue","$$inter","$$scope","oldValue","$updateClass","elementsToRemove","newNode","firstElementToRemove","removeCount","j2","replaceChild","expando","k","kk","annotation","newScope","onNewScopeDestroyed","lastValue","parentGet","parentSet","compare","$observe","literal","assign","parentValueWatch","parentValue","$stateful","unwatch","$watchCollection","attributesToCopy","$normalize","$addClass","classVal","$removeClass","newClasses","toAdd","tokenDifference","toRemove","writeAttr","booleanKey","aliasedKey","observer","trimmedSrcset","srcPattern","rawUris","nbrUrisWith2parts","floor","innerIdx","lastTuple","removeAttr","listeners","startSymbol","endSymbol","binding","isolated","noTemplate","str1","str2","values","tokens1","tokens2","token","jqNodes","globals","register","this.register","allowGlobals","this.allowGlobals","addIdentifier","expression","later","ident","$controllerMinErr","controllerPrototype","exception","cause","serializeValue","v","toISOString","ngParamSerializer","params","jQueryLikeParamSerializer","serialize","toSerialize","topLevel","defaultHttpResponseTransform","headers","tempData","JSON_PROTECTION_PREFIX","contentType","jsonStart","JSON_START","JSON_ENDS","parseHeaders","line","headerVal","headerKey","headersGetter","headersObj","transformData","status","fns","defaults","transformResponse","transformRequest","d","common","CONTENT_TYPE_APPLICATION_JSON","patch","xsrfCookieName","xsrfHeaderName","paramSerializer","useApplyAsync","this.useApplyAsync","interceptorFactories","interceptors","requestConfig","response","resp","reject","executeHeaderFns","headerContent","processedHeaders","headerFn","header","mergeHeaders","defHeaders","reqHeaders","defHeaderName","lowercaseDefHeaderName","reqHeaderName","chain","serverRequest","reqData","withCredentials","sendReq","promise","when","reversedInterceptors","interceptor","request","requestError","responseError","thenFn","rejectFn","success","promise.success","promise.error","done","headersString","statusText","resolveHttpPromise","resolvePromise","$applyAsync","$$phase","deferred","resolve","resolvePromiseWithResult","removePendingReq","pendingRequests","cachedResp","buildUrl","defaultCache","xsrfValue","urlIsSameOrigin","timeout","responseType","serializedParams","interceptorFactory","createShortMethods","createShortMethodsWithData","createXhr","XMLHttpRequest","createHttpBackend","callbacks","$browserDefer","rawDocument","jsonpReq","callbackId","async","body","called","addEventListener","timeoutRequest","jsonpDone","xhr","abort","completeRequest","open","setRequestHeader","onload","xhr.onload","responseText","urlResolve","protocol","getAllResponseHeaders","onerror","onabort","send","this.startSymbol","this.endSymbol","escape","ch","unescapeText","escapedStartRegexp","escapedEndRegexp","mustHaveExpression","parseStringifyInterceptor","getTrusted","valueOf","$interpolateMinErr","interr","endIndex","parseFns","textLength","expressionPositions","startSymbolLength","exp","endSymbolLength","throwNoconcat","compute","interpolationFn","$$watchDelegate","$watchGroup","interpolateFnWatcher","oldValues","currValue","$interpolate.startSymbol","$interpolate.endSymbol","interval","count","invokeApply","hasParams","setInterval","clearInterval","iteration","skipApply","$$intervalId","tick","notify","intervals","interval.cancel","NUMBER_FORMATS","DECIMAL_SEP","GROUP_SEP","PATTERNS","minInt","minFrac","maxFrac","posPre","posSuf","negPre","negSuf","gSize","lgSize","CURRENCY_SYM","DATETIME_FORMATS","MONTH","SHORTMONTH","DAY","SHORTDAY","AMPMS","medium","fullDate","longDate","mediumDate","shortDate","mediumTime","shortTime","ERANAMES","ERAS","pluralCat","num","encodePath","segments","parseAbsoluteUrl","absoluteUrl","locationObj","parsedUrl","$$protocol","$$host","hostname","$$port","port","DEFAULT_PORTS","parseAppUrl","relativeUrl","prefixed","$$path","pathname","$$search","search","$$hash","beginsWith","begin","whole","trimEmptyHash","stripFile","lastIndexOf","LocationHtml5Url","appBase","basePrefix","$$html5","appBaseNoFile","$$parse","this.$$parse","pathUrl","$locationMinErr","$$compose","this.$$compose","$$url","$$absUrl","$$parseLinkUrl","this.$$parseLinkUrl","relHref","appUrl","prevAppUrl","rewrittenUrl","LocationHashbangUrl","hashPrefix","withoutBaseUrl","withoutHashUrl","windowsFilePathExp","firstPathSegmentMatch","LocationHashbangInHtml5Url","locationGetter","property","locationGetterSetter","preprocess","html5Mode","requireBase","rewriteLinks","this.hashPrefix","this.html5Mode","setBrowserUrlWithFallback","oldUrl","oldState","$$state","afterLocationChange","$broadcast","absUrl","LocationMode","initialUrl","IGNORE_URI_REGEXP","ctrlKey","metaKey","shiftKey","which","button","target","absHref","preventDefault","initializing","newUrl","newState","$digest","$locationWatch","currentReplace","$$replace","urlOrStateChanged","debug","debugEnabled","this.debugEnabled","flag","formatError","Error","sourceURL","consoleLog","console","logFn","log","hasApply","arg1","arg2","warn","ensureSafeMemberName","fullExpression","$parseMinErr","ensureSafeObject","children","ensureSafeFunction","CALL","APPLY","BIND","ifDefined","plusFn","r","findConstantAndWatchExpressions","ast","allConstants","argsToWatch","AST","Program","expr","Literal","toWatch","UnaryExpression","argument","BinaryExpression","left","right","LogicalExpression","ConditionalExpression","alternate","consequent","Identifier","MemberExpression","object","computed","CallExpression","callee","AssignmentExpression","ArrayExpression","ObjectExpression","properties","ThisExpression","getInputs","lastExpression","isAssignable","assignableAST","NGValueParameter","operator","isLiteral","ASTCompiler","astBuilder","ASTInterpreter","setter","setValue","fullExp","propertyObj","isPossiblyDangerousMemberName","getValueOf","objectValueOf","cacheDefault","cacheExpensive","expressionInputDirtyCheck","oldValueOfValue","inputsWatchDelegate","objectEquality","parsedExpression","prettyPrintExpression","inputExpressions","inputs","lastResult","oldInputValueOf","expressionInputWatch","newInputValue","oldInputValueOfValues","oldInputValues","expressionInputsWatch","changed","oneTimeWatchDelegate","oneTimeWatch","oneTimeListener","old","$$postDigest","oneTimeLiteralWatchDelegate","isAllDefined","allDefined","constantWatchDelegate","constantWatch","constantListener","addInterceptor","interceptorFn","watchDelegate","regularInterceptedExpression","oneTimeInterceptedExpression","$parseOptions","expensiveChecks","$parseOptionsExpensive","oneTime","cacheKey","parseOptions","lexer","Lexer","parser","Parser","qFactory","nextTick","exceptionHandler","callOnce","resolveFn","Promise","simpleBind","scheduleProcessQueue","processScheduled","pending","Deferred","$qMinErr","TypeError","onFulfilled","onRejected","progressBack","catch","finally","handleCallback","$$reject","$$resolve","progress","makePromise","resolved","isResolved","callbackOutput","errback","$Q","Q","resolver","all","promises","results","flush","taskQueue","task","taskCount","queueFn","asyncFn","cancelLastRAF","rafFn","cancelQueueFn","requestAnimationFrame","webkitRequestAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","webkitCancelRequestAnimationFrame","rafSupported","timer","createChildScopeClass","ChildScope","$$watchers","$$nextSibling","$$childHead","$$childTail","$$listeners","$$listenerCount","$$watchersCount","$id","$$ChildScope","TTL","$rootScopeMinErr","lastDirtyWatch","applyAsyncId","digestTtl","this.digestTtl","destroyChildScope","$event","currentScope","Scope","$parent","$$prevSibling","$root","beginPhase","phase","incrementWatchersCount","current","decrementListenerCount","initWatchVal","flushApplyAsync","applyAsyncQueue","scheduleApplyAsync","isolate","child","watchExp","watcher","last","eq","deregisterWatch","watchExpressions","watchGroupAction","changeReactionScheduled","firstRun","newValues","deregisterFns","shouldCall","deregisterWatchGroup","unwatchFn","watchGroupSubAction","$watchCollectionInterceptor","_value","bothNaN","newItem","oldItem","internalArray","oldLength","changeDetected","newLength","internalObject","veryOldValue","trackVeryOldValue","changeDetector","initRun","$watchCollectionAction","watch","watchers","dirty","ttl","watchLog","logIdx","asyncTask","asyncQueue","$eval","msg","next","postDigestQueue","eventName","this.$watchGroup","$applyAsyncExpression","namedListeners","indexOfListener","$emit","targetScope","listenerArgs","$$asyncQueue","$$postDigestQueue","$$applyAsyncQueue","sanitizeUri","uri","isImage","regex","normalizedVal","adjustMatcher","matcher","$sceMinErr","escapeForRegexp","adjustMatchers","matchers","adjustedMatchers","SCE_CONTEXTS","resourceUrlWhitelist","resourceUrlBlacklist","this.resourceUrlWhitelist","this.resourceUrlBlacklist","matchUrl","generateHolderType","Base","holderType","trustedValue","$$unwrapTrustedValue","this.$$unwrapTrustedValue","holderType.prototype.valueOf","holderType.prototype.toString","htmlSanitizer","trustedValueHolderBase","byType","CSS","URL","JS","trustAs","Constructor","maybeTrusted","allowed","this.enabled","msie","sce","isEnabled","sce.isEnabled","sce.getTrusted","parseAs","sce.parseAs","enumValue","lName","eventSupport","android","userAgent","navigator","boxee","vendorPrefix","vendorRegex","bodyStyle","transitions","animations","webkitTransition","webkitAnimation","pushState","hasEvent","divElm","handleRequestFn","tpl","ignoreRequestError","totalPendingRequests","transformer","httpOptions","handleError","testability","testability.findBindings","opt_exactMatch","getElementsByClassName","matches","dataBinding","bindingName","testability.findModels","prefixes","attributeEquals","testability.getLocation","testability.setLocation","testability.whenStable","deferreds","$$timeoutId","timeout.cancel","urlParsingNode","requestUrl","originUrl","$$CookieReader","safeDecodeURIComponent","lastCookies","lastCookieString","cookieArray","cookie","currentCookieString","filters","suffix","currencyFilter","dateFilter","filterFilter","jsonFilter","limitToFilter","lowercaseFilter","numberFilter","orderByFilter","uppercaseFilter","comparator","matchAgainstAnyProp","getTypeForFilter","expressionType","predicateFn","createPredicateFn","shouldMatchPrimitives","actual","expected","item","deepCompare","dontMatchWholeObject","actualType","expectedType","expectedVal","matchAnyProperty","actualVal","$locale","formats","amount","currencySymbol","fractionSize","formatNumber","number","groupSep","decimalSep","isNegative","abs","isInfinity","Infinity","isFinite","numStr","formatedText","hasExponent","toFixed","parseFloat","fractionLen","min","round","fraction","lgroup","group","padNumber","digits","neg","dateGetter","dateStrGetter","shortForm","getFirstThursdayOfYear","year","dayOfWeekOnFirst","getDay","weekGetter","firstThurs","getFullYear","thisThurs","getMonth","getDate","eraGetter","jsonStringToDate","string","R_ISO8601_STR","tzHour","tzMin","dateSetter","setUTCFullYear","setFullYear","timeSetter","setUTCHours","setHours","m","s","ms","format","NUMBER_STRING","DATE_FORMATS_SPLIT","dateTimezoneOffset","DATE_FORMATS","spacing","limit","sortPredicate","reverseOrder","reverseComparator","comp","descending","objectToString","v1","v2","map","predicate","ngDirective","FormController","controls","parentForm","$$parentForm","nullFormCtrl","$error","$$success","$pending","$name","$dirty","$pristine","$valid","$invalid","$submitted","$addControl","$rollbackViewValue","form.$rollbackViewValue","control","$commitViewValue","form.$commitViewValue","form.$addControl","$$renameControl","form.$$renameControl","newName","oldName","$removeControl","form.$removeControl","$setValidity","addSetValidityMethod","ctrl","set","unset","$setDirty","form.$setDirty","PRISTINE_CLASS","DIRTY_CLASS","$setPristine","form.$setPristine","setClass","SUBMITTED_CLASS","$setUntouched","form.$setUntouched","$setSubmitted","form.$setSubmitted","stringBasedInputType","$formatters","$isEmpty","baseInputType","composing","ev","ngTrim","$viewValue","$$hasNativeValidators","$setViewValue","deferListener","origValue","keyCode","$render","ctrl.$render","createDateParser","mapping","iso","ISO_DATE_REGEXP","yyyy","MM","dd","HH","getHours","mm","ss","getSeconds","sss","getMilliseconds","part","NaN","createDateInputType","parseDate","dynamicDateInputType","isValidDate","parseObservedDateValue","badInputChecker","$options","previousDate","$$parserName","$parsers","parsedDate","$ngModelMinErr","ngMin","minVal","$validators","ctrl.$validators.min","$validate","ngMax","maxVal","ctrl.$validators.max","validity","VALIDITY_STATE_PROPERTY","badInput","typeMismatch","parseConstantExpr","parseFn","classDirective","arrayDifference","arrayClasses","digestClassCounts","classCounts","classesToUpdate","ngClassWatchAction","$index","old$index","mod","cachedToggleClass","switchValue","classCache","toggleValidationCss","validationErrorKey","isValid","VALID_CLASS","INVALID_CLASS","setValidity","isObjectEmpty","PENDING_CLASS","combinedState","REGEX_STRING_REGEXP","documentMode","isActive_","active","Function","name_","el","full","major","minor","dot","codeName","JQLite._data","MOUSE_EVENT_MAP","mouseleave","mouseenter","optgroup","tbody","tfoot","colgroup","caption","thead","th","td","ready","trigger","fired","removeData","removeAttribute","css","NODE_TYPE_ATTRIBUTE","lowercasedName","specified","getNamedItem","ret","getText","$dv","multiple","selected","nodeCount","jqLiteOn","types","related","relatedTarget","contains","one","onFn","replaceNode","insertBefore","contentDocument","prepend","wrapNode","detach","after","newElement","toggleClass","condition","classCondition","nextElementSibling","getElementsByTagName","extraParameters","dummyEvent","handlerArgs","eventFnsCopy","arg3","unbind","FN_ARG_SPLIT","FN_ARG","argDecl","underscore","$animateMinErr","AnimateRunner","end","resume","pause","complete","pass","fail","postDigestElements","addRemoveClassesPostDigest","add","existing","pin","domOperation","from","to","$$registeredAnimations","classNameFilter","this.classNameFilter","$$classNameFilter","reservedRegex","NG_ANIMATE_CLASSNAME","domInsert","parentElement","afterElement","afterNode","ELEMENT_NODE","previousElementSibling","runner","enter","move","leave","addclass","animate","tempClasses","APPLICATION_JSON","$interpolateMinErr.throwNoconcat","$interpolateMinErr.interr","PATH_MATCH","locationPrototype","paramValue","Location","Location.prototype.state","OPERATORS","ESCAPE","lex","tokens","readString","peek","readNumber","isIdent","readIdent","is","isWhitespace","ch2","ch3","op2","op3","op1","throwError","chars","isExpOperator","start","colStr","peekCh","quote","rawString","hex","String","fromCharCode","rep","ExpressionStatement","Property","program","expressionStatement","expect","filterChain","assignment","ternary","logicalOR","consume","logicalAND","equality","relational","additive","multiplicative","unary","primary","arrayDeclaration","constants","parseArguments","baseExpression","peekToken","kind","e1","e2","e3","e4","peekAhead","t","nextId","vars","own","assignable","stage","computing","recurse","generateFunction","fnKey","intoId","return_","watchId","fnString","USE","STRICT","filterPrefix","watchFns","varsPrefix","section","nameId","recursionFn","skipWatchIdCheck","if_","lazyAssign","computedMember","lazyRecurse","plus","not","getHasOwnProperty","nonComputedMember","addEnsureSafeObject","notNull","addEnsureSafeMemberName","addEnsureSafeFunction","member","filterName","defaultValue","stringEscapeRegex","stringEscapeFn","c","charCodeAt","skip","init","fn.assign","rhs","lhs","unary+","unary-","unary!","binary+","binary-","binary*","binary/","binary%","binary===","binary!==","binary==","binary!=","binary<","binary>","binary<=","binary>=","binary&&","binary||","ternary?:","base","astCompiler","yy","y","MMMM","MMM","M","H","hh","EEEE","EEE","ampmGetter","Z","timeZoneGetter","zone","paddedZone","ww","w","G","GG","GGG","GGGG","longEraGetter","xlinkHref","propName","defaultLinkFn","normalized","ngBooleanAttrWatchAction","htmlAttr","ngAttrAliasWatchAction","nullFormRenameControl","formDirectiveFactory","isNgForm","ngFormCompile","formElement","nameAttr","ngFormPreLink","handleFormSubmission","parentFormCtrl","URL_REGEXP","EMAIL_REGEXP","NUMBER_REGEXP","DATE_REGEXP","DATETIMELOCAL_REGEXP","WEEK_REGEXP","MONTH_REGEXP","TIME_REGEXP","inputType","textInputType","weekParser","isoWeek","existingDate","week","hours","seconds","milliseconds","addDays","numberInputType","urlInputType","ctrl.$validators.url","modelValue","viewValue","emailInputType","email","ctrl.$validators.email","radioInputType","checked","checkboxInputType","trueValue","ngTrueValue","falseValue","ngFalseValue","ctrl.$isEmpty","ctrls","CONSTANT_VALUE_REGEXP","tplAttr","ngValueConstantLink","ngValueLink","valueWatchAction","$compile","ngBindCompile","templateElement","ngBindLink","ngBindWatchAction","ngBindTemplateCompile","ngBindTemplateLink","ngBindHtmlCompile","tElement","ngBindHtmlGetter","ngBindHtmlWatch","getStringValue","ngBindHtmlLink","ngBindHtmlWatchAction","getTrustedHtml","$viewChangeListeners","forceAsyncEvents","ngEventHandler","previousElements","ngIfWatchAction","srcExp","onloadExp","autoScrollExp","autoscroll","changeCounter","previousElement","currentElement","cleanupLastIncludeContent","parseAsResourceUrl","ngIncludeWatchAction","afterAnimation","thisChangeId","namespaceAdaptedClone","trimValues","NgModelController","$modelValue","$$rawModelValue","$asyncValidators","$untouched","$touched","parsedNgModel","parsedNgModelAssign","ngModelGet","ngModelSet","pendingDebounce","parserValid","$$setOptions","this.$$setOptions","getterSetter","invokeModelGetter","invokeModelSetter","$$$p","this.$isEmpty","currentValidationRunId","this.$setPristine","this.$setDirty","this.$setUntouched","UNTOUCHED_CLASS","TOUCHED_CLASS","$setTouched","this.$setTouched","this.$rollbackViewValue","$$lastCommittedViewValue","this.$validate","prevValid","prevModelValue","allowInvalid","$$runValidators","allValid","$$writeModelToScope","this.$$runValidators","doneCallback","processSyncValidators","syncValidatorsValid","validator","processAsyncValidators","validatorPromises","validationDone","localValidationRunId","processParseErrors","errorKey","this.$commitViewValue","$$parseAndValidate","this.$$parseAndValidate","this.$$writeModelToScope","this.$setViewValue","updateOnDefault","$$debounceViewValueCommit","this.$$debounceViewValueCommit","debounceDelay","debounce","ngModelWatch","formatters","ngModelCompile","ngModelPreLink","modelCtrl","formCtrl","ngModelPostLink","updateOn","DEFAULT_REGEXP","that","ngOptionsMinErr","NG_OPTIONS_REGEXP","parseOptionsExpression","optionsExp","selectElement","Option","selectValue","label","disabled","valueName","keyName","selectAs","trackBy","viewValueFn","trackByFn","getTrackByValueFn","getHashOfValue","getTrackByValue","getLocals","displayFn","groupByFn","disableWhenFn","valuesFn","getWatchables","watchedArray","getWatchable","disableWhen","getOptions","optionItems","selectValueMap","optionValues","optionValuesKeys","itemKey","optionValuesLength","optionItem","getOptionFromViewValue","getViewValueFromOption","optionTemplate","optGroupTemplate","updateOptionElement","addOrReuseElement","removeExcessElements","skipEmptyAndUnknownOptions","emptyOption_","emptyOption","unknownOption_","unknownOption","updateOptions","previousValue","selectCtrl","readValue","groupMap","providedEmptyOption","updateOption","optionElement","groupElement","currentOptionElement","ngModelCtrl","nextValue","ngModelCtrl.$isEmpty","writeValue","selectCtrl.writeValue","selectCtrl.readValue","selectedValues","selections","selectedOption","BRACE","IS_WHEN","updateElementText","newText","numberExp","whenExp","whens","whensExpFns","braceReplacement","watchRemover","lastCount","attributeName","tmpMatch","whenKey","ngPluralizeWatchAction","countIsNaN","whenExpFn","ngRepeatMinErr","updateScope","valueIdentifier","keyIdentifier","arrayLength","$first","$last","$middle","$odd","$even","ngRepeatCompile","ngRepeatEndComment","aliasAs","trackByExp","trackByExpGetter","trackByIdExpFn","trackByIdArrayFn","trackByIdObjFn","hashFnLocals","ngRepeatLink","lastBlockMap","ngRepeatAction","previousNode","nextNode","nextBlockMap","collectionLength","trackById","collectionKeys","nextBlockOrder","trackByIdFn","blockKey","ngRepeatTransclude","ngShowWatchAction","NG_HIDE_CLASS","NG_HIDE_IN_PROGRESS_CLASS","ngHideWatchAction","ngStyleWatchAction","newStyles","oldStyles","ngSwitchController","cases","selectedTranscludes","selectedElements","previousLeaveAnimations","selectedScopes","spliceFactory","ngSwitchWatchAction","selectedTransclude","caseElement","selectedScope","anchor","noopNgModelController","SelectController","optionsMap","renderUnknownOption","self.renderUnknownOption","unknownVal","removeUnknownOption","self.removeUnknownOption","self.readValue","self.writeValue","hasOption","addOption","self.addOption","removeOption","self.removeOption","self.hasOption","ngModelCtrl.$render","lastView","lastViewRef","selectMultipleWatch","chromeHack","selectCtrlName","interpolateWatchAction","ctrl.$validators.required","patternExp","ctrl.$validators.pattern","intVal","ctrl.$validators.maxlength","ctrl.$validators.minlength","$$csp"] +} diff --git a/src/main/webapp/WEB-INF/views/src/js/components/angular/package.json b/src/main/webapp/WEB-INF/views/src/js/components/angular/package.json new file mode 100644 index 0000000..d1adede --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/components/angular/package.json @@ -0,0 +1,25 @@ +{ + "name": "angular", + "version": "1.4.0", + "description": "HTML enhanced for web apps", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "https://github.com/angular/angular.js.git" + }, + "keywords": [ + "angular", + "framework", + "browser", + "client-side" + ], + "author": "Angular Core Team ", + "license": "MIT", + "bugs": { + "url": "https://github.com/angular/angular.js/issues" + }, + "homepage": "http://angularjs.org" +} diff --git a/src/main/webapp/WEB-INF/views/src/js/components/require-css/.bower.json b/src/main/webapp/WEB-INF/views/src/js/components/require-css/.bower.json new file mode 100644 index 0000000..101f21b --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/components/require-css/.bower.json @@ -0,0 +1,25 @@ +{ + "name": "require-css", + "version": "0.1.8", + "ignore": [ + "example", + "test", + ".gitignore" + ], + "main": [ + "css.js", + "css-builder.js", + "normalize.js" + ], + "homepage": "https://github.com/guybedford/require-css", + "_release": "0.1.8", + "_resolution": { + "type": "version", + "tag": "0.1.8", + "commit": "3b1d86858259762e5bb9db72c3df6ea808cd9d6d" + }, + "_source": "git://github.com/guybedford/require-css.git", + "_target": "~0.1.8", + "_originalSource": "require-css", + "_direct": true +} \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/js/components/require-css/LICENSE b/src/main/webapp/WEB-INF/views/src/js/components/require-css/LICENSE new file mode 100644 index 0000000..e39e77c --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/components/require-css/LICENSE @@ -0,0 +1,10 @@ +MIT License +----------- + +Copyright (C) 2013 Guy Bedford + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/main/webapp/WEB-INF/views/src/js/components/require-css/README.md b/src/main/webapp/WEB-INF/views/src/js/components/require-css/README.md new file mode 100644 index 0000000..cbf8bcf --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/components/require-css/README.md @@ -0,0 +1,250 @@ +require-css +=========== + +RequireJS CSS requiring and optimization, with almond support. + +Useful for writing modular CSS dependencies alongside scripts. + +For LESS inclusion, use [require-less](https://github.com/guybedford/require-less), which behaves and builds the css exactly like this module apart from the preprocessing step. + +
    + +Overview +-------- + +Allows the construction of scripts that can require CSS, using the simple RequireJS syntax: + +```javascript +define(['css!styles/main'], function() { + //code that requires the stylesheet: styles/main.css +}); +``` + +Fully compatible in IE 6+, Chrome 3+, Firefox 3.5+, Opera 10+, iOS. + +* **CSS builds** When run as part of a build with the RequireJS optimizer, `css!` dependencies are automatically inlined into the built layer within the JavaScript, fully compatible with layering. CSS injection is performed as soon as the layer is loaded. +* **Option to build separate layer CSS files** A `separateCSS` build parameter allows for built layers to output their css files separately, instead of inline with the JavaScript, for manual inclusion. +* **CSS compression** CSS redundancy compression is supported through the external library, [csso](https://github.com/css/csso). + +Installation and Setup +---------------------- + +Download the require-css folder manually or use Bower: + +```bash +bower install require-css +``` + +To allow the direct `css!` usage, add the following [map configuration](http://requirejs.org/docs/api.html#config-map) in RequireJS: + +```javascript +map: { + '*': { + 'css': 'require-css/css' // or whatever the path to require-css is + } +} +``` + +Use Cases and Benefits +---------------------- + +### Motivation + +The use case for RequireCSS came out of a need to manage templates and their CSS together. +The idea being that a CSS require can be a dependency of the code that dynamically renders a template. +When writing a large dynamic application, with templates being rendered on the client-side, it can be beneficial to inject the CSS as templates are required instead +of dumping all the CSS together separately. The added benefit of this is then being able to build the CSS naturally with the RequireJS optimizer, +which also supports [separate build layers](http://requirejs.org/docs/1.0/docs/faq-optimization.html#priority) as needed. + +### Script-inlined CSS Benefits + +By default, during the build CSS is compressed and inlined as a string within the layer that injects the CSS when run. + +If the layer is included as a ` + + + +
    +
    + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/emotion/images/fface.gif b/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/emotion/images/fface.gif new file mode 100644 index 0000000000000000000000000000000000000000..0d8a6afeb1cb2cc40c5d76f90630d8a9c1323ffe GIT binary patch literal 18479 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 Z1*(9jYzjdPQwkU=rV+{lAZZd106V&Waa;fZ literal 0 HcmV?d00001 diff --git a/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/emotion/images/jxface2.gif b/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/emotion/images/jxface2.gif new file mode 100644 index 0000000000000000000000000000000000000000..a959c90f7eb17adc455982b040244fd583eed888 GIT binary patch literal 40706 zcmW)ncRUr2_y6y{mwR!!cE-K-cFk<}+T+T#ciE#TBFV^Iwz5M>W=7Gq%Bt?QvWg@m z6;jcgB9!L+eZIf*IDeh?QIMUgJc1z$R8ZQ|Kfb_r_e{Z9w5lq*XQcc z9jVL6+Z7d@0e-Xx^soxJ!g&+_IKmeR_|x)cG)v5|>2%*>(b9OMU6b@q|En{{Mc>Fd zmAqBv=v4OHAng6n6B89pNx4*7QZPUF^6&SRMFNih3@mB5qAAnw?U?%>hx72^!5P}kmX;QMmWJ{1@n2Fw;g#Vtu4MMN(f#!H zXB|_tz)fkBO&l>)6C=DtUUmnTxRQsRw8{4rwUKskKS!E-V3Yyezf=Q#gm%1l#kzM{%aVio9lmP6|zV{ z1>aIGIoEb=%4a$p@b5!lSs=M}SM$_elk9Q7Pd`3|-f`NRs_Yo;XG}(LcK#b)n`mro zc=hFtX1?5;H*e0de0q9%6fTQ6HAO7|U>CR{?Y22qj_J`i2Al)bFf* z%b&fIpP%>d!Fx0s&A40oHE-%GXT_*Sd2V;IxFfr8y!=A<*=c$|4u|{jZRFn({oDOu z#lT}ad9r9O{_DX;*uC7&U-eFzj_4dp{K1_Vu`H_*4oEL+fHy*QC6WZWL|i`n(4p{rUnS@N2ks{X2mo*ZYX7H%|I-8j!2$f`lCWd0 zvV0`lMg5P?;n>>$E)UW-3x-P+LCQwaoA`QjV=E)8jn#r|i*#|G^Zs^wa2wvPaGw1i zRzZ`c|2z}bx~8PnFkb`9*h_IWC$h}5OD{c%@NR2JY+qGNn#aMVyArt$KLv>b&D^dC z3vE&?F;Kv^JG`a$R>JLKw!=nNx#hDQ&gj%jE?s+kXuubtR5(7Hy|`URc$!jY>Ab7MVNQ;8V&Gr&(FwV2RfwG{=fYoxhVN(QR05?( z?8A)q?$mD3!vWocD)5;OTjRS1;l}^2=+6ob{5j;a?pn!wg?HWzd!kWI6kJFR=CQJ( z{M;$N8pRux08KXfxhmodidzj3OFXzwrZ)?@JECT}KAut+&;2y(tZudegrgVgZV{Zf z>lQU~)i->v!UBS5Tn=TxsmuT7wM#6e&>kK{CsS%|;A`~*`b95+4NH_YZ^MTZc18)e zi9Pdro)uzofLn3h7ZOJCL2Q_!gH?ik#C7Du_n&U1{A-yr&sJ#NtjpJ5Zmx}-yY|VO zE)|MxkVJGi`dT%VTusmDbgzcbBp5oP(r64{F|QVWef%Q&>E}*h6I=nXsecH5%kzg^-JTi#qgd&_tt%giqOt#R5{gEGDy*K*`I}~d zM3FT!<=1Zsy}t_GF*E2?@%s>y_W>hfmu9U3bj|ijqU777R4(R{-Em*3NbUz?QvAA( zMg|#Nd0SfvtCkKPDmPDzdtFCc-kyn$O;+#1i`^qC+)ikOZ%qeB!v_#+2Jqj{Pn%ki z=_mbA1535K7FvKRPn03}*DM`VJ{XhqW2eVaT|8s*G|2)zfL41(l!yj+mr5gW>0`>^ z@!a#~_4siakxLdv-$&cytqZ}!2r#q}%2w<>O9)sBM4>DwJo-3!X~A)b@)4@)ZtN-G zA0Xh5Vh>Lu@GOXb2=-TT81LSSnpwg=;#?=Nd6b-dxwT)wT&@*izufVJ6a|U≶_= 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/emotion/images/neweditor-tab-bg.png b/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/emotion/images/neweditor-tab-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..8f398b0958cdc5136a23b9745becc23a833aa325 GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^96&72!3HGF`uUCmDVAa<&kznEsNqQI0P;BtJR*x3 z7^L@rFypT63w8qqANLt@XPdKI8X22WQ%mvv4FO#q2N BK}7%n literal 0 HcmV?d00001 diff --git a/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/emotion/images/tface.gif b/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/emotion/images/tface.gif new file mode 100644 index 0000000000000000000000000000000000000000..1354f54b961211fb0253ccbd27a81da5dab5a639 GIT binary patch literal 19805 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
    Q#B)e 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℞!!p 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 + + + 帮助 + + + + + +
    +
    + + +
    +
    +
    +

    UEditor

    +

    +

    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ctrl+b
    ctrl+c
    ctrl+x
    ctrl+v
    ctrl+y
    ctrl+z
    ctrl+i
    ctrl+u
    ctrl+a
    shift+enter
    alt+z
    +
    +
    +
    + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/image/image.css b/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/image/image.css new file mode 100644 index 0000000..bc3e1d7 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/image/image.css @@ -0,0 +1,894 @@ +@charset "utf-8"; +/* dialog样式 */ +.wrapper { + zoom: 1; + width: 630px; + *width: 626px; + height: 380px; + margin: 0 auto; + padding: 10px; + position: relative; + font-family: sans-serif; +} + +/*tab样式框大小*/ +.tabhead { + float:left; +} +.tabbody { + width: 100%; + height: 346px; + position: relative; + clear: both; +} + +.tabbody .panel { + position: absolute; + width: 0; + height: 0; + background: #fff; + overflow: hidden; + display: none; +} + +.tabbody .panel.focus { + width: 100%; + height: 346px; + display: block; +} + +/* 图片对齐方式 */ +.alignBar{ + float:right; + margin-top: 5px; + position: relative; +} + +.alignBar .algnLabel{ + float:left; + height: 20px; + line-height: 20px; +} + +.alignBar #alignIcon{ + zoom:1; + _display: inline; + display: inline-block; + position: relative; +} +.alignBar #alignIcon span{ + float: left; + cursor: pointer; + display: block; + width: 19px; + height: 17px; + margin-right: 3px; + margin-left: 3px; + background-image: url(images/alignicon.jpg); +} +.alignBar #alignIcon .none-align{ + background-position: 0 -18px; +} +.alignBar #alignIcon .left-align{ + background-position: -20px -18px; +} +.alignBar #alignIcon .right-align{ + background-position: -40px -18px; +} +.alignBar #alignIcon .center-align{ + background-position: -60px -18px; +} +.alignBar #alignIcon .none-align.focus{ + background-position: 0 0; +} +.alignBar #alignIcon .left-align.focus{ + background-position: -20px 0; +} +.alignBar #alignIcon .right-align.focus{ + background-position: -40px 0; +} +.alignBar #alignIcon .center-align.focus{ + background-position: -60px 0; +} + + + + +/* 远程图片样式 */ +#remote { + z-index: 200; +} + +#remote .top{ + width: 100%; + margin-top: 25px; +} +#remote .left{ + display: block; + float: left; + width: 300px; + height:10px; +} +#remote .right{ + display: block; + float: right; + width: 300px; + height:10px; +} +#remote .row{ + margin-left: 20px; + clear: both; + height: 40px; +} + +#remote .row label{ + text-align: center; + width: 50px; + zoom:1; + _display: inline; + display:inline-block; + vertical-align: middle; +} +#remote .row label.algnLabel{ + float: left; + +} + +#remote input.text{ + width: 150px; + padding: 3px 6px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} +#remote input.text:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6); +} +#remote #url{ + width: 500px; + margin-bottom: 2px; +} +#remote #width, +#remote #height{ + width: 20px; + margin-left: 2px; + margin-right: 2px; +} +#remote #border, +#remote #vhSpace, +#remote #title{ + width: 180px; + margin-right: 5px; +} +#remote #lock{ +} +#remote #lockicon{ + zoom: 1; + _display:inline; + display: inline-block; + width: 20px; + height: 20px; + background: url("../../themes/default/images/lock.gif") -13px -13px no-repeat; + vertical-align: middle; +} +#remote #preview{ + clear: both; + width: 260px; + height: 240px; + z-index: 9999; + margin-top: 10px; + background-color: #eee; + overflow: hidden; +} + +/* 上传图片 */ +.tabbody #upload.panel { + width: 0; + height: 0; + overflow: hidden; + position: absolute !important; + clip: rect(1px, 1px, 1px, 1px); + background: #fff; + display: block; +} + +.tabbody #upload.panel.focus { + width: 100%; + height: 346px; + display: block; + clip: auto; +} + +#upload .queueList { + margin: 0; + width: 100%; + height: 100%; + position: absolute; + overflow: hidden; +} + +#upload p { + margin: 0; +} + +.element-invisible { + width: 0 !important; + height: 0 !important; + border: 0; + padding: 0; + margin: 0; + overflow: hidden; + position: absolute !important; + clip: rect(1px, 1px, 1px, 1px); +} + +#upload .placeholder { + margin: 10px; + border: 2px dashed #e6e6e6; + *border: 0px dashed #e6e6e6; + height: 172px; + padding-top: 150px; + text-align: center; + background: url(images/image.png) center 70px no-repeat; + color: #cccccc; + font-size: 18px; + position: relative; + top:0; + *top: 10px; +} + +#upload .placeholder .webuploader-pick { + font-size: 18px; + background: #00b7ee; + border-radius: 3px; + line-height: 44px; + padding: 0 30px; + *width: 120px; + color: #fff; + display: inline-block; + margin: 0 auto 20px auto; + cursor: pointer; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); +} + +#upload .placeholder .webuploader-pick-hover { + background: #00a2d4; +} + + +#filePickerContainer { + text-align: center; +} + +#upload .placeholder .flashTip { + color: #666666; + font-size: 12px; + position: absolute; + width: 100%; + text-align: center; + bottom: 20px; +} + +#upload .placeholder .flashTip a { + color: #0785d1; + text-decoration: none; +} + +#upload .placeholder .flashTip a:hover { + text-decoration: underline; +} + +#upload .placeholder.webuploader-dnd-over { + border-color: #999999; +} + +#upload .filelist { + list-style: none; + margin: 0; + padding: 0; + overflow-x: hidden; + overflow-y: auto; + position: relative; + height: 300px; +} + +#upload .filelist:after { + content: ''; + display: block; + width: 0; + height: 0; + overflow: hidden; + clear: both; + position: relative; +} + +#upload .filelist li { + width: 113px; + height: 113px; + background: url(images/bg.png); + text-align: center; + margin: 9px 0 0 9px; + *margin: 6px 0 0 6px; + position: relative; + display: block; + float: left; + overflow: hidden; + font-size: 12px; +} + +#upload .filelist li p.log { + position: relative; + top: -45px; +} + +#upload .filelist li p.title { + position: absolute; + top: 0; + left: 0; + width: 100%; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + top: 5px; + text-indent: 5px; + text-align: left; +} + +#upload .filelist li p.progress { + position: absolute; + width: 100%; + bottom: 0; + left: 0; + height: 8px; + overflow: hidden; + z-index: 50; + margin: 0; + border-radius: 0; + background: none; + -webkit-box-shadow: 0 0 0; +} + +#upload .filelist li p.progress span { + display: none; + overflow: hidden; + width: 0; + height: 100%; + background: #1483d8 url(images/progress.png) repeat-x; + + -webit-transition: width 200ms linear; + -moz-transition: width 200ms linear; + -o-transition: width 200ms linear; + -ms-transition: width 200ms linear; + transition: width 200ms linear; + + -webkit-animation: progressmove 2s linear infinite; + -moz-animation: progressmove 2s linear infinite; + -o-animation: progressmove 2s linear infinite; + -ms-animation: progressmove 2s linear infinite; + animation: progressmove 2s linear infinite; + + -webkit-transform: translateZ(0); +} + +@-webkit-keyframes progressmove { + 0% { + background-position: 0 0; + } + 100% { + background-position: 17px 0; + } +} + +@-moz-keyframes progressmove { + 0% { + background-position: 0 0; + } + 100% { + background-position: 17px 0; + } +} + +@keyframes progressmove { + 0% { + background-position: 0 0; + } + 100% { + background-position: 17px 0; + } +} + +#upload .filelist li p.imgWrap { + position: relative; + z-index: 2; + line-height: 113px; + vertical-align: middle; + overflow: hidden; + width: 113px; + height: 113px; + + -webkit-transform-origin: 50% 50%; + -moz-transform-origin: 50% 50%; + -o-transform-origin: 50% 50%; + -ms-transform-origin: 50% 50%; + transform-origin: 50% 50%; + + -webit-transition: 200ms ease-out; + -moz-transition: 200ms ease-out; + -o-transition: 200ms ease-out; + -ms-transition: 200ms ease-out; + transition: 200ms ease-out; +} + +#upload .filelist li img { + width: 100%; +} + +#upload .filelist li p.error { + background: #f43838; + color: #fff; + position: absolute; + bottom: 0; + left: 0; + height: 28px; + line-height: 28px; + width: 100%; + z-index: 100; + display:none; +} + +#upload .filelist li .success { + display: block; + position: absolute; + left: 0; + bottom: 0; + height: 40px; + width: 100%; + z-index: 200; + background: url(images/success.png) no-repeat right bottom; + background: url(images/success.gif) no-repeat right bottom \9; +} + +#upload .filelist li.filePickerBlock { + width: 113px; + height: 113px; + background: url(images/image.png) no-repeat center 12px; + border: 1px solid #eeeeee; + border-radius: 0; +} +#upload .filelist li.filePickerBlock div.webuploader-pick { + width: 100%; + height: 100%; + margin: 0; + padding: 0; + opacity: 0; + background: none; + font-size: 0; +} + +#upload .filelist div.file-panel { + position: absolute; + height: 0; + filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#80000000', endColorstr='#80000000') \0; + background: rgba(0, 0, 0, 0.5); + width: 100%; + top: 0; + left: 0; + overflow: hidden; + z-index: 300; +} + +#upload .filelist div.file-panel span { + width: 24px; + height: 24px; + display: inline; + float: right; + text-indent: -9999px; + overflow: hidden; + background: url(images/icons.png) no-repeat; + background: url(images/icons.gif) no-repeat \9; + margin: 5px 1px 1px; + cursor: pointer; + -webkit-tap-highlight-color: rgba(0,0,0,0); + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +#upload .filelist div.file-panel span.rotateLeft { + display:none; + background-position: 0 -24px; +} + +#upload .filelist div.file-panel span.rotateLeft:hover { + background-position: 0 0; +} + +#upload .filelist div.file-panel span.rotateRight { + display:none; + background-position: -24px -24px; +} + +#upload .filelist div.file-panel span.rotateRight:hover { + background-position: -24px 0; +} + +#upload .filelist div.file-panel span.cancel { + background-position: -48px -24px; +} + +#upload .filelist div.file-panel span.cancel:hover { + background-position: -48px 0; +} + +#upload .statusBar { + height: 45px; + border-bottom: 1px solid #dadada; + margin: 0 10px; + padding: 0; + line-height: 45px; + vertical-align: middle; + position: relative; +} + +#upload .statusBar .progress { + border: 1px solid #1483d8; + width: 198px; + background: #fff; + height: 18px; + position: absolute; + top: 12px; + display: none; + text-align: center; + line-height: 18px; + color: #6dbfff; + margin: 0 10px 0 0; +} +#upload .statusBar .progress span.percentage { + width: 0; + height: 100%; + left: 0; + top: 0; + background: #1483d8; + position: absolute; +} +#upload .statusBar .progress span.text { + position: relative; + z-index: 10; +} + +#upload .statusBar .info { + display: inline-block; + font-size: 14px; + color: #666666; +} + +#upload .statusBar .btns { + position: absolute; + top: 7px; + right: 0; + line-height: 30px; +} + +#filePickerBtn { + display: inline-block; + float: left; +} +#upload .statusBar .btns .webuploader-pick, +#upload .statusBar .btns .uploadBtn, +#upload .statusBar .btns .uploadBtn.state-uploading, +#upload .statusBar .btns .uploadBtn.state-paused { + background: #ffffff; + border: 1px solid #cfcfcf; + color: #565656; + padding: 0 18px; + display: inline-block; + border-radius: 3px; + margin-left: 10px; + cursor: pointer; + font-size: 14px; + float: left; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +#upload .statusBar .btns .webuploader-pick-hover, +#upload .statusBar .btns .uploadBtn:hover, +#upload .statusBar .btns .uploadBtn.state-uploading:hover, +#upload .statusBar .btns .uploadBtn.state-paused:hover { + background: #f0f0f0; +} + +#upload .statusBar .btns .uploadBtn, +#upload .statusBar .btns .uploadBtn.state-paused{ + background: #00b7ee; + color: #fff; + border-color: transparent; +} +#upload .statusBar .btns .uploadBtn:hover, +#upload .statusBar .btns .uploadBtn.state-paused:hover{ + background: #00a2d4; +} + +#upload .statusBar .btns .uploadBtn.disabled { + pointer-events: none; + filter:alpha(opacity=60); + -moz-opacity:0.6; + -khtml-opacity: 0.6; + opacity: 0.6; +} + + + +/* 图片管理样式 */ +#online { + width: 100%; + height: 336px; + padding: 10px 0 0 0; +} +#online #imageList{ + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + position: relative; +} +#online ul { + display: block; + list-style: none; + margin: 0; + padding: 0; +} +#online li { + float: left; + display: block; + list-style: none; + padding: 0; + width: 113px; + height: 113px; + margin: 0 0 9px 9px; + *margin: 0 0 6px 6px; + background-color: #eee; + overflow: hidden; + cursor: pointer; + position: relative; +} +#online li.clearFloat { + float: none; + clear: both; + display: block; + width:0; + height:0; + margin: 0; + padding: 0; +} +#online li img { + cursor: pointer; +} +#online li .icon { + cursor: pointer; + width: 113px; + height: 113px; + position: absolute; + top: 0; + left: 0; + z-index: 2; + border: 0; + background-repeat: no-repeat; +} +#online li .icon:hover { + width: 107px; + height: 107px; + border: 3px solid #1094fa; +} +#online li.selected .icon { + background-image: url(images/success.png); + background-image: url(images/success.gif)\9; + background-position: 75px 75px; +} +#online li.selected .icon:hover { + width: 107px; + height: 107px; + border: 3px solid #1094fa; + background-position: 72px 72px; +} + + +/* 图片搜索样式 */ +#search .searchBar { + width: 100%; + height: 30px; + margin: 10px 0 5px 0; + padding: 0; +} + +#search input.text{ + width: 150px; + padding: 3px 6px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} +#search input.text:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6); +} +#search input.searchTxt { + margin-left:5px; + padding-left: 5px; + background: #FFF; + width: 300px; + *width: 260px; + height: 21px; + line-height: 21px; + float: left; + dislay: block; +} + +#search .searchType { + width: 65px; + height: 28px; + padding:0; + line-height: 28px; + border: 1px solid #d7d7d7; + border-radius: 0; + vertical-align: top; + margin-left: 5px; + float: left; + dislay: block; +} + +#search #searchBtn, +#search #searchReset { + display: inline-block; + margin-bottom: 0; + margin-right: 5px; + padding: 4px 10px; + font-weight: 400; + text-align: center; + vertical-align: middle; + cursor: pointer; + background-image: none; + border: 1px solid transparent; + white-space: nowrap; + font-size: 14px; + border-radius: 4px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + vertical-align: top; + float: right; +} + +#search #searchBtn { + color: white; + border-color: #285e8e; + background-color: #3b97d7; +} +#search #searchReset { + color: #333; + border-color: #ccc; + background-color: #fff; +} +#search #searchBtn:hover { + background-color: #3276b1; +} +#search #searchReset:hover { + background-color: #eee; +} + +#search .msg { + margin-left: 5px; +} + +#search .searchList{ + width: 100%; + height: 300px; + overflow: hidden; + clear: both; +} +#search .searchList ul{ + margin:0; + padding:0; + list-style:none; + clear: both; + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + zoom: 1; + position: relative; +} + +#search .searchList li { + list-style:none; + float: left; + display: block; + width: 115px; + margin: 5px 10px 5px 20px; + *margin: 5px 10px 5px 15px; + padding:0; + font-size: 12px; + box-shadow: 0 1px 3px rgba(0, 0, 0, .3); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, .3); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, .3); + position: relative; + vertical-align: top; + text-align: center; + overflow: hidden; + cursor: pointer; + filter: alpha(Opacity=100); + -moz-opacity: 1; + opacity: 1; + border: 2px solid #eee; +} + +#search .searchList li.selected { + filter: alpha(Opacity=40); + -moz-opacity: 0.4; + opacity: 0.4; + border: 2px solid #00a0e9; +} + +#search .searchList li p { + background-color: #eee; + margin: 0; + padding: 0; + position: relative; + width:100%; + height:115px; + overflow: hidden; +} + +#search .searchList li p img { + cursor: pointer; + border: 0; +} + +#search .searchList li a { + color: #999; + border-top: 1px solid #F2F2F2; + background: #FAFAFA; + text-align: center; + display: block; + padding: 0 5px; + width: 105px; + height:32px; + line-height:32px; + white-space:nowrap; + text-overflow:ellipsis; + text-decoration: none; + overflow: hidden; + word-break: break-all; +} + +#search .searchList a:hover { + text-decoration: underline; + color: #333; +} +#search .searchList .clearFloat{ + clear: both; +} \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/image/images/icons.gif b/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/image/images/icons.gif new file mode 100644 index 0000000000000000000000000000000000000000..78459dea7b12ccbeec81d19ecdab22b1658e93b4 GIT binary patch literal 453 zcmZ?wbhEHbbY#$A*vtR||Ns9FJNP^N(4UCIf1{56|NHmvpFe+o|NadW2g{=nia%Kx z85lSjbU>mYGZarn*x(aH@fLZq!wgUiaA+%BrQuMGlI(3v}$4ket=c%G-JG_a6@d zUMtW1Dv_dMk(#;&JDULU);6IIt*+RD80Beh(v#{r8-@JE7rOMyrKZ@`PM+5- zK4PEn@UifH&1a7opNKNDvAy~H((Lt@PiCLrh`sqL^yyzFM}*_N9gV+*y1bvCcd{tw zP+atQ`ojjtR_?nOH&4iCw(0v^v}@~SfpwBi-JHA%0-p_?kEd#ga=ENn_|&M5?L?$c z!i1+jT>6R+ul!uQ+^$n$Hm~o7%Nb0wJ#GK7NE~>4aE?#6+>{R=oUZeJnouMg`B^J) rUi3;Xl^IQMkE|4#X6EZ{`gBG$ultcLuMHMNRKNMR>qv$%6N5DXx{1lO literal 0 HcmV?d00001 diff --git a/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/image/images/success.png b/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/dialogs/image/images/success.png new file mode 100644 index 0000000000000000000000000000000000000000..94f968dc8fd3c7ca8f6cb599d006ef3f23b62c7d GIT binary patch literal 1621 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m{l@EB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvO-#?>2=9ZF3nBND}m`vLFhHXsTY(OatnYqyQCInmZhe+73JqDfIV%MiQ6rPIL(9V zO~LIJBb<8mfsWA!MJ-ZP!-Rn82gHOYTp$OY^i%VI>AeV;u(vXbonl~MI_~M>7*cWT z%njcRVMh`65C6~Q2yI{K`NBQQh9heAinXE1(JfB=Ul%M;Ke#x6g%L8^f5l4Te zj&BcK1znDIyZS2~eC7F3K+}tVTa$=u*HTU0W4>0#`+Qf%|GkyBERBs#$Y}P@k7@U2 zd#*XsYr~WGeCA1uSK>2HTD)g9mP}Xrpg$+`K&8dx2JS~bjCx(hj5}1;-8qn2_>|?> zp{d+2q{I0hbQS!U-jOut`kSEi+IhQJGmBl4O%se*W?OGKZ0Mp?XmGnRgezL^8vCJ4 z#-ek9(R&%4!h+;oXA~Mtbyie=u#0PDiI#!iX`%2?^@kRL8ma*r6?+*}W4e|_8~J&& z+-+*Ub3{dDcAIF|!MTDz0#78qKYeaeVU$wDOOs3cR=e5FZ*O2e-6xc{Uu=$;!s>*M z>nZ|V>zUp8-oE6^wXjV+_UOvuE&SORr`;3hnBKu~e3rzlY@NRjD|5Ui2t>^@Ve7jy z)2vT>u1vesjJgG`f;l_n`FmbR~b^~{VzXB}7CdU_pt>lO9l=E;X#4<2bZu32r~J^e^%TSISQ_Qm$= z7d{rOo2%^RUGseJkpn9(MWszUQdl(i&RN5PBgZ0d#S7ZipShU3W`>Nsy6C#pCD*KW zyxHW%b?m|pr;dF;L$saa#oaeO`u=>jkXTjl9*cLEvOD!Jdr4ooKJW9gY7?D{e?uM^ z`_}E4`0yR0boA=9>3>WXzUH{&pDfpZ;_2xb=j*pKsk#WyD%J#5t{1#azeB z4SJq8H2*dJVX$xugZHVh{7U`u4@oM|quz5j-hRJi{qwh1k5uNqu`W>3HJG&Y^R}6R z$Gq-HPue$sd${oT*XKO8zN>Oe_%K^bZNm3^-vf7@5X# + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + + + diff --git a/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/index.html b/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/index.html new file mode 100644 index 0000000..08e2c6d --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/index.html @@ -0,0 +1,157 @@ + + + + 完整demo + + + + + + + +
    +

    完整demo

    + +
    +
    +
    + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/lang/zh-cn/images/music.png b/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/lang/zh-cn/images/music.png new file mode 100644 index 0000000000000000000000000000000000000000..354edebc341b43e56a5e809686e17c279125b026 GIT binary patch literal 23106 zcmV*UKwH0wP)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde00d`2O+f$vv5tKEQIh}w03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(` z>RI+y?e7jKeZ#YO-CPhUwyK~#9!?7exA9M^p&_{vcV@Q5GqIB1jP=js}RM33N9aK%>!Dbyww4XI8%b<5gz8Gc&6Jkf1#k9f?9#R#sMK zR=zL4@B4i}v|Pmq00AHb0DyphAb%Fd007uu1|iA9?Il6^K%q;bV2Y^c)Rtf@*|3oH z^Yc;E0@Qv$isdl?V88$vz{8zC@)Gvni`l)3qqZ>E8%Wsg*#FRAG1VTH?jI!V1o~eb zxkI3feNKM_5{_xCV-)oW_7aYI3-0PA%+JK!6D)ZzW_P>z5Y4S_*%V6ah60v9eqZV?O zI#EX|<}^6pxaT3q6bti%y=2+`tN!oKw%haD-;129!DrdjGGve07RJo-?RDDJ7TTTP zwQWaFQL%ZSSa+Uh3tRC!Ylp>>gK3*b2g$4;}y&8R$Wv;Ijf^Zb0foZjo z6tMWnQjfjlRS&>4I~YxV)kl&sEpl86P>B`b5yZS|1#5Ex5sD&e09EF=U@TwF~NpTjisNb}d*a}n2 zbLXd}K&&DAKiEIE{XnP+DUg~9chg4=ha+gjpC>dj3PC*9p~i>AO-(I{~ycfGmbb@5MCm} zl7k@JHM|Pv1UaGv3&TE+2d^Rz5K>cns!f&dG3CyWfsUp8RQz!mEB+rJh2d_1Rs7Av zQ8)`Jh}{jsD`9J~0$v4+c^Eu3F{e6G8wOe3KD4rFxfn{O5 z+Q1YoILu{HLmildSj2%TO2wltz{uCjf}7Id5!{_>!Z6YPAb*|YzrkWsc!h;AA1T-q z6mL|=QE&h$NCA3RVA*_t4yy%GL|#|w822dj1Ko971Hl4+mip-kz{gmfglao{zQy zG|^$2%=Y*bFi@TM2K*GwAlMzYD;Uk_(L)@;keVH!#|O*g-z#c8;o6@quu7Ia8zZ=n5hU>i=HnqRv_rwQcW%H5u~v& z3gZ)Ll+;m*>ElkZv<`djA@O{J7-tTJC_6p@n>ts?r^s*?e)QO?jj-lz%zzgk_#o6~ zvJiXa#u!?-4YH7MS4^9juwrn~SolVU9SwCZ)tXvCL%@5%L>)?H|A{%CbBF*5>=n)T zVf7$}v2tugXd@7VW6H2%aL0l|8s~#>3<67qtwP`xs5Qzi4n%CCsw<%otN$N~t-6I0 zsxtx0a25(V{UCaWV}+C~0a-H475JyPyN5V(;fIH?I(MW3d&S(z2dIk1Wz@(|o|^=1 z$*z&@u>$dGi-$YdjbJpQBud9L#tUXjI0$BnyBo2?m=06242tsO*a|j**WfnHE7|OL z%Z|WKJWa4$#sn0Y6hhgeu8xH%_@PXxPYTOX6_%|*!ctK@m&h|(?3osa$?BF3M1r@D zcH7YkBNCKi6yPsgg4q#J=Yya)gY1Yq{=0~O3j4ok+G8cx`=XS@hla53+E~0D)qI47 zWR@$}>ku?b1Gh|KYvVPf9E3H*T&fAg!vRpjlGTb(OKOxy@qh-ePaz5EK+CCErqi`Y zDlEY}Qf!6PQW0WTj@8@>3blZv?hQ&PjwXwuAXPYk#Seh5)H-Z@GgQpwrT79ruyIVq zaH$S~_R;nqPin>&(WD`1W3((1^VAWP1<$nN~ZJW!aS@Gy?W1WDIb zs=2im9?2%KnnUTT+)t%;;n;K=Qtz@jC4LZEhK9T3^&SvO;TQ-G$5}s$0UWWMSVU^N zHd1gz3h2kvoig@QbPvz6+d5QC>NxfIhXsq_~IEs41aPN;3S!IcN?HDV3>KLFb#Z$5h!SJaByP07~ ziklxq~3tLBk?_kNO0|mnjnf~OT~9R2B=Dj zu;?p&pbv_Im#VZn9KuLlT_A-*YIhHZp?FOYG1gn8HdsMC6aX><8VVU{X+;(DI;n`Q z)@tsO-CVR9_wB}=Qhmv3)?H8Bk^{p%|K!=tAXwfbfvpl-#Uq1a!cr8)#cV)63t>W~ zWM52~FY^0FuK|Z@b|`!km9SJ*_#p>TGE^Hb2!f(`P)cKA7L?(5^^zYk!U~+<9Ajk* zceZWq&!Jvbt&Yl${JbkPD)$gt)>=ACj~dbI)ox8(v`DQOFg1~-0k z^^#VoCa9`^jOoP}F$%FKeT^8{)R-D>T5yQsuwTp{k0bzkK zzpLbij{spY7|Qnf2(09!MC~9#M^I!}SrnH+XJgrH9XUZ#8iI<=sBhsK7N_4uyQSIc zGgIcxL4vZmT4|oUz53eB`hPfg?~i_Z=QqAL{V!ji`!{Fry>xZu%a;@3&pp%K# z-CxUXB6Y19?Yn8KjVwlnZt@sH_9~8{8}j=~Q1`eg$gsA}R#t$Y2%^fjvSm369G+5n ztfbROzA1W&V>#xW7-w&IUYjXY*IKf>7TQw@YE4tZ>ruaJ>oHUbHKa7xawCU_l}wWg zr;tHgqbiTEFmTXp6k^Ty0k9IOE1=>Qks6n&L^Mv_lK?|@2wJT)?^}%}yRl$3=F9a3 zYvbrC&g0-n_SZkTMd~KT3W2pNXn?yxJ>4R;$P)=d8PAOYIvg{03UB-)x{#Qoc4lPR zM)X!;rGzalki;?q3oDew_U}D*DCmcWu(V5K2hV7t{*FKQyi{s0}eG&NtEYRsq z_e|(9^kD^Fa}2D{70H9Hn0TxhLQ;UR0F-H&v|=KrhBEj|COaZFlwCS%sYXmP@19w| zZ#P!#=AzxWXV&kTb=P~yBa4P$dtZ7-A-%OXxwSX7tv8iT>f|$Cy|MNe*H(ChHJbfr z$G63E_9zF{hk_%}Mxo6{2&{MzD>6F)D_(e{a6w9D#qTE&2V`LdXaY68h1G!#n61zV zJ{@z_9r&?S3ENjw+(Aa2+9DrAAz&)S9f1pTget-co6-rgnsU)?B+-4S#E39%1w}Zm zM2GahKR5rCAJ6^UcNbo|w({1U@?5Fb^f2Bq`Q-l%_9XTXrGIJf;1>?`|KZQ={9it^ z<@ZjFeSUY(r+4*lPPMX0oz9RF-|o6CP^X@%)Ih6y{RqX#cgJdcq{=C?yF@OuA}nVA zN3dYR*&_O+tOuwEjET80>uZmxOT>Z!e^`=2KhyQkjGnlNI{GjpDbj@(AnDXzrgqx2Yg{!=u~mIcLz>Jp}5V_BN7d{BJp z>avKie)IY5-O*1t2DTC`)cAqHNJy|jWH_qS=B}!h6WmaK|Atk`H!AdNR@T9IQKQZNTAh6m93jsI|(}@g2$GNU@UW4qNuKUq959pI;3T}NR3)U1UP8}9U9L3%D$n0bZGF8Key+PPi^_q zi{t;*p4s=b%m)rD)ji&5+bUpGJV|*=@%BK3n8dW{~)w)ptvNKNl0RMWm@Y5S)2n1x9&W` zy0Y|x4^{<$lmCrR?U34w!(yit@=$o!+*hVnU%IlyZ@}jKZ+>dWhDAQC;8T!{^Xdv@ zA+@a>tF+GJcxjLlOn%M*H5`!C zn(u9tHYlKPRxp07(i#xuZV&3q?9lWDh4)=rc_d~?VIjMRs|vJ*q$jycTc|qpu%y$k z89GvtX`|7Q`lM9eA1eeSur+R`wC9}^VF`b(+YHOsHP#aE_QWC&{< zVr)iSn84|&)bsCOU-{ORMQ+){oAX}`HUP;LG8`WQu)$UM0T5P94hz(c@IolH@Mhf) z!abn}&I{eREo(y{OT`ff+8_2iS7DGhA@=}04?G!wVlY&fXVgc7u&{Usi{felAz99< z`Lq@(=OBEgBmOun@j#ob(**Om3s{!7)u>B2EUexJy7tXdvoLgaIL|Th&#_D;bS2AU zMZH*LeWj_)R^1poBlTff@h}UQJQdan{DG&U%N%bAKW^B))m0s$L^q`OmCS<{u)V>n z4t4%_YJ?S8b(l-VdMu|M9~RTS8Fhq%4GtzK!ce11vr;V+GFXXV3S>@qY3JuaF(K1$ zUB3VQDM6&$-2257J0p!|-G)X=U;WZ^6lDl|L=Yox+I?uZN1BSI%~rG^sG;@&@~}LEAxboUToD$BmB{_= z#{8^ea)T8kzk%_u3r=4vPEEPWTg;956t4tAZa2ozsMn>{ekwjll~gJAbF|}RqFR>p z(_3y6WZ2D)w`U|A7LU$s>3-fwpG5U>vEm^z={m!!{8VnH$czdVpM@WiW~%by13<;L z4Go&Lisn~|R&2Y2uxwfWM7%lyrsJnc`QX)cz9_N^__0kK6>U~{L!(FdP#NyYLNenO zsKdoYEs`U@q&kZ<+WcFW7rsBWBtcjwcPptn)voBKPfxJe_pUE}i_`d#zuzyZZ*4v*6s)u^MgXN z!yrZ^uc1NK001aEwOR{$(&?TAcpk2M$cr+1At9%M3&6@JfYes3)Y|t+oX6^M#!#_U zLMl5HA;xLd^|jE6V7oBO@7O}OK}l~Cvz44liL^=3V;Px1hHK1OxBliG^ zRTem`juK>PpVdl*e7mKk#alBo2_19<2_5AUpkvn-YXeMKGMB7=kgT6PUVHTwa=b{* zFYT*>kLOhAnuDmm%^QVRl6zuxDk+i@UMS4v6vBUr??thPK@9NCOAFt>E{Jqn`o8$W z?)bxac-Vl-@l57?_uAs0UlI{k-*3OTTLpZ=@lJT#8x2892LNzgcYbkocyv@wLa7rG zQab1|G_A!$IBu(TW#;aVv2k&~1qkc=ubn>e!YQ)T2rA(oh8FQDH}5PAk8TOEk0o`; z=({}a`NF1065heHqwy{G8fPud{EA4 z?~}jy;pyjJI0aNkf|&5?vE{S)JS?E@bz-!hG4ctcE z!x#We%dS@)I&K08iEvR^%(p#Yd{*cat35jtH)rx?*LG?>`JvldjR6Q)x{d&$CAUMSfvec zSSa2?D2mmRtWDO(P2~m-0a*ZYVJn#Njmi1%U6UZJ-+J*0xhxk$(21GrM3(x_)x|%b zoabJ8dTZZrpL!w^?1-acKJhRIw`>`jFnxqMqq=*i~d+q+OacttPSm+T;{9sZ83)oM+r zTwGtDUsybNXrixBpy61^qh#7M^NTxo?*X5~T3IWdzczjN$T3D${5TU>AW3V$o!UTn z=#|+Hvrc&qgjA`)4CWHksrejH9EPnzyj_h(9b=FC1B|8hYaK<>l(PwOa?OP;!QuwA z(;8$6qnoAWmE~e-&2$JXQ#*IcXF0yelBA!aqN?w<}H| zkmug~>FHoIMm7!Ye{zqJFy6Z`Nsx#{EHjK3K6Tu6-KiVXi_5Fr3QxXxiWdG14SEa! zfJ@h=^hA2c_&EKob<}>f)`F_b!1j2r zAvGLlWl%GjNHkq{`tIWBmTl104hKkR4-?qlzPDKSV0dKIvF(}Z>9%aWZ%?5&S6nZ> zJ9#CW&0&B-Z|?BEJzcGNr3UrZ$6Y1-(0r~KB0Ek)jLdH-&Y~SC;l1;u%9NbLQuAW? zVN{~gm`kb>#z}PI-ASh90UUn%=%-#dHF4zVi5E}p-m@o@Nhb{B;QmkS-M9b53#Xnw za`fbj%=Eo1AoXkJrPc61`GvKP$OXXxbEhbfv$IQ)}cW%$cbjiCO z5FAmdR0FnarC2Pkmx?RP$aCFVC7}VCHft3_1J`G}dhlMR)l_-W)+eQix zJy)sPa51@X_hu4=Me5f3-o8gGn*jn^kxkoo&DGk9dYMwWw6%(#PD!8if1Z!!lL9y^EL@taoLjL*1 zJKwo-PXIXm|NPVYA_r~N#&=~1`pYZ#{_Nr%aRdIx&+JpVmQ+pj=yLpEd9Usi@>u}5 zcYi5c7$n}S0OJ@Mq_plj-!+M~{KRQ3U`Q1Ckm5z^gwwvv2=_LVtm_zv({k z`Cw+QM$t4QdZK+C#A)e#k$2gh>np;on zptaf>Us4Bf>zSUcKd@J7j)`6W)j$m-Kkt>5C-&?*eDJB@Rn)8}HE7f-w8|L>bf#$r zJQV$1+TMj`Q&ik&{x0ZTP4?=}-MbG?O!W8n2dC+-UAqq*p2(y#8$Qveu3dF(+hOxR zuuy5pNt}H>sd}x}tpeEQkLvYZyY~b<-GM_Bo#%%qcJA6u_D?30P9zcmdK&j%4c^rw zuy3ta3;Zcbkuy!J>cVo_aa>p`JE>%ncq87wF>5wpvE&3(yVeM{u<15G_CBmf`am*- z1yPoCPzAIDZ)%tJC4_Kj1dQ4I&o12l%l8G5Zd?Dq_{{!pNxO}uBmL$3^IyMkTe1N^ zw?A@lr_-ha6Vtp-tB%mZ4p~g|1#4S}^FI}IWJ9u~^*si1o7@+AXI}G+x2#dUtiEY3z+5-TvvR1nA!Q4}a zCg`&IHGCX6tVcYx;&5BCagRwNrSnMXBvK?pTQdKYBu&Y8oGCc0 zjptQ%r7*db;o#NU?`aO z4GeABF}{6lJe$w8Ya!HFKIj(m*1PA)lY!nW$7F%Jeto887F#S``Gx79piw&Ky4?{;_~Y9T8TJ- z=trOu-d$L1crZfQ=*1)GV*c0&GN087!Lts}M zpy|1kPE^9(zNL%a<`!0}s2n6D8$7?Tc8afTK;`~%1Rl-`sE!wqgE=Len z({Xi2z;&J8f!a?&!0}K_~$1OF}|})wR<5({oQ9nh>L0M>7BbSEuI|*X_Og z572uxpM>5-7{XFfdw&xVmJ^w%C7>i4H*q|d!!84{GcB>KV;z|z=db{W;Um<+hN`Ub zh$L^e1Byf?ben+XsY#%&RU8-?Jn_P*!%rW5{)JPACXPPuKR-Be^tqF#4on<f zEcMr8K#u|U=jS2J6>=E^GX84G zU%6D0XJesG)-E8>aa-qKT3OBI@-1lJRQF}0nXCZ&N4orHW^c{TOxu=4E~5#*Y(lNOxrW;O~C+fD%mM?)fTp^S+la-}(Bv zTjB9YqQUcNa1pUj=n!O-I7e2R~j2e!)|DFg^0t#>X-5B~VUYo`MijOdj~)H%4- zT5ama^wP@eFaBHy6fCW*F0ZUEudEgdeMb);Bv|a(BNNhCsxPK$%I4jBUg;OYm{WtLET{@4Uz^y(h$7#k0G#vi}+&XH%1bMR{N z>eR7kk0;Y0FzVGHP6__inE*2ZIbR=ubw`B@>EE} z1jN-U!ozR!__!mi!0(QtR6-|So)JQ^^2M!~>D?p`OV+$O0%66;kThj@DoC9tolZ>4 zKQEX+QcGwn)W%43X=sqpAgTCE_?D@%`3ez{=K7023WVKppvq(CmH7})gu2%0~n|k#}KQ3AJnE%_G zx-tFocVD@9`O12!yleNKaq2fYzqs=5g~>PHKKt&4$@i~b59V|Fpx7lK2xXu0CufOW{wQ@6<1dn7FDsH;1gGh#lqlFVW92u-?F{Ek-^anYMV8L2!acAlFL`G z508vCn@y?G9U!dE_oDi-dp=85GVNNU#{Is?dmGIrecwZ)rw+GB^>yE%;{UNmSgOvM;o zn=UUjb=B(+$SZ3ldYMS3Z+z=$PbR&(R=P4hcks}Jxby3^TD@Ll-itejBa<|S3poI| zIXhQ&YEll1-iAVd0c3d$KYac4lY94(Bnk5Bdlx1P14CQ4Z41B=x!k;WVRGA!@ebBV z7=wK|4!+69Z697WUH9~vceam@Z`rbqtS10jS8v|hI<^yJWM7b2i!o%3Hg5Xi=`;KG zALuI-f`$82KqIU`MZJ1sI#(DP9w=m@;1wCc3Q0)%2qE?jx`xfA@40`Wc7G26}XBWJa=$4(2Ny-|Mk95W{>7lEtS15l&3<#k;Tw!hhIPS4KG%yw>#v)L@7@JsNUvDs`X z0I+R4ShJ>S!SB$q!}eIpXO8CX%vUOvk&)3h`mn5~&t#2n9SyiJ4ufzSsOU{2$S%-K z$yw3zE4Z_nbiGzf>6m=?8?$q{Tt1af%d_nZ|w7eGSEy(q=Nop7X>`JxSbTP)j zCW{8>ESJl1y+_G+(NL#8a&RV7EU^cP7 zHwj4%u20X|P2d;}U^xqpB5ZRd>!qtV=K>i^`ng%7t>`(`S`{0HVbGzPH)rP>9_$z! z*H8yQEw7b(@_pi#Bs6&Q%`+I_@WBJbll{ZjJNSs;pm#4!Zr?H9S11rH%OR}5`V`E6 z)n5bGsGR&arML4r341j*K29uS0c(@M%}go*0JFE}2RCmE|G@;>-w#ipIpK#)U<`(@ z9!_4JLW%U)_&5OM6Ie&cv}{0HZ?1oAZ40Ju3ffBn|{k!O!{hiu44Sd%x}=&S=?01)MyMbs(e$>3E;>dD6* zVL5E~!)VM}yl@tTcrr@OTCaJbt`f(QLhyzS@E=^`ifVKv=mC#NAs z=4aq$3e+V47#b*S>g&lTAc^ZacAD_&Spy6*ZPl{|BwF)(6_$2EFPn#2ZKXH&wTQDPbL%m3^=s-?2(DhLxmn+ zWUNpKi_9l~Datx)vw2$`OkJx4-m7yLFJ;o{fq}sePik9$z^t_0;k(AR-Mc*}vRCw3 zL@tGnwjOO^- zA~4$G#}8p~&00{r{6rL|A|DOHWJPWFaF9 zrdskK7W)KUOvHD8=hEEQ-{Uvn$c~{e{le3d9@pw!N%IZ_C~f%Bsacclb{#=)vOV+a zjp}SVQ^52h=~qB<0AxeUGlvPlg}KP2vG?+ zgcVRu2q0s$KX>lV{Pi2thYnBl77Co6hyirZ&87@Oa;=mr*?g~RcM)&e-G#-udy6zI z4Hzrh0iV=6khAH!KYiyMXvW0RV*p?v&=J(V_Ms%cvxEi)l4ll9-<~fywPXAD5S;si zH{LmP8Var~0D+UmHhQF?|`1 z%RM@ewYa+8o)Tn4#$;8UKt6%VnR<6&@#^&( zyLRuPQ}6?Xg?$awHmyV^7tsHsLw%)U5rhnW5E4g$LReEbril(nrnOoC=i4-ywU09dx&sr4i3r+;lA z-^5o+z^hBt)iBbMzA9_yb?c%ri7$9@${gfv7Ztw@Y2OwUw!8WxAJ3SoBrT$ z9Z^}dLD6YOY_7{S=@myX1n{G4cmLg6*93&M=}W(OMC$lgdFbg@fCOPpP0!8VTWnY7 zv&0!$izck_@V-5T-W*X056~rP{+9G6+P@#uvfn;8IWRc%#NK@Y?h7!*joEfBA-(d1 zSL;cq0l;t zMQ6`XdKeBJp5Wpu7={r+8d`>-1Ay&Rnp#rV4Ne(O`qrv9&z{?{V{B;Crr@O>AIg3A zN2f`Ys78TP!fmDVh2fFWc2Tr%b9?!(PM>)GxuIMt0Alx-R#(a+cGhw;W-K9G1f2#q_WVbU@R> z&{lI8fO?A*D#{pz8Kv7Ni0I@HcxYV#f3e#X$FwaC?~>AJ7K`LkpyJv2PRskH6iSfeTK zF;`2ILS@4+G6tBX630RYPIq8?0(EY_e1$Pk12G2MvU~d^^DRoTtyP@hY6SonE?p@W z*Ph(FuUf5gSd8YpEYqqq+rnNh+mrAb72E9GNsul?*dvJ2wCr3@hFJNDvp>M0)k>wW zP^ecO`f3FLPwX7iH7#Jo$X$G;TB}wnS|U}c)u*QCUj50L@4tTLXBRG4To@b~edf6n zyPw>WebY`cTrXXm`RY3#2ncKV%fEaq z4t^AgDw;~ez&GF(AAfc2&c8czML<}?U;4#k^hhW|(Gb3X6!+g*Sgf~T)5s`ryaSR; zje+1rYSswC3YN?z+EAkDx^JJGbgH#u&mJe@AkEqkT`Wjz;4`7TR@MN5Sr%7TQ@H{S zaDuc3+C`O1005jl&#QqMBW!-)bSGOC+zA4}Wml@T(cvKgSXf#y za{Y#3V1WK4XbA2vuU?v(KKktOTCH~d>Xm`Pq5i?49-o;CpkffydTn~{+RWU6LlcEU zAvn;%36s*>OHR$qRbALVHjXIo6;d?o1X;6jIvm0yzbtA|W(R_@wBuvu!@?|MWvQ}H zqxt~TxuYSe@TA@dRM!Oa`9 zb8o+U{>`)Je*EU!J=xsOvF&;PYISdM>Fslqm#^J$TP*}0d7?Ld=$32 zS_I!m7JNsn?rtgN_2>%Ujwa~Hx^1D4ZCXPFNI`&nKZuIGqS={n83GA6-X5zJlC(BN z@l7vXnEsFNOmXXZW^DM&fBRXfeMzOzd4hm~ScK&%nwR|5)!Tpa=KDOt8XNxIUwRgC z921906$Bsl5!Qwut81mpH#>?FsUpm1o~~;buTIS`Ebe>iz~JBz5y*7eK6(4xWVW}! zAuQ;GpjP_xJ*H)!JwG|Vd(YU`QO#GZ2!i|3=`#Vs+E`rrE3cg3A%K$8D#`!c?vD@Ic!{c5`;_?!w|T&peY)>4BN+;NgkBzCx{5TV7hkZSQL? zolb8mycVY3;wW-0up*>ITGc=S-;Do`8pl_X<%;XE($HwWvh9G#0KC*Z2End7j zH9Ru9XYW1$D5$03O11X-nRoU*bzo?4h||!eB@n7cQ&>>F!-`uUQnwz%wyj()|5!{N zE1%0dww2H4ZL2eNEGw7K+rc!Kw=64{Z%=J@n$72J)5`Y>^K*I2vU+lP+qSZ~yklFr zT;8;-zTUiLS=oHvGOcVrPY{;4yUAxcvQLyw9sd(^{y;1g zuOgsZ=ZJOi#61$z*zJ)k+U} z-qTa9RLH9t|JCP@9vm4O^t=|yBMbJxYRSTGqquy3VR?1y)@_4>L*x@{^=3BBUr|iU zp1-&7?Dlcn;*X1ES^0dv(rDFI*4{mLzOT@qN~QoaLfFljTe@y^_T)ew0IuJdURf=s zQmJ~qE}hou^>iwgPNfbX_(X67v-$kunl;?lV>^`#SFV*y<|m(f9xx{RHlNSi!MWEf zKeAc>c?-0=i^aj-p0!f>^3`kmKCxfJEdU(=uHBgSJg-nFkmUyk2I=>@Ui&(7>B{xH zi%Yp&{u56fur15TCC0XAv+QmZ);7plFW)^@=@vXC5cg zbg3QPksAp+76IfFP_Ni)>!mwOs|OEFaNpW-Y{#*OM@ECqNoY`BTP2C0iG%vsSory{aBqHiWYjQ>ln%IAuT-nmYOPo*-CJ1PF*Y7}xJX*&+4GZqgG1S% zZy=UywdtfWQpf?o_k4tfF}U^Wx%1~!sr3G*4x}?_QFWC9XDs`On&V7OUC-unPww4^ z0Q6S9TCJWvKe_*@0|P@tz#fGGo*7~04#2U?H*elFEqmAQJ)5^~qt{<`9H(3yDD?K` zbH%mN2eWgo2c)qe1_>*K>-In{eg6Hah2_;PTet1nvnRMaF%Vd#HOn$PKLdbjwYIdf ziUAHCo@l3rJ;1LY%RE_9#Sk7|Kg184!|Lb}js>VQMN$VA>n0anPJz2e?AH=J_k2yw z6qQXsDS@bX9zac@5}F)ih51kEuv(_?VyCy9W6dn2A9)IW<$R)R^Q_b;q56X}Z5=-MF(jHG4ak&57^A7!Qw((kjw= z*=mAOG@WV-7K>%O?p7PEC-?4q;>o=rbNthvp6~6`4a2gmS_>{+pMHO8`r6HzMhmuV z-L`#fJlHnJg*V9@{yYD+CkPi406 z7=QZcv9>$RqMX@L9esdR&|02%@bJX&@CcdH0R7_o*ZK;DR4T>i{o5Ul+r!$(mTgZw zxo^wXZCqY%CYv=f`T3R7>u1hhxH{Enww~C#&tZ8z|`Rvl}_vQu?o)pV*YSTh|hnI0J(edd$L0b|7FzEV?04YcLGuRHuNbl730LV#wg z@y9t2D;U8r3xqgddmH`;-Xh#hC{MTz1X0}>$&!C@@#fcl#@nEdjgNf!?;ICRPhxUI zFvuWbWTv;|`|scS4{u#@TVBllc64mycYpafhYD%N0jU#Qr3PiuVaGJEp#iU8&O-5u z7B&`XA18RDTq*%THkUJ4#z%UfUDqXuk4T4D_%8JRM2c;QOesLr#~}p7pM_OtDOTF| zu<9ku&k9*ih~W_V@{$M~GTR+C$rpl~%_0Net~3BqnXB)=xZEwQ5zmJa@L} zxoHx zXSCZ1`k;1NMd!!KYCkMRe(A>sVM#mUa0N%5j?IGURyCxAqbelB6x{rPIHR}Z+vjh5 z?Ppg7gf;qypMOp|nA5`=Q(Yza!pN)Ncz5d0&R*|!AD(=2`xifVjC_jb*VFSVBnm6E zWHtkbX*W`}5lK4|MHL=|A0uD^4|)J}h6Rutc}|kur6B>IBBtI@`VmMmCw#+{_=45` zq-aiB)5m>ZBxvjM1BWCZ9et;Q<@YX_3mw7oQ|=*Zh1#RWR$P*f=(OTF^%^ow&#Uw`Ks?*1{FOL2?< z`E-l>UZH7U0dB3>Y>k){dkSbM@Y!=H#$?mSu(}?AN6J1n?BG)wf)1I2m@6(ih9hhn7TB1P_d7uX7TG|eAVs`HTKQxq5~&Ybuip=j5;rLH4x*BCxnZ=Q#b zu%y;1so`5{-Ik8zm?4@`(ON5!>2uo!=RFQ!4 zatL5VyoBNXpC?w@k-=)1jF`qRGAjdo6h>B$Ujoy2fE$ap( z(@8B#r4kiYTZ+qM4427bF~AZ0SFj!rWV|7pNlUXiSYTx2m7$8dQ7g1VlJqQ z3~(1c4IB#Hbdsvr-2D#DVlx;xj0Q4{CfyRm@n}MCP)DdRoig=y%=RUL}t z3zzJQg`8EsMSx)L6LVJOS^P3Uh!l7Py24q4uMmeengl@^ls551pRZGcFVf6?``#vn;Q~c@A zrtkfC|NeVFxHKJ~MIug<08a(zhW8V3IE$V-m2RmkT|>Y5nTf$%CZq!R@mlXQrLyp)JrGsBwH_wILZQl$pbN?Sz4`!tNPY^ zQ(t}Sa#!E$*v`#g{`^T0NFvb-6Y_Xt>dycA>O1j2G@UTM^vlm586OQ7UL&I{RJcT} zO^bsRq~I>*k{HVfCbk8hN}5CzIK(oiH3+2+SQ@E@B*;#+uVU_mFd7R92s6Z=r4Z&+ zHafY9Oh(v6N`6u_7Zd%dc8f= z$o)@$=lGHFQB|D)JtEP2SdwIK@frC6>fv-om5+wwvzW{ytaem!pX)Py5*<0FpN>@_ zgHDbfP#hw)g+MVlh)!{$xtq{^1@ZJsJEXriTXi6H$w6#yJ+RCajZ$fk6~}E!Jyvwy zoS4TT?Y7Ce-X;AR>ApMu`hz@DW~*2%#$~`e?DYh({SzMn!eW7s^m5L5vP7am^tuF> zc~7`iMyv$MjlIEEUA(>cm2bb{bzeR8_ddD*AAahP6fbo3xH7-|m2ba6dS|H~Nkji{ zpWXl8Jo5=d*FscR6yga&JXImuXH-l?7sr~zJ~+ae1uV7#A?sCoE~%ovI&>9Q%Z@U5 z6%IXOT9Ble1;y)EpmLT+=0jlVT4*;J@Z};ZB^@bBUm?mi)fMU_q9OUEkTYHrmiL0# z5}yX;Qsg{gFFg{3MdOh;%R6)`7R3ulv=tfu#f_`B&?nBeEf3>=`{Q#h;;QQM@3}qO z+IQeim~TFEdSKh|AN|)Sf9|QB(oY#1D*VIe_kZ;t|LWg9u*1+bd1}6(s(2JLh}nH8 zSJto`|Elx3(h$_@u*hvWwo-pYig!t-EO%D%`|;>OKOURc zC7sM3cdh^2DeMetdJHmG-^0=f-JD8}LA-6Z)?mdjcrF2I6=9QBN~k>*t@^^=rrW{L`O5c4F7a zr=Hxdw;GX%l|i7PNXO#TSS)0mB5FwiTS1(hSR95lF_l=)cy=hikCf}N6g-Y4rj=UC zjBu{IlA}f|ahWN)V$ozYO)MmZ$P;Ky3EvmTV;JJ0b7(~`UUg?1&mypF3lOsn^g5YT zdsZ<-LVY5VB}q6kq{g_+5OW+W97dyr`nJ$Zchw)p7d;oI3FM{ETfD1jRwXo4GR9>;0H8tZ9}!>oaV zC6Sja3TUyz9txH&`PZj=0OR0GcCqb28s$z;5vQ>9;?_@jUj!Q9JZHuWaokp1&PpZEZjT0ZCN(iCqkIGNXG)IF@xf}@bp)th^^6KpJ z`mg`#_hWvMzMk~&|H{dO+ehG|c%V>jB|b|Cs#cOXg2airZM6D^aTqR^+G?;`*HdX# z2qb20EC32AF^W*EazBh^7AhHp0ksq>UlMKnz64mBOjRey&6I#Fq~PGN65Odk77~cj z5MhyH8)K$cV34%)(H<#p70HIsOowI5yAxV6>BR>`_Jr)^PBwaf!+W6uYLN! zwqe`0FvgZ;ic`+-rqR^{YSd9eJWLRh%_J9ZE{2_mr&sjIkAVRZP(wOe03 zb7`?`iwma{#%K1A|H6UYyEYa4R2iV31Y-b}W&dEsNQ63!9iso+POm};q0W=ebN?-v zeoJRv)M~~5vhrJ`Xe_`hN&Y9xfnhb)pjQhh?Ce7EELU_XqN-{V zb-x=q0#S_jKvB0NVsQuxFKj?cs!OUhV=Qsu<0uXb$*Kb7iK+2~buqgFV+lE^J&JCF zR_w8wQ`|6@>8?-}Ih@5|9}WSvTCH+vz2&;4(%OkVTmRMH{nWqsrQ<)pZ~MV*oA!?m ze0Kl%=MV1u{lE3e|KsmI|Ak{uWL&3QT3@(#x3s=CfA{uUadrOg?c(ano!hromzQqe znq661ygfU!ym#iwpN=rf)1R+?y4rGdJ7Q`wMe3)60wZ=Vqo?mKJZ{ znq6I9x_f7?xVm!p&fNN1asKY@()!xH`8(xuX<=dBw9Lh&`;KF;EH70nPH}amUaPGa zR~z;E`g+lAHcO?omg|;F>#bIcLvz@}mT6)STbAizOxh5rI5MlNBz~dh3xu>L%;F|X z@OfD*!`NY_{8xjFa4v%%vpE^e9HH`#afI6f>JdFwro^)js;&Ymmlo&YQYCYmlx{1{ zZ@^5&qAH=p=|0^gz+$E_CqA|!I9jZ}R3S&s;e~`PM~dt)X{YyxkFfBAtwHP=ODd1V zB-;c?8c}tro`EYqi?5S}jkuSbGf^V}FGK{^B-6L_HjO z(liYa(vXG_(#dm8Lt6Wx>w4$8rqlB^>VY&3`76;hjsA$>^Dwm;Gz9DRF!AtK)~5%s zQrH3^m>((l5nB2b<2qD+G$cyTYWj)SC8g>Z=3#!AYRTe35i?3F6C!F66p9`Sm0YC= zOC?{1-wdgQLaA|2%3g&y>BA8g7C{#KWwj5Pw~83ak$|?41iR6^55otUW$byTRVKK@ zb=`8gh-naYQ0t~7FTQ4YH@X?TCEgUmn#)#b$Q9L?Uj{f+p<=c zmmJ$#U0JeiYjt(maqQKV<%(?=S5_*HQ!K7l9H+RtQgNKM;%c>0Szjww9A|y4NS@Pk zYSro*wS4=%D=Us|6<3!nfBi-OQ*6sxU0HT)dv&Efzgn%3PgyIjlC{&g4!S} zc(wB`O+(PeSp>cT;t4WPkY5jC2jlYWB?GCb+))E2mc_}p1xFNCuP=s(ifw*6kyuft zZIQr|?g0()+8Hl^g52&;OP@%^^{UG$MPIu}dtuB}1t4|MzREQg$?kzd4#sNrIZj%< z%2=59>iN8tci%va!^0Y=n^G*yK5xYMSOaHXu~3R&-sj)+&Z!)a$iGBH3s( zlF5|ox~X)!<+ak8jEB9RY!+jj&E}AXvbj9cw0v)`rt7)hUfs}pd;4_5AkFgf`CcQD z$mM%=!^q`>WsH1puWsnsT#igNU8ASDe4ael4Lz672k#>5A!{a|Le`nj_v(h8>+RKa zJ>T1lG%cIUgNAx~vKZq`Hrv8px~Io&x#@Je*=#10sYaubFcP&|)i8`&t*YyKrQ#q> zt5lr!-k|nRu*c$L@OOo#vCLt|oe$Xe`>2j7*As~2wj`fx$-7L_N}MHQa6BwgA-Rk; z4sF@CkDEjk#vw2ETOct7fkRbPB|ztXB1q|sH=uDd~-1M$|KcwBEoBO;5GM zsuyD-O%$byK1K*j96DmMEt2N)BE2QBPHi9t!2}0*3i}8xSU#8u)Ea{S#Nx05Sy0o+ zOEmXHkWoNL1uyw9sXd3htD_i-7)lsAyMk0mp~pcyhd0JbN0`(Dts-AATgZo__!?;JGjKR*hjMz8}t)qIpusW`f>SF07>Fsikxkx0}V^<*klZ`4!iwA*qsnVwdwmFdZP z7-w^N0O;-Q({;VCuV5q-h5ms=D%n3Un98JwHVvnHGJ~6jGuiB>khdo6C=k zZpr0)hetQ(^1UOQw*=GS(aq%5Y%afPcr0&K28zw%Z8`in&W(5OUNC46jh4$hCc->xh>o3&c_!y z2UJK0x1C&c=7*|FpsEKrU#W__*jEnAreRsXAHF*Q=6mNrZ1+6hbI6pW&c?($(i#I$ zBx*4IirCIZwwN@l;LEzw90SDqxF9UrO7l=U#QyboppODug|7m|gI7|770E_P8`a<# zs2te1dZf-Qm4YlBvuBIK2qxwAkh-}JoeaeV%p+MIuToLOVPYacXrm*Ds1OJbM2Tdz zLZXHv;Z=ySOM4tpmBX?jamKX2Inxg{D+0B-su0ddl2}hwCg2Cxi*XmRt?o7TUe#EteU2|1fa&7)Ez$%U^^x@+#{9s#-WFcrsJ$mDZvgJtW zOA=GJXl*(iQmOJ?G02-{B6Ukm%wa2}_QX^B1887CEP)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z4*f|)K~#9!teSgpT-ABNf8ROx-j!A>$q&Gm@PiO+2q+ZrWGHVa(@6|T{%eS7I@1RU zblOf!(zG+A5GGA&($EfcLWVd^{^;akXWC4YV%(0#BXRRkwbz7wrovzD%sq0`np;D87%?pDZ(g$6LHfS`aA z2*}zP+Rhk1i#-mZRA5=&$TCM5ShS#$W{x1RONMX4G;u7QZiWfK5S$i6n)Hn^Sd-t~ z^mKz0Cyo;&Swa{H>Os}b0?Rk6O$-|6a}9~DMHIT72b~15coUIGfW;wRav(Lp%td+e zs5sPk5CK)hr_0w6D>#?7&Am%c3&&E1wMs&r&{aAJ-13Gsf-xTFa;s79E^*wa1e&FU zR)~|7z#333B-qd5Xl@#sa;^oZJRYkq*AVrnfJ4Z2O^Uw-oPsuG+8I=o)(^`Z&gr7_ zQ^Bz`Qv*n;*s`9s*-{mpbBGAm3UM40c;{#t9j`NVjGHk$3aCTH;1E1u6(9rB9L@xV zc?()7L@2bSiNnsQFy1T1$b$1z!Lc+Z3TQb$^Jz0AXNoa`_lj4C7$FeJ&6P0* z@3NLEs*@Hsq>yee9>t*;eDhG5BB3EmJra5{1$7>4030GSM2$+$6g4P<;+uS5o(&d* zpC#dQ=cj^Wsb(fi6fb(Z77LNWf{3(~LDUfBs^f9aVPr-XMP)|PXG?=H3)qfQ6*_4lq+4- zrYGp?E|d8bR0^%}7zM@Rc@GXZXH;u3{k}fn*9flv0<=xPN)t~JwM8ZfnJ6-ubTJU!q!7MI#y-#<*P^Y!Pp!Tjv`(Rt67=HvxcN075!TcOzeWKKczAXrdLk>E8NQ_$VbRO-+q(1kvOV`lf2TF-+Z{5MRk6ys7AG;uD z##oJOZ{5jv@4tx+gS~BG;_Pu?`W3vF+kEm})KNsx5=9XG`5fb02{#G7hg=IJsv2VNh~46*XiM zVDN-~8si)El=_%d`1$^$$kZg$XLYl-E2eMdGra!zKe6`mZM=QrEhehnbeAu{+A>Zo zp!8KDj82ge7Mkc=5~a+1&y}*H<29b%J4UsZP_4xrICzYsV^xMnPVhIMy^m+R+5Rk7Zy99UN6+sV<;+~9FXV1Ub2zJz zBC|4I>F_Kc8wUD#nsKVNgrUu6(BE6)=va*d2TyQxyw0x2kMPhJZ)m~Y_t~rX`0YPw zN%FiTuOrQw@qKRq;s`^VS98a$A*;OZ;b@yZx? zX@hci7sSKpc!~9EeuFoU9N~-$w~%;`nhZ>e*D@mUoGfuZL!RC{2GEkQZ6CdWuWo;i ztGArp`hRHi8T|3Rj{$JkKkQ+2tVUmNRKT6hSGPaUP1m2xhJl4mN41`C*Wd4H^J7hI zY%)_7@F@>}{{a1!hz$dMfE3^GXzd6?o6l&?n_6A1r}X!BbxaPM#ZB+?+$hK+s2MLm zKLb^|z2aSlmE4HgFyfW}8D{+lE@t$EXS|-UY0U>nU;G*ASv^D+=&5k>#272j4XGWU zM17U9*Q@M&WF(iEqGGDR{)5LkIq_n;5e#j?Y1>o!V+`#(cLU%p>Dqp|n2E6wi zICz|!t~-aJO{=KZ6Rx^!ko5z-MbH4%T0&nXWZjw`y!V}Lx6jS!?VlW)_gi13Gy|u~ z{*kw+)*4*7We`RAqkI3GYAtD9et&Por#`oP7Nhf^<)6Ry;f_9|$q*6A^R{M`G2d}& zp(RS>Jh%)*Q6r?8uyJsJAH6Vwx$u0vRv3HfBo|u2boC%i=H{q7S!v$K z#zD^?e&YSCu9U%7Fj>G4cD=&ww+yu|dvv_U-+k+OwqCoD^#i?p=9Zzh1B{N>0Jvz= zDo#$s3?Dkqm+!oSzDkKb`^M<2gj8z{sa3f;tXo@I)aj#+?>#cY z=WpA>H+LKW;2-b4zP0X#-}zU*{AX7(w0ZTyI2L#|E9`BLgXc0tF{Ii>NfR=g=Am&? z=R+G-u=jtD^7`8uCdnwj{VJD7hp}Nd>bejNCy!hD&%Bg!?-r7H4dNXuyF6sM^E~`! zozd}H8|~TOoeuHn6Gyn|x^qxfhDVOmS1GZ6pqHa#6a2|vKh7s_-rTl+$F31nb>8#Y zPE{9-GTX=Qr$+g`-@b%(XI181>Yjb$Ow{5cgr3OPKlvI%n^tq>WdjQa6?2_?u+YJ0 z+xFa>qy>W%@fm0K2b?#shF_kj6Zn)q5>}f@#74Lz!It|ehaoFBUxxFmNnC_gkEm-E z=k^~u&d{dSE$vv!=&M8wkDOrp&S6H!YizxCW83~eGe_HY>>A;!4i}=QP-Xt`HRq68 z0oU2|U3u9c!y_jEn5ZXg-*JGg*PX-qfy%ry&ZXa+2eYNIlZF6f0TSICUi^Uj2 zuhbbVmx+Q1^Tre=@Q95Fxy&<(09|2TW;FK z*6Yq;$0G;Xv1^2_*KVX*PddUahO1pNm!=^`9Nm5jr#-DGsR?t%rE9t3(zUI%cR%n9 zpT1?NWpWpyKlkirsgmN0III~hPEOP)2k_?MmpOiPgp!-4zqbb!MWX;Q7O^23mZ(im z6?K~?4$px@#~42J4!7LAY1xw6*Ap^2UT+=tcmLw2r__%)wO(K64(IMCUt{~uVfO4B zXZMq@v3{V^=KmI=Kd*GssZ*l*(pX0tSeTd$kXpWS$_X|3W?K_95 z)?>c(rhdVVJL7%{C#4D!r=?zsOu`v7?G3)hl)Aq!Rz zX*^G>K61?lM#t;i^WZZKA3DLG|G{O8GCi+^2YFlAn3l!_kcV6IyI@6>rJjHcM}+fW z)Zo<6D5QOADq(8ML1`uSjEnKIq3E6TQ(4soriTD<+CbFv%aJ$Px%(CFz4H>*oK;2> zT~u=Bj&J?&B}9Y=?z#q5rMD;K!N0n$b(x>ox{1C@)Ux9{A3fBDYv-dQtY2GcwUC<{ z_vzodh&}tp=KF<9*3Ohb&hE#jX>J8NXxh59J$&bHZ{&xM9^(FQ?_HJ#0$ zF)d~^86+ae3opK;8#k`QWf>x~os|I$fzK$rX<}9~9eTV7PRn@{$_io{WLXJY7M!1E zMZFg*5JoVS)rccUBb~-Xmafe4(j%!E9 z>-=!{AwKu}mv+QwttCxU!Z5@+M;L}2IdTMf?)ew>f(yEX!I9DV0hbJa~|x+4;-U_zpxQe|bk0j8{Y)s3XLY zWfKI}VNE~Yd5l=z32KC52-JcEIPdXli3qS+fNIb>OlnfXCFTH&7v}Vo7_wX#1vDyy z)=~7d8Dfl?r=>xuR3eV!1$$trKqC-JNmBHZJ&MPg6o)Wv0Mmt}4Z2APeTm42;5|kZ zXFMVasxg@fP!YU9Bg|h33VhJ&EiWfRn!Ubx5zED~To~^i=tO79J;gJqD%M)!IHs$s zt6)eYrn@U@Ihffd3uDQm0OJiJ#cMojK|E0y5*x*sZmi_>TW3l{8sL+RFcdI~SV2^Y zT!7Et0wN6+^&!?v?#wzIW+59tPo0Z-`~F!pI6xICqMN1CRrLe`IByno)JvtWMU@>9 zj0lsB23@5Ra_r<({Kgw^@XkALcSM-ivwT|>xOj7}_^Ti`KVZ>8kvZKsiZ?7~SKD=N zA!(5s)BM+Q9M;;ld0_3baV!_c7ck4sV03}7*BB|Z1p52?S+{N-|33iQeTU$!k*lr% O0000字数超出最大允许值,服务器可能拒绝保存!', + 'ok':"确认", + 'cancel':"取消", + 'closeDialog':"关闭对话框", + 'tableDrag':"表格拖动必须引入uiUtils.js文件!", + 'autofloatMsg':"工具栏浮动依赖编辑器UI,您首先需要引入UI文件!", + 'loadconfigError': '获取后台配置项请求出错,上传功能将不能正常使用!', + 'loadconfigFormatError': '后台配置项返回格式出错,上传功能将不能正常使用!', + 'loadconfigHttpError': '请求后台配置项http错误,上传功能将不能正常使用!', + 'snapScreen_plugin':{ + 'browserMsg':"仅支持IE浏览器!", + 'callBackErrorMsg':"服务器返回数据有误,请检查配置项之后重试。", + 'uploadErrorMsg':"截图上传失败,请检查服务器端环境! " + }, + 'insertcode':{ + 'as3':'ActionScript 3', + 'bash':'Bash/Shell', + 'cpp':'C/C++', + 'css':'CSS', + 'cf':'ColdFusion', + 'c#':'C#', + 'delphi':'Delphi', + 'diff':'Diff', + 'erlang':'Erlang', + 'groovy':'Groovy', + 'html':'HTML', + 'java':'Java', + 'jfx':'JavaFX', + 'js':'JavaScript', + 'pl':'Perl', + 'php':'PHP', + 'plain':'Plain Text', + 'ps':'PowerShell', + 'python':'Python', + 'ruby':'Ruby', + 'scala':'Scala', + 'sql':'SQL', + 'vb':'Visual Basic', + 'xml':'XML' + }, + 'confirmClear':"确定清空当前文档么?", + 'contextMenu':{ + 'delete':"删除", + 'selectall':"全选", + 'deletecode':"删除代码", + 'cleardoc':"清空文档", + 'confirmclear':"确定清空当前文档么?", + 'unlink':"删除超链接", + 'paragraph':"段落格式", + 'edittable':"表格属性", + 'aligntd':"单元格对齐方式", + 'aligntable':'表格对齐方式', + 'tableleft':'左浮动', + 'tablecenter':'居中显示', + 'tableright':'右浮动', + 'edittd':"单元格属性", + 'setbordervisible':'设置表格边线可见', + 'justifyleft':'左对齐', + 'justifyright':'右对齐', + 'justifycenter':'居中对齐', + 'justifyjustify':'两端对齐', + 'table':"表格", + 'inserttable':'插入表格', + 'deletetable':"删除表格", + 'insertparagraphbefore':"前插入段落", + 'insertparagraphafter':'后插入段落', + 'deleterow':"删除当前行", + 'deletecol':"删除当前列", + 'insertrow':"前插入行", + 'insertcol':"左插入列", + 'insertrownext':'后插入行', + 'insertcolnext':'右插入列', + 'insertcaption':'插入表格名称', + 'deletecaption':'删除表格名称', + 'inserttitle':'插入表格标题行', + 'deletetitle':'删除表格标题行', + 'inserttitlecol':'插入表格标题列', + 'deletetitlecol':'删除表格标题列', + 'averageDiseRow':'平均分布各行', + 'averageDisCol':'平均分布各列', + 'mergeright':"向右合并", + 'mergeleft':"向左合并", + 'mergedown':"向下合并", + 'mergecells':"合并单元格", + 'splittocells':"完全拆分单元格", + 'splittocols':"拆分成列", + 'splittorows':"拆分成行", + 'tablesort':'表格排序', + 'enablesort':'设置表格可排序', + 'disablesort':'取消表格可排序', + 'reversecurrent':'逆序当前', + 'orderbyasc':'按ASCII字符升序', + 'reversebyasc':'按ASCII字符降序', + 'orderbynum':'按数值大小升序', + 'reversebynum':'按数值大小降序', + 'borderbk':'边框底纹', + 'setcolor':'表格隔行变色', + 'unsetcolor':'取消表格隔行变色', + 'setbackground':'选区背景隔行', + 'unsetbackground':'取消选区背景', + 'redandblue':'红蓝相间', + 'threecolorgradient':'三色渐变', + 'copy':"复制(Ctrl + c)", + 'copymsg': "浏览器不支持,请使用 'Ctrl + c'", + 'paste':"粘贴(Ctrl + v)", + 'pastemsg': "浏览器不支持,请使用 'Ctrl + v'" + }, + 'copymsg': "浏览器不支持,请使用 'Ctrl + c'", + 'pastemsg': "浏览器不支持,请使用 'Ctrl + v'", + 'anthorMsg':"链接", + 'clearColor':'清空颜色', + 'standardColor':'标准颜色', + 'themeColor':'主题颜色', + 'property':'属性', + 'default':'默认', + 'modify':'修改', + 'justifyleft':'左对齐', + 'justifyright':'右对齐', + 'justifycenter':'居中', + 'justify':'默认', + 'clear':'清除', + 'anchorMsg':'锚点', + 'delete':'删除', + 'clickToUpload':"点击上传", + 'unset':'尚未设置语言文件', + 't_row':'行', + 't_col':'列', + 'more':'更多', + 'pasteOpt':'粘贴选项', + 'pasteSourceFormat':"保留源格式", + 'tagFormat':'只保留标签', + 'pasteTextFormat':'只保留文本', + 'autoTypeSet':{ + 'mergeLine':"合并空行", + 'delLine':"清除空行", + 'removeFormat':"清除格式", + 'indent':"首行缩进", + 'alignment':"对齐方式", + 'imageFloat':"图片浮动", + 'removeFontsize':"清除字号", + 'removeFontFamily':"清除字体", + 'removeHtml':"清除冗余HTML代码", + 'pasteFilter':"粘贴过滤", + 'run':"执行", + 'symbol':'符号转换', + 'bdc2sb':'全角转半角', + 'tobdc':'半角转全角' + }, + + 'background':{ + 'static':{ + 'lang_background_normal':'背景设置', + 'lang_background_local':'在线图片', + 'lang_background_set':'选项', + 'lang_background_none':'无背景色', + 'lang_background_colored':'有背景色', + 'lang_background_color':'颜色设置', + 'lang_background_netimg':'网络图片', + 'lang_background_align':'对齐方式', + 'lang_background_position':'精确定位', + 'repeatType':{'options':["居中", "横向重复", "纵向重复", "平铺","自定义"]} + + }, + 'noUploadImage':"当前未上传过任何图片!", + 'toggleSelect':"单击可切换选中状态\n原图尺寸: " + }, + //===============dialog i18N======================= + 'insertimage':{ + 'static':{ + 'lang_tab_remote':"插入图片", //节点 + 'lang_tab_upload':"本地上传", + 'lang_tab_online':"在线管理", + 'lang_tab_search':"图片搜索", + 'lang_input_url':"地 址:", + 'lang_input_size':"大 小:", + 'lang_input_width':"宽度", + 'lang_input_height':"高度", + 'lang_input_border':"边 框:", + 'lang_input_vhspace':"边 距:", + 'lang_input_title':"描 述:", + 'lang_input_align':'图片浮动方式:', + 'lang_imgLoading':" 图片加载中……", + 'lang_start_upload':"开始上传", + 'lock':{'title':"锁定宽高比例"}, //属性 + 'searchType':{'title':"图片类型", 'options':["新闻", "壁纸", "表情", "头像"]}, //select的option + 'searchTxt':{'value':"请输入搜索关键词"}, + 'searchBtn':{'value':"百度一下"}, + 'searchReset':{'value':"清空搜索"}, + 'noneAlign':{'title':'无浮动'}, + 'leftAlign':{'title':'左浮动'}, + 'rightAlign':{'title':'右浮动'}, + 'centerAlign':{'title':'居中独占一行'} + }, + 'uploadSelectFile':'点击选择图片', + 'uploadAddFile':'继续添加', + 'uploadStart':'开始上传', + 'uploadPause':'暂停上传', + 'uploadContinue':'继续上传', + 'uploadRetry':'重试上传', + 'uploadDelete':'删除', + 'uploadTurnLeft':'向左旋转', + 'uploadTurnRight':'向右旋转', + 'uploadPreview':'预览中', + 'uploadNoPreview':'不能预览', + 'updateStatusReady': '选中_张图片,共_KB。', + 'updateStatusConfirm': '已成功上传_张照片,_张照片上传失败', + 'updateStatusFinish': '共_张(_KB),_张上传成功', + 'updateStatusError': ',_张上传失败。', + 'errorNotSupport': 'WebUploader 不支持您的浏览器!如果你使用的是IE浏览器,请尝试升级 flash 播放器。', + 'errorLoadConfig': '后端配置项没有正常加载,上传插件不能正常使用!', + 'errorExceedSize':'文件大小超出', + 'errorFileType':'文件格式不允许', + 'errorInterrupt':'文件传输中断', + 'errorUploadRetry':'上传失败,请重试', + 'errorHttp':'http请求错误', + 'errorServerUpload':'服务器返回出错', + 'remoteLockError':"宽高不正确,不能所定比例", + 'numError':"请输入正确的长度或者宽度值!例如:123,400", + 'imageUrlError':"不允许的图片格式或者图片域!", + 'imageLoadError':"图片加载失败!请检查链接地址或网络状态!", + 'searchRemind':"请输入搜索关键词", + 'searchLoading':"图片加载中,请稍后……", + 'searchRetry':" :( ,抱歉,没有找到图片!请重试一次!" + }, + 'attachment':{ + 'static':{ + 'lang_tab_upload': '上传附件', + 'lang_tab_online': '在线附件', + 'lang_start_upload':"开始上传", + 'lang_drop_remind':"可以将文件拖到这里,单次最多可选100个文件" + }, + 'uploadSelectFile':'点击选择文件', + 'uploadAddFile':'继续添加', + 'uploadStart':'开始上传', + 'uploadPause':'暂停上传', + 'uploadContinue':'继续上传', + 'uploadRetry':'重试上传', + 'uploadDelete':'删除', + 'uploadTurnLeft':'向左旋转', + 'uploadTurnRight':'向右旋转', + 'uploadPreview':'预览中', + 'updateStatusReady': '选中_个文件,共_KB。', + 'updateStatusConfirm': '已成功上传_个文件,_个文件上传失败', + 'updateStatusFinish': '共_个(_KB),_个上传成功', + 'updateStatusError': ',_张上传失败。', + 'errorNotSupport': 'WebUploader 不支持您的浏览器!如果你使用的是IE浏览器,请尝试升级 flash 播放器。', + 'errorLoadConfig': '后端配置项没有正常加载,上传插件不能正常使用!', + 'errorExceedSize':'文件大小超出', + 'errorFileType':'文件格式不允许', + 'errorInterrupt':'文件传输中断', + 'errorUploadRetry':'上传失败,请重试', + 'errorHttp':'http请求错误', + 'errorServerUpload':'服务器返回出错' + }, + 'insertvideo':{ + 'static':{ + 'lang_tab_insertV':"插入视频", + 'lang_tab_searchV':"搜索视频", + 'lang_tab_uploadV':"上传视频", + 'lang_video_url':"视频网址", + 'lang_video_size':"视频尺寸", + 'lang_videoW':"宽度", + 'lang_videoH':"高度", + 'lang_alignment':"对齐方式", + 'videoSearchTxt':{'value':"请输入搜索关键字!"}, + 'videoType':{'options':["全部", "热门", "娱乐", "搞笑", "体育", "科技", "综艺"]}, + 'videoSearchBtn':{'value':"百度一下"}, + 'videoSearchReset':{'value':"清空结果"}, + + 'lang_input_fileStatus':' 当前未上传文件', + 'startUpload':{'style':"background:url(upload.png) no-repeat;"}, + + 'lang_upload_size':"视频尺寸", + 'lang_upload_width':"宽度", + 'lang_upload_height':"高度", + 'lang_upload_alignment':"对齐方式", + 'lang_format_advice':"建议使用mp4格式." + + }, + 'numError':"请输入正确的数值,如123,400", + 'floatLeft':"左浮动", + 'floatRight':"右浮动", + '"default"':"默认", + 'block':"独占一行", + 'urlError':"输入的视频地址有误,请检查后再试!", + 'loading':"  视频加载中,请等待……", + 'clickToSelect':"点击选中", + 'goToSource':'访问源视频', + 'noVideo':"    抱歉,找不到对应的视频,请重试!", + + 'browseFiles':'浏览文件', + 'uploadSuccess':'上传成功!', + 'delSuccessFile':'从成功队列中移除', + 'delFailSaveFile':'移除保存失败文件', + 'statusPrompt':' 个文件已上传! ', + 'flashVersionError':'当前Flash版本过低,请更新FlashPlayer后重试!', + 'flashLoadingError':'Flash加载失败!请检查路径或网络状态', + 'fileUploadReady':'等待上传……', + 'delUploadQueue':'从上传队列中移除', + 'limitPrompt1':'单次不能选择超过', + 'limitPrompt2':'个文件!请重新选择!', + 'delFailFile':'移除失败文件', + 'fileSizeLimit':'文件大小超出限制!', + 'emptyFile':'空文件无法上传!', + 'fileTypeError':'文件类型不允许!', + 'unknownError':'未知错误!', + 'fileUploading':'上传中,请等待……', + 'cancelUpload':'取消上传', + 'netError':'网络错误', + 'failUpload':'上传失败!', + 'serverIOError':'服务器IO错误!', + 'noAuthority':'无权限!', + 'fileNumLimit':'上传个数限制', + 'failCheck':'验证失败,本次上传被跳过!', + 'fileCanceling':'取消中,请等待……', + 'stopUploading':'上传已停止……', + + 'uploadSelectFile':'点击选择文件', + 'uploadAddFile':'继续添加', + 'uploadStart':'开始上传', + 'uploadPause':'暂停上传', + 'uploadContinue':'继续上传', + 'uploadRetry':'重试上传', + 'uploadDelete':'删除', + 'uploadTurnLeft':'向左旋转', + 'uploadTurnRight':'向右旋转', + 'uploadPreview':'预览中', + 'updateStatusReady': '选中_个文件,共_KB。', + 'updateStatusConfirm': '成功上传_个,_个失败', + 'updateStatusFinish': '共_个(_KB),_个成功上传', + 'updateStatusError': ',_张上传失败。', + 'errorNotSupport': 'WebUploader 不支持您的浏览器!如果你使用的是IE浏览器,请尝试升级 flash 播放器。', + 'errorLoadConfig': '后端配置项没有正常加载,上传插件不能正常使用!', + 'errorExceedSize':'文件大小超出', + 'errorFileType':'文件格式不允许', + 'errorInterrupt':'文件传输中断', + 'errorUploadRetry':'上传失败,请重试', + 'errorHttp':'http请求错误', + 'errorServerUpload':'服务器返回出错' + }, + 'webapp':{ + 'tip1':"本功能由百度APP提供,如看到此页面,请各位站长首先申请百度APPKey!", + 'tip2':"申请完成之后请至ueditor.config.js中配置获得的appkey! ", + 'applyFor':"点此申请", + 'anthorApi':"百度API" + }, + 'template':{ + 'static':{ + 'lang_template_bkcolor':'背景颜色', + 'lang_template_clear' : '保留原有内容', + 'lang_template_select' : '选择模板' + }, + 'blank':"空白文档", + 'blog':"博客文章", + 'resume':"个人简历", + 'richText':"图文混排", + 'sciPapers':"科技论文" + + + }, + 'scrawl':{ + 'static':{ + 'lang_input_previousStep':"上一步", + 'lang_input_nextsStep':"下一步", + 'lang_input_clear':'清空', + 'lang_input_addPic':'添加背景', + 'lang_input_ScalePic':'缩放背景', + 'lang_input_removePic':'删除背景', + 'J_imgTxt':{title:'添加背景图片'} + }, + 'noScarwl':"尚未作画,白纸一张~", + 'scrawlUpLoading':"涂鸦上传中,别急哦~", + 'continueBtn':"继续", + 'imageError':"糟糕,图片读取失败了!", + 'backgroundUploading':'背景图片上传中,别急哦~' + }, + 'music':{ + 'static':{ + 'lang_input_tips':"输入歌手/歌曲/专辑,搜索您感兴趣的音乐!", + 'J_searchBtn':{value:'搜索歌曲'} + }, + 'emptyTxt':'未搜索到相关音乐结果,请换一个关键词试试。', + 'chapter':'歌曲', + 'singer':'歌手', + 'special':'专辑', + 'listenTest':'试听' + }, + 'anchor':{ + 'static':{ + 'lang_input_anchorName':'锚点名字:' + } + }, + 'charts':{ + 'static':{ + 'lang_data_source':'数据源:', + 'lang_chart_format': '图表格式:', + 'lang_data_align': '数据对齐方式', + 'lang_chart_align_same': '数据源与图表X轴Y轴一致', + 'lang_chart_align_reverse': '数据源与图表X轴Y轴相反', + 'lang_chart_title': '图表标题', + 'lang_chart_main_title': '主标题:', + 'lang_chart_sub_title': '子标题:', + 'lang_chart_x_title': 'X轴标题:', + 'lang_chart_y_title': 'Y轴标题:', + 'lang_chart_tip': '提示文字', + 'lang_cahrt_tip_prefix': '提示文字前缀:', + 'lang_cahrt_tip_description': '仅饼图有效, 当鼠标移动到饼图中相应的块上时,提示框内的文字的前缀', + 'lang_chart_data_unit': '数据单位', + 'lang_chart_data_unit_title': '单位:', + 'lang_chart_data_unit_description': '显示在每个数据点上的数据的单位, 比如: 温度的单位 ℃', + 'lang_chart_type': '图表类型:', + 'lang_prev_btn': '上一个', + 'lang_next_btn': '下一个' + } + }, + 'emotion':{ + 'static':{ + 'lang_input_choice':'精选', + 'lang_input_Tuzki':'兔斯基', + 'lang_input_BOBO':'BOBO', + 'lang_input_lvdouwa':'绿豆蛙', + 'lang_input_babyCat':'baby猫', + 'lang_input_bubble':'泡泡', + 'lang_input_youa':'有啊' + } + }, + 'gmap':{ + 'static':{ + 'lang_input_address':'地址', + 'lang_input_search':'搜索', + 'address':{value:"北京"} + }, + searchError:'无法定位到该地址!' + }, + 'help':{ + 'static':{ + 'lang_input_about':'关于UEditor', + 'lang_input_shortcuts':'快捷键', + 'lang_input_introduction':'UEditor是由百度web前端研发部开发的所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点。开源基于BSD协议,允许自由使用和修改代码。', + 'lang_Txt_shortcuts':'快捷键', + 'lang_Txt_func':'功能', + 'lang_Txt_bold':'给选中字设置为加粗', + 'lang_Txt_copy':'复制选中内容', + 'lang_Txt_cut':'剪切选中内容', + 'lang_Txt_Paste':'粘贴', + 'lang_Txt_undo':'重新执行上次操作', + 'lang_Txt_redo':'撤销上一次操作', + 'lang_Txt_italic':'给选中字设置为斜体', + 'lang_Txt_underline':'给选中字加下划线', + 'lang_Txt_selectAll':'全部选中', + 'lang_Txt_visualEnter':'软回车', + 'lang_Txt_fullscreen':'全屏' + } + }, + 'insertframe':{ + 'static':{ + 'lang_input_address':'地址:', + 'lang_input_width':'宽度:', + 'lang_input_height':'高度:', + 'lang_input_isScroll':'允许滚动条:', + 'lang_input_frameborder':'显示框架边框:', + 'lang_input_alignMode':'对齐方式:', + 'align':{title:"对齐方式", options:["默认", "左对齐", "右对齐", "居中"]} + }, + 'enterAddress':'请输入地址!' + }, + 'link':{ + 'static':{ + 'lang_input_text':'文本内容:', + 'lang_input_url':'链接地址:', + 'lang_input_title':'标题:', + 'lang_input_target':'是否在新窗口打开:' + }, + 'validLink':'只支持选中一个链接时生效', + 'httpPrompt':'您输入的超链接中不包含http等协议名称,默认将为您添加http://前缀' + }, + 'map':{ + 'static':{ + lang_city:"城市", + lang_address:"地址", + city:{value:"北京"}, + lang_search:"搜索", + lang_dynamicmap:"插入动态地图" + }, + cityMsg:"请选择城市", + errorMsg:"抱歉,找不到该位置!" + }, + 'searchreplace':{ + 'static':{ + lang_tab_search:"查找", + lang_tab_replace:"替换", + lang_search1:"查找", + lang_search2:"查找", + lang_replace:"替换", + lang_searchReg:'支持正则表达式,添加前后斜杠标示为正则表达式,例如“/表达式/”', + lang_searchReg1:'支持正则表达式,添加前后斜杠标示为正则表达式,例如“/表达式/”', + lang_case_sensitive1:"区分大小写", + lang_case_sensitive2:"区分大小写", + nextFindBtn:{value:"下一个"}, + preFindBtn:{value:"上一个"}, + nextReplaceBtn:{value:"下一个"}, + preReplaceBtn:{value:"上一个"}, + repalceBtn:{value:"替换"}, + repalceAllBtn:{value:"全部替换"} + }, + getEnd:"已经搜索到文章末尾!", + getStart:"已经搜索到文章头部", + countMsg:"总共替换了{#count}处!" + }, + 'snapscreen':{ + 'static':{ + lang_showMsg:"截图功能需要首先安装UEditor截图插件! ", + lang_download:"点此下载", + lang_step1:"第一步,下载UEditor截图插件并运行安装。", + lang_step2:"第二步,插件安装完成后即可使用,如不生效,请重启浏览器后再试!" + } + }, + 'spechars':{ + 'static':{}, + tsfh:"特殊字符", + lmsz:"罗马字符", + szfh:"数学字符", + rwfh:"日文字符", + xlzm:"希腊字母", + ewzm:"俄文字符", + pyzm:"拼音字母", + yyyb:"英语音标", + zyzf:"其他" + }, + 'edittable':{ + 'static':{ + 'lang_tableStyle':'表格样式', + 'lang_insertCaption':'添加表格名称行', + 'lang_insertTitle':'添加表格标题行', + 'lang_insertTitleCol':'添加表格标题列', + 'lang_orderbycontent':"使表格内容可排序", + 'lang_tableSize':'自动调整表格尺寸', + 'lang_autoSizeContent':'按表格文字自适应', + 'lang_autoSizePage':'按页面宽度自适应', + 'lang_example':'示例', + 'lang_borderStyle':'表格边框', + 'lang_color':'颜色:' + }, + captionName:'表格名称', + titleName:'标题', + cellsName:'内容', + errorMsg:'有合并单元格,不可排序' + }, + 'edittip':{ + 'static':{ + lang_delRow:'删除整行', + lang_delCol:'删除整列' + } + }, + 'edittd':{ + 'static':{ + lang_tdBkColor:'背景颜色:' + } + }, + 'formula':{ + 'static':{ + } + }, + 'wordimage':{ + 'static':{ + lang_resave:"转存步骤", + uploadBtn:{src:"upload.png",alt:"上传"}, + clipboard:{style:"background: url(copy.png) -153px -1px no-repeat;"}, + lang_step:"1、点击顶部复制按钮,将地址复制到剪贴板;2、点击添加照片按钮,在弹出的对话框中使用Ctrl+V粘贴地址;3、点击打开后选择图片上传流程。" + }, + 'fileType':"图片", + 'flashError':"FLASH初始化失败,请检查FLASH插件是否正确安装!", + 'netError':"网络连接错误,请重试!", + 'copySuccess':"图片地址已经复制!", + 'flashI18n':{} //留空默认中文 + }, + 'autosave': { + 'saving':'保存中...', + 'success':'本地保存成功' + } +}; diff --git a/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/nodejs/config.json b/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/nodejs/config.json new file mode 100644 index 0000000..dd5bc17 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/nodejs/config.json @@ -0,0 +1,94 @@ +/* 前后端通信相关的配置,注释只允许使用多行方式 */ +{ + /* 上传图片配置项 */ + "imageActionName": "uploadimage", /* 执行上传图片的action名称 */ + "imageFieldName": "upfile", /* 提交的图片表单名称 */ + "imageMaxSize": 2048000, /* 上传大小限制,单位B */ + "imageAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 上传图片格式显示 */ + "imageCompressEnable": true, /* 是否压缩图片,默认是true */ + "imageCompressBorder": 1600, /* 图片压缩最长边限制 */ + "imageInsertAlign": "none", /* 插入的图片浮动方式 */ + "imageUrlPrefix": "", /* 图片访问路径前缀 */ + "imagePathFormat": "/ueditor/php/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + /* {filename} 会替换成原文件名,配置这项需要注意中文乱码问题 */ + /* {rand:6} 会替换成随机数,后面的数字是随机数的位数 */ + /* {time} 会替换成时间戳 */ + /* {yyyy} 会替换成四位年份 */ + /* {yy} 会替换成两位年份 */ + /* {mm} 会替换成两位月份 */ + /* {dd} 会替换成两位日期 */ + /* {hh} 会替换成两位小时 */ + /* {ii} 会替换成两位分钟 */ + /* {ss} 会替换成两位秒 */ + /* 非法字符 \ : * ? " < > | */ + /* 具请体看线上文档: fex.baidu.com/ueditor/#use-format_upload_filename */ + + /* 涂鸦图片上传配置项 */ + "scrawlActionName": "uploadscrawl", /* 执行上传涂鸦的action名称 */ + "scrawlFieldName": "upfile", /* 提交的图片表单名称 */ + "scrawlPathFormat": "/ueditor/php/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + "scrawlMaxSize": 2048000, /* 上传大小限制,单位B */ + "scrawlUrlPrefix": "", /* 图片访问路径前缀 */ + "scrawlInsertAlign": "none", + + /* 截图工具上传 */ + "snapscreenActionName": "uploadimage", /* 执行上传截图的action名称 */ + "snapscreenPathFormat": "/ueditor/php/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + "snapscreenUrlPrefix": "", /* 图片访问路径前缀 */ + "snapscreenInsertAlign": "none", /* 插入的图片浮动方式 */ + + /* 抓取远程图片配置 */ + "catcherLocalDomain": ["127.0.0.1", "localhost", "img.baidu.com"], + "catcherActionName": "catchimage", /* 执行抓取远程图片的action名称 */ + "catcherFieldName": "source", /* 提交的图片列表表单名称 */ + "catcherPathFormat": "/ueditor/php/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + "catcherUrlPrefix": "", /* 图片访问路径前缀 */ + "catcherMaxSize": 2048000, /* 上传大小限制,单位B */ + "catcherAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 抓取图片格式显示 */ + + /* 上传视频配置 */ + "videoActionName": "uploadvideo", /* 执行上传视频的action名称 */ + "videoFieldName": "upfile", /* 提交的视频表单名称 */ + "videoPathFormat": "/ueditor/php/upload/video/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + "videoUrlPrefix": "", /* 视频访问路径前缀 */ + "videoMaxSize": 102400000, /* 上传大小限制,单位B,默认100MB */ + "videoAllowFiles": [ + ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg", + ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid"], /* 上传视频格式显示 */ + + /* 上传文件配置 */ + "fileActionName": "uploadfile", /* controller里,执行上传视频的action名称 */ + "fileFieldName": "upfile", /* 提交的文件表单名称 */ + "filePathFormat": "/ueditor/php/upload/file/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + "fileUrlPrefix": "", /* 文件访问路径前缀 */ + "fileMaxSize": 51200000, /* 上传大小限制,单位B,默认50MB */ + "fileAllowFiles": [ + ".png", ".jpg", ".jpeg", ".gif", ".bmp", + ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg", + ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid", + ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso", + ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml" + ], /* 上传文件格式显示 */ + + /* 列出指定目录下的图片 */ + "imageManagerActionName": "listimage", /* 执行图片管理的action名称 */ + "imageManagerListPath": "/ueditor/php/upload/image/", /* 指定要列出图片的目录 */ + "imageManagerListSize": 20, /* 每次列出文件数量 */ + "imageManagerUrlPrefix": "", /* 图片访问路径前缀 */ + "imageManagerInsertAlign": "none", /* 插入的图片浮动方式 */ + "imageManagerAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 列出的文件类型 */ + + /* 列出指定目录下的文件 */ + "fileManagerActionName": "listfile", /* 执行文件管理的action名称 */ + "fileManagerListPath": "/ueditor/php/upload/file/", /* 指定要列出文件的目录 */ + "fileManagerUrlPrefix": "", /* 文件访问路径前缀 */ + "fileManagerListSize": 20, /* 每次列出文件数量 */ + "fileManagerAllowFiles": [ + ".png", ".jpg", ".jpeg", ".gif", ".bmp", + ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg", + ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid", + ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso", + ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml" + ] /* 列出的文件类型 */ + +} \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/css/ueditor.css b/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/css/ueditor.css new file mode 100644 index 0000000..44ae805 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/css/ueditor.css @@ -0,0 +1,1903 @@ +/*基础UI构建 +*/ +/* common layer */ +.edui-default .edui-box { + border: none; + padding: 0; + margin: 0; + overflow: hidden; +} + +.edui-default a.edui-box { + display: block; + text-decoration: none; + color: black; +} + +.edui-default a.edui-box:hover { + text-decoration: none; +} + +.edui-default a.edui-box:active { + text-decoration: none; +} + +.edui-default table.edui-box { + border-collapse: collapse; +} + +.edui-default ul.edui-box { + list-style-type: none; +} + +div.edui-box { + position: relative; + display: -moz-inline-box !important; + display: inline-block !important; + vertical-align: top; +} + +.edui-default .edui-clearfix { + zoom: 1 +} + +.edui-default .edui-clearfix:after { + content: '\20'; + display: block; + clear: both; +} + + * html div.edui-box { + display: inline !important; +} + +*:first-child+html div.edui-box { + display: inline !important; +} + +/* control layout */ +.edui-default .edui-button-body, .edui-splitbutton-body, .edui-menubutton-body, .edui-combox-body { + position: relative; +} + +.edui-default .edui-popup { + position: absolute; + -webkit-user-select: none; + -moz-user-select: none; +} + +.edui-default .edui-popup .edui-shadow { + position: absolute; + z-index: -1; +} + +.edui-default .edui-popup .edui-bordereraser { + position: absolute; + overflow: hidden; +} + +.edui-default .edui-tablepicker .edui-canvas { + position: relative; +} + +.edui-default .edui-tablepicker .edui-canvas .edui-overlay { + position: absolute; +} + +.edui-default .edui-dialog-modalmask, .edui-dialog-dragmask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; +} + +.edui-default .edui-toolbar { + position: relative; +} + +/* + * default theme + */ +.edui-default .edui-label { + cursor: default; +} + +.edui-default span.edui-clickable { + color: blue; + cursor: pointer; + text-decoration: underline; +} + +.edui-default span.edui-unclickable { + color: gray; + cursor: default; +} +/* 工具栏 */ +.edui-default .edui-toolbar { + cursor: default; + -webkit-user-select: none; + -moz-user-select: none; + padding: 1px; + overflow: hidden; /*全屏下单独一行不占位*/ + zoom: 1; + width:auto; + height:auto; +} + +.edui-default .edui-toolbar .edui-button, +.edui-default .edui-toolbar .edui-splitbutton, +.edui-default .edui-toolbar .edui-menubutton, +.edui-default .edui-toolbar .edui-combox { + margin: 1px; +} +/*UI工具栏、编辑区域、底部*/ +.edui-default .edui-editor { + border: 1px solid #d4d4d4; + background-color: white; + position: relative; + overflow: visible; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.edui-editor div{ + width:auto; + height:auto; +} +.edui-default .edui-editor-toolbarbox { + position: relative; + zoom: 1; + -webkit-box-shadow:0 1px 4px rgba(204, 204, 204, 0.6); + -moz-box-shadow:0 1px 4px rgba(204, 204, 204, 0.6); + box-shadow:0 1px 4px rgba(204, 204, 204, 0.6); + border-top-left-radius:2px; + border-top-right-radius:2px; +} + +.edui-default .edui-editor-toolbarboxouter { + border-bottom: 1px solid #d4d4d4; + background-color: #fafafa; + background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2)); + background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -o-linear-gradient(top, #ffffff, #f2f2f2); + background-image: linear-gradient(to bottom, #ffffff, #f2f2f2); + background-repeat: repeat-x; + /*border: 1px solid #d4d4d4;*/ + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); + *zoom: 1; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); +} + +.edui-default .edui-editor-toolbarboxinner { + padding: 2px; +} + +.edui-default .edui-editor-iframeholder { + position: relative; + /*for fix ie6 toolbarmsg under iframe bug. relative -> static */ + /*_position: static !important;* +} + +.edui-default .edui-editor-iframeholder textarea { + font-family: consolas, "Courier New", "lucida console", monospace; + font-size: 12px; + line-height: 18px; +} + +.edui-default .edui-editor-bottombar { + /*border-top: 1px solid #ccc;*/ + /*height: 20px;*/ + /*width: 40%;*/ + /*float: left;*/ + /*overflow: hidden;*/ +} + +.edui-default .edui-editor-bottomContainer { + overflow: hidden; +} + +.edui-default .edui-editor-bottomContainer table { + width: 100%; + height: 0; + overflow: hidden; + border-spacing: 0; +} + +.edui-default .edui-editor-bottomContainer td { + white-space: nowrap; + border-top: 1px solid #ccc; + line-height: 20px; + font-size: 12px; + font-family: Arial, Helvetica, Tahoma, Verdana, Sans-Serif; +} + +.edui-default .edui-editor-wordcount { + text-align: right; + margin-right: 5px; + color: #aaa; +} +.edui-default .edui-editor-scale { + width: 12px; +} +.edui-default .edui-editor-scale .edui-editor-icon { + float: right; + width: 100%; + height: 12px; + margin-top: 10px; + background: url(../images/scale.png) no-repeat; + cursor: se-resize; +} +.edui-default .edui-editor-breadcrumb { + margin: 2px 0 0 3px; +} + +.edui-default .edui-editor-breadcrumb span { + cursor: pointer; + text-decoration: underline; + color: blue; +} + +.edui-default .edui-toolbar .edui-for-fullscreen { + float: right; +} + +.edui-default .edui-bubble .edui-popup-content { + border: 1px solid #DCAC6C; + background-color: #fff6d9; + padding: 5px; + font-size: 10pt; + font-family: "宋体"; +} + +.edui-default .edui-bubble .edui-shadow { + /*box-shadow: 1px 1px 3px #818181;*/ + /*-webkit-box-shadow: 2px 2px 3px #818181;*/ + /*-moz-box-shadow: 2px 2px 3px #818181;*/ + /*filter: progid:DXImageTransform.Microsoft.Blur(PixelRadius = '2', MakeShadow = 'true', ShadowOpacity = '0.5');*/ +} + +.edui-default .edui-editor-toolbarmsg { + background-color: #FFF6D9; + border-bottom: 1px solid #ccc; + position: absolute; + bottom: -25px; + left: 0; + z-index: 1009; + width: 99.9%; +} + +.edui-default .edui-editor-toolbarmsg-upload { + font-size: 14px; + color: blue; + width: 100px; + height: 16px; + line-height: 16px; + cursor: pointer; + position: absolute; + top: 5px; + left: 350px; +} + +.edui-default .edui-editor-toolbarmsg-label { + font-size: 12px; + line-height: 16px; + padding: 4px; +} + +.edui-default .edui-editor-toolbarmsg-close { + float: right; + width: 20px; + height: 16px; + line-height: 16px; + cursor: pointer; + color: red; +} +/*可选中菜单按钮*/ +.edui-default .edui-list .edui-bordereraser { + display: none; +} + +.edui-default .edui-listitem { + padding: 1px; + white-space: nowrap; +} + +.edui-default .edui-list .edui-state-hover { + position: relative; + background-color: #fff5d4; + border: 1px solid #dcac6c; + padding: 0; +} + +.edui-default .edui-for-fontfamily .edui-listitem-label { + min-width: 130px; + _width: 120px; + font-size: 12px; + height: 22px; + line-height: 22px; + padding-left: 5px; +} +.edui-default .edui-for-insertcode .edui-listitem-label { + min-width: 120px; + _width: 120px; + font-size: 12px; + height: 22px; + line-height: 22px; + padding-left: 5px; +} +.edui-default .edui-for-underline .edui-listitem-label { + min-width: 120px; + _width: 120px; + padding: 3px 5px; + font-size: 12px; +} + +.edui-default .edui-for-fontsize .edui-listitem-label { + min-width: 120px; + _width: 120px; + padding: 3px 5px; + +} + +.edui-default .edui-for-paragraph .edui-listitem-label { + min-width: 200px; + _width: 200px; + padding: 2px 5px; +} + +.edui-default .edui-for-rowspacingtop .edui-listitem-label, +.edui-default .edui-for-rowspacingbottom .edui-listitem-label { + min-width: 53px; + _width: 53px; + padding: 2px 5px; +} + +.edui-default .edui-for-lineheight .edui-listitem-label { + min-width: 53px; + _width: 53px; + padding: 2px 5px; +} + +.edui-default .edui-for-customstyle .edui-listitem-label { + min-width: 200px; + _width: 200px; + width: 200px !important; + padding: 2px 5px; +} +/* 可选中按钮弹出菜单*/ +.edui-default .edui-menu { + z-index: 3000; +} + +.edui-default .edui-menu .edui-popup-content { + padding: 3px; +} + +.edui-default .edui-menu-body { + _width: 150px; + min-width: 170px; + background: url("../images/sparator_v.png") repeat-y 25px; +} + +.edui-default .edui-menuitem-body { +} + +.edui-default .edui-menuitem { + height: 20px; + cursor: default; + vertical-align: top; +} + +.edui-default .edui-menuitem .edui-icon { + width: 20px !important; + height: 20px !important; + background: url(../images/icons.png) 0 -4000px; + background: url(../images/icons.gif) 0 -4000px\9; +} + +.edui-default .edui-menuitem .edui-label { + font-size: 12px; + line-height: 20px; + height: 20px; + padding-left: 10px; +} + +.edui-default .edui-state-checked .edui-menuitem-body { + background: url("../images/icons-all.gif") no-repeat 6px -205px; +} + +.edui-default .edui-state-disabled .edui-menuitem-label { + color: gray; +} + + +/*不可选中菜单按钮 */ +.edui-default .edui-toolbar .edui-combox-body .edui-button-body { + width: 60px; + font-size: 12px; + height: 20px; + line-height: 20px; + padding-left: 5px; + white-space: nowrap; + margin: 0 3px 0 0; +} + +.edui-default .edui-toolbar .edui-combox-body .edui-arrow { + background: url(../images/icons.png) -741px 0; + _background: url(../images/icons.gif) -741px 0; + height: 20px; + width: 9px; +} + +.edui-default .edui-toolbar .edui-combox .edui-combox-body { + border: 1px solid #CCC; + background-color: white; + border-radius: 2px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; +} + +.edui-default .edui-toolbar .edui-combox-body .edui-splitborder { + display: none; +} + +.edui-default .edui-toolbar .edui-combox-body .edui-arrow { + border-left: 1px solid #CCC; +} + +.edui-default .edui-toolbar .edui-state-hover .edui-combox-body { + background-color: #fff5d4; + border: 1px solid #dcac6c; +} + +.edui-default .edui-toolbar .edui-state-hover .edui-combox-body .edui-arrow { + border-left: 1px solid #dcac6c; +} + +.edui-default .edui-toolbar .edui-state-checked .edui-combox-body { + background-color: #FFE69F; + border: 1px solid #DCAC6C; +} + +.edui-toolbar .edui-state-checked .edui-combox-body .edui-arrow { + border-left: 1px solid #DCAC6C; +} + +.edui-toolbar .edui-state-disabled .edui-combox-body { + background-color: #F0F0EE; + opacity: 0.3; + filter: alpha(opacity = 30); +} + +.edui-toolbar .edui-state-opened .edui-combox-body { + background-color: white; + border: 1px solid gray; +} +/*普通按钮样式及状态*/ +.edui-default .edui-toolbar .edui-button .edui-icon, +.edui-default .edui-toolbar .edui-menubutton .edui-icon, +.edui-default .edui-toolbar .edui-splitbutton .edui-icon { + height: 20px !important; + width: 20px !important; + background-image: url(../images/icons.png); + background-image: url(../images/icons.gif) \9; +} + +.edui-default .edui-toolbar .edui-button .edui-button-wrap { + padding: 1px; + position: relative; +} + +.edui-default .edui-toolbar .edui-button .edui-state-hover .edui-button-wrap { + background-color: #fff5d4; + padding: 0; + border: 1px solid #dcac6c; +} + +.edui-default .edui-toolbar .edui-button .edui-state-checked .edui-button-wrap { + background-color: #ffe69f; + padding: 0; + border: 1px solid #dcac6c; + border-radius: 2px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; +} + +.edui-default .edui-toolbar .edui-button .edui-state-active .edui-button-wrap { + background-color: #ffffff; + padding: 0; + border: 1px solid gray; +} +.edui-default .edui-toolbar .edui-state-disabled .edui-label { + color: #ccc; +} +.edui-default .edui-toolbar .edui-state-disabled .edui-icon { + opacity: 0.3; + filter: alpha(opacity = 30); +} + +/* toolbar icons */ +.edui-default .edui-for-undo .edui-icon { + background-position: -160px 0; +} + +.edui-default .edui-for-redo .edui-icon { + background-position: -100px 0; +} + +.edui-default .edui-for-bold .edui-icon { + background-position: 0 0; +} + +.edui-default .edui-for-italic .edui-icon { + background-position: -60px 0; +} + +.edui-default .edui-for-fontborder .edui-icon { + background-position:-160px -40px; +} +.edui-default .edui-for-underline .edui-icon { + background-position: -140px 0; +} + +.edui-default .edui-for-strikethrough .edui-icon { + background-position: -120px 0; +} + +.edui-default .edui-for-subscript .edui-icon { + background-position: -600px 0; +} + +.edui-default .edui-for-superscript .edui-icon { + background-position: -620px 0; +} + +.edui-default .edui-for-blockquote .edui-icon { + background-position: -220px 0; +} + +.edui-default .edui-for-forecolor .edui-icon { + background-position: -720px 0; +} + +.edui-default .edui-for-backcolor .edui-icon { + background-position: -760px 0; +} + +.edui-default .edui-for-inserttable .edui-icon { + background-position: -580px -20px; +} + +.edui-default .edui-for-autotypeset .edui-icon { + background-position: -640px -40px; +} + +.edui-default .edui-for-justifyleft .edui-icon { + background-position: -460px 0; +} + +.edui-default .edui-for-justifycenter .edui-icon { + background-position: -420px 0; +} + +.edui-default .edui-for-justifyright .edui-icon { + background-position: -480px 0; +} + +.edui-default .edui-for-justifyjustify .edui-icon { + background-position: -440px 0; +} + +.edui-default .edui-for-insertorderedlist .edui-icon { + background-position: -80px 0; +} + +.edui-default .edui-for-insertunorderedlist .edui-icon { + background-position: -20px 0; +} + +.edui-default .edui-for-lineheight .edui-icon { + background-position: -725px -40px; +} + +.edui-default .edui-for-rowspacingbottom .edui-icon { + background-position: -745px -40px; +} + +.edui-default .edui-for-rowspacingtop .edui-icon { + background-position: -765px -40px; +} + +.edui-default .edui-for-horizontal .edui-icon { + background-position: -360px 0; +} + +.edui-default .edui-for-link .edui-icon { + background-position: -500px 0; +} + +.edui-default .edui-for-code .edui-icon { + background-position: -440px -40px; +} + +.edui-default .edui-for-insertimage .edui-icon { + background-position: -726px -77px; +} + +.edui-default .edui-for-insertframe .edui-icon { + background-position: -240px -40px; +} + +.edui-default .edui-for-emoticon .edui-icon { + background-position: -60px -20px; +} + +.edui-default .edui-for-spechars .edui-icon { + background-position: -240px 0; +} + +.edui-default .edui-for-help .edui-icon { + background-position: -340px 0; +} + +.edui-default .edui-for-print .edui-icon { + background-position: -440px -20px; +} + +.edui-default .edui-for-preview .edui-icon { + background-position: -420px -20px; +} + +.edui-default .edui-for-selectall .edui-icon { + background-position: -400px -20px; +} + +.edui-default .edui-for-searchreplace .edui-icon { + background-position: -520px -20px; +} + +.edui-default .edui-for-map .edui-icon { + background-position: -40px -40px; +} + +.edui-default .edui-for-gmap .edui-icon { + background-position: -260px -40px; +} + +.edui-default .edui-for-insertvideo .edui-icon { + background-position: -320px -20px; +} + +.edui-default .edui-for-time .edui-icon { + background-position: -160px -20px; +} + +.edui-default .edui-for-date .edui-icon { + background-position: -140px -20px; +} + +.edui-default .edui-for-cut .edui-icon { + background-position: -680px 0; +} + +.edui-default .edui-for-copy .edui-icon { + background-position: -700px 0; +} + +.edui-default .edui-for-paste .edui-icon { + background-position: -560px 0; +} + +.edui-default .edui-for-formatmatch .edui-icon { + background-position: -40px 0; +} + +.edui-default .edui-for-pasteplain .edui-icon { + background-position: -360px -20px; +} + +.edui-default .edui-for-directionalityltr .edui-icon { + background-position: -20px -20px; +} + +.edui-default .edui-for-directionalityrtl .edui-icon { + background-position: -40px -20px; +} + +.edui-default .edui-for-source .edui-icon { + background-position: -261px -0px; +} + +.edui-default .edui-for-removeformat .edui-icon { + background-position: -580px 0; +} + +.edui-default .edui-for-unlink .edui-icon { + background-position: -640px 0; +} + +.edui-default .edui-for-touppercase .edui-icon { + background-position: -786px 0; +} + +.edui-default .edui-for-tolowercase .edui-icon { + background-position: -806px 0; +} + +.edui-default .edui-for-insertrow .edui-icon { + background-position: -478px -76px; +} + +.edui-default .edui-for-insertrownext .edui-icon { + background-position: -498px -76px; +} + +.edui-default .edui-for-insertcol .edui-icon { + background-position: -455px -76px; +} + +.edui-default .edui-for-insertcolnext .edui-icon { + background-position: -429px -76px; +} + +.edui-default .edui-for-mergeright .edui-icon { + background-position: -60px -40px; +} + +.edui-default .edui-for-mergedown .edui-icon { + background-position: -80px -40px; +} + +.edui-default .edui-for-splittorows .edui-icon { + background-position: -100px -40px; +} + +.edui-default .edui-for-splittocols .edui-icon { + background-position: -120px -40px; +} + +.edui-default .edui-for-insertparagraphbeforetable .edui-icon { + background-position: -140px -40px; +} + +.edui-default .edui-for-deleterow .edui-icon { + background-position: -660px -20px; +} + +.edui-default .edui-for-deletecol .edui-icon { + background-position: -640px -20px; +} + +.edui-default .edui-for-splittocells .edui-icon { + background-position: -800px -20px; +} + +.edui-default .edui-for-mergecells .edui-icon { + background-position: -760px -20px; +} + +.edui-default .edui-for-deletetable .edui-icon { + background-position: -620px -20px; +} + +.edui-default .edui-for-cleardoc .edui-icon { + background-position: -520px 0; +} + +.edui-default .edui-for-fullscreen .edui-icon { + background-position: -100px -20px; +} + +.edui-default .edui-for-anchor .edui-icon { + background-position: -200px 0; +} + +.edui-default .edui-for-pagebreak .edui-icon { + background-position: -460px -40px; +} + +.edui-default .edui-for-imagenone .edui-icon { + background-position: -480px -40px; +} + +.edui-default .edui-for-imageleft .edui-icon { + background-position: -500px -40px; +} + +.edui-default .edui-for-wordimage .edui-icon { + background-position: -660px -40px; +} + +.edui-default .edui-for-imageright .edui-icon { + background-position: -520px -40px; +} + +.edui-default .edui-for-imagecenter .edui-icon { + background-position: -540px -40px; +} + +.edui-default .edui-for-indent .edui-icon { + background-position: -400px 0; +} + +.edui-default .edui-for-outdent .edui-icon { + background-position: -540px 0; +} + +.edui-default .edui-for-webapp .edui-icon { + background-position: -601px -40px +} + +.edui-default .edui-for-table .edui-icon { + background-position: -580px -20px; +} + +.edui-default .edui-for-edittable .edui-icon { + background-position: -420px -40px; +} + +.edui-default .edui-for-template .edui-icon { + background-position: -339px -40px; +} + +.edui-default .edui-for-delete .edui-icon { + background-position: -360px -40px; +} + +.edui-default .edui-for-attachment .edui-icon { + background-position: -620px -40px; +} + +.edui-default .edui-for-edittd .edui-icon { + background-position: -700px -40px; +} + +.edui-default .edui-for-snapscreen .edui-icon { + background-position: -581px -40px +} + +.edui-default .edui-for-scrawl .edui-icon { + background-position: -801px -41px +} + +.edui-default .edui-for-background .edui-icon { + background-position: -680px -40px; +} + +.edui-default .edui-for-music .edui-icon { + background-position: -18px -40px +} + +.edui-default .edui-for-formula .edui-icon { + background-position: -200px -40px +} + +.edui-default .edui-for-aligntd .edui-icon { + background-position: -236px -76px; +} + +.edui-default .edui-for-insertparagraphtrue .edui-icon { + background-position: -625px -76px; +} + +.edui-default .edui-for-insertparagraph .edui-icon { + background-position: -602px -76px; +} + +.edui-default .edui-for-insertcaption .edui-icon { + background-position: -336px -76px; +} + +.edui-default .edui-for-deletecaption .edui-icon { + background-position: -362px -76px; +} + +.edui-default .edui-for-inserttitle .edui-icon { + background-position: -286px -76px; +} + +.edui-default .edui-for-deletetitle .edui-icon { + background-position: -311px -76px; +} + +.edui-default .edui-for-aligntable .edui-icon { + background-position: -440px 0; +} + +.edui-default .edui-for-tablealignment-left .edui-icon { + background-position: -460px 0; +} + +.edui-default .edui-for-tablealignment-center .edui-icon { + background-position: -420px 0; +} + +.edui-default .edui-for-tablealignment-right .edui-icon { + background-position: -480px 0; +} + +.edui-default .edui-for-drafts .edui-icon { + background-position: -560px 0; +} + +.edui-default .edui-for-charts .edui-icon { + background: url( ../images/charts.png ) no-repeat 2px 3px!important; +} + +.edui-default .edui-for-inserttitlecol .edui-icon { + background-position: -673px -76px; +} + +.edui-default .edui-for-deletetitlecol .edui-icon { + background-position: -698px -76px; +} + +.edui-default .edui-for-simpleupload .edui-icon { + background-position: -380px 0px; +} +/*splitbutton*/ +.edui-default .edui-toolbar .edui-splitbutton-body .edui-arrow, +.edui-default .edui-toolbar .edui-menubutton-body .edui-arrow { + background: url(../images/icons.png) -741px 0; + _background: url(../images/icons.gif) -741px 0; + height: 20px; + width: 9px; +} + +.edui-default .edui-toolbar .edui-splitbutton .edui-splitbutton-body, +.edui-default .edui-toolbar .edui-menubutton .edui-menubutton-body { + padding: 1px; +} + +.edui-default .edui-toolbar .edui-splitborder { + width: 1px; + height: 20px; +} + +.edui-default .edui-toolbar .edui-state-hover .edui-splitborder { + width: 1px; + border-left: 0px solid #dcac6c; +} + +.edui-default .edui-toolbar .edui-state-active .edui-splitborder { + width: 0; + border-left: 1px solid gray; +} + +.edui-default .edui-toolbar .edui-state-opened .edui-splitborder { + width: 1px; + border: 0; +} + +.edui-default .edui-toolbar .edui-splitbutton .edui-state-hover .edui-splitbutton-body, +.edui-default .edui-toolbar .edui-menubutton .edui-state-hover .edui-menubutton-body { + background-color: #fff5d4; + border: 1px solid #dcac6c; + padding: 0; +} + +.edui-default .edui-toolbar .edui-splitbutton .edui-state-checked .edui-splitbutton-body, +.edui-default .edui-toolbar .edui-menubutton .edui-state-checked .edui-menubutton-body { + background-color: #FFE69F; + border: 1px solid #DCAC6C; + padding: 0; +} + +.edui-default .edui-toolbar .edui-splitbutton .edui-state-active .edui-splitbutton-body, +.edui-default .edui-toolbar .edui-menubutton .edui-state-active .edui-menubutton-body { + background-color: #ffffff; + border: 1px solid gray; + padding: 0; +} + +.edui-default .edui-state-disabled .edui-arrow { + opacity: 0.3; + _filter: alpha(opacity = 30); +} + +.edui-default .edui-toolbar .edui-splitbutton .edui-state-opened .edui-splitbutton-body, +.edui-default .edui-toolbar .edui-menubutton .edui-state-opened .edui-menubutton-body { + background-color: white; + border: 1px solid gray; + padding: 0; +} + +.edui-default .edui-for-insertorderedlist .edui-bordereraser, +.edui-default .edui-for-lineheight .edui-bordereraser, +.edui-default .edui-for-rowspacingtop .edui-bordereraser, +.edui-default .edui-for-rowspacingbottom .edui-bordereraser, +.edui-default .edui-for-insertunorderedlist .edui-bordereraser { + background-color: white; +} + +/* 解决嵌套导致的图标问题 */ +.edui-default .edui-for-insertorderedlist .edui-popup-body .edui-icon, +.edui-default .edui-for-lineheight .edui-popup-body .edui-icon, +.edui-default .edui-for-rowspacingtop .edui-popup-body .edui-icon, +.edui-default .edui-for-rowspacingbottom .edui-popup-body .edui-icon, +.edui-default .edui-for-insertunorderedlist .edui-popup-body .edui-icon { + /*background-position: 0 -40px;*/ + background-image: none ; +} + +/* 弹出菜单 */ +.edui-default .edui-popup { + z-index: 3000; + background-color: #ffffff; + width:auto; + height:auto; + +} + +.edui-default .edui-popup .edui-shadow { + left: 0; + top: 0; + width: 100%; + height: 100%; +} + +.edui-default .edui-popup-content { + border:1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 3px 4px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 3px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 3px 4px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; + padding: 5px; + background:#ffffff; +} + +.edui-default .edui-popup .edui-bordereraser { + background-color: white; + height: 3px; +} + +.edui-default .edui-menu .edui-bordereraser { + height: 3px; +} + +.edui-default .edui-anchor-topleft .edui-bordereraser { + left: 1px; + top: -2px; +} + +.edui-default .edui-anchor-topright .edui-bordereraser { + right: 1px; + top: -2px; +} + +.edui-default .edui-anchor-bottomleft .edui-bordereraser { + left: 0; + bottom: -6px; + height: 7px; + border-left: 1px solid gray; + border-right: 1px solid gray; +} + +.edui-default .edui-anchor-bottomright .edui-bordereraser { + right: 0; + bottom: -6px; + height: 7px; + border-left: 1px solid gray; + border-right: 1px solid gray; +} + +.edui-popup div{ + width:auto; + height:auto; +} +.edui-default .edui-editor-messageholder { + display: block; + width: 150px; + height: auto; + border: 0; + margin: 0; + padding: 0; + position: absolute; + top: 28px; + right: 3px; +} + +.edui-default .edui-message{ + min-height: 10px; + text-shadow: 0 1px 0 rgba(255,255,255,0.5); + padding: 0; + margin-bottom: 3px; + position: relative; +} +.edui-default .edui-message-body{ + border-radius: 3px; + padding: 8px 15px 8px 8px; + color: #c09853; + background-color: #fcf8e3; + border: 1px solid #fbeed5; +} +.edui-default .edui-message-type-info{ + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1 +} +.edui-default .edui-message-type-success{ + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6 +} +.edui-default .edui-message-type-danger, +.edui-default .edui-message-type-error{ + color: #b94a48; + background-color: #f2dede; + border-color: #eed3d7 +} +.edui-default .edui-message .edui-message-closer { + display: block; + width: 16px; + height: 16px; + line-height: 16px; + position: absolute; + top: 0; + right: 0; + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + float: right; + font-size: 20px; + font-weight: bold; + color: #999; + text-shadow: 0 1px 0 #fff; + font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; +} +.edui-default .edui-message .edui-message-content { + font-size: 10pt; + word-wrap: break-word; + word-break: normal; +} +/* 弹出对话框按钮和对话框大小 */ +.edui-default .edui-dialog { + z-index: 2000; + position: absolute; + +} + +.edui-dialog div{ + width:auto; +} + +.edui-default .edui-dialog-wrap { + margin-right: 6px; + margin-bottom: 6px; +} + +.edui-default .edui-dialog-fullscreen-flag { + margin-right: 0; + margin-bottom: 0; +} + +.edui-default .edui-dialog-body { + position: relative; + padding:2px 0 0 2px; + _zoom: 1; +} + +.edui-default .edui-dialog-fullscreen-flag .edui-dialog-body { + padding: 0; +} + +.edui-default .edui-dialog-shadow { + position: absolute; + z-index: -1; + left: 0; + top: 0; + width: 100%; + height: 100%; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.edui-default .edui-dialog-foot { + background-color: white; +} + +.edui-default .edui-dialog-titlebar { + height: 26px; + border-bottom: 1px solid #c6c6c6; + background: url(../images/dialog-title-bg.png) repeat-x bottom; + position: relative; + cursor: move; +} +.edui-default .edui-dialog-caption { + font-weight: bold; + font-size: 12px; + line-height: 26px; + padding-left: 5px; +} + +.edui-default .edui-dialog-draghandle { + height: 26px; +} + +.edui-default .edui-dialog-closebutton { + position: absolute !important; + right: 5px; + top: 3px; +} + +.edui-default .edui-dialog-closebutton .edui-button-body { + height: 20px; + width: 20px; + cursor: pointer; + background: url("../images/icons-all.gif") no-repeat 0 -59px; +} + +.edui-default .edui-dialog-closebutton .edui-state-hover .edui-button-body { + background: url("../images/icons-all.gif") no-repeat 0 -89px; +} + +.edui-default .edui-dialog-foot { + height: 40px; +} + +.edui-default .edui-dialog-buttons { + position: absolute; + right: 0; +} + +.edui-default .edui-dialog-buttons .edui-button { + margin-right: 10px; +} + +.edui-default .edui-dialog-buttons .edui-button .edui-button-body { + background: url("../images/icons-all.gif") no-repeat; + height: 24px; + width: 96px; + font-size: 12px; + line-height: 24px; + text-align: center; + cursor: default; +} + +.edui-default .edui-dialog-buttons .edui-button .edui-state-hover .edui-button-body { + background: url("../images/icons-all.gif") no-repeat 0 -30px; +} + +.edui-default .edui-dialog iframe { + border: 0; + padding: 0; + margin: 0; + vertical-align: top; +} + +.edui-default .edui-dialog-modalmask { + opacity: 0.3; + filter: alpha(opacity = 30); + background-color: #ccc; + position: absolute; + /*z-index: 1999;*/ +} + +.edui-default .edui-dialog-dragmask { + position: absolute; + /*z-index: 2001;*/ + background-color: transparent; + cursor: move; +} + +.edui-default .edui-dialog-content { + position: relative; +} + +.edui-default .dialogcontmask { + cursor: move; + visibility: hidden; + display: block; + position: absolute; + width: 100%; + height: 100%; + opacity: 0; + filter: alpha(opacity = 0); +} + +/*link-dialog*/ +.edui-default .edui-for-link .edui-dialog-content { + width: 420px; + height: 200px; + overflow: hidden; +} +/*background-dialog*/ +.edui-default .edui-for-background .edui-dialog-content { + width: 440px; + height: 280px; + overflow: hidden; +} + +/*template-dialog*/ +.edui-default .edui-for-template .edui-dialog-content { + width: 630px; + height: 390px; + overflow: hidden; +} + +/*scrawl-dialog*/ +.edui-default .edui-for-scrawl .edui-dialog-content { + width: 515px; + *width: 506px; + height: 360px; +} + +/*spechars-dialog*/ +.edui-default .edui-for-spechars .edui-dialog-content { + width: 620px; + height: 500px; + *width: 630px; + *height: 570px; +} + +/*image-dialog*/ +.edui-default .edui-for-insertimage .edui-dialog-content { + width: 650px; + height: 400px; + overflow: hidden; +} +/*webapp-dialog*/ +.edui-default .edui-for-webapp .edui-dialog-content { + width: 560px; + _width: 565px; + height: 450px; + overflow: hidden; +} + +/*image-insertframe*/ +.edui-default .edui-for-insertframe .edui-dialog-content { + width: 350px; + height: 200px; + overflow: hidden; +} + +/*wordImage-dialog*/ +.edui-default .edui-for-wordimage .edui-dialog-content { + width: 620px; + height: 380px; + overflow: hidden; +} + +/*attachment-dialog*/ +.edui-default .edui-for-attachment .edui-dialog-content { + width: 650px; + height: 400px; + overflow: hidden; +} + + +/*map-dialog*/ +.edui-default .edui-for-map .edui-dialog-content { + width: 550px; + height: 400px; +} + +/*gmap-dialog*/ +.edui-default .edui-for-gmap .edui-dialog-content { + width: 550px; + height: 400px; +} + +/*video-dialog*/ +.edui-default .edui-for-insertvideo .edui-dialog-content { + width: 590px; + height: 390px; +} + +/*anchor-dialog*/ +.edui-default .edui-for-anchor .edui-dialog-content { + width: 320px; + height: 60px; + overflow: hidden; +} + +/*searchreplace-dialog*/ +.edui-default .edui-for-searchreplace .edui-dialog-content { + width: 400px; + height: 220px; +} + +/*help-dialog*/ +.edui-default .edui-for-help .edui-dialog-content { + width: 400px; + height: 420px; +} + +/*edittable-dialog*/ +.edui-default .edui-for-edittable .edui-dialog-content { + width: 540px; + _width:590px; + height: 335px; +} + +/*edittip-dialog*/ +.edui-default .edui-for-edittip .edui-dialog-content { + width: 225px; + height: 60px; +} + +/*edittd-dialog*/ +.edui-default .edui-for-edittd .edui-dialog-content { + width: 240px; + height: 50px; +} +/*snapscreen-dialog*/ +.edui-default .edui-for-snapscreen .edui-dialog-content { + width: 400px; + height: 220px; +} + +/*music-dialog*/ +.edui-default .edui-for-music .edui-dialog-content { + width: 515px; + height: 360px; +} + +/*段落弹出菜单*/ +.edui-default .edui-for-paragraph .edui-listitem-label { + font-family: Tahoma, Verdana, Arial, Helvetica; +} + +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-p { + font-size: 22px; + line-height: 27px; +} + +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h1 { + font-weight: bolder; + font-size: 32px; + line-height: 36px; +} + +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h2 { + font-weight: bolder; + font-size: 27px; + line-height: 29px; +} + +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h3 { + font-weight: bolder; + font-size: 19px; + line-height: 23px; +} + +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h4 { + font-weight: bolder; + font-size: 16px; + line-height: 19px +} + +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h5 { + font-weight: bolder; + font-size: 13px; + line-height: 16px; +} + +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h6 { + font-weight: bolder; + font-size: 12px; + line-height: 14px; +} +/* 表格弹出菜单 */ +.edui-default .edui-for-inserttable .edui-splitborder { + display: none +} +.edui-default .edui-for-inserttable .edui-splitbutton-body .edui-arrow { + width: 0 +} +.edui-default .edui-toolbar .edui-for-inserttable .edui-state-active .edui-splitborder{ + border-left: 1px solid transparent; +} +.edui-default .edui-tablepicker .edui-infoarea { + height: 14px; + line-height: 14px; + font-size: 12px; + width: 220px; + margin-bottom: 3px; + clear: both; +} + +.edui-default .edui-tablepicker .edui-infoarea .edui-label { + float: left; +} + +.edui-default .edui-dialog-buttons .edui-label { + line-height: 24px; +} + +.edui-default .edui-tablepicker .edui-infoarea .edui-clickable { + float: right; +} + +.edui-default .edui-tablepicker .edui-pickarea { + background: url("../images/unhighlighted.gif") repeat; + height: 220px; + width: 220px; +} + +.edui-default .edui-tablepicker .edui-pickarea .edui-overlay { + background: url("../images/highlighted.gif") repeat; +} + +/* 颜色弹出菜单 */ +.edui-default .edui-colorpicker-topbar { + height: 27px; + width: 200px; + /*border-bottom: 1px gray dashed;*/ +} + +.edui-default .edui-colorpicker-preview { + height: 20px; + border: 1px inset black; + margin-left: 1px; + width: 128px; + float: left; +} + +.edui-default .edui-colorpicker-nocolor { + float: right; + margin-right: 1px; + font-size: 12px; + line-height: 14px; + height: 14px; + border: 1px solid #333; + padding: 3px 5px; + cursor: pointer; +} + +.edui-default .edui-colorpicker-tablefirstrow { + height: 30px; +} + +.edui-default .edui-colorpicker-colorcell { + width: 14px; + height: 14px; + display: block; + margin: 0; + cursor: pointer; +} + +.edui-default .edui-colorpicker-colorcell:hover { + width: 14px; + height: 14px; + margin: 0; +} +.edui-default .edui-colorpicker-advbtn{ + display: block; + text-align: center; + cursor: pointer; + height:20px; +} +.arrow_down{ + background: white url('../images/arrow_down.png') no-repeat center; +} +.arrow_up{ + background: white url('../images/arrow_up.png') no-repeat center; +} +/*高级的样式*/ +.edui-colorpicker-adv{ + position: relative; + overflow: hidden; + height: 180px; + display: none; +} +.edui-colorpicker-plant, .edui-colorpicker-hue { + border: solid 1px #666; +} +.edui-colorpicker-pad { + width: 150px; + height: 150px; + left: 14px; + top: 13px; + position: absolute; + background: red; + overflow: hidden; + cursor: crosshair; +} +.edui-colorpicker-cover{ + position: absolute; + top: 0; + left: 0; + width: 150px; + height: 150px; + background: url("../images/tangram-colorpicker.png") -160px -200px; +} +.edui-colorpicker-padDot{ + position: absolute; + top: 0; + left: 0; + width: 11px; + height: 11px; + overflow: hidden; + background: url(../images/tangram-colorpicker.png) 0px -200px repeat-x; + z-index: 1000; + +} +.edui-colorpicker-sliderMain { + position: absolute; + left: 171px; + top: 13px; + width: 19px; + height: 152px; + background: url(../images/tangram-colorpicker.png) -179px -12px no-repeat; + +} +.edui-colorpicker-slider { + width: 100%; + height: 100%; + cursor: pointer; +} +.edui-colorpicker-thumb{ + position: absolute; + top: 0; + cursor: pointer; + height: 3px; + left: -1px; + right: -1px; + border: 1px solid black; + background: white; + opacity: .8; +} +/*自动排版弹出菜单*/ +.edui-default .edui-autotypesetpicker .edui-autotypesetpicker-body { + font-size: 12px; + margin-bottom: 3px; + clear: both; +} + +.edui-default .edui-autotypesetpicker-body table { + border-collapse: separate; + border-spacing: 2px; +} + +.edui-default .edui-autotypesetpicker-body td { + font-size: 12px; + word-wrap:break-word; +} + +.edui-default .edui-autotypesetpicker-body td input { + margin: 3px 3px 3px 4px; + *margin: 1px 0 0 0; +} +/*自动排版弹出菜单*/ +.edui-default .edui-cellalignpicker .edui-cellalignpicker-body { + width: 70px; + font-size: 12px; + cursor: default; +} + +.edui-default .edui-cellalignpicker-body table { + border-collapse: separate; + border-spacing: 0; +} +.edui-default .edui-cellalignpicker-body td{ + padding: 1px; +} +.edui-default .edui-cellalignpicker-body .edui-icon{ + height: 20px; + width: 20px; + padding: 1px; + background-image: url(../images/table-cell-align.png); +} + +.edui-default .edui-cellalignpicker-body .edui-left{ + background-position: 0 0; +} + +.edui-default .edui-cellalignpicker-body .edui-center{ + background-position: -25px 0; +} +.edui-default .edui-cellalignpicker-body .edui-right{ + background-position: -51px 0; +} + +.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-left{ + background-position: -73px 0; +} + +.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-center{ + background-position: -98px 0; +} + +.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-right{ + background-position: -124px 0; +} + +.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-left { + background-position: -146px 0; + background-color: #f1f4f5; +} + +.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-center { + background-position: -245px 0; +} + +.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-right { + background-position: -271px 0; +} +/*分隔线*/ +.edui-default .edui-toolbar .edui-separator { + width: 2px; + height: 20px; + margin: 2px 4px 2px 3px; + background: url(../images/icons.png) -181px 0; + background: url(../images/icons.gif) -181px 0 \9; +} + +/*颜色按钮 */ +.edui-default .edui-toolbar .edui-colorbutton .edui-colorlump { + position: absolute; + overflow: hidden; + bottom: 1px; + left: 1px; + width: 18px; + height: 4px; +} +/*表情按钮及弹出菜单*/ +/*去除了表情的下拉箭头*/ +.edui-default .edui-for-emotion .edui-icon { + background-position: -60px -20px; +} +.edui-default .edui-for-emotion .edui-popup-content iframe +{ + width: 514px; + height: 380px; + overflow: hidden; +} +.edui-default .edui-for-emotion .edui-popup-content +{ + position: relative; + z-index: 555 +} + +.edui-default .edui-for-emotion .edui-splitborder { + display: none +} + +.edui-default .edui-for-emotion .edui-splitbutton-body .edui-arrow +{ + width: 0 +} +.edui-default .edui-toolbar .edui-for-emotion .edui-state-active .edui-splitborder +{ + border-left: 1px solid transparent; +} +/*contextmenu*/ +.edui-default .edui-hassubmenu .edui-arrow { + height: 20px; + width: 20px; + float: right; + background: url("../images/icons-all.gif") no-repeat 10px -233px; +} + +.edui-default .edui-menu-body .edui-menuitem { + padding: 1px; +} + +.edui-default .edui-menuseparator { + margin: 2px 0; + height: 1px; + overflow: hidden; +} + +.edui-default .edui-menuseparator-inner { + border-bottom: 1px solid #e2e3e3; + margin-left: 29px; + margin-right: 1px; +} + +.edui-default .edui-menu-body .edui-state-hover { + padding: 0 !important; + background-color: #fff5d4; + border: 1px solid #dcac6c; +} +/*弹出菜单*/ +.edui-default .edui-shortcutmenu { + padding: 2px; + width: 190px; + height: 50px; + background-color: #fff; + border: 1px solid #ccc; + border-radius: 5px; +} + +/*粘贴弹出菜单*/ +.edui-default .edui-wordpastepop .edui-popup-content{ + border: none; + padding: 0; + width: 54px; + height: 21px; +} +.edui-default .edui-pasteicon { + width: 100%; + height: 100%; + background-image: url('../images/wordpaste.png'); + background-position: 0 0; +} + +.edui-default .edui-pasteicon.edui-state-opened { + background-position: 0 -34px; +} + +.edui-default .edui-pastecontainer { + position: relative; + visibility: hidden; + width: 97px; + background: #fff; + border: 1px solid #ccc; +} + +.edui-default .edui-pastecontainer .edui-title { + font-weight: bold; + background: #F8F8FF; + height: 25px; + line-height: 25px; + font-size: 12px; + padding-left: 5px; +} + +.edui-default .edui-pastecontainer .edui-button { + overflow: hidden; + margin: 3px 0; +} + +.edui-default .edui-pastecontainer .edui-button .edui-richtxticon, +.edui-default .edui-pastecontainer .edui-button .edui-tagicon, +.edui-default .edui-pastecontainer .edui-button .edui-plaintxticon{ + float: left; + cursor: pointer; + width: 29px; + height: 29px; + margin-left: 5px; + background-image: url('../images/wordpaste.png'); + background-repeat: no-repeat; +} +.edui-default .edui-pastecontainer .edui-button .edui-richtxticon { + margin-left: 0; + background-position: -109px 0; +} +.edui-default .edui-pastecontainer .edui-button .edui-tagicon { + background-position: -148px 1px; +} + +.edui-default .edui-pastecontainer .edui-button .edui-plaintxticon { + background-position: -72px 0; +} + +.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-richtxticon { + background-position: -109px -34px; +} +.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-tagicon{ + background-position: -148px -34px; +} +.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-plaintxticon{ + background-position: -72px -34px; +} \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/arrow.png b/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..d9008866ba56c4a4715a3f883ccb3be941031206 GIT binary patch literal 1173 zcmd^<>ra{o6vp4_np&fqGg-1;GP^BJO_p_?A6nLIYwB=H*Qp>A8nZf?fNnCY(uvZL zYMq5r=M|ASom0_?Sn7~VE3B<^mcq1BrHIr9EGW>Ifm~m?y<>mJPIAsKPjWszPx7z| z^K(;^4e+i)B*?S*guTS?B+Vho2 z`WG1Kuclp>qR!nSa-c>gf6E3&1HPK$>6qGXeOCp%qBL8aEd$S;?m%#@0uH|roliGe zy#i~1E?Ad#U1t}6uwt+qqgIm=xY8r0F*7 zl{ZWo1&^Wcj_roRaNKw0cq|%;M#7eRWh<*7;!rva!w3Wdg+kTSXqlOr3+!(Y+UH1c!M>bUYK1<=lG*1pq%m&P~1QC>Rx($IJPWjnN zpR&G{Rq^JvgludxnIl{D8LgfGe-+MHCcM_UcHp8Td8VLE6B~29!k7r659<2nKp^Fl zj!GszzF7d5gy6DP@ZR1H93XOu{-OI@l6&5C>BJ*|uw%klayELyqgg z(1r2VJa0I-7Tj#n#oR8}RJ&g+`2!5Q8%of3mwZ1ylT{6m^cuZ3bEx<+w~3H6c=s2I zHqmMPM&{IH<=Icl=QPsL@wWkIaQ9;d5!{KiwDTAp6ANhcA|rcd_*y;vPo-D@#WUD8 zxj?H-u8_-Qb;^#oX{dywAOO4sP%-&Maru89peVTaNW45UP{=b_+ByMxH6aCa_?|l> lFG7akQpaiL%L!NFwXt25X8cm0x*UH6P&xU?o7rDC{|kH`9-#mL literal 0 HcmV?d00001 diff --git a/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/arrow_down.png b/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/arrow_down.png new file mode 100644 index 0000000000000000000000000000000000000000..e9257e83b00375259f2f724c7cbac03d0df5ceb2 GIT binary patch literal 1610 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cW`)d{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v&`mZlGf*%y)H5_T zF*i5YQ7|$vG|)FN(l<2HH8i&}HnK7>P=Ep@plwAdX;wilZcw{`JX@uVl9B=|ef{$C za=mh6z5JqdeM3u2OOP2xM!G;1y2X`wC5aWfdBw^w6I@b@lZ!G7N;32F6hI~>Cgqow z*eU^C3h_d20o>TUVrVb{15Cdnu|VHY&j92lm_lD){7Q3k;i`*Ef>IIg#cFVINM%8) zeo$(0erZuMFyhjbK~@!5ITxiSmgEG&eP`1g19yq1OegIswNQ-xSi<4Z1u2!m4XhFqBbF8wG<_`!+|HhuxMFc&SLMF{7Z@fVvH$#8 ze|mSH#FSX^%>h00S4ci?>YufC3b$>be$N&e)g9;i=5%xkTh1s~5&sk~hpZURp;Qa?iE^5gq z0+?2AoO*aq`+eIDGp&3MoLz0RPBnf@mZEj!Y0cZVUxN2^iyZs(a?eI%oljxTtdUFo z4zJtT6vh6mc<(8@dEybWbJNr%Pc%*VvF}gIi|llP_mw#+z3j zapfmJXkU5iJgMMaq6;%eEr0F`fv2A$yk@Z1O`YMLW4b!$#En-43)(gNwO&tIE1$YR z{=f_5V<-h{r;w^f@VvOcJ`XH-Laf=HZ$7pE8y$b zea|FcbA8_y&V4&;c0EYAF6z7Uq;gWX%!S@_GP~BiYk9@S9hp{rSmuZc`!rX#z78?b z>^=VrHI}o6**U$5wKDVU&pfZEJI56Y zoT$4mvucV;+x1h4)@uJZd{#I=XN5ldnP;uVH#)aA-sLj_f6xsvx)X=xc_v2 z@-mt-`NgS3hTn0)cfZMswpSgNlI1YlD$F(+3=d#Wzp$P!&XKAJY literal 0 HcmV?d00001 diff --git a/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/arrow_up.png b/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/arrow_up.png new file mode 100644 index 0000000000000000000000000000000000000000..74277af1e6a8ef91f8fe664efde11377a5292dbc GIT binary patch literal 1649 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2c=9J8kh>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v&`mZlGf*%y)H5_T zF*i5YQ7|$vG|)FN(l<2HH8i&}HnK7>P=Ep@plwAdX;wilZcw{`JX@uVl9B=|ef{$C za=mh6z5JqdeM3u2OOP2xM!G;1y2X`wC5aWfdBw^w6I@b@lZ!G7N;32F6hI~>Cgqow z*eU^C3h_d2fv+#z;JjjJKmmhHzap_f-%!s$KQ|ZTFR<$3lAu(CGq9>I4yi0i)elN7 z&Mz%W2F6F4GE6ft?C@IzQV4X7m48ttFj5k8T=J7kb5rw5JY8&+fHHb1nJHGr&Zcf= zZpLmdj^@s;MuvtK&X$(07A9_{2F`9K1|}9TGqCA(Gj?@#HgIt=cQbG_G;}qxFf=l- zbaON}GPN)@wKR5t>GjMjE=kNwPKDW<3A7ig*AcH?E9aur#FG4?ko^1{SPBTp$S=t+ z&d4uNa1J(A2+zz*$uBPkMGnNTE~!PCWvMA{Mftf3;Lx?o#9}*PUqke!kP~A1K*#8V zk_J*zfe8WAABYK0_&^Rk>!juZ^GgvhW0Y{Wv@$R-E%tPA45_#^WvZ{gh@(K;>Z+== zX-At4KPH3-+4r@v2}X8*AN$Mh@OiHNYs3&%QbHW!0`#zh1`9tBzYV@8G#Wg&l2-#)h$FUdfE_lvm%b2=kt^Ebzn( zr(4oF%+7xg2Te=y(fqh}+AK?Nt8-e6Vo~YWrY1FhH}uX($oOv&HCTs__< zzEdCca~LbgR5%PtJYh=3FjGRGp=cUaJC^c^yU)Zr^k2P zlm5xRG;W0~lefT@)ERLuic?K4bNlUNS|KodrrwHIUNWEc`M1i>U^rI0VS1uR{)PLi zihmWG2&`Lpzrjh}nD@mILlb2Uhtt|CHp`N!r`KF5c$VaRcJZF}LJe(& zwV}p~KZGbP@?1Z4Mc+d4`MOQrYgSe4X#ZDh+%|1dL)h$@nv3?ZH`~Z?rV3X7(F@K> zb+Z2u>#VllaHj5&E!~}`b21Ja)w^fT&+2mzy!OR_pE1^}_1<=w+EA5Nm$Hp%M~^AK zU)Z92;jd=Sl<1n3x7z+*ci#Wo(IT=)J{K*+Q?C!N1MD&Sbd le02W-shBsPKJ+s%GgK)^wA}p_d>&K@c)I$ztaD0e0svXmV!r?Y literal 0 HcmV?d00001 diff --git a/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/button-bg.gif b/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/button-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..ec7fa2eabf0705226fe0c488d65198508bf547e9 GIT binary patch literal 1114 zcmV-g1f}~&Nk%w1VKM+R0OkMy00030|Nr{?`~Uyg|Nq+c_4NPz*Z=(3`t{5D_RRV9 z%lr1t{P@xN^27S{$occg`t-~D_Rjb6(E0Jf`t!&5^V9k7zxnUL`S8H{@x=P_$@uNP z`0c*=@5lM`q&aU|6w)f(-(ZHJcKyq);w!1v|A_vOL(=ELpXz3||{+03)&lq#;^N`q z;o#ul-{0Tf-rm~U+Sk|D(9qET|Nj6000000000000000000000A^8LW004OaEC2ui z05SkF000O7fO%_oc!h?Ch>41ei+5{zWp`--l$Dm3n3+> zsF_HyqQ#3CGiszrN8-khAVaF@xTd7ZlPFWFT*=ZTojPn{%A85Frp=o;W!90Hv!~CW zBj>nb)267=qezn~UCPvr&^vA(N|o9Msu?(T?r7c0wX4^!V8PmfVC>oFmqw6)fdnp04j^zqp|u`Sa-0r=OsK#f}aaILMz*zrOwZ z`0-!pup>tY5FP|5;D7`cXyAbdg3v(@I*72r2M|Um;e-@cXrYB0h@gWGA&@Y_haiS1 z;)o=cSRx4_Z1{o+CA8?`i!jD0v_{FvJiptdPRD zl1w(~KIEzAo_zM{=bwE7aRU-l5Rn8GGXU|#qKr1`=%bKE+9(h+P>}@@TWDd06i{^P z>8GHED(a}AN@0Z-TXdns6;*su#jCK!D(kGY)*7p;S18d%0YNN*1r}fgE9|hu7HjOW g!~VKN5CsU(L=jFzEA6z@R%`9G*G3VB0D%AiJBq`ncK`qY literal 0 HcmV?d00001 diff --git a/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/charts.png b/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/charts.png new file mode 100644 index 0000000000000000000000000000000000000000..713965cc4c6971759c80a52290ddef9ab32776b6 GIT binary patch literal 518 zcmV+h0{Q)kP)C>_-)j6kG zmZ@`2opZWct<*WE%jHsMvsp;f^!~Ol**?^DO`hifs44&=f~umb34Y07v! zehXl>0V0C67HciWn4KjeEEWr@sxtk4|8?WtNwEFcm{Yc@Vy$H`7@(^3dc70h4xmY} zPa;B+{C!@Q<^CQRW6lMfrwb>zFkriOfWsf}arIZ0*)jKSzW9HD4>|2i1+FOg^6oL0 zuMGL+PHkt#*vvh~NQ@CxMMM#xZ40h-e^cjfe*)md?7iRY1HqRBjSwR0J%@RRXP>@> zkKcbjGFwIi5M!jSYpSZEsw%t>6uuy+C;C8K=M*aB-KzlIq|@mbYi)bIUbpA-`I#n_ zWy#v)_!v+R^=b{kGLNXLO{}#BFq6sTxvIY0l+`3NPhQ=Ac;nXf2W4IstBgcUD^b-d zJ3eY@@JRF1!NCEoR?7f{5J-}wDJcQkB4Re+sH#y!e2lU916r{A&pdHrm;e9(07*qo IM6N<$g2apNRsaA1 literal 0 HcmV?d00001 diff --git a/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/cursor_h.gif b/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/cursor_h.gif new file mode 100644 index 0000000000000000000000000000000000000000..d7c3e7e9eb5755d57ec03c34097c258244abe61a GIT binary patch literal 253 zcmVG|6H_V+Po~-c6$N^_IEGZ*Iy1qOk3oThS@Yxn_+t|0*P6|%n+#L~Iyf|E zrg84hNMwpx9_!-6|BEHhl_}FHLcZHi@xo+A>tN1bvzr~8Z#Ex)a8Qdkef% WRW|>PuXh3sXYh3Ob6Mw<&;$VH);Gui literal 0 HcmV?d00001 diff --git a/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/icons.gif b/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/icons.gif new file mode 100644 index 0000000000000000000000000000000000000000..7abd30a1c6516cda6376f335902e3cadbae64c89 GIT binary patch literal 20947 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 b4O*493C(v}$CrKE*L~j?e&ctU0s;U#>#h02 literal 0 HcmV?d00001 diff --git a/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/loaderror.png b/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/loaderror.png new file mode 100644 index 0000000000000000000000000000000000000000..35ff3336457d48dbecbc11698ef8245441a94f82 GIT binary patch literal 3209 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/loading.gif b/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..b713e27dfba708a01c380e7c731a13b52a34edfc GIT binary patch literal 734 zcmZ?wbhEHb6krfw*v!jdZ*RYU|9&kkt+4ULFya6I z{|pQa5E95x{Lk&@8WQa67~pE8XTZz|68g!)$-uzNpaWzB4HaNuV6okB(sT7*i`QqX zc^L!>4t!=<(wVp51?zD`Kkg=-D~S>;skcR%7#$omMC>21xN*pcHs0c0tRNsF(;}SM ziPc1Fu!&|20tT$-nJa`fCQUjv@kC+C3!quI1U@ISvoqf2Xk|(i=IUl?N@{e_G3Yq3 z;U-H^uFrB+CTuRW+i+5nfx|fagWLs?!jQY{X6=arU0riqs^&x$2`7X};t z37RYmQ;O#*G6uOVn*=nAm7~Q)&(!ybaj}oz`WtJ?PQSHN#^y?3ICf5PGS1Ha8pE+k zgJmJh5y6y1=@^y-ft=a0ZG|ZdPArq?H(+2`(;|7`F{6Xpbl>GI8B?M_My|#ljzAN4 z3Pb@-+?qdUsm6)xA>j@^Y0K7lSt}-Mopvo#qQ-sCkLXFkyF zSLvgkf4d8-w;?feL$4)lp3HYoMI*E5@=0AueT*09aVgICcu;r3k!5-F!GZ%U3=K0F z9S$(a^)KPCsC4r`z65*B*uc`x?)kvPGDl;Yns{Fj0|R3#FisfHGY4!D^0$zEANLt@XPdKI8X22WQ%mvv4FO#q2N BK}7%n literal 0 HcmV?d00001 diff --git a/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/sortable.png b/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/sortable.png new file mode 100644 index 0000000000000000000000000000000000000000..1bca649698e187a80e1b1951fde99ddea3d7b038 GIT binary patch literal 2851 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 BXOsW{ literal 0 HcmV?d00001 diff --git a/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/sparator_v.png b/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/sparator_v.png new file mode 100644 index 0000000000000000000000000000000000000000..8cf5662da8c36a446e1e08eb71b992c730ab8d15 GIT binary patch literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^OhC-Y0V1m%Ufcz7ii6yp7}lMWc?smOq&xaLGB9lH z=l+w(3gmMZctjR6Fz_7)VaDV6D^h@h{GKk3Arj%q6<>aQ{Qv(yqp%0-vU7cb$AD4{ Mp00i_>zopr0ET%XRR910 literal 0 HcmV?d00001 diff --git a/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/table-cell-align.png b/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/default/images/table-cell-align.png new file mode 100644 index 0000000000000000000000000000000000000000..ddf42853ea5c00663e74d9195d1f1264ab684252 GIT binary patch literal 1847 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 O0000>pWt14jMv{auoz~;1SCV+kTN8O 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 bp?H9uNI6(~=EJQ&zcn<}bW|&qZNmQtXU+rA literal 0 HcmV?d00001 diff --git a/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/iframe.css b/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/iframe.css new file mode 100644 index 0000000..774013a --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/themes/iframe.css @@ -0,0 +1 @@ +/*可以在这里添加你自己的css*/ diff --git a/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/third-party/jquery-1.10.2.min.js b/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/third-party/jquery-1.10.2.min.js new file mode 100644 index 0000000..da41706 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/third-party/jquery-1.10.2.min.js @@ -0,0 +1,6 @@ +/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license +//@ sourceMappingURL=jquery-1.10.2.min.map +*/ +(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="
    ",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="
    ","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="
    a",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="
    t
    ",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="
    ",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t +}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/\s*$/g,At={option:[1,""],legend:[1,"
    ","
    "],area:[1,"",""],param:[1,"",""],thead:[1,"","
    "],tr:[2,"","
    "],col:[2,"","
    "],td:[3,"","
    "],_default:x.support.htmlSerialize?[0,"",""]:[1,"X
    ","
    "]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?""!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle); +u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("';wrapper.className="edui-"+me.options.theme;wrapper.id=me.ui.id+"_iframeupload";btnIframeBody.style.cssText=btnStyle;btnIframeBody.style.width=w+"px";btnIframeBody.style.height=h+"px";btnIframeBody.appendChild(wrapper);if(btnIframeBody.parentNode){btnIframeBody.parentNode.style.width=w+"px";btnIframeBody.parentNode.style.height=w+"px"}var form=btnIframeDoc.getElementById("edui_form_"+timestrap);var input=btnIframeDoc.getElementById("edui_input_"+timestrap);var iframe=btnIframeDoc.getElementById("edui_iframe_"+timestrap);domUtils.on(input,"change",function(){if(!input.value)return;var loadingId="loading_"+(+new Date).toString(36);var params=utils.serializeParam(me.queryCommandValue("serverparam"))||"";var imageActionUrl=me.getActionUrl(me.getOpt("imageActionName"));var allowFiles=me.getOpt("imageAllowFiles");me.focus();me.execCommand("inserthtml",'');function callback(){try{var link,json,loader,body=(iframe.contentDocument||iframe.contentWindow.document).body,result=body.innerText||body.textContent||"";json=new Function("return "+result)();link=me.options.imageUrlPrefix+json.url;if(json.state=="SUCCESS"&&json.url){loader=me.document.getElementById(loadingId);loader.setAttribute("src",link);loader.setAttribute("_src",link);loader.setAttribute("title",json.title||"");loader.setAttribute("alt",json.original||"");loader.removeAttribute("id");domUtils.removeClasses(loader,"loadingclass")}else{showErrorLoader&&showErrorLoader(json.state)}}catch(er){showErrorLoader&&showErrorLoader(me.getLang("simpleupload.loadError"))}form.reset();domUtils.un(iframe,"load",callback)}function showErrorLoader(title){if(loadingId){var loader=me.document.getElementById(loadingId);loader&&domUtils.remove(loader);me.fireEvent("showmessage",{id:loadingId,content:title,type:"error",timeout:4e3})}}if(!me.getOpt("imageActionName")){errorHandler(me.getLang("autoupload.errorLoadConfig"));return}var filename=input.value,fileext=filename?filename.substr(filename.lastIndexOf(".")):"";if(!fileext||allowFiles&&(allowFiles.join("")+".").indexOf(fileext.toLowerCase()+".")==-1){showErrorLoader(me.getLang("simpleupload.exceedTypeError"));return}domUtils.on(iframe,"load",callback);form.action=utils.formatUrl(imageActionUrl+(imageActionUrl.indexOf("?")==-1?"?":"&")+params);form.submit()});var stateTimer;me.addListener("selectionchange",function(){clearTimeout(stateTimer);stateTimer=setTimeout(function(){var state=me.queryCommandState("simpleupload");if(state==-1){input.disabled="disabled"}else{input.disabled=false}},400)});isLoaded=true});btnIframe.style.cssText=btnStyle;containerBtn.appendChild(btnIframe)}return{bindEvents:{ready:function(){utils.cssRule("loading",".loadingclass{display:inline-block;cursor:default;background: url('"+this.options.themePath+this.options.theme+"/images/loading.gif') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;}\n"+".loaderrorclass{display:inline-block;cursor:default;background: url('"+this.options.themePath+this.options.theme+"/images/loaderror.png') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;"+"}",this.document)},simpleuploadbtnready:function(type,container){containerBtn=container;me.afterConfigReady(initUploadBtn)}},outputRule:function(root){utils.each(root.getNodesByTagName("img"),function(n){if(/\b(loaderrorclass)|(bloaderrorclass)\b/.test(n.getAttr("class"))){n.parentNode.removeChild(n)}})},commands:{simpleupload:{queryCommandState:function(){return isLoaded?0:-1}}}}});UE.plugin.register("serverparam",function(){var me=this,serverParam={};return{commands:{serverparam:{execCommand:function(cmd,key,value){if(key===undefined||key===null){serverParam={}}else if(utils.isString(key)){if(value===undefined||value===null){delete serverParam[key]}else{serverParam[key]=value}}else if(utils.isObject(key)){utils.extend(serverParam,key,true)}else if(utils.isFunction(key)){utils.extend(serverParam,key(),true)}},queryCommandValue:function(){return serverParam||{}}}}}});var baidu=baidu||{};baidu.editor=baidu.editor||{};UE.ui=baidu.editor.ui={};!function(){var browser=baidu.editor.browser,domUtils=baidu.editor.dom.domUtils;var magic="$EDITORUI";var root=window[magic]={};var uidMagic="ID"+magic;var uidCount=0;var uiUtils=baidu.editor.ui.uiUtils={uid:function(obj){return obj?obj[uidMagic]||(obj[uidMagic]=++uidCount):++uidCount},hook:function(fn,callback){var dg;if(fn&&fn._callbacks){dg=fn}else{dg=function(){var q;if(fn){q=fn.apply(this,arguments)}var callbacks=dg._callbacks;var k=callbacks.length;while(k--){var r=callbacks[k].apply(this,arguments);if(q===undefined){q=r}}return q};dg._callbacks=[]}dg._callbacks.push(callback);return dg},createElementByHtml:function(html){var el=document.createElement("div");el.innerHTML=html;el=el.firstChild;el.parentNode.removeChild(el);return el},getViewportElement:function(){return browser.ie&&browser.quirks?document.body:document.documentElement},getClientRect:function(element){var bcr;try{bcr=element.getBoundingClientRect()}catch(e){bcr={left:0,top:0,height:0,width:0}}var rect={left:Math.round(bcr.left),top:Math.round(bcr.top),height:Math.round(bcr.bottom-bcr.top),width:Math.round(bcr.right-bcr.left)};var doc;while((doc=element.ownerDocument)!==document&&(element=domUtils.getWindow(doc).frameElement)){bcr=element.getBoundingClientRect();rect.left+=bcr.left;rect.top+=bcr.top}rect.bottom=rect.top+rect.height;rect.right=rect.left+rect.width;return rect},getViewportRect:function(){var viewportEl=uiUtils.getViewportElement();var width=(window.innerWidth||viewportEl.clientWidth)|0;var height=(window.innerHeight||viewportEl.clientHeight)|0;return{left:0,top:0,height:height,width:width,bottom:height,right:width}},setViewportOffset:function(element,offset){var rect;var fixedLayer=uiUtils.getFixedLayer();if(element.parentNode===fixedLayer){element.style.left=offset.left+"px";element.style.top=offset.top+"px"}else{domUtils.setViewportOffset(element,offset)}},getEventOffset:function(evt){var el=evt.target||evt.srcElement;var rect=uiUtils.getClientRect(el);var offset=uiUtils.getViewportOffsetByEvent(evt);return{left:offset.left-rect.left,top:offset.top-rect.top}},getViewportOffsetByEvent:function(evt){var el=evt.target||evt.srcElement;var frameEl=domUtils.getWindow(el).frameElement;var offset={left:evt.clientX,top:evt.clientY};if(frameEl&&el.ownerDocument!==document){var rect=uiUtils.getClientRect(frameEl);offset.left+=rect.left;offset.top+=rect.top}return offset},setGlobal:function(id,obj){root[id]=obj;return magic+'["'+id+'"]'},unsetGlobal:function(id){delete root[id]},copyAttributes:function(tgt,src){var attributes=src.attributes;var k=attributes.length;while(k--){var attrNode=attributes[k];if(attrNode.nodeName!="style"&&attrNode.nodeName!="class"&&(!browser.ie||attrNode.specified)){tgt.setAttribute(attrNode.nodeName,attrNode.nodeValue)}}if(src.className){domUtils.addClass(tgt,src.className)}if(src.style.cssText){tgt.style.cssText+=";"+src.style.cssText}},removeStyle:function(el,styleName){if(el.style.removeProperty){el.style.removeProperty(styleName)}else if(el.style.removeAttribute){el.style.removeAttribute(styleName)}else throw""},contains:function(elA,elB){return elA&&elB&&(elA===elB?false:elA.contains?elA.contains(elB):elA.compareDocumentPosition(elB)&16)},startDrag:function(evt,callbacks,doc){var doc=doc||document;var startX=evt.clientX;var startY=evt.clientY;function handleMouseMove(evt){var x=evt.clientX-startX;var y=evt.clientY-startY;callbacks.ondragmove(x,y,evt);if(evt.stopPropagation){evt.stopPropagation()}else{evt.cancelBubble=true}}if(doc.addEventListener){function handleMouseUp(evt){doc.removeEventListener("mousemove",handleMouseMove,true);doc.removeEventListener("mouseup",handleMouseUp,true);window.removeEventListener("mouseup",handleMouseUp,true);callbacks.ondragstop()}doc.addEventListener("mousemove",handleMouseMove,true);doc.addEventListener("mouseup",handleMouseUp,true);window.addEventListener("mouseup",handleMouseUp,true);evt.preventDefault()}else{var elm=evt.srcElement;elm.setCapture();function releaseCaptrue(){elm.releaseCapture();elm.detachEvent("onmousemove",handleMouseMove);elm.detachEvent("onmouseup",releaseCaptrue);elm.detachEvent("onlosecaptrue",releaseCaptrue);callbacks.ondragstop()}elm.attachEvent("onmousemove",handleMouseMove);elm.attachEvent("onmouseup",releaseCaptrue);elm.attachEvent("onlosecaptrue",releaseCaptrue);evt.returnValue=false}callbacks.ondragstart()},getFixedLayer:function(){var layer=document.getElementById("edui_fixedlayer");if(layer==null){layer=document.createElement("div");layer.id="edui_fixedlayer";document.body.appendChild(layer);if(browser.ie&&browser.version<=8){layer.style.position="absolute";bindFixedLayer();setTimeout(updateFixedOffset)}else{layer.style.position="fixed"}layer.style.left="0";layer.style.top="0";layer.style.width="0";layer.style.height="0"}return layer},makeUnselectable:function(element){if(browser.opera||browser.ie&&browser.version<9){element.unselectable="on";if(element.hasChildNodes()){for(var i=0;i'}};utils.inherits(Separator,UIBase)}();!function(){var utils=baidu.editor.utils,domUtils=baidu.editor.dom.domUtils,UIBase=baidu.editor.ui.UIBase,uiUtils=baidu.editor.ui.uiUtils;var Mask=baidu.editor.ui.Mask=function(options){this.initOptions(options);this.initUIBase()};Mask.prototype={getHtmlTpl:function(){return'
    '},postRender:function(){var me=this;domUtils.on(window,"resize",function(){setTimeout(function(){if(!me.isHidden()){me._fill()}})})},show:function(zIndex){this._fill();this.getDom().style.display="";this.getDom().style.zIndex=zIndex},hide:function(){this.getDom().style.display="none";this.getDom().style.zIndex=""},isHidden:function(){return this.getDom().style.display=="none"},_onMouseDown:function(){return false},_onClick:function(e,target){this.fireEvent("click",e,target)},_fill:function(){var el=this.getDom();var vpRect=uiUtils.getViewportRect();el.style.width=vpRect.width+"px";el.style.height=vpRect.height+"px"}};utils.inherits(Mask,UIBase)}();!function(){var utils=baidu.editor.utils,uiUtils=baidu.editor.ui.uiUtils,domUtils=baidu.editor.dom.domUtils,UIBase=baidu.editor.ui.UIBase,Popup=baidu.editor.ui.Popup=function(options){this.initOptions(options);this.initPopup()};var allPopups=[];function closeAllPopup(evt,el){for(var i=0;i'+'
    '+' '+'
    '+'
    '+this.getContentHtmlTpl()+"
    "+"
    "+""},getContentHtmlTpl:function(){if(this.content){if(typeof this.content=="string"){return this.content}return this.content.renderHtml()}else{return""}},_UIBase_postRender:UIBase.prototype.postRender,postRender:function(){if(this.content instanceof UIBase){this.content.postRender()}if(this.captureWheel&&!this.captured){this.captured=true;var winHeight=(document.documentElement.clientHeight||document.body.clientHeight)-80,_height=this.getDom().offsetHeight,_top=uiUtils.getClientRect(this.combox.getDom()).top,content=this.getDom("content"),ifr=this.getDom("body").getElementsByTagName("iframe"),me=this;ifr.length&&(ifr=ifr[0]);while(_top+_height>winHeight){_height-=30}content.style.height=_height+"px";ifr&&(ifr.style.height=_height+"px");if(window.XMLHttpRequest){domUtils.on(content,"onmousewheel"in document.body?"mousewheel":"DOMMouseScroll",function(e){if(e.preventDefault){e.preventDefault()}else{e.returnValue=false}if(e.wheelDelta){content.scrollTop-=e.wheelDelta/120*60}else{content.scrollTop-=e.detail/-3*60}})}else{domUtils.on(this.getDom(),"mousewheel",function(e){e.returnValue=false;me.getDom("content").scrollTop-=e.wheelDelta/120*60})}}this.fireEvent("postRenderAfter");this.hide(true);this._UIBase_postRender()},_doAutoRender:function(){if(!this.getDom()&&this.autoRender){this.render()}},mesureSize:function(){var box=this.getDom("content");return uiUtils.getClientRect(box)},fitSize:function(){if(this.captureWheel&&this.sized){return this.__size}this.sized=true;var popBodyEl=this.getDom("body");popBodyEl.style.width="";popBodyEl.style.height="";var size=this.mesureSize();if(this.captureWheel){popBodyEl.style.width=-(-20-size.width)+"px";var height=parseInt(this.getDom("content").style.height,10);!window.isNaN(height)&&(size.height=height)}else{popBodyEl.style.width=size.width+"px"}popBodyEl.style.height=size.height+"px";this.__size=size;this.captureWheel&&(this.getDom("content").style.overflow="auto");return size},showAnchor:function(element,hoz){this.showAnchorRect(uiUtils.getClientRect(element),hoz)},showAnchorRect:function(rect,hoz,adj){this._doAutoRender();var vpRect=uiUtils.getViewportRect();this.getDom().style.visibility="hidden";this._show();var popSize=this.fitSize();var sideLeft,sideUp,left,top;if(hoz){sideLeft=this.canSideLeft&&rect.right+popSize.width>vpRect.right&&rect.left>popSize.width;sideUp=this.canSideUp&&rect.top+popSize.height>vpRect.bottom&&rect.bottom>popSize.height;left=sideLeft?rect.left-popSize.width:rect.right;top=sideUp?rect.bottom-popSize.height:rect.top}else{sideLeft=this.canSideLeft&&rect.right+popSize.width>vpRect.right&&rect.left>popSize.width;sideUp=this.canSideUp&&rect.top+popSize.height>vpRect.bottom&&rect.bottom>popSize.height;left=sideLeft?rect.right-popSize.width:rect.left;top=sideUp?rect.top-popSize.height:rect.bottom}var popEl=this.getDom();uiUtils.setViewportOffset(popEl,{left:left,top:top});domUtils.removeClasses(popEl,ANCHOR_CLASSES);popEl.className+=" "+ANCHOR_CLASSES[(sideUp?1:0)*2+(sideLeft?1:0)];if(this.editor){popEl.style.zIndex=this.editor.container.style.zIndex*1+10;baidu.editor.ui.uiUtils.getFixedLayer().style.zIndex=popEl.style.zIndex-1}this.getDom().style.visibility="visible"},showAt:function(offset){var left=offset.left;var top=offset.top;var rect={left:left,top:top,right:left,bottom:top,height:0,width:0};this.showAnchorRect(rect,false,true) +},_show:function(){if(this._hidden){var box=this.getDom();box.style.display="";this._hidden=false;this.fireEvent("show")}},isHidden:function(){return this._hidden},show:function(){this._doAutoRender();this._show()},hide:function(notNofity){if(!this._hidden&&this.getDom()){this.getDom().style.display="none";this._hidden=true;if(!notNofity){this.fireEvent("hide")}}},queryAutoHide:function(el){return!el||!uiUtils.contains(this.getDom(),el)}};utils.inherits(Popup,UIBase);domUtils.on(document,"mousedown",function(evt){var el=evt.target||evt.srcElement;closeAllPopup(evt,el)});domUtils.on(window,"scroll",function(evt,el){closeAllPopup(evt,el)})}();!function(){var utils=baidu.editor.utils,UIBase=baidu.editor.ui.UIBase,ColorPicker=baidu.editor.ui.ColorPicker=function(options){this.initOptions(options);this.noColorText=this.noColorText||this.editor.getLang("clearColor");this.initUIBase()};ColorPicker.prototype={getHtmlTpl:function(){return genColorPicker(this.noColorText,this.editor)},_onTableClick:function(evt){var tgt=evt.target||evt.srcElement;var color=tgt.getAttribute("data-color");if(color){this.fireEvent("pickcolor",color)}},_onTableOver:function(evt){var tgt=evt.target||evt.srcElement;var color=tgt.getAttribute("data-color");if(color){this.getDom("preview").style.backgroundColor=color}},_onTableOut:function(){this.getDom("preview").style.backgroundColor=""},_onPickNoColor:function(){this.fireEvent("picknocolor")}};utils.inherits(ColorPicker,UIBase);var COLORS=("ffffff,000000,eeece1,1f497d,4f81bd,c0504d,9bbb59,8064a2,4bacc6,f79646,"+"f2f2f2,7f7f7f,ddd9c3,c6d9f0,dbe5f1,f2dcdb,ebf1dd,e5e0ec,dbeef3,fdeada,"+"d8d8d8,595959,c4bd97,8db3e2,b8cce4,e5b9b7,d7e3bc,ccc1d9,b7dde8,fbd5b5,"+"bfbfbf,3f3f3f,938953,548dd4,95b3d7,d99694,c3d69b,b2a2c7,92cddc,fac08f,"+"a5a5a5,262626,494429,17365d,366092,953734,76923c,5f497a,31859b,e36c09,"+"7f7f7f,0c0c0c,1d1b10,0f243e,244061,632423,4f6128,3f3151,205867,974806,"+"c00000,ff0000,ffc000,ffff00,92d050,00b050,00b0f0,0070c0,002060,7030a0,").split(",");function genColorPicker(noColorText,editor){var html='
    '+'
    '+'
    '+'
    '+noColorText+"
    "+"
    "+'
    '+'"+'';for(var i=0;i"+(i==60?'":"")+""}html+=i<70?'":""}html+="
    '+editor.getLang("themeColor")+"
    '+editor.getLang("standardColor")+"
    =60?"border-width:1px;":i>=10&&i<20?"border-width:1px 1px 0 1px;":"border-width:0 1px 0 1px;")+'"'+">
    ";return html}}();!function(){var utils=baidu.editor.utils,uiUtils=baidu.editor.ui.uiUtils,UIBase=baidu.editor.ui.UIBase;var TablePicker=baidu.editor.ui.TablePicker=function(options){this.initOptions(options);this.initTablePicker()};TablePicker.prototype={defaultNumRows:10,defaultNumCols:10,maxNumRows:20,maxNumCols:20,numRows:10,numCols:10,lengthOfCellSide:22,initTablePicker:function(){this.initUIBase()},getHtmlTpl:function(){var me=this;return'
    '+'
    '+'
    '+''+"
    "+'
    "+'
    '+"
    "+"
    "+"
    "},_UIBase_render:UIBase.prototype.render,render:function(holder){this._UIBase_render(holder);this.getDom("label").innerHTML="0"+this.editor.getLang("t_row")+" x 0"+this.editor.getLang("t_col")},_track:function(numCols,numRows){var style=this.getDom("overlay").style;var sideLen=this.lengthOfCellSide;style.width=numCols*sideLen+"px";style.height=numRows*sideLen+"px";var label=this.getDom("label");label.innerHTML=numCols+this.editor.getLang("t_col")+" x "+numRows+this.editor.getLang("t_row");this.numCols=numCols;this.numRows=numRows},_onMouseOver:function(evt,el){var rel=evt.relatedTarget||evt.fromElement;if(!uiUtils.contains(el,rel)&&el!==rel){this.getDom("label").innerHTML="0"+this.editor.getLang("t_col")+" x 0"+this.editor.getLang("t_row");this.getDom("overlay").style.visibility=""}},_onMouseOut:function(evt,el){var rel=evt.relatedTarget||evt.toElement;if(!uiUtils.contains(el,rel)&&el!==rel){this.getDom("label").innerHTML="0"+this.editor.getLang("t_col")+" x 0"+this.editor.getLang("t_row");this.getDom("overlay").style.visibility="hidden"}},_onMouseMove:function(evt,el){var style=this.getDom("overlay").style;var offset=uiUtils.getEventOffset(evt);var sideLen=this.lengthOfCellSide;var numCols=Math.ceil(offset.left/sideLen);var numRows=Math.ceil(offset.top/sideLen);this._track(numCols,numRows)},_onClick:function(){this.fireEvent("picktable",this.numCols,this.numRows)}};utils.inherits(TablePicker,UIBase)}();!function(){var browser=baidu.editor.browser,domUtils=baidu.editor.dom.domUtils,uiUtils=baidu.editor.ui.uiUtils;var TPL_STATEFUL='onmousedown="$$.Stateful_onMouseDown(event, this);"'+' onmouseup="$$.Stateful_onMouseUp(event, this);"'+(browser.ie?' onmouseenter="$$.Stateful_onMouseEnter(event, this);"'+' onmouseleave="$$.Stateful_onMouseLeave(event, this);"':' onmouseover="$$.Stateful_onMouseOver(event, this);"'+' onmouseout="$$.Stateful_onMouseOut(event, this);"');baidu.editor.ui.Stateful={alwalysHoverable:false,target:null,Stateful_init:function(){this._Stateful_dGetHtmlTpl=this.getHtmlTpl;this.getHtmlTpl=this.Stateful_getHtmlTpl},Stateful_getHtmlTpl:function(){var tpl=this._Stateful_dGetHtmlTpl();return tpl.replace(/stateful/g,function(){return TPL_STATEFUL})},Stateful_onMouseEnter:function(evt,el){this.target=el;if(!this.isDisabled()||this.alwalysHoverable){this.addState("hover");this.fireEvent("over")}},Stateful_onMouseLeave:function(evt,el){if(!this.isDisabled()||this.alwalysHoverable){this.removeState("hover");this.removeState("active");this.fireEvent("out")}},Stateful_onMouseOver:function(evt,el){var rel=evt.relatedTarget;if(!uiUtils.contains(el,rel)&&el!==rel){this.Stateful_onMouseEnter(evt,el)}},Stateful_onMouseOut:function(evt,el){var rel=evt.relatedTarget;if(!uiUtils.contains(el,rel)&&el!==rel){this.Stateful_onMouseLeave(evt,el)}},Stateful_onMouseDown:function(evt,el){if(!this.isDisabled()){this.addState("active")}},Stateful_onMouseUp:function(evt,el){if(!this.isDisabled()){this.removeState("active")}},Stateful_postRender:function(){if(this.disabled&&!this.hasState("disabled")){this.addState("disabled")}},hasState:function(state){return domUtils.hasClass(this.getStateDom(),"edui-state-"+state)},addState:function(state){if(!this.hasState(state)){this.getStateDom().className+=" edui-state-"+state}},removeState:function(state){if(this.hasState(state)){domUtils.removeClasses(this.getStateDom(),["edui-state-"+state])}},getStateDom:function(){return this.getDom("state")},isChecked:function(){return this.hasState("checked")},setChecked:function(checked){if(!this.isDisabled()&&checked){this.addState("checked")}else{this.removeState("checked")}},isDisabled:function(){return this.hasState("disabled")},setDisabled:function(disabled){if(disabled){this.removeState("hover");this.removeState("checked");this.removeState("active");this.addState("disabled")}else{this.removeState("disabled")}}}}();!function(){var utils=baidu.editor.utils,UIBase=baidu.editor.ui.UIBase,Stateful=baidu.editor.ui.Stateful,Button=baidu.editor.ui.Button=function(options){if(options.name){var btnName=options.name;var cssRules=options.cssRules;if(!options.className){options.className="edui-for-"+btnName}options.cssRules=".edui-default .edui-for-"+btnName+" .edui-icon {"+cssRules+"}"}this.initOptions(options);this.initButton()};Button.prototype={uiName:"button",label:"",title:"",showIcon:true,showText:true,cssRules:"",initButton:function(){this.initUIBase();this.Stateful_init();if(this.cssRules){utils.cssRule("edui-customize-"+this.name+"-style",this.cssRules)}},getHtmlTpl:function(){return'
    '+'
    '+'
    '+(this.showIcon?'
    ':"")+(this.showText?'
    '+this.label+"
    ":"")+"
    "+"
    "+"
    "},postRender:function(){this.Stateful_postRender();this.setDisabled(this.disabled)},_onMouseDown:function(e){var target=e.target||e.srcElement,tagName=target&&target.tagName&&target.tagName.toLowerCase();if(tagName=="input"||tagName=="object"||tagName=="object"){return false}},_onClick:function(){if(!this.isDisabled()){this.fireEvent("click")}},setTitle:function(text){var label=this.getDom("label");label.innerHTML=text}};utils.inherits(Button,UIBase);utils.extend(Button.prototype,Stateful)}();!function(){var utils=baidu.editor.utils,uiUtils=baidu.editor.ui.uiUtils,domUtils=baidu.editor.dom.domUtils,UIBase=baidu.editor.ui.UIBase,Stateful=baidu.editor.ui.Stateful,SplitButton=baidu.editor.ui.SplitButton=function(options){this.initOptions(options);this.initSplitButton()};SplitButton.prototype={popup:null,uiName:"splitbutton",title:"",initSplitButton:function(){this.initUIBase();this.Stateful_init();var me=this;if(this.popup!=null){var popup=this.popup;this.popup=null;this.setPopup(popup)}},_UIBase_postRender:UIBase.prototype.postRender,postRender:function(){this.Stateful_postRender();this._UIBase_postRender()},setPopup:function(popup){if(this.popup===popup)return;if(this.popup!=null){this.popup.dispose()}popup.addListener("show",utils.bind(this._onPopupShow,this));popup.addListener("hide",utils.bind(this._onPopupHide,this));popup.addListener("postrender",utils.bind(function(){popup.getDom("body").appendChild(uiUtils.createElementByHtml('
    '));popup.getDom().className+=" "+this.className},this));this.popup=popup},_onPopupShow:function(){this.addState("opened")},_onPopupHide:function(){this.removeState("opened")},getHtmlTpl:function(){return'
    '+"
    '+'
    '+'
    '+"
    "+'
    '+'
    '+"
    "},showPopup:function(){var rect=uiUtils.getClientRect(this.getDom());rect.top-=this.popup.SHADOW_RADIUS;rect.height+=this.popup.SHADOW_RADIUS;this.popup.showAnchorRect(rect)},_onArrowClick:function(event,el){if(!this.isDisabled()){this.showPopup()}},_onButtonClick:function(){if(!this.isDisabled()){this.fireEvent("buttonclick")}}};utils.inherits(SplitButton,UIBase);utils.extend(SplitButton.prototype,Stateful,true)}();!function(){var utils=baidu.editor.utils,uiUtils=baidu.editor.ui.uiUtils,ColorPicker=baidu.editor.ui.ColorPicker,Popup=baidu.editor.ui.Popup,SplitButton=baidu.editor.ui.SplitButton,ColorButton=baidu.editor.ui.ColorButton=function(options){this.initOptions(options);this.initColorButton()};ColorButton.prototype={initColorButton:function(){var me=this;this.popup=new Popup({content:new ColorPicker({noColorText:me.editor.getLang("clearColor"),editor:me.editor,onpickcolor:function(t,color){me._onPickColor(color)},onpicknocolor:function(t,color){me._onPickNoColor(color)}}),editor:me.editor});this.initSplitButton()},_SplitButton_postRender:SplitButton.prototype.postRender,postRender:function(){this._SplitButton_postRender();this.getDom("button_body").appendChild(uiUtils.createElementByHtml('
    '));this.getDom().className+=" edui-colorbutton"},setColor:function(color){this.getDom("colorlump").style.backgroundColor=color;this.color=color},_onPickColor:function(color){if(this.fireEvent("pickcolor",color)!==false){this.setColor(color);this.popup.hide()}},_onPickNoColor:function(color){if(this.fireEvent("picknocolor")!==false){this.popup.hide()}}};utils.inherits(ColorButton,SplitButton)}();!function(){var utils=baidu.editor.utils,Popup=baidu.editor.ui.Popup,TablePicker=baidu.editor.ui.TablePicker,SplitButton=baidu.editor.ui.SplitButton,TableButton=baidu.editor.ui.TableButton=function(options){this.initOptions(options);this.initTableButton()};TableButton.prototype={initTableButton:function(){var me=this;this.popup=new Popup({content:new TablePicker({editor:me.editor,onpicktable:function(t,numCols,numRows){me._onPickTable(numCols,numRows)}}),editor:me.editor});this.initSplitButton()},_onPickTable:function(numCols,numRows){if(this.fireEvent("picktable",numCols,numRows)!==false){this.popup.hide()}}};utils.inherits(TableButton,SplitButton)}();!function(){var utils=baidu.editor.utils,UIBase=baidu.editor.ui.UIBase;var AutoTypeSetPicker=baidu.editor.ui.AutoTypeSetPicker=function(options){this.initOptions(options);this.initAutoTypeSetPicker()};AutoTypeSetPicker.prototype={initAutoTypeSetPicker:function(){this.initUIBase()},getHtmlTpl:function(){var me=this.editor,opt=me.options.autotypeset,lang=me.getLang("autoTypeSet");var textAlignInputName="textAlignValue"+me.uid,imageBlockInputName="imageBlockLineValue"+me.uid,symbolConverInputName="symbolConverValue"+me.uid;return'
    '+'
    '+""+'"+'"+""+'"+'"+""+""+'"+'"+""+'"+'"+'"+""+'"+'"+'"+""+"
    "+lang.mergeLine+'"+lang.delLine+"
    "+lang.removeFormat+'"+lang.indent+"
    "+lang.alignment+"'+'"+me.getLang("justifyleft")+'"+me.getLang("justifycenter")+'"+me.getLang("justifyright")+"
    "+lang.imageFloat+"'+'"+me.getLang("default")+'"+me.getLang("justifyleft")+'"+me.getLang("justifycenter")+'"+me.getLang("justifyright")+"
    "+lang.removeFontsize+'"+lang.removeFontFamily+"
    "+lang.removeHtml+"
    "+lang.pasteFilter+"
    "+lang.symbol+"'+'"+lang.bdc2sb+'"+lang.tobdc+""+"
    "+"
    "+"
    "},_UIBase_render:UIBase.prototype.render};utils.inherits(AutoTypeSetPicker,UIBase)}();!function(){var utils=baidu.editor.utils,Popup=baidu.editor.ui.Popup,AutoTypeSetPicker=baidu.editor.ui.AutoTypeSetPicker,SplitButton=baidu.editor.ui.SplitButton,AutoTypeSetButton=baidu.editor.ui.AutoTypeSetButton=function(options){this.initOptions(options);this.initAutoTypeSetButton()};function getPara(me){var opt={},cont=me.getDom(),editorId=me.editor.uid,inputType=null,attrName=null,ipts=domUtils.getElementsByTagName(cont,"input");for(var i=ipts.length-1,ipt;ipt=ipts[i--];){inputType=ipt.getAttribute("type");if(inputType=="checkbox"){attrName=ipt.getAttribute("name");opt[attrName]&&delete opt[attrName];if(ipt.checked){var attrValue=document.getElementById(attrName+"Value"+editorId);if(attrValue){if(/input/gi.test(attrValue.tagName)){opt[attrName]=attrValue.value}else{var iptChilds=attrValue.getElementsByTagName("input");for(var j=iptChilds.length-1,iptchild;iptchild=iptChilds[j--];){if(iptchild.checked){opt[attrName]=iptchild.value;break}}}}else{opt[attrName]=true}}else{opt[attrName]=false}}else{opt[ipt.getAttribute("value")]=ipt.checked}}var selects=domUtils.getElementsByTagName(cont,"select");for(var i=0,si;si=selects[i++];){var attr=si.getAttribute("name");opt[attr]=opt[attr]?si.value:""}utils.extend(me.editor.options.autotypeset,opt);me.editor.setPreferences("autotypeset",opt)}AutoTypeSetButton.prototype={initAutoTypeSetButton:function(){var me=this;this.popup=new Popup({content:new AutoTypeSetPicker({editor:me.editor}),editor:me.editor,hide:function(){if(!this._hidden&&this.getDom()){getPara(this);this.getDom().style.display="none";this._hidden=true;this.fireEvent("hide")}}});var flag=0;this.popup.addListener("postRenderAfter",function(){var popupUI=this;if(flag)return;var cont=this.getDom(),btn=cont.getElementsByTagName("button")[0];btn.onclick=function(){getPara(popupUI);me.editor.execCommand("autotypeset");popupUI.hide()};domUtils.on(cont,"click",function(e){var target=e.target||e.srcElement,editorId=me.editor.uid;if(target&&target.tagName=="INPUT"){if(target.name=="imageBlockLine"||target.name=="textAlign"||target.name=="symbolConver"){var checked=target.checked,radioTd=document.getElementById(target.name+"Value"+editorId),radios=radioTd.getElementsByTagName("input"),defalutSelect={imageBlockLine:"none",textAlign:"left",symbolConver:"tobdc"};for(var i=0;i");tmpl.push('
    ');tempIndex===2&&tmpl.push("")}return'
    '+'
    '+''+tmpl.join("")+"
    "+"
    "+"
    "},getStateDom:function(){return this.target},_onClick:function(evt){var target=evt.target||evt.srcElement;if(/icon/.test(target.className)){this.items[target.parentNode.getAttribute("index")].onclick();Popup.postHide(evt)}},_UIBase_render:UIBase.prototype.render};utils.inherits(CellAlignPicker,UIBase);utils.extend(CellAlignPicker.prototype,Stateful,true)}();!function(){var utils=baidu.editor.utils,Stateful=baidu.editor.ui.Stateful,uiUtils=baidu.editor.ui.uiUtils,UIBase=baidu.editor.ui.UIBase;var PastePicker=baidu.editor.ui.PastePicker=function(options){this.initOptions(options);this.initPastePicker()};PastePicker.prototype={initPastePicker:function(){this.initUIBase();this.Stateful_init()},getHtmlTpl:function(){return'
    '+'
    '+'
    '+this.editor.getLang("pasteOpt")+"
    "+'
    '+'
    '+'
    '+'
    '+'
    '+'
    '+'
    '+"
    "+"
    "+""},getStateDom:function(){return this.target},format:function(param){this.editor.ui._isTransfer=true;this.editor.fireEvent("pasteTransfer",param)},_onClick:function(cur){var node=domUtils.getNextDomNode(cur),screenHt=uiUtils.getViewportRect().height,subPop=uiUtils.getClientRect(node);if(subPop.top+subPop.height>screenHt)node.style.top=-subPop.height-cur.offsetHeight+"px";else node.style.top="";if(/hidden/gi.test(domUtils.getComputedStyle(node,"visibility"))){node.style.visibility="visible";domUtils.addClass(cur,"edui-state-opened")}else{node.style.visibility="hidden";domUtils.removeClasses(cur,"edui-state-opened")}},_UIBase_render:UIBase.prototype.render};utils.inherits(PastePicker,UIBase);utils.extend(PastePicker.prototype,Stateful,true)}();!function(){var utils=baidu.editor.utils,uiUtils=baidu.editor.ui.uiUtils,UIBase=baidu.editor.ui.UIBase,Toolbar=baidu.editor.ui.Toolbar=function(options){this.initOptions(options);this.initToolbar()};Toolbar.prototype={items:null,initToolbar:function(){this.items=this.items||[];this.initUIBase()},add:function(item,index){if(index===undefined){this.items.push(item)}else{this.items.splice(index,0,item)}},getHtmlTpl:function(){var buff=[];for(var i=0;i'+buff.join("")+""},postRender:function(){var box=this.getDom();for(var i=0;i
    '},postRender:function(){},queryAutoHide:function(){return true}};Menu.prototype={items:null,uiName:"menu",initMenu:function(){this.items=this.items||[];this.initPopup();this.initItems()},initItems:function(){for(var i=0;i'+buff.join("")+""},_Popup_postRender:Popup.prototype.postRender,postRender:function(){var me=this;for(var i=0;i'+'
    '+this.renderLabelHtml()+"
    "+""},postRender:function(){var me=this;this.addListener("over",function(){me.ownerMenu.fireEvent("submenuover",me);if(me.subMenu){me.delayShowSubMenu()}});if(this.subMenu){this.getDom().className+=" edui-hassubmenu";this.subMenu.render();this.addListener("out",function(){me.delayHideSubMenu()});this.subMenu.addListener("over",function(){clearTimeout(me._closingTimer);me._closingTimer=null;me.addState("opened")});this.ownerMenu.addListener("hide",function(){me.hideSubMenu()});this.ownerMenu.addListener("submenuover",function(t,subMenu){if(subMenu!==me){me.delayHideSubMenu()}});this.subMenu._bakQueryAutoHide=this.subMenu.queryAutoHide;this.subMenu.queryAutoHide=function(el){if(el&&uiUtils.contains(me.getDom(),el)){return false}return this._bakQueryAutoHide(el)}}this.getDom().style.tabIndex="-1";uiUtils.makeUnselectable(this.getDom());this.Stateful_postRender()},delayShowSubMenu:function(){var me=this;if(!me.isDisabled()){me.addState("opened");clearTimeout(me._showingTimer);clearTimeout(me._closingTimer);me._closingTimer=null;me._showingTimer=setTimeout(function(){me.showSubMenu()},250)}},delayHideSubMenu:function(){var me=this;if(!me.isDisabled()){me.removeState("opened");clearTimeout(me._showingTimer);if(!me._closingTimer){me._closingTimer=setTimeout(function(){if(!me.hasState("opened")){me.hideSubMenu()}me._closingTimer=null},400)}}},renderLabelHtml:function(){return'
    '+'
    '+'
    '+(this.label||"")+"
    "},getStateDom:function(){return this.getDom()},queryAutoHide:function(el){if(this.subMenu&&this.hasState("opened")){return this.subMenu.queryAutoHide(el)}},_onClick:function(event,this_){if(this.hasState("disabled"))return;if(this.fireEvent("click",event,this_)!==false){if(this.subMenu){this.showSubMenu()}else{Popup.postHide(event)}}},showSubMenu:function(){var rect=uiUtils.getClientRect(this.getDom());rect.right-=5;rect.left+=2;rect.width-=7;rect.top-=4;rect.bottom+=4;rect.height+=8;this.subMenu.showAnchorRect(rect,true,true)},hideSubMenu:function(){this.subMenu.hide()}};utils.inherits(MenuItem,UIBase);utils.extend(MenuItem.prototype,Stateful,true)}();!function(){var utils=baidu.editor.utils,uiUtils=baidu.editor.ui.uiUtils,Menu=baidu.editor.ui.Menu,SplitButton=baidu.editor.ui.SplitButton,Combox=baidu.editor.ui.Combox=function(options){this.initOptions(options);this.initCombox()};Combox.prototype={uiName:"combox",onbuttonclick:function(){this.showPopup()},initCombox:function(){var me=this;this.items=this.items||[];for(var i=0;ivpRect.right){left=vpRect.right-rect.width}var top=offset.top;if(top+rect.height>vpRect.bottom){top=vpRect.bottom-rect.height}el.style.left=Math.max(left,0)+"px";el.style.top=Math.max(top,0)+"px"},showAtCenter:function(){var vpRect=uiUtils.getViewportRect();if(!this.fullscreen){this.getDom().style.display="";var popSize=this.fitSize();var titleHeight=this.getDom("titlebar").offsetHeight|0;var left=vpRect.width/2-popSize.width/2;var top=vpRect.height/2-(popSize.height-titleHeight)/2-titleHeight;var popEl=this.getDom();this.safeSetOffset({left:Math.max(left|0,0),top:Math.max(top|0,0)});if(!domUtils.hasClass(popEl,"edui-state-centered")){popEl.className+=" edui-state-centered"}}else{var dialogWrapNode=this.getDom(),contentNode=this.getDom("content");dialogWrapNode.style.display="block";var wrapRect=UE.ui.uiUtils.getClientRect(dialogWrapNode),contentRect=UE.ui.uiUtils.getClientRect(contentNode);dialogWrapNode.style.left="-100000px";contentNode.style.width=vpRect.width-wrapRect.width+contentRect.width+"px";contentNode.style.height=vpRect.height-wrapRect.height+contentRect.height+"px";dialogWrapNode.style.width=vpRect.width+"px";dialogWrapNode.style.height=vpRect.height+"px";dialogWrapNode.style.left=0;this._originalContext={html:{overflowX:document.documentElement.style.overflowX,overflowY:document.documentElement.style.overflowY},body:{overflowX:document.body.style.overflowX,overflowY:document.body.style.overflowY}};document.documentElement.style.overflowX="hidden";document.documentElement.style.overflowY="hidden";document.body.style.overflowX="hidden";document.body.style.overflowY="hidden"}this._show()},getContentHtml:function(){var contentHtml="";if(typeof this.content=="string"){contentHtml=this.content}else if(this.iframeUrl){contentHtml=''}return contentHtml},getHtmlTpl:function(){var footHtml="";if(this.buttons){var buff=[];for(var i=0;i'+'
    '+buff.join("")+"
    "+""}return'
    '+'
    '+'
    '+'
    '+''+(this.title||"")+""+"
    "+this.closeButton.renderHtml()+"
    "+'
    '+(this.autoReset?"":this.getContentHtml())+"
    "+footHtml+"
    "},postRender:function(){if(!this.modalMask.getDom()){this.modalMask.render();this.modalMask.hide()}if(!this.dragMask.getDom()){this.dragMask.render();this.dragMask.hide()}var me=this;this.addListener("show",function(){me.modalMask.show(this.getDom().style.zIndex-2)});this.addListener("hide",function(){me.modalMask.hide()});if(this.buttons){for(var i=0;i';me.editor.container.style.zIndex&&(this.getDom().style.zIndex=me.editor.container.style.zIndex*1+1)}}});this.onbuttonclick=function(){this.showPopup()};this.initSplitButton()}};utils.inherits(MultiMenuPop,SplitButton)}();!function(){var UI=baidu.editor.ui,UIBase=UI.UIBase,uiUtils=UI.uiUtils,utils=baidu.editor.utils,domUtils=baidu.editor.dom.domUtils;var allMenus=[],timeID,isSubMenuShow=false;var ShortCutMenu=UI.ShortCutMenu=function(options){this.initOptions(options);this.initShortCutMenu()};ShortCutMenu.postHide=hideAllMenu;ShortCutMenu.prototype={isHidden:true,SPACE:5,initShortCutMenu:function(){this.items=this.items||[];this.initUIBase();this.initItems();this.initEvent();allMenus.push(this)},initEvent:function(){var me=this,doc=me.editor.document;domUtils.on(doc,"mousemove",function(e){if(me.isHidden===false){if(me.getSubMenuMark()||me.eventType=="contextmenu")return;var flag=true,el=me.getDom(),wt=el.offsetWidth,ht=el.offsetHeight,distanceX=wt/2+me.SPACE,distanceY=ht/2,x=Math.abs(e.screenX-me.left),y=Math.abs(e.screenY-me.top);clearTimeout(timeID);timeID=setTimeout(function(){if(y>0&&ydistanceY&&ydistanceY+70&&y0&&xdistanceX&&xdistanceX+70&&x'+buff+""}};utils.inherits(ShortCutMenu,UIBase);function hideAllMenu(e){var tgt=e.target||e.srcElement,cur=domUtils.findParent(tgt,function(node){return domUtils.hasClass(node,"edui-shortcutmenu")||domUtils.hasClass(node,"edui-popup")},true);if(!cur){for(var i=0,menu;menu=allMenus[i++];){menu.hide()}}}domUtils.on(document,"mousedown",function(e){hideAllMenu(e)});domUtils.on(window,"scroll",function(e){hideAllMenu(e)})}();!function(){var utils=baidu.editor.utils,UIBase=baidu.editor.ui.UIBase,Breakline=baidu.editor.ui.Breakline=function(options){this.initOptions(options);this.initSeparator()};Breakline.prototype={uiName:"Breakline",initSeparator:function(){this.initUIBase()},getHtmlTpl:function(){return"
    "}};utils.inherits(Breakline,UIBase)}();!function(){var utils=baidu.editor.utils,domUtils=baidu.editor.dom.domUtils,UIBase=baidu.editor.ui.UIBase,Message=baidu.editor.ui.Message=function(options){this.initOptions(options);this.initMessage()};Message.prototype={initMessage:function(){this.initUIBase()},getHtmlTpl:function(){return'
    '+'
    ×
    '+'
    '+' '+'
    '+'
    '+"
    "+"
    "+"
    "},reset:function(opt){var me=this;if(!opt.keepshow){clearTimeout(this.timer);me.timer=setTimeout(function(){me.hide()},opt.timeout||4e3)}opt.content!==undefined&&me.setContent(opt.content);opt.type!==undefined&&me.setType(opt.type);me.show()},postRender:function(){var me=this,closer=this.getDom("closer");closer&&domUtils.on(closer,"click",function(){me.hide()})},setContent:function(content){this.getDom("content").innerHTML=content},setType:function(type){type=type||"info";var body=this.getDom("body");body.className=body.className.replace(/edui-message-type-[\w-]+/,"edui-message-type-"+type)},getContent:function(){return this.getDom("content").innerHTML},getType:function(){var arr=this.getDom("body").match(/edui-message-type-([\w-]+)/);return arr?arr[1]:""},show:function(){this.getDom().style.display="block"},hide:function(){var dom=this.getDom();if(dom){dom.style.display="none";dom.parentNode&&dom.parentNode.removeChild(dom)}}};utils.inherits(Message,UIBase)}();!function(){var utils=baidu.editor.utils;var editorui=baidu.editor.ui;var _Dialog=editorui.Dialog;editorui.buttons={};editorui.Dialog=function(options){var dialog=new _Dialog(options);dialog.addListener("hide",function(){if(dialog.editor){var editor=dialog.editor;try{if(browser.gecko){var y=editor.window.scrollY,x=editor.window.scrollX;editor.body.focus();editor.window.scrollTo(x,y)}else{editor.focus()}}catch(ex){}}});return dialog};var iframeUrlMap={anchor:"~/dialogs/anchor/anchor.html",insertimage:"~/dialogs/image/image.html",link:"~/dialogs/link/link.html",spechars:"~/dialogs/spechars/spechars.html",searchreplace:"~/dialogs/searchreplace/searchreplace.html",map:"~/dialogs/map/map.html",gmap:"~/dialogs/gmap/gmap.html",insertvideo:"~/dialogs/video/video.html",help:"~/dialogs/help/help.html",preview:"~/dialogs/preview/preview.html",emotion:"~/dialogs/emotion/emotion.html",wordimage:"~/dialogs/wordimage/wordimage.html",attachment:"~/dialogs/attachment/attachment.html",insertframe:"~/dialogs/insertframe/insertframe.html",edittip:"~/dialogs/table/edittip.html",edittable:"~/dialogs/table/edittable.html",edittd:"~/dialogs/table/edittd.html",webapp:"~/dialogs/webapp/webapp.html",snapscreen:"~/dialogs/snapscreen/snapscreen.html",scrawl:"~/dialogs/scrawl/scrawl.html",music:"~/dialogs/music/music.html",template:"~/dialogs/template/template.html",background:"~/dialogs/background/background.html",charts:"~/dialogs/charts/charts.html"};var btnCmds=["undo","redo","formatmatch","bold","italic","underline","fontborder","touppercase","tolowercase","strikethrough","subscript","superscript","source","indent","outdent","blockquote","pasteplain","pagebreak","selectall","print","horizontal","removeformat","time","date","unlink","insertparagraphbeforetable","insertrow","insertcol","mergeright","mergedown","deleterow","deletecol","splittorows","splittocols","splittocells","mergecells","deletetable","drafts"];for(var i=0,ci;ci=btnCmds[i++];){ci=ci.toLowerCase();editorui[ci]=function(cmd){return function(editor){var ui=new editorui.Button({className:"edui-for-"+cmd,title:editor.options.labelMap[cmd]||editor.getLang("labelMap."+cmd)||"",onclick:function(){editor.execCommand(cmd)},theme:editor.options.theme,showText:false});editorui.buttons[cmd]=ui;editor.addListener("selectionchange",function(type,causeByUi,uiReady){var state=editor.queryCommandState(cmd);if(state==-1){ui.setDisabled(true);ui.setChecked(false)}else{if(!uiReady){ui.setDisabled(false);ui.setChecked(state)}}});return ui}}(ci)}editorui.cleardoc=function(editor){var ui=new editorui.Button({className:"edui-for-cleardoc",title:editor.options.labelMap.cleardoc||editor.getLang("labelMap.cleardoc")||"",theme:editor.options.theme,onclick:function(){if(confirm(editor.getLang("confirmClear"))){editor.execCommand("cleardoc")}}});editorui.buttons["cleardoc"]=ui;editor.addListener("selectionchange",function(){ui.setDisabled(editor.queryCommandState("cleardoc")==-1)});return ui};var typeset={justify:["left","right","center","justify"],imagefloat:["none","left","center","right"],directionality:["ltr","rtl"]};for(var p in typeset){!function(cmd,val){for(var i=0,ci;ci=val[i++];){!function(cmd2){editorui[cmd.replace("float","")+cmd2]=function(editor){var ui=new editorui.Button({className:"edui-for-"+cmd.replace("float","")+cmd2,title:editor.options.labelMap[cmd.replace("float","")+cmd2]||editor.getLang("labelMap."+cmd.replace("float","")+cmd2)||"",theme:editor.options.theme,onclick:function(){editor.execCommand(cmd,cmd2)}});editorui.buttons[cmd]=ui;editor.addListener("selectionchange",function(type,causeByUi,uiReady){ui.setDisabled(editor.queryCommandState(cmd)==-1);ui.setChecked(editor.queryCommandValue(cmd)==cmd2&&!uiReady)});return ui}}(ci)}}(p,typeset[p])}for(var i=0,ci;ci=["backcolor","forecolor"][i++];){editorui[ci]=function(cmd){return function(editor){var ui=new editorui.ColorButton({className:"edui-for-"+cmd,color:"default",title:editor.options.labelMap[cmd]||editor.getLang("labelMap."+cmd)||"",editor:editor,onpickcolor:function(t,color){editor.execCommand(cmd,color)},onpicknocolor:function(){editor.execCommand(cmd,"default");this.setColor("transparent");this.color="default"},onbuttonclick:function(){editor.execCommand(cmd,this.color)}});editorui.buttons[cmd]=ui;editor.addListener("selectionchange",function(){ui.setDisabled(editor.queryCommandState(cmd)==-1)});return ui}}(ci)}var dialogBtns={noOk:["searchreplace","help","spechars","webapp","preview"],ok:["attachment","anchor","link","insertimage","map","gmap","insertframe","wordimage","insertvideo","insertframe","edittip","edittable","edittd","scrawl","template","music","background","charts"]};for(var p in dialogBtns){!function(type,vals){for(var i=0,ci;ci=vals[i++];){if(browser.opera&&ci==="searchreplace"){continue}!function(cmd){editorui[cmd]=function(editor,iframeUrl,title){iframeUrl=iframeUrl||(editor.options.iframeUrlMap||{})[cmd]||iframeUrlMap[cmd];title=editor.options.labelMap[cmd]||editor.getLang("labelMap."+cmd)||"";var dialog;if(iframeUrl){dialog=new editorui.Dialog(utils.extend({iframeUrl:editor.ui.mapUrl(iframeUrl),editor:editor,className:"edui-for-"+cmd,title:title,holdScroll:cmd==="insertimage",fullscreen:/charts|preview/.test(cmd),closeDialog:editor.getLang("closeDialog")},type=="ok"?{buttons:[{className:"edui-okbutton",label:editor.getLang("ok"),editor:editor,onclick:function(){dialog.close(true)}},{className:"edui-cancelbutton",label:editor.getLang("cancel"),editor:editor,onclick:function(){dialog.close(false)}}]}:{}));editor.ui._dialogs[cmd+"Dialog"]=dialog}var ui=new editorui.Button({className:"edui-for-"+cmd,title:title,onclick:function(){if(dialog){switch(cmd){case"wordimage":var images=editor.execCommand("wordimage");if(images&&images.length){dialog.render();dialog.open()}break;case"scrawl":if(editor.queryCommandState("scrawl")!=-1){dialog.render();dialog.open()}break;default:dialog.render();dialog.open()}}},theme:editor.options.theme,disabled:cmd=="scrawl"&&editor.queryCommandState("scrawl")==-1||cmd=="charts"});editorui.buttons[cmd]=ui;editor.addListener("selectionchange",function(){var unNeedCheckState={edittable:1};if(cmd in unNeedCheckState)return;var state=editor.queryCommandState(cmd);if(ui.getDom()){ui.setDisabled(state==-1);ui.setChecked(state)}});return ui}}(ci.toLowerCase())}}(p,dialogBtns[p])}editorui.snapscreen=function(editor,iframeUrl,title){title=editor.options.labelMap["snapscreen"]||editor.getLang("labelMap.snapscreen")||"";var ui=new editorui.Button({className:"edui-for-snapscreen",title:title,onclick:function(){editor.execCommand("snapscreen")},theme:editor.options.theme});editorui.buttons["snapscreen"]=ui;iframeUrl=iframeUrl||(editor.options.iframeUrlMap||{})["snapscreen"]||iframeUrlMap["snapscreen"];if(iframeUrl){var dialog=new editorui.Dialog({iframeUrl:editor.ui.mapUrl(iframeUrl),editor:editor,className:"edui-for-snapscreen",title:title,buttons:[{className:"edui-okbutton",label:editor.getLang("ok"),editor:editor,onclick:function(){dialog.close(true)}},{className:"edui-cancelbutton",label:editor.getLang("cancel"),editor:editor,onclick:function(){dialog.close(false)}}]});dialog.render();editor.ui._dialogs["snapscreenDialog"]=dialog}editor.addListener("selectionchange",function(){ui.setDisabled(editor.queryCommandState("snapscreen")==-1)});return ui};editorui.insertcode=function(editor,list,title){list=editor.options["insertcode"]||[];title=editor.options.labelMap["insertcode"]||editor.getLang("labelMap.insertcode")||"";var items=[];utils.each(list,function(key,val){items.push({label:key,value:val,theme:editor.options.theme,renderLabelHtml:function(){return'
    '+(this.label||"")+"
    "}})});var ui=new editorui.Combox({editor:editor,items:items,onselect:function(t,index){editor.execCommand("insertcode",this.items[index].value)},onbuttonclick:function(){this.showPopup()},title:title,initValue:title,className:"edui-for-insertcode",indexByValue:function(value){if(value){for(var i=0,ci;ci=this.items[i];i++){if(ci.value.indexOf(value)!=-1)return i}}return-1}});editorui.buttons["insertcode"]=ui;editor.addListener("selectionchange",function(type,causeByUi,uiReady){if(!uiReady){var state=editor.queryCommandState("insertcode");if(state==-1){ui.setDisabled(true)}else{ui.setDisabled(false);var value=editor.queryCommandValue("insertcode");if(!value){ui.setValue(title);return}value&&(value=value.replace(/['"]/g,"").split(",")[0]);ui.setValue(value)}}});return ui};editorui.fontfamily=function(editor,list,title){list=editor.options["fontfamily"]||[];title=editor.options.labelMap["fontfamily"]||editor.getLang("labelMap.fontfamily")||"";if(!list.length)return;for(var i=0,ci,items=[];ci=list[i];i++){var langLabel=editor.getLang("fontfamily")[ci.name]||"";!function(key,val){items.push({label:key,value:val,theme:editor.options.theme,renderLabelHtml:function(){return'
    '+(this.label||"")+"
    "}})}(ci.label||langLabel,ci.val)}var ui=new editorui.Combox({editor:editor,items:items,onselect:function(t,index){editor.execCommand("FontFamily",this.items[index].value)},onbuttonclick:function(){this.showPopup()},title:title,initValue:title,className:"edui-for-fontfamily",indexByValue:function(value){if(value){for(var i=0,ci;ci=this.items[i];i++){if(ci.value.indexOf(value)!=-1)return i}}return-1}});editorui.buttons["fontfamily"]=ui;editor.addListener("selectionchange",function(type,causeByUi,uiReady){if(!uiReady){var state=editor.queryCommandState("FontFamily");if(state==-1){ui.setDisabled(true)}else{ui.setDisabled(false);var value=editor.queryCommandValue("FontFamily");value&&(value=value.replace(/['"]/g,"").split(",")[0]);ui.setValue(value)}}});return ui};editorui.fontsize=function(editor,list,title){title=editor.options.labelMap["fontsize"]||editor.getLang("labelMap.fontsize")||"";list=list||editor.options["fontsize"]||[];if(!list.length)return;var items=[];for(var i=0;i'+(this.label||"")+""}})}var ui=new editorui.Combox({editor:editor,items:items,title:title,initValue:title,onselect:function(t,index){editor.execCommand("FontSize",this.items[index].value)},onbuttonclick:function(){this.showPopup()},className:"edui-for-fontsize"});editorui.buttons["fontsize"]=ui;editor.addListener("selectionchange",function(type,causeByUi,uiReady){if(!uiReady){var state=editor.queryCommandState("FontSize");if(state==-1){ui.setDisabled(true)}else{ui.setDisabled(false);ui.setValue(editor.queryCommandValue("FontSize"))}}});return ui};editorui.paragraph=function(editor,list,title){title=editor.options.labelMap["paragraph"]||editor.getLang("labelMap.paragraph")||"";list=editor.options["paragraph"]||[];if(utils.isEmptyObject(list))return;var items=[];for(var i in list){items.push({value:i,label:list[i]||editor.getLang("paragraph")[i],theme:editor.options.theme,renderLabelHtml:function(){return'
    '+(this.label||"")+"
    "}})}var ui=new editorui.Combox({editor:editor,items:items,title:title,initValue:title,className:"edui-for-paragraph",onselect:function(t,index){editor.execCommand("Paragraph",this.items[index].value)},onbuttonclick:function(){this.showPopup()}});editorui.buttons["paragraph"]=ui;editor.addListener("selectionchange",function(type,causeByUi,uiReady){if(!uiReady){var state=editor.queryCommandState("Paragraph");if(state==-1){ui.setDisabled(true)}else{ui.setDisabled(false);var value=editor.queryCommandValue("Paragraph");var index=ui.indexByValue(value);if(index!=-1){ui.setValue(value)}else{ui.setValue(ui.initValue)}}}});return ui};editorui.customstyle=function(editor){var list=editor.options["customstyle"]||[],title=editor.options.labelMap["customstyle"]||editor.getLang("labelMap.customstyle")||"";if(!list.length)return;var langCs=editor.getLang("customstyle");for(var i=0,items=[],t;t=list[i++];){!function(t){var ck={};ck.label=t.label?t.label:langCs[t.name];ck.style=t.style;ck.className=t.className;ck.tag=t.tag;items.push({label:ck.label,value:ck,theme:editor.options.theme,renderLabelHtml:function(){return'
    '+"<"+ck.tag+" "+(ck.className?' class="'+ck.className+'"':"")+(ck.style?' style="'+ck.style+'"':"")+">"+ck.label+""+"
    "}})}(t)}var ui=new editorui.Combox({editor:editor,items:items,title:title,initValue:title,className:"edui-for-customstyle",onselect:function(t,index){editor.execCommand("customstyle",this.items[index].value)},onbuttonclick:function(){this.showPopup()},indexByValue:function(value){for(var i=0,ti;ti=this.items[i++];){if(ti.label==value){return i-1}}return-1}});editorui.buttons["customstyle"]=ui;editor.addListener("selectionchange",function(type,causeByUi,uiReady){if(!uiReady){var state=editor.queryCommandState("customstyle");if(state==-1){ui.setDisabled(true)}else{ui.setDisabled(false);var value=editor.queryCommandValue("customstyle");var index=ui.indexByValue(value);if(index!=-1){ui.setValue(value)}else{ui.setValue(ui.initValue)}}}});return ui};editorui.inserttable=function(editor,iframeUrl,title){title=editor.options.labelMap["inserttable"]||editor.getLang("labelMap.inserttable")||"";var ui=new editorui.TableButton({editor:editor,title:title,className:"edui-for-inserttable",onpicktable:function(t,numCols,numRows){editor.execCommand("InsertTable",{numRows:numRows,numCols:numCols,border:1})},onbuttonclick:function(){this.showPopup()}});editorui.buttons["inserttable"]=ui;editor.addListener("selectionchange",function(){ui.setDisabled(editor.queryCommandState("inserttable")==-1)});return ui};editorui.lineheight=function(editor){var val=editor.options.lineheight||[];if(!val.length)return;for(var i=0,ci,items=[];ci=val[i++];){items.push({label:ci,value:ci,theme:editor.options.theme,onclick:function(){editor.execCommand("lineheight",this.value)}})}var ui=new editorui.MenuButton({editor:editor,className:"edui-for-lineheight",title:editor.options.labelMap["lineheight"]||editor.getLang("labelMap.lineheight")||"",items:items,onbuttonclick:function(){var value=editor.queryCommandValue("LineHeight")||this.value;editor.execCommand("LineHeight",value)}});editorui.buttons["lineheight"]=ui;editor.addListener("selectionchange",function(){var state=editor.queryCommandState("LineHeight");if(state==-1){ui.setDisabled(true)}else{ui.setDisabled(false);var value=editor.queryCommandValue("LineHeight");value&&ui.setValue((value+"").replace(/cm/,""));ui.setChecked(state)}});return ui};var rowspacings=["top","bottom"];for(var r=0,ri;ri=rowspacings[r++];){!function(cmd){editorui["rowspacing"+cmd]=function(editor){var val=editor.options["rowspacing"+cmd]||[];if(!val.length)return null;for(var i=0,ci,items=[];ci=val[i++];){items.push({label:ci,value:ci,theme:editor.options.theme,onclick:function(){editor.execCommand("rowspacing",this.value,cmd)}})}var ui=new editorui.MenuButton({editor:editor,className:"edui-for-rowspacing"+cmd,title:editor.options.labelMap["rowspacing"+cmd]||editor.getLang("labelMap.rowspacing"+cmd)||"",items:items,onbuttonclick:function(){var value=editor.queryCommandValue("rowspacing",cmd)||this.value;editor.execCommand("rowspacing",value,cmd)}});editorui.buttons[cmd]=ui;editor.addListener("selectionchange",function(){var state=editor.queryCommandState("rowspacing",cmd);if(state==-1){ui.setDisabled(true)}else{ui.setDisabled(false);var value=editor.queryCommandValue("rowspacing",cmd);value&&ui.setValue((value+"").replace(/%/,""));ui.setChecked(state)}});return ui}}(ri)}var lists=["insertorderedlist","insertunorderedlist"];for(var l=0,cl;cl=lists[l++];){!function(cmd){editorui[cmd]=function(editor){var vals=editor.options[cmd],_onMenuClick=function(){editor.execCommand(cmd,this.value) +},items=[];for(var i in vals){items.push({label:vals[i]||editor.getLang()[cmd][i]||"",value:i,theme:editor.options.theme,onclick:_onMenuClick})}var ui=new editorui.MenuButton({editor:editor,className:"edui-for-"+cmd,title:editor.getLang("labelMap."+cmd)||"",items:items,onbuttonclick:function(){var value=editor.queryCommandValue(cmd)||this.value;editor.execCommand(cmd,value)}});editorui.buttons[cmd]=ui;editor.addListener("selectionchange",function(){var state=editor.queryCommandState(cmd);if(state==-1){ui.setDisabled(true)}else{ui.setDisabled(false);var value=editor.queryCommandValue(cmd);ui.setValue(value);ui.setChecked(state)}});return ui}}(cl)}editorui.fullscreen=function(editor,title){title=editor.options.labelMap["fullscreen"]||editor.getLang("labelMap.fullscreen")||"";var ui=new editorui.Button({className:"edui-for-fullscreen",title:title,theme:editor.options.theme,onclick:function(){if(editor.ui){editor.ui.setFullScreen(!editor.ui.isFullScreen())}this.setChecked(editor.ui.isFullScreen())}});editorui.buttons["fullscreen"]=ui;editor.addListener("selectionchange",function(){var state=editor.queryCommandState("fullscreen");ui.setDisabled(state==-1);ui.setChecked(editor.ui.isFullScreen())});return ui};editorui["emotion"]=function(editor,iframeUrl){var cmd="emotion";var ui=new editorui.MultiMenuPop({title:editor.options.labelMap[cmd]||editor.getLang("labelMap."+cmd+"")||"",editor:editor,className:"edui-for-"+cmd,iframeUrl:editor.ui.mapUrl(iframeUrl||(editor.options.iframeUrlMap||{})[cmd]||iframeUrlMap[cmd])});editorui.buttons[cmd]=ui;editor.addListener("selectionchange",function(){ui.setDisabled(editor.queryCommandState(cmd)==-1)});return ui};editorui.autotypeset=function(editor){var ui=new editorui.AutoTypeSetButton({editor:editor,title:editor.options.labelMap["autotypeset"]||editor.getLang("labelMap.autotypeset")||"",className:"edui-for-autotypeset",onbuttonclick:function(){editor.execCommand("autotypeset")}});editorui.buttons["autotypeset"]=ui;editor.addListener("selectionchange",function(){ui.setDisabled(editor.queryCommandState("autotypeset")==-1)});return ui};editorui["simpleupload"]=function(editor){var name="simpleupload",ui=new editorui.Button({className:"edui-for-"+name,title:editor.options.labelMap[name]||editor.getLang("labelMap."+name)||"",onclick:function(){},theme:editor.options.theme,showText:false});editorui.buttons[name]=ui;editor.addListener("ready",function(){var b=ui.getDom("body"),iconSpan=b.children[0];editor.fireEvent("simpleuploadbtnready",iconSpan)});editor.addListener("selectionchange",function(type,causeByUi,uiReady){var state=editor.queryCommandState(name);if(state==-1){ui.setDisabled(true);ui.setChecked(false)}else{if(!uiReady){ui.setDisabled(false);ui.setChecked(state)}}});return ui}}();!function(){var utils=baidu.editor.utils,uiUtils=baidu.editor.ui.uiUtils,UIBase=baidu.editor.ui.UIBase,domUtils=baidu.editor.dom.domUtils;var nodeStack=[];function EditorUI(options){this.initOptions(options);this.initEditorUI()}EditorUI.prototype={uiName:"editor",initEditorUI:function(){this.editor.ui=this;this._dialogs={};this.initUIBase();this._initToolbars();var editor=this.editor,me=this;editor.addListener("ready",function(){editor.getDialog=function(name){return editor.ui._dialogs[name+"Dialog"]};domUtils.on(editor.window,"scroll",function(evt){baidu.editor.ui.Popup.postHide(evt)});editor.ui._actualFrameWidth=editor.options.initialFrameWidth;UE.browser.ie&&UE.browser.version===6&&editor.container.ownerDocument.execCommand("BackgroundImageCache",false,true);if(editor.options.elementPathEnabled){editor.ui.getDom("elementpath").innerHTML='
    '+editor.getLang("elementPathTip")+":
    "}if(editor.options.wordCount){function countFn(){setCount(editor,me);domUtils.un(editor.document,"click",arguments.callee)}domUtils.on(editor.document,"click",countFn);editor.ui.getDom("wordcount").innerHTML=editor.getLang("wordCountTip")}editor.ui._scale();if(editor.options.scaleEnabled){if(editor.autoHeightEnabled){editor.disableAutoHeight()}me.enableScale()}else{me.disableScale()}if(!editor.options.elementPathEnabled&&!editor.options.wordCount&&!editor.options.scaleEnabled){editor.ui.getDom("elementpath").style.display="none";editor.ui.getDom("wordcount").style.display="none";editor.ui.getDom("scale").style.display="none"}if(!editor.selection.isFocus())return;editor.fireEvent("selectionchange",false,true)});editor.addListener("mousedown",function(t,evt){var el=evt.target||evt.srcElement;baidu.editor.ui.Popup.postHide(evt,el);baidu.editor.ui.ShortCutMenu.postHide(evt)});editor.addListener("delcells",function(){if(UE.ui["edittip"]){new UE.ui["edittip"](editor)}editor.getDialog("edittip").open()});var pastePop,isPaste=false,timer;editor.addListener("afterpaste",function(){if(editor.queryCommandState("pasteplain"))return;if(baidu.editor.ui.PastePicker){pastePop=new baidu.editor.ui.Popup({content:new baidu.editor.ui.PastePicker({editor:editor}),editor:editor,className:"edui-wordpastepop"});pastePop.render()}isPaste=true});editor.addListener("afterinserthtml",function(){clearTimeout(timer);timer=setTimeout(function(){if(pastePop&&(isPaste||editor.ui._isTransfer)){if(pastePop.isHidden()){var span=domUtils.createElement(editor.document,"span",{style:"line-height:0px;",innerHTML:""}),range=editor.selection.getRange();range.insertNode(span);var tmp=getDomNode(span,"firstChild","previousSibling");tmp&&pastePop.showAnchor(tmp.nodeType==3?tmp.parentNode:tmp);domUtils.remove(span)}else{pastePop.show()}delete editor.ui._isTransfer;isPaste=false}},200)});editor.addListener("contextmenu",function(t,evt){baidu.editor.ui.Popup.postHide(evt)});editor.addListener("keydown",function(t,evt){if(pastePop)pastePop.dispose(evt);var keyCode=evt.keyCode||evt.which;if(evt.altKey&&keyCode==90){UE.ui.buttons["fullscreen"].onclick()}});editor.addListener("wordcount",function(type){setCount(this,me)});function setCount(editor,ui){editor.setOpt({wordCount:true,maximumWords:1e4,wordCountMsg:editor.options.wordCountMsg||editor.getLang("wordCountMsg"),wordOverFlowMsg:editor.options.wordOverFlowMsg||editor.getLang("wordOverFlowMsg")});var opt=editor.options,max=opt.maximumWords,msg=opt.wordCountMsg,errMsg=opt.wordOverFlowMsg,countDom=ui.getDom("wordcount");if(!opt.wordCount){return}var count=editor.getContentLength(true);if(count>max){countDom.innerHTML=errMsg;editor.fireEvent("wordcountoverflow")}else{countDom.innerHTML=msg.replace("{#leave}",max-count).replace("{#count}",count)}}editor.addListener("selectionchange",function(){if(editor.options.elementPathEnabled){me[(editor.queryCommandState("elementpath")==-1?"dis":"en")+"ableElementPath"]()}if(editor.options.scaleEnabled){me[(editor.queryCommandState("scale")==-1?"dis":"en")+"ableScale"]()}});var popup=new baidu.editor.ui.Popup({editor:editor,content:"",className:"edui-bubble",_onEditButtonClick:function(){this.hide();editor.ui._dialogs.linkDialog.open()},_onImgEditButtonClick:function(name){this.hide();editor.ui._dialogs[name]&&editor.ui._dialogs[name].open()},_onImgSetFloat:function(value){this.hide();editor.execCommand("imagefloat",value)},_setIframeAlign:function(value){var frame=popup.anchorEl;var newFrame=frame.cloneNode(true);switch(value){case-2:newFrame.setAttribute("align","");break;case-1:newFrame.setAttribute("align","left");break;case 1:newFrame.setAttribute("align","right");break}frame.parentNode.insertBefore(newFrame,frame);domUtils.remove(frame);popup.anchorEl=newFrame;popup.showAnchor(popup.anchorEl)},_updateIframe:function(){var frame=editor._iframe=popup.anchorEl;if(domUtils.hasClass(frame,"ueditor_baidumap")){editor.selection.getRange().selectNode(frame).select();editor.ui._dialogs.mapDialog.open();popup.hide()}else{editor.ui._dialogs.insertframeDialog.open();popup.hide()}},_onRemoveButtonClick:function(cmdName){editor.execCommand(cmdName);this.hide()},queryAutoHide:function(el){if(el&&el.ownerDocument==editor.document){if(el.tagName.toLowerCase()=="img"||domUtils.findParentByTagName(el,"a",true)){return el!==popup.anchorEl}}return baidu.editor.ui.Popup.prototype.queryAutoHide.call(this,el)}});popup.render();if(editor.options.imagePopup){editor.addListener("mouseover",function(t,evt){evt=evt||window.event;var el=evt.target||evt.srcElement;if(editor.ui._dialogs.insertframeDialog&&/iframe/gi.test(el.tagName)){var html=popup.formatHtml(""+editor.getLang("property")+': '+editor.getLang("default")+'  '+editor.getLang("justifyleft")+'  '+editor.getLang("justifyright")+"  "+' '+editor.getLang("modify")+"");if(html){popup.getDom("content").innerHTML=html;popup.anchorEl=el;popup.showAnchor(popup.anchorEl)}else{popup.hide()}}});editor.addListener("selectionchange",function(t,causeByUi){if(!causeByUi)return;var html="",str="",img=editor.selection.getRange().getClosedNode(),dialogs=editor.ui._dialogs;if(img&&img.tagName=="IMG"){var dialogName="insertimageDialog";if(img.className.indexOf("edui-faked-video")!=-1||img.className.indexOf("edui-upload-video")!=-1){dialogName="insertvideoDialog"}if(img.className.indexOf("edui-faked-webapp")!=-1){dialogName="webappDialog"}if(img.src.indexOf("http://api.map.baidu.com")!=-1){dialogName="mapDialog"}if(img.className.indexOf("edui-faked-music")!=-1){dialogName="musicDialog"}if(img.src.indexOf("http://maps.google.com/maps/api/staticmap")!=-1){dialogName="gmapDialog"}if(img.getAttribute("anchorname")){dialogName="anchorDialog";html=popup.formatHtml(""+editor.getLang("property")+': '+editor.getLang("modify")+"  "+""+editor.getLang("delete")+"")}if(img.getAttribute("word_img")){editor.word_img=[img.getAttribute("word_img")];dialogName="wordimageDialog"}if(domUtils.hasClass(img,"loadingclass")||domUtils.hasClass(img,"loaderrorclass")){dialogName=""}if(!dialogs[dialogName]){return}str=""+editor.getLang("property")+": "+''+editor.getLang("default")+"  "+''+editor.getLang("justifyleft")+"  "+''+editor.getLang("justifyright")+"  "+''+editor.getLang("justifycenter")+"  "+"'+editor.getLang("modify")+"";!html&&(html=popup.formatHtml(str))}if(editor.ui._dialogs.linkDialog){var link=editor.queryCommandValue("link");var url;if(link&&(url=link.getAttribute("_href")||link.getAttribute("href",2))){var txt=url;if(url.length>30){txt=url.substring(0,20)+"..."}if(html){html+='
    '}html+=popup.formatHtml(""+editor.getLang("anthorMsg")+': '+txt+""+' '+editor.getLang("modify")+""+' '+editor.getLang("clear")+"");popup.showAnchor(link)}}if(html){popup.getDom("content").innerHTML=html;popup.anchorEl=img||link;popup.showAnchor(popup.anchorEl)}else{popup.hide()}})}},_initToolbars:function(){var editor=this.editor;var toolbars=this.toolbars||[];var toolbarUis=[];for(var i=0;i'+'
    '+(this.toolbars.length?'
    '+this.renderToolbarBoxHtml()+"
    ":"")+'"+'
    '+"
    "+'
    '+"
    "+'
    '+''+''+''+"
    "+'
    '+""},showWordImageDialog:function(){this._dialogs["wordimageDialog"].open()},renderToolbarBoxHtml:function(){var buff=[];for(var i=0;i'+ci+"")}bottom.innerHTML='
    '+this.editor.getLang("elementPathTip")+": "+buff.join(" > ")+"
    "}else{bottom.style.display="none"}},disableElementPath:function(){var bottom=this.getDom("elementpath");bottom.innerHTML="";bottom.style.display="none";this.elementPathEnabled=false},enableElementPath:function(){var bottom=this.getDom("elementpath");bottom.style.display="";this.elementPathEnabled=true;this._updateElementPath()},_scale:function(){var doc=document,editor=this.editor,editorHolder=editor.container,editorDocument=editor.document,toolbarBox=this.getDom("toolbarbox"),bottombar=this.getDom("bottombar"),scale=this.getDom("scale"),scalelayer=this.getDom("scalelayer");var isMouseMove=false,position=null,minEditorHeight=0,minEditorWidth=editor.options.minFrameWidth,pageX=0,pageY=0,scaleWidth=0,scaleHeight=0;function down(){position=domUtils.getXY(editorHolder);if(!minEditorHeight){minEditorHeight=editor.options.minFrameHeight+toolbarBox.offsetHeight+bottombar.offsetHeight}scalelayer.style.cssText="position:absolute;left:0;display:;top:0;background-color:#41ABFF;opacity:0.4;filter: Alpha(opacity=40);width:"+editorHolder.offsetWidth+"px;height:"+editorHolder.offsetHeight+"px;z-index:"+(editor.options.zIndex+1);domUtils.on(doc,"mousemove",move);domUtils.on(editorDocument,"mouseup",up);domUtils.on(doc,"mouseup",up)}var me=this;this.editor.addListener("fullscreenchanged",function(e,fullScreen){if(fullScreen){me.disableScale()}else{if(me.editor.options.scaleEnabled){me.enableScale();var tmpNode=me.editor.document.createElement("span");me.editor.body.appendChild(tmpNode);me.editor.body.style.height=Math.max(domUtils.getXY(tmpNode).y,me.editor.iframe.offsetHeight-20)+"px";domUtils.remove(tmpNode)}}});function move(event){clearSelection();var e=event||window.event;pageX=e.pageX||doc.documentElement.scrollLeft+e.clientX;pageY=e.pageY||doc.documentElement.scrollTop+e.clientY;scaleWidth=pageX-position.x;scaleHeight=pageY-position.y;if(scaleWidth>=minEditorWidth){isMouseMove=true;scalelayer.style.width=scaleWidth+"px"}if(scaleHeight>=minEditorHeight){isMouseMove=true;scalelayer.style.height=scaleHeight+"px"}}function up(){if(isMouseMove){isMouseMove=false;editor.ui._actualFrameWidth=scalelayer.offsetWidth-2;editorHolder.style.width=editor.ui._actualFrameWidth+"px";editor.setHeight(scalelayer.offsetHeight-bottombar.offsetHeight-toolbarBox.offsetHeight-2,true)}if(scalelayer){scalelayer.style.display="none"}clearSelection();domUtils.un(doc,"mousemove",move);domUtils.un(editorDocument,"mouseup",up);domUtils.un(doc,"mouseup",up)}function clearSelection(){if(browser.ie)doc.selection.clear();else window.getSelection().removeAllRanges()}this.enableScale=function(){if(editor.queryCommandState("source")==1)return;scale.style.display="";this.scaleEnabled=true;domUtils.on(scale,"mousedown",down)};this.disableScale=function(){scale.style.display="none";this.scaleEnabled=false;domUtils.un(scale,"mousedown",down)}},isFullScreen:function(){return this._fullscreen},postRender:function(){UIBase.prototype.postRender.call(this);for(var i=0;i[\n\r\t]+([ ]{4})+/g,">").replace(/[\n\r\t]+([ ]{4})+[\n\r\t]+<");holder.className&&(newDiv.className=holder.className);holder.style.cssText&&(newDiv.style.cssText=holder.style.cssText);if(/textarea/i.test(holder.tagName)){editor.textarea=holder;editor.textarea.style.display="none"}else{holder.parentNode.removeChild(holder)}if(holder.id){newDiv.id=holder.id;domUtils.removeAttributes(holder,"id")}holder=newDiv;holder.innerHTML=""}}domUtils.addClass(holder,"edui-"+editor.options.theme);editor.ui.render(holder);var opt=editor.options;editor.container=editor.ui.getDom();var parents=domUtils.findParents(holder,true);var displays=[];for(var i=0,ci;ci=parents[i];i++){displays[i]=ci.style.display;ci.style.display="block"}if(opt.initialFrameWidth){opt.minFrameWidth=opt.initialFrameWidth}else{opt.minFrameWidth=opt.initialFrameWidth=holder.offsetWidth;var styleWidth=holder.style.width;if(/%$/.test(styleWidth)){opt.initialFrameWidth=styleWidth}}if(opt.initialFrameHeight){opt.minFrameHeight=opt.initialFrameHeight}else{opt.initialFrameHeight=opt.minFrameHeight=holder.offsetHeight}for(var i=0,ci;ci=parents[i];i++){ci.style.display=displays[i]}if(holder.style.height){holder.style.height=""}editor.container.style.width=opt.initialFrameWidth+(/%$/.test(opt.initialFrameWidth)?"":"px");editor.container.style.zIndex=opt.zIndex;oldRender.call(editor,editor.ui.getDom("iframeholder"));editor.fireEvent("afteruiready")}})};return editor};UE.getEditor=function(id,opt){var editor=instances[id];if(!editor){editor=instances[id]=new UE.ui.Editor(opt);editor.render(id)}return editor};UE.delEditor=function(id){var editor;if(editor=instances[id]){editor.key&&editor.destroy();delete instances[id]}};UE.registerUI=function(uiName,fn,index,editorId){utils.each(uiName.split(/\s+/),function(name){UE._customizeUI[name]={id:editorId,execFn:fn,index:index}})}}();UE.registerUI("message",function(editor){var editorui=baidu.editor.ui;var Message=editorui.Message;var holder;var _messageItems=[];var me=editor;me.addListener("ready",function(){holder=document.getElementById(me.ui.id+"_message_holder");updateHolderPos();setTimeout(function(){updateHolderPos()},500)});me.addListener("showmessage",function(type,opt){opt=utils.isString(opt)?{content:opt}:opt;var message=new Message({timeout:opt.timeout,type:opt.type,content:opt.content,keepshow:opt.keepshow,editor:me}),mid=opt.id||"msg_"+(+new Date).toString(36);message.render(holder);_messageItems[mid]=message;message.reset(opt);updateHolderPos();return mid});me.addListener("updatemessage",function(type,id,opt){opt=utils.isString(opt)?{content:opt}:opt;var message=_messageItems[id];message.render(holder);message&&message.reset(opt)});me.addListener("hidemessage",function(type,id){var message=_messageItems[id];message&&message.hide()});function updateHolderPos(){var toolbarbox=me.ui.getDom("toolbarbox");if(toolbarbox){holder.style.top=toolbarbox.offsetHeight+3+"px"}holder.style.zIndex=Math.max(me.options.zIndex,me.iframe.style.zIndex)+1}});UE.registerUI("autosave",function(editor){var timer=null,uid=null;editor.on("afterautosave",function(){clearTimeout(timer);timer=setTimeout(function(){if(uid){editor.trigger("hidemessage",uid)}uid=editor.trigger("showmessage",{content:editor.getLang("autosave.success"),timeout:2e3})},2e3)})})}(); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/ueditor.config.js b/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/ueditor.config.js new file mode 100644 index 0000000..666b52c --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/plugin/ueditor/ueditor.config.js @@ -0,0 +1,285 @@ +/** + * ueditor完整配置项 + * 可以在这里配置整个编辑器的特性 + */ +/**************************提示******************************** + * 所有被注释的配置项均为UEditor默认值。 + * 修改默认配置请首先确保已经完全明确该参数的真实用途。 + * 主要有两种修改方案,一种是取消此处注释,然后修改成对应参数;另一种是在实例化编辑器时传入对应参数。 + * 当升级编辑器时,可直接使用旧版配置文件替换新版配置文件,不用担心旧版配置文件中因缺少新功能所需的参数而导致脚本报错。 + **************************提示********************************/ + +(function () { + + /** + * 编辑器资源文件根路径。它所表示的含义是:以编辑器实例化页面为当前路径,指向编辑器资源文件(即dialog等文件夹)的路径。 + * 鉴于很多同学在使用编辑器的时候出现的种种路径问题,此处强烈建议大家使用"相对于网站根目录的相对路径"进行配置。 + * "相对于网站根目录的相对路径"也就是以斜杠开头的形如"/myProject/ueditor/"这样的路径。 + * 如果站点中有多个不在同一层级的页面需要实例化编辑器,且引用了同一UEditor的时候,此处的URL可能不适用于每个页面的编辑器。 + * 因此,UEditor提供了针对不同页面的编辑器可单独配置的根路径,具体来说,在需要实例化编辑器的页面最顶部写上如下代码即可。当然,需要令此处的URL等于对应的配置。 + * window.UEDITOR_HOME_URL = "/xxxx/xxxx/"; + */ + var URL = window.UEDITOR_HOME_URL || getUEBasePath(); + + /** + * 配置项主体。注意,此处所有涉及到路径的配置别遗漏URL变量。 + */ + window.UEDITOR_CONFIG = { + + //为编辑器实例添加一个路径,这个不能被注释 + UEDITOR_HOME_URL: URL + + // 服务器统一请求接口路径 + , serverUrl: "/jsp/controller.jsp" + + //工具栏上的所有的功能按钮和下拉框,可以在new编辑器的实例时选择自己需要的从新定义 + + , toolbars: [["fullscreen","source","undo","redo","insertunorderedlist","insertorderedlist","link","unlink","help","attachment","simpleupload","insertimage","emotion","pagebreak","date","bold","italic","fontborder","strikethrough","underline","forecolor","justifyleft","justifycenter","justifyright","justifyjustify","paragraph","rowspacingbottom","rowspacingtop","lineheight"]] + //当鼠标放在工具栏上时显示的tooltip提示,留空支持自动多语言配置,否则以配置值为准 + //,labelMap:{ + // 'anchor':'', 'undo':'' + //} + + //语言配置项,默认是zh-cn。有需要的话也可以使用如下这样的方式来自动多语言切换,当然,前提条件是lang文件夹下存在对应的语言文件: + //lang值也可以通过自动获取 (navigator.language||navigator.browserLanguage ||navigator.userLanguage).toLowerCase() + //,lang:"zh-cn" + //,langPath:URL +"lang/" + + //主题配置项,默认是default。有需要的话也可以使用如下这样的方式来自动多主题切换,当然,前提条件是themes文件夹下存在对应的主题文件: + //现有如下皮肤:default + //,theme:'default' + //,themePath:URL +"themes/" + + //,zIndex : 900 //编辑器层级的基数,默认是900 + + //针对getAllHtml方法,会在对应的head标签中增加该编码设置。 + //,charset:"utf-8" + + //若实例化编辑器的页面手动修改的domain,此处需要设置为true + //,customDomain:false + + //常用配置项目 + //,isShow : true //默认显示编辑器 + + //,textarea:'editorValue' // 提交表单时,服务器获取编辑器提交内容的所用的参数,多实例时可以给容器name属性,会将name给定的值最为每个实例的键值,不用每次实例化的时候都设置这个值 + + //,initialContent:'欢迎使用ueditor!' //初始化编辑器的内容,也可以通过textarea/script给值,看官网例子 + + //,autoClearinitialContent:true //是否自动清除编辑器初始内容,注意:如果focus属性设置为true,这个也为真,那么编辑器一上来就会触发导致初始化的内容看不到了 + + //,focus:false //初始化时,是否让编辑器获得焦点true或false + + //如果自定义,最好给p标签如下的行高,要不输入中文时,会有跳动感 + //,initialStyle:'p{line-height:1em}'//编辑器层级的基数,可以用来改变字体等 + + //,iframeCssUrl: URL + '/themes/iframe.css' //给编辑器内部引入一个css文件 + + //,initialFrameWidth:1000 //初始化编辑器宽度,默认1000 + //,initialFrameHeight:320 //初始化编辑器高度,默认320 + + //,readonly : false //编辑器初始化结束后,编辑区域是否是只读的,默认是false + + //,autoClearEmptyNode : true //getContent时,是否删除空的inlineElement节点(包括嵌套的情况) + + //,fullscreen : false //是否开启初始化时即全屏,默认关闭 + + //,imagePopup:true //图片操作的浮层开关,默认打开 + + //,emotionLocalization:false //是否开启表情本地化,默认关闭。若要开启请确保emotion文件夹下包含官网提供的images表情文件夹 + + //粘贴只保留标签,去除标签所有属性 + //,retainOnlyLabelPasted: false + + //,pasteplain:false //是否默认为纯文本粘贴。false为不使用纯文本粘贴,true为使用纯文本粘贴 + //纯文本粘贴模式下的过滤规则 + //'filterTxtRules' : function(){ + // function transP(node){ + // node.tagName = 'p'; + // node.setStyle(); + // } + // return { + // //直接删除及其字节点内容 + // '-' : 'script style object iframe embed input select', + // 'p': {$:{}}, + // 'br':{$:{}}, + // 'div':{'$':{}}, + // 'li':{'$':{}}, + // 'caption':transP, + // 'th':transP, + // 'tr':transP, + // 'h1':transP,'h2':transP,'h3':transP,'h4':transP,'h5':transP,'h6':transP, + // 'td':function(node){ + // //没有内容的td直接删掉 + // var txt = !!node.innerText(); + // if(txt){ + // node.parentNode.insertAfter(UE.uNode.createText('    '),node); + // } + // node.parentNode.removeChild(node,node.innerText()) + // } + // } + //}() + + //,allHtmlEnabled:false //提交到后台的数据是否包含整个html字符串 + + //insertorderedlist + //有序列表的下拉配置,值留空时支持多语言自动识别,若配置值,则以此值为准 + //,'insertorderedlist':{ + // //自定的样式 + // 'num':'1,2,3...', + // 'num1':'1),2),3)...', + // 'num2':'(1),(2),(3)...', + // 'cn':'一,二,三....', + // 'cn1':'一),二),三)....', + // 'cn2':'(一),(二),(三)....', + // //系统自带 + // 'decimal' : '' , //'1,2,3...' + // 'lower-alpha' : '' , // 'a,b,c...' + // 'lower-roman' : '' , //'i,ii,iii...' + // 'upper-alpha' : '' , lang //'A,B,C' + // 'upper-roman' : '' //'I,II,III...' + //} + + //insertunorderedlist + //无序列表的下拉配置,值留空时支持多语言自动识别,若配置值,则以此值为准 + //,insertunorderedlist : { //自定的样式 + // 'dash' :'— 破折号', //-破折号 + // 'dot':' 。 小圆圈', //系统自带 + // 'circle' : '', // '○ 小圆圈' + // 'disc' : '', // '● 小圆点' + // 'square' : '' //'■ 小方块' + //} + //,listDefaultPaddingLeft : '30'//默认的左边缩进的基数倍 + //,listiconpath : 'http://bs.baidu.com/listicon/'//自定义标号的路径 + //,maxListLevel : 3 //限制可以tab的级数, 设置-1为不限制 + + //,autoTransWordToList:false //禁止word中粘贴进来的列表自动变成列表标签 + + //paragraph + //段落格式 值留空时支持多语言自动识别,若配置,则以配置值为准 + //,'paragraph':{'p':'', 'h1':'', 'h2':'', 'h3':'', 'h4':'', 'h5':'', 'h6':''} + + //rowspacingtop + //段间距 值和显示的名字相同 + //,'rowspacingtop':['5', '10', '15', '20', '25'] + + //rowspacingBottom + //段间距 值和显示的名字相同 + //,'rowspacingbottom':['5', '10', '15', '20', '25'] + + //lineheight + //行内间距 值和显示的名字相同 + //,'lineheight':['1', '1.5','1.75','2', '3', '4', '5'] + + //快捷菜单 + //,shortcutMenu:["fontfamily", "fontsize", "bold", "italic", "underline", "forecolor", "backcolor", "insertorderedlist", "insertunorderedlist"] + + //tab + //点击tab键时移动的距离,tabSize倍数,tabNode什么字符做为单位 + //,tabSize:4 + //,tabNode:' ' + + //undo + //可以最多回退的次数,默认20 + //,maxUndoCount:20 + //当输入的字符数超过该值时,保存一次现场 + //,maxInputCount:1 + + //scaleEnabled + //是否可以拉伸长高,默认true(当开启时,自动长高失效) + //,scaleEnabled:false + //,minFrameWidth:800 //编辑器拖动时最小宽度,默认800 + //,minFrameHeight:220 //编辑器拖动时最小高度,默认220 + + //pageBreakTag + //分页标识符,默认是_ueditor_page_break_tag_ + //,pageBreakTag:'_ueditor_page_break_tag_' + + //sourceEditor + //源码的查看方式,codemirror 是代码高亮,textarea是文本框,默认是codemirror + //注意默认codemirror只能在ie8+和非ie中使用 + //,sourceEditor:"codemirror" + //如果sourceEditor是codemirror,还用配置一下两个参数 + //codeMirrorJsUrl js加载的路径,默认是 URL + "third-party/codemirror/codemirror.js" + //,codeMirrorJsUrl:URL + "third-party/codemirror/codemirror.js" + //codeMirrorCssUrl css加载的路径,默认是 URL + "third-party/codemirror/codemirror.css" + //,codeMirrorCssUrl:URL + "third-party/codemirror/codemirror.css" + //编辑器初始化完成后是否进入源码模式,默认为否。 + //,sourceEditorFirst:false + + //iframeUrlMap + //dialog内容的路径 ~会被替换成URL,垓属性一旦打开,将覆盖所有的dialog的默认路径 + //,iframeUrlMap:{ + // 'anchor':'~/dialogs/anchor/anchor.html', + //} + + }; + + function getUEBasePath(docUrl, confUrl) { + + return getBasePath(docUrl || self.document.URL || self.location.href, confUrl || getConfigFilePath()); + + } + + function getConfigFilePath() { + + var configPath = document.getElementsByTagName('script'); + + return configPath[ configPath.length - 1 ].src; + + } + + function getBasePath(docUrl, confUrl) { + + var basePath = confUrl; + + + if (/^(\/|\\\\)/.test(confUrl)) { + + basePath = /^.+?\w(\/|\\\\)/.exec(docUrl)[0] + confUrl.replace(/^(\/|\\\\)/, ''); + + } else if (!/^[a-z]+:/i.test(confUrl)) { + + docUrl = docUrl.split("#")[0].split("?")[0].replace(/[^\\\/]+$/, ''); + + basePath = docUrl + "" + confUrl; + + } + + return optimizationPath(basePath); + + } + + function optimizationPath(path) { + + var protocol = /^[a-z]+:\/\//.exec(path)[ 0 ], + tmp = null, + res = []; + + path = path.replace(protocol, "").split("?")[0].split("#")[0]; + + path = path.replace(/\\/g, '/').split(/\//); + + path[ path.length - 1 ] = ""; + + while (path.length) { + + if (( tmp = path.shift() ) === "..") { + res.pop(); + } else if (tmp !== ".") { + res.push(tmp); + } + + } + + return protocol + res.join("/"); + + } + function upFiles() { + var myFiles = _editor.getDialog("attachment"); + myFiles.open(); + } + window.UE = { + getUEBasePath: getUEBasePath + }; + +})(); diff --git a/src/main/webapp/WEB-INF/views/src/js/ug-ui/ug-dialog.js b/src/main/webapp/WEB-INF/views/src/js/ug-ui/ug-dialog.js new file mode 100644 index 0000000..c3868a3 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/ug-ui/ug-dialog.js @@ -0,0 +1,88 @@ +/** + * Created by Jeng on 2015/12/17. + */ +/*jshint globalstrict:true*/ +/*global angular:false*/ +(function(){ + // Create global xmg obj and its namespaces + // build processes may have already created an xmg obj + window.ug = window.ug || {}; + window.ug.version = '1.0.0'; +(function(angular){ + 'use strict'; + /** + * dialog框架 + */ +angular.module('ug.dialog', ["ng"]) + .constant("$ugDialogConfig", { + errorElement: "div", + errorClass:"error" + }) + .factory("$ugDialog", ["$q", function ($q) { + return { + alert : function(option){ + var defaultConfig = { + title : "提示", + color : "#5384AF", + timeout: 3000, + icon : "fa fa-bell" + }; + if(!angular.isObject(option)){ + option = { + content:option + } + } + angular.extend(defaultConfig, option); + $.smallBox(defaultConfig); + }, + warn : function(option){ + var defaultConfig = { + title:"警告", + color : "#C46A69", + icon : "fa fa-warning shake animated", + timeout : 6000 + }; + if(!angular.isObject(option)){ + option = { + content:option + } + } + angular.extend(defaultConfig, option); + $.bigBox(defaultConfig); + }, + confirm: function (option) { + var ok = "确认"; + var cancel = "取消"; + if(option.okText){ + ok = option.okText; + } + if(option.cancelText){ + cancel = option.cancelText; + } + var defaultConfig = { + title : "确认框", + color : "#5384AF", + icon : "fa fa-bell", + buttons : '[' +cancel + '][' + ok + ']' + }; + if(!angular.isObject(option)){ + option = { + content:option + } + } + angular.extend(defaultConfig, option); + var deferred = $q.defer(); + $.SmartMessageBox(defaultConfig, function(ButtonPressed) { + if (ButtonPressed === ok) { + deferred.resolve(); + } + if (ButtonPressed === cancel) { + deferred.reject(); + } + }); + return deferred.promise; + } + } + }]) +}(angular)); +})(); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/js/ug-ui/ug-validate.js b/src/main/webapp/WEB-INF/views/src/js/ug-ui/ug-validate.js new file mode 100644 index 0000000..427cd7a --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/ug-ui/ug-validate.js @@ -0,0 +1,93 @@ +/** + * Created by Jeng on 2015/12/17. + */ +/*jshint globalstrict:true*/ +/*global angular:false*/ +(function(){ + // Create global xmg obj and its namespaces + // build processes may have already created an xmg obj + window.ug = window.ug || {}; + window.ug.version = '1.0.0'; +(function(angular){ + 'use strict'; +/** + * 校验规则表达式 + */ +var Regex_Rules = { + // 正数字 + positiveIntegerRegex: /^[0-9]+$/, + // 整数 + integerRegex : /^\-?[0-9]+$/, + // 正浮点数字 + positiveDecimalRegex : /^[0-9]*\.?[0-9]+$/, + // 浮点数字 + decimalRegex : /^\-?[0-9]*\.?[0-9]+$/, + // email + emailRegex : /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/, + // 大小写字母或数字 + notSpecialCharacterRegex : /^[A-Za-z0-9]+$/i, + // 非汉字 + notChineseRegex : /^[\u4E00-\u9FA5]+$/i, + // 中国身份证 + chinaIdRegex : /^[1-9]\d{5}[1-9]\d{3}(((0[13578]|1[02])(0[1-9]|[12]\d|3[0-1]))|((0[469]|11)(0[1-9]|[12]\d|30))|(02(0[1-9]|[12]\d)))(\d{4}|\d{3}[xX])$/, + // 中国邮政编码 + chinaZipRegex : /^\d{6}$/, + // 手机号码 + telephoneRegex : /^(1)[0-9]{10}$/, + // IP + ipRegex : /^((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})$/ +}; + +// 校验框架 +var $ugValidate = ["$ugValidateDefault", function( $ugValidateDefault) { + return { + restrict: 'A', + scope:{ + ugValidate:"=" + }, + require:"form", + link: function(scope, element, attr) { + var option = angular.extend($ugValidateDefault, scope.ugValidate); + scope.ugValidate.validator = $(element).validate(option); + angular.extend(scope.ugValidate, option); + } + }; +}]; + /** + * 校验框架 + */ +angular.module('ug.validate', ["ng"]) + .constant("Regex_Rules", Regex_Rules) + .constant("$ugValidateDefault", { + errorElement: "div", + errorClass:"error", + errorPlacement: function(error, element) { //指定错误信息位置 + if (element.is(':radio') || element.is(':checkbox')) { //如果是radio或checkbox + var eid = element.attr('name'); //获取元素的name属性 + var ele = $(element).parent().parent(); + error.appendTo(ele); //将错误信息添加当前元素的父结点后面 + } else { + error.insertAfter(element); + } + } + }) + .factory("$ugValidateProvider", function () { + return { + setDefaults: function (options) { + $.validator.setDefaults(options); + }, + addMethod: function (name, func, errorText) { + $.validator.addMethod(name, func, errorText); + } + } + }) + .run([function(){ + $.validator.addMethod("positiveInteger", function(value, element) { + value=parseInt(value); + return this.optional(element) || value>0; + }, "请输入大于0的整数"); + }]) + .directive('ugValidate', $ugValidate); + +}(angular)); +})(); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/js/uploadify/index.html b/src/main/webapp/WEB-INF/views/src/js/uploadify/index.html new file mode 100644 index 0000000..c2b673d --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/uploadify/index.html @@ -0,0 +1,50 @@ + + + + +UploadiFive Test + + + + + + + +

    Uploadify Demo

    +
    +
    + +
    +
    + + + + + +
    + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/js/uploadify/jquery.uploadify.min.js b/src/main/webapp/WEB-INF/views/src/js/uploadify/jquery.uploadify.min.js new file mode 100644 index 0000000..534c52a --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/uploadify/jquery.uploadify.min.js @@ -0,0 +1,16 @@ +/* +Uploadify v3.2.1 +Copyright (c) 2012 Reactive Apps, Ronnie Garcia +Released under the MIT License + +SWFUpload: http://www.swfupload.org, http://swfupload.googlecode.com +mmSWFUpload 1.0: Flash upload dialog - http://profandesign.se/swfupload/, http://www.vinterwebb.se/ +SWFUpload is (c) 2006-2007 Lars Huring, Olov Nilzén and Mammon Media and is released under the MIT License: +http://www.opensource.org/licenses/mit-license.php +SWFUpload 2 is (c) 2007-2008 Jake Roberts and is released under the MIT License: +http://www.opensource.org/licenses/mit-license.php + +SWFObject v2.2 +is released under the MIT License +*/ +;var swfobject=function(){var aq="undefined",aD="object",ab="Shockwave Flash",X="ShockwaveFlash.ShockwaveFlash",aE="application/x-shockwave-flash",ac="SWFObjectExprInst",ax="onreadystatechange",af=window,aL=document,aB=navigator,aa=false,Z=[aN],aG=[],ag=[],al=[],aJ,ad,ap,at,ak=false,aU=false,aH,an,aI=true,ah=function(){var a=typeof aL.getElementById!=aq&&typeof aL.getElementsByTagName!=aq&&typeof aL.createElement!=aq,e=aB.userAgent.toLowerCase(),c=aB.platform.toLowerCase(),h=c?/win/.test(c):/win/.test(e),j=c?/mac/.test(c):/mac/.test(e),g=/webkit/.test(e)?parseFloat(e.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,d=!+"\v1",f=[0,0,0],k=null;if(typeof aB.plugins!=aq&&typeof aB.plugins[ab]==aD){k=aB.plugins[ab].description;if(k&&!(typeof aB.mimeTypes!=aq&&aB.mimeTypes[aE]&&!aB.mimeTypes[aE].enabledPlugin)){aa=true;d=false;k=k.replace(/^.*\s+(\S+\s+\S+$)/,"$1");f[0]=parseInt(k.replace(/^(.*)\..*$/,"$1"),10);f[1]=parseInt(k.replace(/^.*\.(.*)\s.*$/,"$1"),10);f[2]=/[a-zA-Z]/.test(k)?parseInt(k.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0;}}else{if(typeof af.ActiveXObject!=aq){try{var i=new ActiveXObject(X);if(i){k=i.GetVariable("$version");if(k){d=true;k=k.split(" ")[1].split(",");f=[parseInt(k[0],10),parseInt(k[1],10),parseInt(k[2],10)];}}}catch(b){}}}return{w3:a,pv:f,wk:g,ie:d,win:h,mac:j};}(),aK=function(){if(!ah.w3){return;}if((typeof aL.readyState!=aq&&aL.readyState=="complete")||(typeof aL.readyState==aq&&(aL.getElementsByTagName("body")[0]||aL.body))){aP();}if(!ak){if(typeof aL.addEventListener!=aq){aL.addEventListener("DOMContentLoaded",aP,false);}if(ah.ie&&ah.win){aL.attachEvent(ax,function(){if(aL.readyState=="complete"){aL.detachEvent(ax,arguments.callee);aP();}});if(af==top){(function(){if(ak){return;}try{aL.documentElement.doScroll("left");}catch(a){setTimeout(arguments.callee,0);return;}aP();})();}}if(ah.wk){(function(){if(ak){return;}if(!/loaded|complete/.test(aL.readyState)){setTimeout(arguments.callee,0);return;}aP();})();}aC(aP);}}();function aP(){if(ak){return;}try{var b=aL.getElementsByTagName("body")[0].appendChild(ar("span"));b.parentNode.removeChild(b);}catch(a){return;}ak=true;var d=Z.length;for(var c=0;c0){for(var h=0;h0){var i=aS(c);if(i){if(ao(aG[h].swfVersion)&&!(ah.wk&&ah.wk<312)){ay(c,true);if(l){a.success=true;a.ref=av(c);l(a);}}else{if(aG[h].expressInstall&&au()){var e={};e.data=aG[h].expressInstall;e.width=i.getAttribute("width")||"0";e.height=i.getAttribute("height")||"0";if(i.getAttribute("class")){e.styleclass=i.getAttribute("class");}if(i.getAttribute("align")){e.align=i.getAttribute("align");}var f={};var d=i.getElementsByTagName("param");var k=d.length;for(var j=0;j';}}a.outerHTML='"+h+"";ag[ag.length]=e.id;d=aS(e.id);}else{var b=ar(aD);b.setAttribute("type",aE);for(var k in e){if(e[k]!=Object.prototype[k]){if(k.toLowerCase()=="styleclass"){b.setAttribute("class",e[k]);}else{if(k.toLowerCase()!="classid"){b.setAttribute(k,e[k]);}}}}for(var l in g){if(g[l]!=Object.prototype[l]&&l.toLowerCase()!="movie"){aQ(b,l,g[l]);}}a.parentNode.replaceChild(b,a);d=b;}}return d;}function aQ(b,d,c){var a=ar("param");a.setAttribute("name",d);a.setAttribute("value",c);b.appendChild(a);}function aw(a){var b=aS(a);if(b&&b.nodeName=="OBJECT"){if(ah.ie&&ah.win){b.style.display="none";(function(){if(b.readyState==4){aT(a);}else{setTimeout(arguments.callee,10);}})();}else{b.parentNode.removeChild(b);}}}function aT(a){var b=aS(a);if(b){for(var c in b){if(typeof b[c]=="function"){b[c]=null;}}b.parentNode.removeChild(b);}}function aS(a){var c=null;try{c=aL.getElementById(a);}catch(b){}return c;}function ar(a){return aL.createElement(a);}function aM(a,c,b){a.attachEvent(c,b);al[al.length]=[a,c,b];}function ao(a){var b=ah.pv,c=a.split(".");c[0]=parseInt(c[0],10);c[1]=parseInt(c[1],10)||0;c[2]=parseInt(c[2],10)||0;return(b[0]>c[0]||(b[0]==c[0]&&b[1]>c[1])||(b[0]==c[0]&&b[1]==c[1]&&b[2]>=c[2]))?true:false;}function az(b,f,a,c){if(ah.ie&&ah.mac){return;}var e=aL.getElementsByTagName("head")[0];if(!e){return;}var g=(a&&typeof a=="string")?a:"screen";if(c){aH=null;an=null;}if(!aH||an!=g){var d=ar("style");d.setAttribute("type","text/css");d.setAttribute("media",g);aH=e.appendChild(d);if(ah.ie&&ah.win&&typeof aL.styleSheets!=aq&&aL.styleSheets.length>0){aH=aL.styleSheets[aL.styleSheets.length-1];}an=g;}if(ah.ie&&ah.win){if(aH&&typeof aH.addRule==aD){aH.addRule(b,f);}}else{if(aH&&typeof aL.createTextNode!=aq){aH.appendChild(aL.createTextNode(b+" {"+f+"}"));}}}function ay(a,c){if(!aI){return;}var b=c?"visible":"hidden";if(ak&&aS(a)){aS(a).style.visibility=b;}else{az("#"+a,"visibility:"+b);}}function ai(b){var a=/[\\\"<>\.;]/;var c=a.exec(b)!=null;return c&&typeof encodeURIComponent!=aq?encodeURIComponent(b):b;}var aR=function(){if(ah.ie&&ah.win){window.attachEvent("onunload",function(){var a=al.length;for(var b=0;b','','','','','','',""].join("");};SWFUpload.prototype.getFlashVars=function(){var c=this.buildParamString();var d=this.settings.http_success.join(",");return["movieName=",encodeURIComponent(this.movieName),"&uploadURL=",encodeURIComponent(this.settings.upload_url),"&useQueryString=",encodeURIComponent(this.settings.use_query_string),"&requeueOnError=",encodeURIComponent(this.settings.requeue_on_error),"&httpSuccess=",encodeURIComponent(d),"&assumeSuccessTimeout=",encodeURIComponent(this.settings.assume_success_timeout),"&params=",encodeURIComponent(c),"&filePostName=",encodeURIComponent(this.settings.file_post_name),"&fileTypes=",encodeURIComponent(this.settings.file_types),"&fileTypesDescription=",encodeURIComponent(this.settings.file_types_description),"&fileSizeLimit=",encodeURIComponent(this.settings.file_size_limit),"&fileUploadLimit=",encodeURIComponent(this.settings.file_upload_limit),"&fileQueueLimit=",encodeURIComponent(this.settings.file_queue_limit),"&debugEnabled=",encodeURIComponent(this.settings.debug_enabled),"&buttonImageURL=",encodeURIComponent(this.settings.button_image_url),"&buttonWidth=",encodeURIComponent(this.settings.button_width),"&buttonHeight=",encodeURIComponent(this.settings.button_height),"&buttonText=",encodeURIComponent(this.settings.button_text),"&buttonTextTopPadding=",encodeURIComponent(this.settings.button_text_top_padding),"&buttonTextLeftPadding=",encodeURIComponent(this.settings.button_text_left_padding),"&buttonTextStyle=",encodeURIComponent(this.settings.button_text_style),"&buttonAction=",encodeURIComponent(this.settings.button_action),"&buttonDisabled=",encodeURIComponent(this.settings.button_disabled),"&buttonCursor=",encodeURIComponent(this.settings.button_cursor)].join("");};SWFUpload.prototype.getMovieElement=function(){if(this.movieElement==undefined){this.movieElement=document.getElementById(this.movieName);}if(this.movieElement===null){throw"Could not find Flash element";}return this.movieElement;};SWFUpload.prototype.buildParamString=function(){var f=this.settings.post_params;var d=[];if(typeof(f)==="object"){for(var e in f){if(f.hasOwnProperty(e)){d.push(encodeURIComponent(e.toString())+"="+encodeURIComponent(f[e].toString()));}}}return d.join("&");};SWFUpload.prototype.destroy=function(){try{this.cancelUpload(null,false);var g=null;g=this.getMovieElement();if(g&&typeof(g.CallFunction)==="unknown"){for(var j in g){try{if(typeof(g[j])==="function"){g[j]=null;}}catch(h){}}try{g.parentNode.removeChild(g);}catch(f){}}window[this.movieName]=null;SWFUpload.instances[this.movieName]=null;delete SWFUpload.instances[this.movieName];this.movieElement=null;this.settings=null;this.customSettings=null;this.eventQueue=null;this.movieName=null;return true;}catch(i){return false;}};SWFUpload.prototype.displayDebugInfo=function(){this.debug(["---SWFUpload Instance Info---\n","Version: ",SWFUpload.version,"\n","Movie Name: ",this.movieName,"\n","Settings:\n","\t","upload_url: ",this.settings.upload_url,"\n","\t","flash_url: ",this.settings.flash_url,"\n","\t","use_query_string: ",this.settings.use_query_string.toString(),"\n","\t","requeue_on_error: ",this.settings.requeue_on_error.toString(),"\n","\t","http_success: ",this.settings.http_success.join(", "),"\n","\t","assume_success_timeout: ",this.settings.assume_success_timeout,"\n","\t","file_post_name: ",this.settings.file_post_name,"\n","\t","post_params: ",this.settings.post_params.toString(),"\n","\t","file_types: ",this.settings.file_types,"\n","\t","file_types_description: ",this.settings.file_types_description,"\n","\t","file_size_limit: ",this.settings.file_size_limit,"\n","\t","file_upload_limit: ",this.settings.file_upload_limit,"\n","\t","file_queue_limit: ",this.settings.file_queue_limit,"\n","\t","debug: ",this.settings.debug.toString(),"\n","\t","prevent_swf_caching: ",this.settings.prevent_swf_caching.toString(),"\n","\t","button_placeholder_id: ",this.settings.button_placeholder_id.toString(),"\n","\t","button_placeholder: ",(this.settings.button_placeholder?"Set":"Not Set"),"\n","\t","button_image_url: ",this.settings.button_image_url.toString(),"\n","\t","button_width: ",this.settings.button_width.toString(),"\n","\t","button_height: ",this.settings.button_height.toString(),"\n","\t","button_text: ",this.settings.button_text.toString(),"\n","\t","button_text_style: ",this.settings.button_text_style.toString(),"\n","\t","button_text_top_padding: ",this.settings.button_text_top_padding.toString(),"\n","\t","button_text_left_padding: ",this.settings.button_text_left_padding.toString(),"\n","\t","button_action: ",this.settings.button_action.toString(),"\n","\t","button_disabled: ",this.settings.button_disabled.toString(),"\n","\t","custom_settings: ",this.settings.custom_settings.toString(),"\n","Event Handlers:\n","\t","swfupload_loaded_handler assigned: ",(typeof this.settings.swfupload_loaded_handler==="function").toString(),"\n","\t","file_dialog_start_handler assigned: ",(typeof this.settings.file_dialog_start_handler==="function").toString(),"\n","\t","file_queued_handler assigned: ",(typeof this.settings.file_queued_handler==="function").toString(),"\n","\t","file_queue_error_handler assigned: ",(typeof this.settings.file_queue_error_handler==="function").toString(),"\n","\t","upload_start_handler assigned: ",(typeof this.settings.upload_start_handler==="function").toString(),"\n","\t","upload_progress_handler assigned: ",(typeof this.settings.upload_progress_handler==="function").toString(),"\n","\t","upload_error_handler assigned: ",(typeof this.settings.upload_error_handler==="function").toString(),"\n","\t","upload_success_handler assigned: ",(typeof this.settings.upload_success_handler==="function").toString(),"\n","\t","upload_complete_handler assigned: ",(typeof this.settings.upload_complete_handler==="function").toString(),"\n","\t","debug_handler assigned: ",(typeof this.settings.debug_handler==="function").toString(),"\n"].join(""));};SWFUpload.prototype.addSetting=function(d,f,e){if(f==undefined){return(this.settings[d]=e);}else{return(this.settings[d]=f);}};SWFUpload.prototype.getSetting=function(b){if(this.settings[b]!=undefined){return this.settings[b];}return"";};SWFUpload.prototype.callFlash=function(functionName,argumentArray){argumentArray=argumentArray||[];var movieElement=this.getMovieElement();var returnValue,returnString;try{returnString=movieElement.CallFunction(''+__flash__argumentsToXML(argumentArray,0)+"");returnValue=eval(returnString);}catch(ex){throw"Call to "+functionName+" failed";}if(returnValue!=undefined&&typeof returnValue.post==="object"){returnValue=this.unescapeFilePostParams(returnValue);}return returnValue;};SWFUpload.prototype.selectFile=function(){this.callFlash("SelectFile");};SWFUpload.prototype.selectFiles=function(){this.callFlash("SelectFiles");};SWFUpload.prototype.startUpload=function(b){this.callFlash("StartUpload",[b]);};SWFUpload.prototype.cancelUpload=function(d,c){if(c!==false){c=true;}this.callFlash("CancelUpload",[d,c]);};SWFUpload.prototype.stopUpload=function(){this.callFlash("StopUpload");};SWFUpload.prototype.getStats=function(){return this.callFlash("GetStats");};SWFUpload.prototype.setStats=function(b){this.callFlash("SetStats",[b]);};SWFUpload.prototype.getFile=function(b){if(typeof(b)==="number"){return this.callFlash("GetFileByIndex",[b]);}else{return this.callFlash("GetFile",[b]);}};SWFUpload.prototype.addFileParam=function(e,d,f){return this.callFlash("AddFileParam",[e,d,f]);};SWFUpload.prototype.removeFileParam=function(d,c){this.callFlash("RemoveFileParam",[d,c]);};SWFUpload.prototype.setUploadURL=function(b){this.settings.upload_url=b.toString();this.callFlash("SetUploadURL",[b]);};SWFUpload.prototype.setPostParams=function(b){this.settings.post_params=b;this.callFlash("SetPostParams",[b]);};SWFUpload.prototype.addPostParam=function(d,c){this.settings.post_params[d]=c;this.callFlash("SetPostParams",[this.settings.post_params]);};SWFUpload.prototype.removePostParam=function(b){delete this.settings.post_params[b];this.callFlash("SetPostParams",[this.settings.post_params]);};SWFUpload.prototype.setFileTypes=function(d,c){this.settings.file_types=d;this.settings.file_types_description=c;this.callFlash("SetFileTypes",[d,c]);};SWFUpload.prototype.setFileSizeLimit=function(b){this.settings.file_size_limit=b;this.callFlash("SetFileSizeLimit",[b]);};SWFUpload.prototype.setFileUploadLimit=function(b){this.settings.file_upload_limit=b;this.callFlash("SetFileUploadLimit",[b]);};SWFUpload.prototype.setFileQueueLimit=function(b){this.settings.file_queue_limit=b;this.callFlash("SetFileQueueLimit",[b]);};SWFUpload.prototype.setFilePostName=function(b){this.settings.file_post_name=b;this.callFlash("SetFilePostName",[b]);};SWFUpload.prototype.setUseQueryString=function(b){this.settings.use_query_string=b;this.callFlash("SetUseQueryString",[b]);};SWFUpload.prototype.setRequeueOnError=function(b){this.settings.requeue_on_error=b;this.callFlash("SetRequeueOnError",[b]);};SWFUpload.prototype.setHTTPSuccess=function(b){if(typeof b==="string"){b=b.replace(" ","").split(",");}this.settings.http_success=b;this.callFlash("SetHTTPSuccess",[b]);};SWFUpload.prototype.setAssumeSuccessTimeout=function(b){this.settings.assume_success_timeout=b;this.callFlash("SetAssumeSuccessTimeout",[b]);};SWFUpload.prototype.setDebugEnabled=function(b){this.settings.debug_enabled=b;this.callFlash("SetDebugEnabled",[b]);};SWFUpload.prototype.setButtonImageURL=function(b){if(b==undefined){b="";}this.settings.button_image_url=b;this.callFlash("SetButtonImageURL",[b]);};SWFUpload.prototype.setButtonDimensions=function(f,e){this.settings.button_width=f;this.settings.button_height=e;var d=this.getMovieElement();if(d!=undefined){d.style.width=f+"px";d.style.height=e+"px";}this.callFlash("SetButtonDimensions",[f,e]);};SWFUpload.prototype.setButtonText=function(b){this.settings.button_text=b;this.callFlash("SetButtonText",[b]);};SWFUpload.prototype.setButtonTextPadding=function(c,d){this.settings.button_text_top_padding=d;this.settings.button_text_left_padding=c;this.callFlash("SetButtonTextPadding",[c,d]);};SWFUpload.prototype.setButtonTextStyle=function(b){this.settings.button_text_style=b;this.callFlash("SetButtonTextStyle",[b]);};SWFUpload.prototype.setButtonDisabled=function(b){this.settings.button_disabled=b;this.callFlash("SetButtonDisabled",[b]);};SWFUpload.prototype.setButtonAction=function(b){this.settings.button_action=b;this.callFlash("SetButtonAction",[b]);};SWFUpload.prototype.setButtonCursor=function(b){this.settings.button_cursor=b;this.callFlash("SetButtonCursor",[b]);};SWFUpload.prototype.queueEvent=function(d,f){if(f==undefined){f=[];}else{if(!(f instanceof Array)){f=[f];}}var e=this;if(typeof this.settings[d]==="function"){this.eventQueue.push(function(){this.settings[d].apply(this,f);});setTimeout(function(){e.executeNextEvent();},0);}else{if(this.settings[d]!==null){throw"Event handler "+d+" is unknown or is not a function";}}};SWFUpload.prototype.executeNextEvent=function(){var b=this.eventQueue?this.eventQueue.shift():null;if(typeof(b)==="function"){b.apply(this);}};SWFUpload.prototype.unescapeFilePostParams=function(l){var j=/[$]([0-9a-f]{4})/i;var i={};var k;if(l!=undefined){for(var h in l.post){if(l.post.hasOwnProperty(h)){k=h;var g;while((g=j.exec(k))!==null){k=k.replace(g[0],String.fromCharCode(parseInt("0x"+g[1],16)));}i[k]=l.post[h];}}l.post=i;}return l;};SWFUpload.prototype.testExternalInterface=function(){try{return this.callFlash("TestExternalInterface");}catch(b){return false;}};SWFUpload.prototype.flashReady=function(){var b=this.getMovieElement();if(!b){this.debug("Flash called back ready but the flash movie can't be found.");return;}this.cleanUp(b);this.queueEvent("swfupload_loaded_handler");};SWFUpload.prototype.cleanUp=function(f){try{if(this.movieElement&&typeof(f.CallFunction)==="unknown"){this.debug("Removing Flash functions hooks (this should only run in IE and should prevent memory leaks)");for(var h in f){try{if(typeof(f[h])==="function"){f[h]=null;}}catch(e){}}}}catch(g){}window.__flash__removeCallback=function(c,b){try{if(c){c[b]=null;}}catch(a){}};};SWFUpload.prototype.fileDialogStart=function(){this.queueEvent("file_dialog_start_handler");};SWFUpload.prototype.fileQueued=function(b){b=this.unescapeFilePostParams(b);this.queueEvent("file_queued_handler",b);};SWFUpload.prototype.fileQueueError=function(e,f,d){e=this.unescapeFilePostParams(e);this.queueEvent("file_queue_error_handler",[e,f,d]);};SWFUpload.prototype.fileDialogComplete=function(d,f,e){this.queueEvent("file_dialog_complete_handler",[d,f,e]);};SWFUpload.prototype.uploadStart=function(b){b=this.unescapeFilePostParams(b);this.queueEvent("return_upload_start_handler",b);};SWFUpload.prototype.returnUploadStart=function(d){var c;if(typeof this.settings.upload_start_handler==="function"){d=this.unescapeFilePostParams(d);c=this.settings.upload_start_handler.call(this,d);}else{if(this.settings.upload_start_handler!=undefined){throw"upload_start_handler must be a function";}}if(c===undefined){c=true;}c=!!c;this.callFlash("ReturnUploadStart",[c]);};SWFUpload.prototype.uploadProgress=function(e,f,d){e=this.unescapeFilePostParams(e);this.queueEvent("upload_progress_handler",[e,f,d]);};SWFUpload.prototype.uploadError=function(e,f,d){e=this.unescapeFilePostParams(e);this.queueEvent("upload_error_handler",[e,f,d]);};SWFUpload.prototype.uploadSuccess=function(d,e,f){d=this.unescapeFilePostParams(d);this.queueEvent("upload_success_handler",[d,e,f]);};SWFUpload.prototype.uploadComplete=function(b){b=this.unescapeFilePostParams(b);this.queueEvent("upload_complete_handler",b);};SWFUpload.prototype.debug=function(b){this.queueEvent("debug_handler",b);};SWFUpload.prototype.debugMessage=function(h){if(this.settings.debug){var f,g=[];if(typeof h==="object"&&typeof h.name==="string"&&typeof h.message==="string"){for(var e in h){if(h.hasOwnProperty(e)){g.push(e+": "+h[e]);}}f=g.join("\n")||"";g=f.split("\n");f="EXCEPTION: "+g.join("\nEXCEPTION: ");SWFUpload.Console.writeLine(f);}else{SWFUpload.Console.writeLine(h);}}};SWFUpload.Console={};SWFUpload.Console.writeLine=function(g){var e,f;try{e=document.getElementById("SWFUpload_Console");if(!e){f=document.createElement("form");document.getElementsByTagName("body")[0].appendChild(f);e=document.createElement("textarea");e.id="SWFUpload_Console";e.style.fontFamily="monospace";e.setAttribute("wrap","off");e.wrap="off";e.style.overflow="auto";e.style.width="700px";e.style.height="350px";e.style.margin="5px";f.appendChild(e);}e.value+=g+"\n";e.scrollTop=e.scrollHeight-e.clientHeight;}catch(h){alert("Exception: "+h.name+" Message: "+h.message);}};(function(c){var b={init:function(d,e){return this.each(function(){var n=c(this);var m=n.clone();var j=c.extend({id:n.attr("id"),swf:"uploadify.swf",uploader:"uploadify.php",auto:true,buttonClass:"",buttonCursor:"hand",buttonImage:null,buttonText:"SELECT FILES",checkExisting:false,debug:false,fileObjName:"Filedata",fileSizeLimit:0,fileTypeDesc:"All Files",fileTypeExts:"*.*",height:30,itemTemplate:false,method:"post",multi:true,formData:{},preventCaching:true,progressData:"percentage",queueID:false,queueSizeLimit:999,removeCompleted:true,removeTimeout:3,requeueErrors:false,successTimeout:30,uploadLimit:0,width:120,overrideEvents:[]},d);var g={assume_success_timeout:j.successTimeout,button_placeholder_id:j.id,button_width:j.width,button_height:j.height,button_text:null,button_text_style:null,button_text_top_padding:0,button_text_left_padding:0,button_action:(j.multi?SWFUpload.BUTTON_ACTION.SELECT_FILES:SWFUpload.BUTTON_ACTION.SELECT_FILE),button_disabled:false,button_cursor:(j.buttonCursor=="arrow"?SWFUpload.CURSOR.ARROW:SWFUpload.CURSOR.HAND),button_window_mode:SWFUpload.WINDOW_MODE.TRANSPARENT,debug:j.debug,requeue_on_error:j.requeueErrors,file_post_name:j.fileObjName,file_size_limit:j.fileSizeLimit,file_types:j.fileTypeExts,file_types_description:j.fileTypeDesc,file_queue_limit:j.queueSizeLimit,file_upload_limit:j.uploadLimit,flash_url:j.swf,prevent_swf_caching:j.preventCaching,post_params:j.formData,upload_url:j.uploader,use_query_string:(j.method=="get"),file_dialog_complete_handler:a.onDialogClose,file_dialog_start_handler:a.onDialogOpen,file_queued_handler:a.onSelect,file_queue_error_handler:a.onSelectError,swfupload_loaded_handler:j.onSWFReady,upload_complete_handler:a.onUploadComplete,upload_error_handler:a.onUploadError,upload_progress_handler:a.onUploadProgress,upload_start_handler:a.onUploadStart,upload_success_handler:a.onUploadSuccess};if(e){g=c.extend(g,e);}g=c.extend(g,j);var o=swfobject.getFlashPlayerVersion();var h=(o.major>=9);if(h){window["uploadify_"+j.id]=new SWFUpload(g);var i=window["uploadify_"+j.id];n.data("uploadify",i);var l=c("
    ",{id:j.id,"class":"uploadify",css:{height:j.height+"px",width:j.width+"px"}});c("#"+i.movieName).wrap(l);l=c("#"+j.id);l.data("uploadify",i);var f=c("
    ",{id:j.id+"-button","class":"uploadify-button "+j.buttonClass});if(j.buttonImage){f.css({"background-image":"url('"+j.buttonImage+"')","text-indent":"-9999px"});}f.html(''+j.buttonText+"").css({height:j.height+"px","line-height":j.height+"px",width:j.width+"px"});l.append(f);c("#"+i.movieName).css({position:"absolute","z-index":1});if(!j.queueID){var k=c("
    ",{id:j.id+"-queue","class":"uploadify-queue"});l.after(k);i.settings.queueID=j.id+"-queue";i.settings.defaultQueue=true;}i.queueData={files:{},filesSelected:0,filesQueued:0,filesReplaced:0,filesCancelled:0,filesErrored:0,uploadsSuccessful:0,uploadsErrored:0,averageSpeed:0,queueLength:0,queueSize:0,uploadSize:0,queueBytesUploaded:0,uploadQueue:[],errorMsg:"Some files were not added to the queue:"};i.original=m;i.wrapper=l;i.button=f;i.queue=k;if(j.onInit){j.onInit.call(n,i);}}else{if(j.onFallback){j.onFallback.call(n);}}});},cancel:function(d,f){var e=arguments;this.each(function(){var l=c(this),i=l.data("uploadify"),j=i.settings,h=-1;if(e[0]){if(e[0]=="*"){var g=i.queueData.queueLength;c("#"+j.queueID).find(".uploadify-queue-item").each(function(){h++;if(e[1]===true){i.cancelUpload(c(this).attr("id"),false);}else{i.cancelUpload(c(this).attr("id"));}c(this).find(".data").removeClass("data").html(" - Cancelled");c(this).find(".uploadify-progress-bar").remove();c(this).delay(1000+100*h).fadeOut(500,function(){c(this).remove();});});i.queueData.queueSize=0;i.queueData.queueLength=0;if(j.onClearQueue){j.onClearQueue.call(l,g);}}else{for(var m=0;m0){alert(this.queueData.errorMsg);}}if(e.onDialogClose){e.onDialogClose.call(this,this.queueData);}if(e.auto){c("#"+e.id).uploadify("upload","*");}},onSelect:function(h){var i=this.settings;var f={};for(var g in this.queueData.files){f=this.queueData.files[g];if(f.uploaded!=true&&f.name==h.name){var e=confirm('The file named "'+h.name+'" is already in the queue.\nDo you want to replace the existing item in the queue?');if(!e){this.cancelUpload(h.id);this.queueData.filesCancelled++;return false;}else{c("#"+f.id).remove();this.cancelUpload(f.id);this.queueData.filesReplaced++;}}}var j=Math.round(h.size/1024);var o="KB";if(j>1000){j=Math.round(j/1000);o="MB";}var l=j.toString().split(".");j=l[0];if(l.length>1){j+="."+l[1].substr(0,2);}j+=o;var k=h.name;if(k.length>25){k=k.substr(0,25)+"...";}itemData={fileID:h.id,instanceID:i.id,fileName:k,fileSize:j};if(i.itemTemplate==false){i.itemTemplate='
    X
    ${fileName} (${fileSize})
    ';}if(c.inArray("onSelect",i.overrideEvents)<0){itemHTML=i.itemTemplate;for(var m in itemData){itemHTML=itemHTML.replace(new RegExp("\\$\\{"+m+"\\}","g"),itemData[m]);}c("#"+i.queueID).append(itemHTML);}this.queueData.queueSize+=h.size;this.queueData.files[h.id]=h;if(i.onSelect){i.onSelect.apply(this,arguments);}},onSelectError:function(d,g,f){var e=this.settings;if(c.inArray("onSelectError",e.overrideEvents)<0){switch(g){case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:if(e.queueSizeLimit>f){this.queueData.errorMsg+="\nThe number of files selected exceeds the remaining upload limit ("+f+").";}else{this.queueData.errorMsg+="\nThe number of files selected exceeds the queue size limit ("+e.queueSizeLimit+").";}break;case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:this.queueData.errorMsg+='\nThe file "'+d.name+'" exceeds the size limit ('+e.fileSizeLimit+").";break;case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:this.queueData.errorMsg+='\nThe file "'+d.name+'" is empty.';break;case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:this.queueData.errorMsg+='\nThe file "'+d.name+'" is not an accepted file type ('+e.fileTypeDesc+").";break;}}if(g!=SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED){delete this.queueData.files[d.id];}if(e.onSelectError){e.onSelectError.apply(this,arguments);}},onQueueComplete:function(){if(this.settings.onQueueComplete){this.settings.onQueueComplete.call(this,this.settings.queueData);}},onUploadComplete:function(f){var g=this.settings,d=this;var e=this.getStats();this.queueData.queueLength=e.files_queued;if(this.queueData.uploadQueue[0]=="*"){if(this.queueData.queueLength>0){this.startUpload();}else{this.queueData.uploadQueue=[];if(g.onQueueComplete){g.onQueueComplete.call(this,this.queueData);}}}else{if(this.queueData.uploadQueue.length>0){this.startUpload(this.queueData.uploadQueue.shift());}else{this.queueData.uploadQueue=[];if(g.onQueueComplete){g.onQueueComplete.call(this,this.queueData);}}}if(c.inArray("onUploadComplete",g.overrideEvents)<0){if(g.removeCompleted){switch(f.filestatus){case SWFUpload.FILE_STATUS.COMPLETE:setTimeout(function(){if(c("#"+f.id)){d.queueData.queueSize-=f.size;d.queueData.queueLength-=1;delete d.queueData.files[f.id];c("#"+f.id).fadeOut(500,function(){c(this).remove();});}},g.removeTimeout*1000);break;case SWFUpload.FILE_STATUS.ERROR:if(!g.requeueErrors){setTimeout(function(){if(c("#"+f.id)){d.queueData.queueSize-=f.size;d.queueData.queueLength-=1;delete d.queueData.files[f.id];c("#"+f.id).fadeOut(500,function(){c(this).remove();});}},g.removeTimeout*1000);}break;}}else{f.uploaded=true;}}if(g.onUploadComplete){g.onUploadComplete.call(this,f);}},onUploadError:function(e,i,h){var f=this.settings;var g="Error";switch(i){case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:g="HTTP Error ("+h+")";break;case SWFUpload.UPLOAD_ERROR.MISSING_UPLOAD_URL:g="Missing Upload URL";break;case SWFUpload.UPLOAD_ERROR.IO_ERROR:g="IO Error";break;case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:g="Security Error";break;case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:alert("The upload limit has been reached ("+h+").");g="Exceeds Upload Limit";break;case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:g="Failed";break;case SWFUpload.UPLOAD_ERROR.SPECIFIED_FILE_ID_NOT_FOUND:break;case SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILED:g="Validation Error";break;case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:g="Cancelled";this.queueData.queueSize-=e.size;this.queueData.queueLength-=1;if(e.status==SWFUpload.FILE_STATUS.IN_PROGRESS||c.inArray(e.id,this.queueData.uploadQueue)>=0){this.queueData.uploadSize-=e.size;}if(f.onCancel){f.onCancel.call(this,e);}delete this.queueData.files[e.id];break;case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:g="Stopped";break;}if(c.inArray("onUploadError",f.overrideEvents)<0){if(i!=SWFUpload.UPLOAD_ERROR.FILE_CANCELLED&&i!=SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED){c("#"+e.id).addClass("uploadify-error");}c("#"+e.id).find(".uploadify-progress-bar").css("width","1px");if(i!=SWFUpload.UPLOAD_ERROR.SPECIFIED_FILE_ID_NOT_FOUND&&e.status!=SWFUpload.FILE_STATUS.COMPLETE){c("#"+e.id).find(".data").html(" - "+g);}}var d=this.getStats();this.queueData.uploadsErrored=d.upload_errors;if(f.onUploadError){f.onUploadError.call(this,e,i,h,g);}},onUploadProgress:function(g,m,j){var h=this.settings;var e=new Date();var n=e.getTime();var k=n-this.timer;if(k>500){this.timer=n;}var i=m-this.bytesLoaded;this.bytesLoaded=m;var d=this.queueData.queueBytesUploaded+m;var p=Math.round(m/j*100);var o="KB/s";var l=0;var f=(i/1024)/(k/1000);f=Math.floor(f*10)/10;if(this.queueData.averageSpeed>0){this.queueData.averageSpeed=Math.floor((this.queueData.averageSpeed+f)/2);}else{this.queueData.averageSpeed=Math.floor(f);}if(f>1000){l=(f*0.001);this.queueData.averageSpeed=Math.floor(l);o="MB/s";}if(c.inArray("onUploadProgress",h.overrideEvents)<0){if(h.progressData=="percentage"){c("#"+g.id).find(".data").html(" - "+p+"%");}else{if(h.progressData=="speed"&&k>500){c("#"+g.id).find(".data").html(" - "+this.queueData.averageSpeed+o);}}c("#"+g.id).find(".uploadify-progress-bar").css("width",p+"%");}if(h.onUploadProgress){h.onUploadProgress.call(this,g,m,j,d,this.queueData.uploadSize);}},onUploadStart:function(d){var e=this.settings;var f=new Date();this.timer=f.getTime();this.bytesLoaded=0;if(this.queueData.uploadQueue.length==0){this.queueData.uploadSize=d.size;}if(e.checkExisting){c.ajax({type:"POST",async:false,url:e.checkExisting,data:{filename:d.name},success:function(h){if(h==1){var g=confirm('A file with the name "'+d.name+'" already exists on the server.\nWould you like to replace the existing file?');if(!g){this.cancelUpload(d.id);c("#"+d.id).remove();if(this.queueData.uploadQueue.length>0&&this.queueData.queueLength>0){if(this.queueData.uploadQueue[0]=="*"){this.startUpload();}else{this.startUpload(this.queueData.uploadQueue.shift());}}}}}});}if(e.onUploadStart){e.onUploadStart.call(this,d);}},onUploadSuccess:function(f,h,d){var g=this.settings;var e=this.getStats();this.queueData.uploadsSuccessful=e.successful_uploads;this.queueData.queueBytesUploaded+=f.size;if(c.inArray("onUploadSuccess",g.overrideEvents)<0){c("#"+f.id).find(".data").html(" - Complete");}if(g.onUploadSuccess){g.onUploadSuccess.call(this,f,h,d);}}};c.fn.uploadify=function(d){if(b[d]){return b[d].apply(this,Array.prototype.slice.call(arguments,1));}else{if(typeof d==="object"||!d){return b.init.apply(this,arguments);}else{c.error("The method "+d+" does not exist in $.uploadify");}}};})($); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/js/uploadify/license.txt b/src/main/webapp/WEB-INF/views/src/js/uploadify/license.txt new file mode 100644 index 0000000..f25c175 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/uploadify/license.txt @@ -0,0 +1,20 @@ +Uploadify +Copyright (c) 2012 Reactive Apps, Ronnie Garcia + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/js/uploadify/uploadify.css b/src/main/webapp/WEB-INF/views/src/js/uploadify/uploadify.css new file mode 100644 index 0000000..89e1932 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/uploadify/uploadify.css @@ -0,0 +1,92 @@ +/* +Uploadify +Copyright (c) 2012 Reactive Apps, Ronnie Garcia +Released under the MIT License +*/ + +.uploadify { + position: relative; + margin-bottom: 1em; +} +.uploadify-button { + background-color: #505050; + background-image: linear-gradient(bottom, #505050 0%, #707070 100%); + background-image: -o-linear-gradient(bottom, #505050 0%, #707070 100%); + background-image: -moz-linear-gradient(bottom, #505050 0%, #707070 100%); + background-image: -webkit-linear-gradient(bottom, #505050 0%, #707070 100%); + background-image: -ms-linear-gradient(bottom, #505050 0%, #707070 100%); + background-image: -webkit-gradient( + linear, + left bottom, + left top, + color-stop(0, #505050), + color-stop(1, #707070) + ); + background-position: center top; + background-repeat: no-repeat; + -webkit-border-radius: 30px; + -moz-border-radius: 30px; + border-radius: 30px; + border: 2px solid #808080; + color: #FFF; + font: bold 12px Arial, Helvetica, sans-serif; + text-align: center; + text-shadow: 0 -1px 0 rgba(0,0,0,0.25); + width: 100%; +} +.uploadify:hover .uploadify-button { + background-color: #606060; + background-image: linear-gradient(top, #606060 0%, #808080 100%); + background-image: -o-linear-gradient(top, #606060 0%, #808080 100%); + background-image: -moz-linear-gradient(top, #606060 0%, #808080 100%); + background-image: -webkit-linear-gradient(top, #606060 0%, #808080 100%); + background-image: -ms-linear-gradient(top, #606060 0%, #808080 100%); + background-image: -webkit-gradient( + linear, + left bottom, + left top, + color-stop(0, #606060), + color-stop(1, #808080) + ); + background-position: center bottom; +} +.uploadify-button.disabled { + background-color: #D0D0D0; + color: #808080; +} +.uploadify-queue { + margin-bottom: 1em; +} +.uploadify-queue-item { + background-color: #F5F5F5; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + font: 11px Verdana, Geneva, sans-serif; + margin-top: 5px; + max-width: 350px; + padding: 10px; +} +.uploadify-error { + background-color: #FDE5DD !important; +} +.uploadify-queue-item .cancel a { + background: url('../img/uploadify-cancel.png') 0 0 no-repeat; + float: right; + height: 16px; + text-indent: -9999px; + width: 16px; +} +.uploadify-queue-item.completed { + background-color: #E5E5E5; +} +.uploadify-progress { + background-color: #E5E5E5; + margin-top: 10px; + width: 100%; +} +.uploadify-progress-bar { + background-color: #0099FF; + height: 3px; + width: 1px; +} \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/js/uploadify/uploadify.php b/src/main/webapp/WEB-INF/views/src/js/uploadify/uploadify.php new file mode 100644 index 0000000..ba4095b --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/js/uploadify/uploadify.php @@ -0,0 +1,29 @@ + +*/ + +// Define a destination +$targetFolder = '/uploads'; // Relative to the root + +$verifyToken = md5('unique_salt' . $_POST['timestamp']); + +if (!empty($_FILES) && $_POST['token'] == $verifyToken) { + $tempFile = $_FILES['Filedata']['tmp_name']; + $targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder; + $targetFile = rtrim($targetPath,'/') . '/' . $_FILES['Filedata']['name']; + + // Validate the file type + $fileTypes = array('jpg','jpeg','gif','png'); // File extensions + $fileParts = pathinfo($_FILES['Filedata']['name']); + + if (in_array($fileParts['extension'],$fileTypes)) { + move_uploaded_file($tempFile,$targetFile); + echo '1'; + } else { + echo 'Invalid file type.'; + } +} +?> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/main.js b/src/main/webapp/WEB-INF/views/src/main.js new file mode 100644 index 0000000..eaa208f --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/main.js @@ -0,0 +1,8 @@ +/** + * Created by M on 2014/10/29. + */ +require([ + "ngApp" +],function(ngApp) { + +}); diff --git a/src/main/webapp/WEB-INF/views/src/package.json b/src/main/webapp/WEB-INF/views/src/package.json new file mode 100644 index 0000000..a337232 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/package.json @@ -0,0 +1,20 @@ +{ + "name": "sps-website", + "version": "1.0.0", + "description": "Shipping Point System", + "main": "main.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "devDependencies": { + "bower": "^1.7.2", + "require-css": "^0.1.8" + }, + "dependencies": { + "angular": "^1.5.1", + "angular-permission": "^2.1.2", + "angular-ui-router": "^0.2.18" + } +} diff --git a/src/main/webapp/WEB-INF/views/src/sound/item.wav b/src/main/webapp/WEB-INF/views/src/sound/item.wav new file mode 100644 index 0000000000000000000000000000000000000000..cffb64f9a63ef55917786137c1521673a5854829 GIT binary patch literal 66442 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/WEB-INF/views/src/views/app.js b/src/main/webapp/WEB-INF/views/src/views/app.js new file mode 100644 index 0000000..0b4b4a7 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/app.js @@ -0,0 +1,305 @@ +define([ + "views/user/user_module", + "views/order/order_module", + "views/schedule/schedule_module", + "views/dashboard", + "views/base/base_module", + "views/templates/template_module", + "views/checklist-model/checklist-model", + "views/plan/plan_module", + "views/package/package_module", + "views/pick/pick_module", + "views/despatch/despatch_module", + "views/receipt/receipt_module", + "views/report/report_module", + "views/stock/stock_module", + "views/wx/wx_module" +], function (user_module, order_module, schedule_module, dashboard, base_module, template_module, checklist_model, plan_module, package_module, despatch_module, report_module, stock, wx_module) { + angular.module('DMS', [ + "smartApp", "ui.router", + "ug.editor", + "DMS.stock", + "DMS.wx", + "DMS.schedule", "DMS.order", "DMS.tpls", "DMS.user", "DMS.base", "ug.pagination", "EnvModule", "permission", "ug.validate", "ug.dialog", + "DMS.REST", "checklist-model", "DMS.plan", "DMS.package", "DMS.pick", "DMS.despatch", "DMS.receipt", "DMS.report" + ]).filter( + 'to_trusted', ['$sce', function ($sce) { + return function (text) { + return $sce.trustAsHtml(text); + } + }] + ).factory({ + HttpInterceptor: ["$q", '$ugDialog', function ($q, $ugDialog) { + return { + request: function (config) { + if (config.method == 'GET') { + if (config.params) { + config.params._noCache = new Date().getTime(); + } + } + return config; + }, + responseError: function (response) { + if (response.status == 400) { + $ugDialog.alert(response.data.message); + return $q.reject(response); + } + if (response.status == 401) { + //未找到用户 + window.location.reload(); + } + return $q.reject(response); + } + } + }], + User: ["UserAPI", "PermissionStore", "$q", function (UserAPI, PermissionStore, $q) { + return { + fetchPermission: function () { + var defered = $q.defer(); + UserAPI.getPermissions(function (data) { + PermissionStore.clearStore(); + for (var i = 0; i < data.permissions.length; i++) { + var obj = data.permissions[i]; + PermissionStore + .definePermission(obj, function (stateParams) { + return true; + }); + } + defered.resolve(); + }, function () { + defered.reject(); + }); + return defered.promise; + }, + resetPermission: function (data) { + PermissionStore.clearStore(); + for (var i = 0; i < data.permissions.length; i++) { + var obj = data.permissions[i]; + PermissionStore + .definePermission(obj, function (stateParams) { + return true; + }); + } + } + } + }], + $baseHttp: ["$http", "$q", "ApiEndpoint", function ($http, $q, ApiEndpoint) { + var urlEndpoint = ""; + if (ApiEndpoint && ApiEndpoint.url) { + urlEndpoint = ApiEndpoint.url; + } + var httpGet = function (url, options) { + var defer = $q.defer(); + $http.get(urlEndpoint + url, options).then(function (response) { + return defer.resolve(response.data, response); + }, function (response) { + return defer.reject(response.data, response); + }); + return defer.promise; + }; + + var httpPost = function (url, data, options) { + var defer = $q.defer(); + $http.post(urlEndpoint + url, data, options).then(function (response) { + return defer.resolve(response.data, response); + }, function (response) { + return defer.reject(response.data, response); + }); + return defer.promise; + }; + return { + get: httpGet, + post: httpPost + }; + }] + }).directive('datepickerLocaldate', ['$filter', function ($filter) { + /** + * change model to iso format (yyyy-MM-dd) + */ + return { + require: 'ngModel', + link: function link(scope, element, attr, ngModel) { + + ngModel.$parsers.push(function toModel(date) { + if (!date) { + return undefined; + } + return $filter('date')(date, 'yyyy-MM-dd'); + }); + + var converted = false; + scope.$watch(function () { + return ngModel.$modelValue; + }, + function (modelValue) { + + // convert to localDate (remove timezone if necessary), this is for datepicker to synchronize with the good date for negative timezone (https://github.com/angular-ui/bootstrap/issues/2072) + if (!converted && modelValue) { + + var dt = new Date(modelValue); + if (dt.getTimezoneOffset() > 0) + dt.setMinutes(dt.getMinutes() + dt.getTimezoneOffset()); + + ngModel.$modelValue = dt; + + ngModel.$render(); + + converted = true; + + } + }); + } + }; + }]).directive("ugSelect2", ["CompanyAPI", "$rootScope", function (CompanyAPI, $rootScope) { + return { + restrict: "A", + require: "select", + scope: {ugSelect2Config: '='}, + link: function (scope, element, attr, crtl) { + var config = scope.ugSelect2Config || {}; + config = angular.extend(config, { + initSelectData: function (data) { + setTimeout(function () { + $select2.val(data).trigger("change"); + }, 100); + } + }); + var $select2 = $(element).select2(config); + } + } + }]).directive({ + /** + * 文件上传 + */ + uxUpload: ["$timeout", "$ugDialog", function ($timeout, Dialog) { + var fileType = "*.xlsx;*.xls;*.pdf;*.doc;*.docx;*.*"; + return { + scope: { + uxUploadConfig: '=' + }, + link: function (scope, elem, attr, ctrl) { + var config = scope.uxUploadConfig; + var defaultConfig = { + buttonClass: "btn btn-outline btn-primary", + buttonText: '上传身份证图片', + swf: '/js/uploadify/uploadify.swf', + uploader: '/wms-webapp/', + fileSizeLimit: "10MB", + fileObjName: "files",//对应后台参数名,请勿修改 + fileTypeDesc: "请选择 " + fileType + " 类型的文件", + fileTypeExts: fileType, + overrideEvents: ['onDialogClose', 'onSelectError'], + onFallback: function () { + //Dialog.alert('Flash was not detected or flash version is not supported.'); + Dialog.alert('未发现Flash插件或Flash版本不支持(请确保已下载Flash插件且已启用Flash插件)。'); + }, + onSelectError: function (file, errorCode, errorMsg) { + switch (errorCode) { + case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED: + if (this.settings.queueSizeLimit > errorMsg) { + this.queueData.errorMsg = '选择文件的数量超过了剩余的上传限制 (' + errorMsg + ').'; + } else { + this.queueData.errorMsg = '选择文件的数量超过了队列大小限制 (' + this.settings.queueSizeLimit + ').'; + } + break; + case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT: + this.queueData.errorMsg = "文件大小超出限制( " + this.settings.fileSizeLimit + " 以内)"; + break; + case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE: + this.queueData.errorMsg = "文件大小为0,请检查文件是否正确"; + break; + case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE: + this.queueData.errorMsg = "无效的文件类型,上传文件类型限制为:" + this.settings.fileTypeExts; + break; + default: + this.queueData.errorMsg = "文件上传失败," + errorMsg; + } + }, + onDialogClose: function (queueData) { + if (queueData.filesErrored > 0) { + Dialog.alert(this.queueData.errorMsg); + } + } + }; + angular.extend(defaultConfig, config); + $(elem).uploadify(defaultConfig); + } + }; +// 使用DEMO +// +// $scope.fileUploadConfig = { +// 'buttonText' : '上传身份证图片', +// 'onUploadSuccess':function(file,data,response){ +// var result = $scope.$eval(data); +// if(result.status == "1"){ +// Dialog.alert(result.msg); +// }else if(result.status == "0"){ +// if(result.result[0]){ +// //xxxxxxxxxxx +// } +// } +// } +// }; + }] + }).controller("LeftPanelController", ["$scope", "$rootScope", "$http", function ($scope, $rootScope, $http) { + $http.get("/account/setting").then(function (data) { + if (data.data) { + $rootScope.account = data.data; + } + }) + }]).run(["$rootScope", "User", function ($rootScope, User) { + User.resetPermission(permissionList); + + $rootScope.$on('loadingTree', function () { + setTimeout(function () { + $(".tree").find("li:has(ul)").addClass("parent_li").attr("role", "treeitem").find(" > span").attr("title", "收缩").on("click", function (a) { + var b = $(this).parent("li.parent_li").find(" > ul"); + if (b.is(":visible")) { + b.hide("fast"); + $(this).attr("title", "展开").find(" > i").addClass("fa-plus-circle").removeClass("fa-minus-circle"); + } else { + b.show("fast"); + $(this).attr("title", "收缩").find(" > i").addClass("fa-minus-circle").removeClass("fa-plus-circle"); + } + a.stopPropagation(); + }); + }, 1500); + }); + + $rootScope.$on('$viewContentLoaded', function (event, next, nextParams, fromState) { + // 初始化全局控件 +// pageSetUp(); + }); + }]).config(["$stateProvider", "$urlRouterProvider", "$httpProvider", function ($stateProvider, $urlRouterProvider, $httpProvider) { + $httpProvider.interceptors.push('HttpInterceptor'); + $httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; + + $urlRouterProvider.otherwise('/dashboard'); + + $stateProvider + .state('dashboard', { + url: '/dashboard', + templateUrl: 'views/dashboard.html', + controller: dashboard + }) + + .state('unauthorized', { + url: '/unauthorized', + templateUrl: 'views/error/error403.html' + }) + + .state('blank', { + url: '/blank', + templateUrl: 'views/blank.html', + controller: ["$scope", function ($scope) { + }] + }) + + }]); + angular.element(document).ready(function () { + $.get('/user/permissions', function (data) { + permissionList = data; + angular.bootstrap(document, ['DMS']); + }); + }); +}); diff --git a/src/main/webapp/WEB-INF/views/src/views/base/activity.html b/src/main/webapp/WEB-INF/views/src/views/base/activity.html new file mode 100644 index 0000000..df6665a --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/base/activity.html @@ -0,0 +1,390 @@ + + + +

    + + +
    + + +
    + + +
    + +
    + +

    活动列表

    +
    + +
    + +
    + +
    + + +
    +
    +
    +
    + +
    +
    +
    + + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + 活动名称有效时间活动描述类型最低赠送金额操作
    + + {{activity.activityBeginTime | date: 'yyyy-MM-dd'}} 至 {{activity.activityEndTime | date: 'yyyy-MM-dd'}}按卡类型按消费金额 +
    + + + + | + + + +
    +
    +
    暂无数据
    +
    +
    + +
    + +
    + +
    + + +
    + + +
    + + + +
    + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/base/activity.js b/src/main/webapp/WEB-INF/views/src/views/base/activity.js new file mode 100644 index 0000000..3e1e76c --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/base/activity.js @@ -0,0 +1,215 @@ +/** + * Created by Jeng on 2016/1/8. + */ +define(function () { + return ["$scope", "ActivityAPI", "$modal", "$ugDialog", function($scope, ActivityAPI, $modal, $ugDialog){ + $scope.activityList = []; + $scope.pageInfoSetting = { + pageSize:10, + pageNum:1 + }; + $scope.queryParam = {}; + $scope.getActivityList = function(){ + ActivityAPI.query({ + limit:$scope.pageInfoSetting.pageSize, + offset:$scope.pageInfoSetting.pageNum, + keyword:$scope.queryParam.keyword + }, function(data){ + $scope.activityList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getActivityList; + }); + }; + $scope.removeActivity = function(index){ + $ugDialog.confirm("是否删除活动?").then(function(){ + ActivityAPI.delete({ + id: $scope.activityList[index].id + }, function(){ + $scope.getActivityList(); + }); + }) + }; + $scope.updateActivity = function(index){ + $scope.open(angular.copy($scope.activityList[index])); + }; + $scope.open = function (activity) { + var modalInstance = $modal.open({ + templateUrl: 'addActivity.html', + resolve: { + CurrentActivity: function(){ + return activity; + } + }, + controller: ["$scope", "ActivityAPI","CurrentActivity","ItemAPI", "CouponCategoryAPI","$modalInstance", function ($scope, ActivityAPI, CurrentActivity, ItemAPI,CouponCategoryAPI,$modalInstance) { + $scope.ugSelect2Config = {}; + $scope.choseChildItemList = []; + $scope.activity = { + activityType : 1, + available : 1 + }; + if(CurrentActivity){ + $scope.activity = CurrentActivity; + ActivityAPI.getChoseItemList({ + parentId:$scope.activity.id + },function(data){ + $scope.ugSelect2Config.initSelectData($scope.activity.couponCategory); + $scope.choseChildItemList = data; + }) + } + $scope.pageChildSetting = { + pageSize:1000, + pageNum:1 + }; + $scope.queryChildParam = {}; + $scope.getChildItemList = function(){ + var choseItemId = null; + if($scope.choseChildItemList && $scope.choseChildItemList.length > 0){ + choseItemId = [] + for (var i = 0; i < $scope.choseChildItemList.length; i++) { + var obj = $scope.choseChildItemList[i]; + choseItemId.push(obj.id); + } + } + ItemAPI.query({ + limit:$scope.pageChildSetting.pageSize, + offset:$scope.pageChildSetting.pageNum, + keyword:$scope.queryChildParam.keyword, + exclude_ids:choseItemId, + sellStatus : 1 + }, function(data){ + $scope.childItemList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getChildItemList; + }); + }; + $scope.openItemNumber = function (index) { + var modalInstance = $modal.open({ + templateUrl: 'addItemNumber.html', + resolve: { + CurrentOrderItem: function(){ + return $scope.childItemList[index]; + } + }, + controller: ["$scope", "CurrentOrderItem", "$modalInstance", function ($scope, CurrentOrderItem, $modalInstance) { + $scope.orderItem = {}; + if(CurrentOrderItem){ + $scope.orderItem = CurrentOrderItem; + } + $scope.addItemNumberForm = {}; + $scope.saveItemNumber = function(){ + if($scope.addItemNumberForm.validator.form()){ + $modalInstance.close($scope.orderItem); + } + }; + $scope.cancel = function () { + $modalInstance.dismiss('cancel'); + }; + }] + }); + modalInstance.result.then(function (data) { + $scope.choseChildItem(index, parseFloat(data.number)); + }); + }; + $scope.getCategoryList = function(){ + $scope.pageInfoSetting = { + pageSize:1000, + pageNum:1 + }; + $scope.queryParam = {}; + $scope.categoryList = []; + CouponCategoryAPI.query({ + limit:$scope.pageInfoSetting.pageSize, + offset:$scope.pageInfoSetting.pageNum, + categoryType : 1 + }, function(data){ + $scope.categoryList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getCategoryList; + }); + } + $scope.getCategoryList(); + + $scope.datepickerSetting = { + datepickerPopupConfig:{ + "current-text":"今天", + "clear-text":"清除", + "close-text":"关闭" + }, + beginTime:{ + opened:false + }, + endTime:{ + opened:false + } + }; + $scope.open = function($event, index) { + $event.preventDefault(); + $event.stopPropagation(); + if(index == 0){ + $scope.datepickerSetting.beginTime.opened = true; + }else if(index == 1){ + $scope.datepickerSetting.endTime.opened = true; + } + }; + $scope.errors = null; + $scope.addActivityForm = {}; + $scope.saveActivity = function(){ + $scope.errors = null; + if($scope.addActivityForm.validator.form()){ + if($scope.activity.id){ + $scope.activity.activityRefList = []; + for (var i = 0; i < $scope.choseChildItemList.length; i++) { + var obj = $scope.choseChildItemList[i]; + $scope.activity.activityRefList.push({ + cdItemId:obj.id, + count:obj.count + }); + } + ActivityAPI.update($scope.activity, function(){ + $modalInstance.close(); + }, function(data){ + $scope.errors = data.data; + }) + }else{ + $scope.activity.activityRefList = []; + for (var i = 0; i < $scope.choseChildItemList.length; i++) { + var obj = $scope.choseChildItemList[i]; + $scope.activity.activityRefList.push({ + cdItemId:obj.id, + count:obj.count + }); + } + ActivityAPI.save($scope.activity, function(){ + $modalInstance.close(); + }, function(data){ + $scope.errors = data.data; + }) + } + } + }; + $scope.cancel = function () { + $modalInstance.dismiss('cancel'); + }; + $scope.choseChildItem = function(index,count){ + var item = $scope.childItemList[index]; + item.childItemId = item.id; + item.count = count; + $scope.choseChildItemList.push(item); + $scope.getChildItemList(); + }; + + $scope.removeChildItem = function(index){ + $scope.choseChildItemList.splice(index,1); + $scope.getChildItemList(); + }; + }], + size:'lg' + }); + modalInstance.result.then(function () { + $scope.getActivityList(); + }); + }; + + $scope.getActivityList(); + }]; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/base/base_module.js b/src/main/webapp/WEB-INF/views/src/views/base/base_module.js new file mode 100644 index 0000000..67212f7 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/base/base_module.js @@ -0,0 +1,244 @@ +/** + * Created by Administrator on 2016/1/15. + */ +define([ + "views/base/member_list", + "views/base/company_list", + "views/base/couponCategory", + "views/base/coupon", + "views/base/dictionary", + "views/base/itemCategory", + "views/base/item", + "views/base/contract", + "views/base/contract_create", + "views/base/contract_update", + "views/base/activity", + "views/base/couponActivity", + "views/base/couponAudit", + "views/base/couponAuditBack", + "views/base/express_list", + "views/base/express_member_list", + "views/base/onlineRecharge", + "views/base/tradeRecordList", + "views/base/couponActivityAddress" +],function (memberList,companyList,couponCategory,coupon,dictionary,itemCategory,item,contract,contract_create,contract_update,activity,couponActivity,couponAudit,couponAuditBack,express_list,express_member_list,onlineRecharge,tradeRecordList,couponActivityAddress) { + angular.module('DMS.base', [ + "permission" + ]).config(["$stateProvider", function($stateProvider){ + $stateProvider + .state('member_list', { + url: '/base/member', + templateUrl: 'views/base/member_list.html', + data:{ + permissions:{ + only:["MEMBER_VIEW"], + redirectTo:"unauthorized" + } + }, + controller: memberList + }) + .state('company_list', { + url: '/base/company', + templateUrl: 'views/base/company_list.html', + data:{ + permissions:{ + only:["COMPANY_VIEW"], + redirectTo:"unauthorized" + } + }, + controller: companyList + }) + .state('couponCategory', { + url: '/couponCategory', + templateUrl: 'views/base/couponCategory.html', + data:{ + permissions:{ + only:["COUPON_CATEGORY_VIEW"], + redirectTo:"unauthorized" + } + }, + controller: couponCategory + }) + .state('coupon', { + url: '/coupon', + templateUrl: 'views/base/coupon.html', + data:{ + permissions:{ + only:["COUPON_VIEW"], + redirectTo:"unauthorized" + } + }, + controller: coupon + }) + .state('dictionary', { + url: '/dictionary', + templateUrl: 'views/base/dictionary.html', + data:{ + permissions:{ + only:["DICTIONARY_VIEW"], + redirectTo:"unauthorized" + } + }, + controller: dictionary + }) + .state('itemCategory', { + url: '/itemCategory', + templateUrl: 'views/base/itemCategory.html', + data:{ + permissions:{ + only:["PRODUCT_CATEGORY_VIEW"], + redirectTo:"unauthorized" + } + }, + controller: itemCategory + }) + .state('item', { + url: '/item', + templateUrl: 'views/base/item.html', + data:{ + permissions:{ + only:["PRODUCT_VIEW"], + redirectTo:"unauthorized" + } + }, + controller: item + }) + .state('contract', { + url: '/contract', + templateUrl: 'views/base/contract.html', + data:{ + permissions:{ + only:["CONTRACT_VIEW"], + redirectTo:"unauthorized" + } + }, + controller: contract + }) + .state('contract_create', { + url: '/contract/create', + templateUrl: 'views/base/contract_create.html', + data:{ + permissions:{ + only:["CONTRACT_VIEW"], + redirectTo:"unauthorized" + } + }, + controller: contract_create + }) + + .state('contract_update', { + url: '/contract/:id/update/', + templateUrl: 'views/base/contract_update.html', + controller:contract_update, + data:{ + permissions:{ + only:["CONTRACT_VIEW"], + redirectTo:"unauthorized" + } + } + }) + + .state('activity', { + url: '/activity', + templateUrl: 'views/base/activity.html', + data:{ + permissions:{ + only:["ACTIVITY_VIEW"], + redirectTo:"unauthorized" + } + }, + controller: activity + }) + .state('couponActivity', { + url: '/couponActivity', + templateUrl: 'views/base/couponActivity.html', + data:{ + permissions:{ + only:["COUPON_ACTIVITY_VIEW"], + redirectTo:"unauthorized" + } + }, + controller: couponActivity + }) + .state('couponActivityAddress', { + url: '/couponActivityAddress', + templateUrl: 'views/base/couponActivityAddress.html', + data:{ + permissions:{ + only:["COUPON_ACTIVITY_VIEW"], + redirectTo:"unauthorized" + } + }, + controller: couponActivityAddress + }) + .state('couponAudit', { + url: '/couponAudit', + templateUrl: 'views/base/couponAudit.html', + data:{ + permissions:{ + only:["COUPON_AUDIT_VIEW"], + redirectTo:"unauthorized" + } + }, + controller: couponAudit + }) + .state('couponAuditBack', { + url: '/couponAuditBack', + templateUrl: 'views/base/couponAuditBack.html', + data:{ + permissions:{ + only:["COUPON_AUDIT_BACK_VIEW"], + redirectTo:"unauthorized" + } + }, + controller: couponAuditBack + }) + .state('expressList', { + url: '/expressList', + templateUrl: 'views/base/express_list.html', + data:{ + permissions:{ + only:["EXPRESS_LIST"], + redirectTo:"unauthorized" + } + }, + controller: express_list + }) + + .state('expressMemberList', { + url: '/expressMemberList', + templateUrl: 'views/base/express_member_list.html', + data:{ + permissions:{ + only:["EXPRESS_MEMBER_LIST"], + redirectTo:"unauthorized" + } + }, + controller: express_member_list + }) + + .state('onlineRecharge', { + url: '/onlineRecharge', + templateUrl: 'views/base/onlineRecharge.html', + data:{ + permissions:{ + only:["ONLINE_RECHARGE"], + redirectTo:"unauthorized" + } + }, + controller: onlineRecharge + }) + + .state('tradeRecordList', { + url: '/tradeRecordList', + templateUrl: 'views/base/tradeRecordList.html', + data:{ + permissions:{ + only:["TRADE_RECORD_VIEW"], + redirectTo:"unauthorized" + } + }, + controller: tradeRecordList + }) + }]); +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/base/company_list.html b/src/main/webapp/WEB-INF/views/src/views/base/company_list.html new file mode 100644 index 0000000..b53fcce --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/base/company_list.html @@ -0,0 +1,203 @@ + + + +
    + + +
    + + +
    + + +
    + +
    + +

    单位、公司列表

    +
    + +
    + +
    + +
    + + +
    +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + 单位名称联系人手机号单位地址客服经理操作
    + + + {{customerManager.customerManger}}
    +
    +
    + + + + | + + + +
    +
    +
    暂无消息数据
    +
    +
    + +
    + +
    + +
    + + +
    + + +
    + + + +
    + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/base/company_list.js b/src/main/webapp/WEB-INF/views/src/views/base/company_list.js new file mode 100644 index 0000000..578ed2f --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/base/company_list.js @@ -0,0 +1,93 @@ +/** + * Created by Jeng on 2016/1/8. + */ +define(function () { + return ["$scope", "CompanyAPI", "$modal", "$ugDialog", function($scope, CompanyAPI, $modal, $ugDialog){ + $scope.companyList = []; + $scope.pageInfoSetting = { + pageSize:10, + pageNum:1 + }; + $scope.queryParam = {}; + $scope.getCompanyList = function(){ + CompanyAPI.query({ + limit:$scope.pageInfoSetting.pageSize, + offset:$scope.pageInfoSetting.pageNum, + keyword:$scope.queryParam.keyword + }, function(data){ + $scope.companyList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getCompanyList; + }); + }; + $scope.removeCompany = function(index){ + $ugDialog.confirm("是否删除该单位/公司?").then(function(){ + CompanyAPI.delete({ + id: $scope.companyList[index].id + }, function(){ + $scope.getCompanyList(); + }); + }) + }; + $scope.open = function (index) { + var modalInstance = $modal.open({ + templateUrl: 'addCompany.html', + controller: ["$scope", "CompanyAPI", "$modalInstance","currentCompany","UserAPI", "$rootScope", function ($scope, CompanyAPI, $modalInstance,currentCompany,UserAPI,$rootScope) { + $scope.customerManagerList = []; + $scope.ugSelect2Config = {}; + UserAPI.getCustomerManagerList({ + userType:"customer_manager" + },function(data){ + $scope.customerManagerList = data; + $scope.ugSelect2Config.initSelectData($scope.company.customerManagerIds); + }); + $scope.company = {}; + if(currentCompany){ + $scope.company = currentCompany; + if($scope.company.companyCustomerManagers && $scope.company.companyCustomerManagers.length > 0){ + $scope.company.customerManagerIds = []; + for (var i = 0; i < $scope.company.companyCustomerManagers.length; i++) { + var obj = $scope.company.companyCustomerManagers[i]; + $scope.company.customerManagerIds.push(obj.customerMangerId); + } + } + } + $scope.errors = null; + $scope.addCompanyForm = {}; + $scope.saveOrUpdateCompany = function(){ + $scope.errors = null; + if($scope.addCompanyForm.validator.form()){ + if($scope.company.id){ + CompanyAPI.update($scope.company, function(){ + $modalInstance.close(); + }, function(data){ + $scope.errors = data.data; + }) + }else{ + CompanyAPI.save($scope.company, function(){ + $modalInstance.close(); + }, function(data){ + $scope.errors = data.data; + }) + } + + } + }; + $scope.cancel = function () { + $modalInstance.dismiss('cancel'); + }; + }], + resolve: { + currentCompany: function () { + return $scope.companyList[index]; + } + } + }); + modalInstance.result.then(function () { + $scope.getCompanyList(); + }); + }; + + $scope.getCompanyList(); + }]; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/base/contract.html b/src/main/webapp/WEB-INF/views/src/views/base/contract.html new file mode 100644 index 0000000..83f2dca --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/base/contract.html @@ -0,0 +1,210 @@ + + + +
    + + +
    + + +
    + + +
    + +
    + +

    合同列表

    +
    + +
    + +
    + +
    + + +
    +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + 合同编号合同名称签约单位有效日期作废操作
    + + {{contract.beginTime | date: 'yyyy-MM-dd'}} 至 {{contract.endTime | date: 'yyyy-MM-dd'}} +
    + + + + | + + + + | + + + +
    +
    +
    暂无消息数据
    +
    +
    + +
    + +
    + +
    + + +
    + + +
    + + + +
    + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/base/contract_update.html b/src/main/webapp/WEB-INF/views/src/views/base/contract_update.html new file mode 100644 index 0000000..3ecb8de --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/base/contract_update.html @@ -0,0 +1,281 @@ + + + +
    + + +
    + + +
    + + +
    +
    + +

    创建合同

    +
    + +
    + +
    + +
    + + +
    +
    + +
    + 合同信息 + +
    + +
    + +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    +
    + +
    + +
    +
    +
    + +
    +
    + + + + +
    +
    +
    +
    + +
    + 合同详情 +
    +
    + +
    + + +
    +
    +
    + +
    + +
    +
    +
    + +
    + + 折扣输入示例(如95折输入0.95)不打折则输入1 +
    +
    +
    +
    +
    +
    +
    +
    +
    + +

    产品分类

    +
    +
    +
    +
    +
    +
    +
      +
    • +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    可选择产品
    产品编号名称单价操作
    {{item.itemCode}}{{item.itemName}}{{item.sellPrice | number:2}} +
    + + + +
    +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    已优惠产品*
    操作产品编号名称单价优惠方式折扣优惠后金额
    +
    + + + +
    +
    {{choseItem.itemCode}}{{choseItem.itemName}}{{choseItem.sellPrice | number:2}}{{choseItem.contractTypeName}}{{choseItem.discountText}}{{choseItem.contractValue | number:2}}
    +
    +
    +
    +
    + + +
    + 错误信息 +
    +
    +
    {{errors.message}}
    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    + +
    + +
    + + +
    + + +
    + + + +
    + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/base/couponActivity.js b/src/main/webapp/WEB-INF/views/src/views/base/couponActivity.js new file mode 100644 index 0000000..853b59f --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/base/couponActivity.js @@ -0,0 +1,132 @@ +/** + * Created by Jeng on 2016/1/8. + */ +define(function () { + return ["$scope", "CouponAPI", "$modal", "$ugDialog","CouponCategoryAPI","CouponActivityAPI",function($scope, CouponAPI, $modal, $ugDialog,CouponCategoryAPI,CouponActivityAPI){ + + $scope.ugSelect2Config = {}; + $scope.getCategoryList = function(){ + $scope.pageInfoCategorySetting = { + pageSize:1000, + pageNum:1 + }; + $scope.queryParam = {}; + $scope.categoryList = []; + CouponCategoryAPI.query({ + limit:$scope.pageInfoCategorySetting.pageSize, + offset:$scope.pageInfoCategorySetting.pageNum + }, function(data){ + $scope.categoryList = data.data; + $scope.pageInfoCategorySetting = data.pageInfo; + $scope.pageInfoCategorySetting.loadData = $scope.getCategoryList; + }); + } + $scope.getCategoryList(); + + $scope.couponList = []; + $scope.pageInfoSetting = { + pageSize:50, + pageNum:1 + }; + $scope.queryParam = {}; + $scope.getCouponList = function(){ + CouponActivityAPI.query({ + limit:$scope.pageInfoSetting.pageSize, + offset:$scope.pageInfoSetting.pageNum, + keyword:$scope.queryParam.keyword, + isUseful:0, + isSend:1, + couponCategoryId:$scope.queryParam.couponCategoryId, + batch:$scope.queryParam.batch, + couponType:1 //只有卡回款 + }, function(data){ + $scope.couponList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getCouponList; + }); + }; + $scope.getCouponList(); + $scope.updateValue = function(coupon){ + coupon.userPrice = coupon.couponValue; + CouponAPI.update(coupon, function(){ + }, function(data){ + $scope.errors = data.data; + }) + } + + //退卡 + $scope.returnCoupon = function(coupon){ + $ugDialog.confirm("是否退卡/券?").then(function(){ + CouponAPI.returnCoupon({ + id: coupon.id + }, function(){ + $ugDialog.alert("退卡成功"); + $scope.getCouponList(); + }); + }) + }; + + //填写送货地址 + $scope.openEditAddress = function(coupon){ + var modalInstance = $modal.open({ + templateUrl: 'editAddress.html', + resolve: { + CurrentCoupon: function(){ + return coupon; + } + }, + controller: ["$scope", "CouponAPI","CurrentCoupon", "$modalInstance", function ($scope, CouponAPI, CurrentCoupon, $modalInstance) { + if(CurrentCoupon){ + $scope.couponEdit = angular.copy(CurrentCoupon); + } + $scope.datepickerSetting = { + datepickerPopupConfig:{ + "current-text":"今天", + "clear-text":"清除", + "close-text":"关闭" + }, + beginTime:{ + opened:false + } + }; + $scope.open = function($event, index) { + $event.preventDefault(); + $event.stopPropagation(); + if(index == 0){ + $scope.datepickerSetting.beginTime.opened = true; + } + }; + $scope.errors = null; + $scope.editAddressForm = {}; + $scope.updateAddress = function(coupon) { + $scope.errors = null; + if ($scope.editAddressForm.validator.form()) { + CouponAPI.activityAddress({ + couponNumber:$scope.couponEdit.couponNumber, + consignmentName:$scope.couponEdit.consignmentName, + consignmentPhone:$scope.couponEdit.consignmentPhone, + consignmentAddress:$scope.couponEdit.consignmentAddress, + sendTime:$scope.couponEdit.sendTime + },function(){ + CurrentCoupon.couponNumber = $scope.couponEdit.couponNumber; + CurrentCoupon.consignmentName = $scope.couponEdit.consignmentName; + CurrentCoupon.consignmentPhone = $scope.couponEdit.consignmentPhone; + CurrentCoupon.consignmentAddress = $scope.couponEdit.consignmentAddress; + CurrentCoupon.sendTime = $scope.couponEdit.sendTime; + $modalInstance.dismiss('cancel'); + }, function(data){ + $scope.errors = data.data; + }) + } + } + $scope.cancel = function () { + $modalInstance.dismiss('cancel'); + }; + }] + }); + modalInstance.result.then(function () { + $scope.getCouponList(); + }); + } + }]; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/base/couponActivityAddress.html b/src/main/webapp/WEB-INF/views/src/views/base/couponActivityAddress.html new file mode 100644 index 0000000..19088c6 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/base/couponActivityAddress.html @@ -0,0 +1,212 @@ + + + +
    + + +
    + + +
    + + +
    + +
    + +

    卡券列表

    +
    + +
    + +
    + +
    + + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    序号卡券类型卡劵类别卡号/劵号批号可用金额最低赠送金额发放单位发放客户经理操作
    消费劵 + + + +
    +
    暂无数据
    +
    +
    + +
    + +
    + +
    + + +
    + + +
    + + + +
    + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/base/couponAudit.js b/src/main/webapp/WEB-INF/views/src/views/base/couponAudit.js new file mode 100644 index 0000000..5b6241d --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/base/couponAudit.js @@ -0,0 +1,225 @@ +/** + * Created by Jeng on 2016/1/8. + */ +define(function () { + return ["$scope", "CouponAPI", "$modal", "$ugDialog","CouponCategoryAPI","CompanyAPI","UserAPI", function($scope, CouponAPI, $modal, $ugDialog,CouponCategoryAPI,CompanyAPI,UserAPI){ + + $scope.ugSelect2Config = {}; + $scope.getCategoryList = function(){ + $scope.pageInfoSetting = { + pageSize:1000, + pageNum:1 + }; + $scope.queryParam = {}; + $scope.categoryList = []; + CouponCategoryAPI.query({ + limit:$scope.pageInfoSetting.pageSize, + offset:$scope.pageInfoSetting.pageNum + }, function(data){ + $scope.categoryList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getCategoryList; + }); + } + $scope.getCategoryList(); + + $scope.companyList = []; + $scope.getCompanyList = function(){ + CompanyAPI.query({ + limit:$scope.pageInfoSetting.pageSize, + offset:$scope.pageInfoSetting.pageNum + }, function(data){ + $scope.companyList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getCompanyList; + }); + }; + $scope.getCompanyList(); + + $scope.companyCustomerManagers = []; + $scope.getCustomerManagersList = function(){ + UserAPI.getCustomerManagerList({ + userType:"customer_manager" + },function(data){ + $scope.companyCustomerManagers = data; + }); + } + $scope.getCustomerManagersList(); + + $scope.couponList = []; + $scope.pageInfoNoAuditSetting = { + pageSize:50, + pageNum:1 + }; + $scope.queryParam = {}; + $scope.chooseCoupon = []; + $scope.checkedAllCoupon = function() { + if($scope.isCheckCoupon == 0){ + $scope.chooseCoupon.splice(0, $scope.chooseCoupon.length); + for (var i = 0; i < $scope.couponList.length; i++) { + var obj = $scope.couponList[i]; + $scope.chooseCoupon.push(obj); + } + }else{ + $scope.chooseCoupon.splice(0, $scope.chooseCoupon.length); + } + }; + + $scope.changeCouponList = function(){ + if($scope.chooseCoupon.length == $scope.couponList.length){ + $scope.isCheckCombine = 0; + }else{ + $scope.isCheckCombine = 1; + } + }; + + $scope.getCouponList = function(){ + CouponAPI.query({ + limit:$scope.pageInfoNoAuditSetting.pageSize, + offset:$scope.pageInfoNoAuditSetting.pageNum, + keyword:$scope.queryParam.keyword, + isUseful:3, + isSend:1, + cdCompanyId:$scope.queryParam.cdCompanyId, + customerMangerId:$scope.queryParam.customerMangerId, + couponCategoryId:$scope.queryParam.couponCategoryId, + batch:$scope.queryParam.batch + }, function(data){ + $scope.couponList = data.data; + $scope.pageInfoNoAuditSetting = data.pageInfo; + $scope.pageInfoNoAuditSetting.loadData = $scope.getCouponList; + }); + }; + $scope.getCouponList(); + $scope.audit = function(index){ + CouponAPI.audit({ + id: $scope.couponList[index].id, + locked: true + },function(data){ + $scope.getCouponList(); + $scope.getCouponAuditList(); + }); + }; + + $scope.batchUsefulCoupon = function(){ + var ids = []; + for(var i in $scope.chooseCoupon){ + ids.push($scope.chooseCoupon[i].id); + } + if(ids.length == 0){ + $ugDialog.warn("请选择卡劵进行批量激活!"); + return false; + } + CouponAPI.batchAudit({ + ids:ids, + locked:true + },function(data){ + $scope.getCouponList(); + $scope.getCouponAuditList(); + }); + } + //已审核列表 + $scope.pageInfoAuditSetting = []; + $scope.pageInfoAuditSetting = { + pageSize:50, + pageNum:1 + }; + + $scope.currentDate = function(){ + var myDate = new Date(); + var fullYear = myDate.getFullYear(); //获取完整的年份(4位,1970-????) + var month = myDate.getMonth() + 1; //获取当前月份(0-11,0代表1月) + if(month < 10){ + month = '0'+month; + } + var date = myDate.getDate(); //获取当前日(1-31) + if(date < 10){ + date = '0'+date; + } + return fullYear+"-"+month+"-"+date; + } + + $scope.datepickerSetting = { + datepickerPopupConfig:{ + "current-text":"今天", + "clear-text":"清除", + "close-text":"关闭" + }, + auditDateStart:{ + opened:false + }, + auditDateEnd:{ + opened:false + } + }; + $scope.openDate = function($event, index) { + $event.preventDefault(); + $event.stopPropagation(); + if(index == 0){ + $scope.datepickerSetting.auditDateStart.opened = true; + }else if(index == 1){ + $scope.datepickerSetting.auditDateEnd.opened = true; + } + }; + + $scope.queryParamAudit = { + auditDateStart :$scope.currentDate(), + auditDateEnd:$scope.currentDate() + }; + + $scope.getCouponAuditList = function(){ + CouponAPI.query({ + limit:$scope.pageInfoAuditSetting.pageSize, + offset:$scope.pageInfoAuditSetting.pageNum, + keyword:$scope.queryParamAudit.keyword, + isUseful:1, + isSend:1, + isOver:0, + cdCompanyId:$scope.queryParamAudit.cdCompanyId, + customerMangerId:$scope.queryParamAudit.customerMangerId, + couponCategoryId:$scope.queryParamAudit.couponCategoryId, + batch:$scope.queryParamAudit.batch, + auditDateStart:$scope.queryParamAudit.auditDateStart, + auditDateEnd:$scope.queryParamAudit.auditDateEnd + }, function(data){ + $scope.couponAuditList = data.data; + $scope.pageInfoAuditSetting = data.pageInfo; + $scope.pageInfoAuditSetting.loadData = $scope.getCouponAuditList; + }); + }; + $scope.getCouponAuditList(); + + $scope.noAudit = function(index){ + CouponAPI.audit({ + id: $scope.couponAuditList[index].id, + locked: false + },function(data){ + $scope.getCouponList(); + $scope.getCouponAuditList(); + }); + }; + + $scope.overCoupon = function(coupon){ + $ugDialog.confirm("确定卡完结,完结之后不能做任何修改?").then(function(){ + CouponAPI.overCoupon({ + id: coupon.id, + isOver: 1 + },function(data){ + $scope.getCouponAuditList(); + }); + }) + }; + + $scope.receivedPrice = function(coupon){ + CouponAPI.receivedPrice({ + couponId : coupon.id, + couponNumber : coupon.couponNumber, + receivedPrice : coupon.receivedPrice + },function(){ + + }, function(data){ + $scope.errors = data.data; + }) + } + }]; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/base/couponAuditBack.html b/src/main/webapp/WEB-INF/views/src/views/base/couponAuditBack.html new file mode 100644 index 0000000..17df809 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/base/couponAuditBack.html @@ -0,0 +1,157 @@ + + + +
    + + +
    + + +
    + + +
    +
    + +

    后付款卡券

    +
    + +
    + +
    + +
    + + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + 序号卡券类型卡劵类别卡号/劵号批号充值金额发放单位发放客户经理实收金额操作
    + + 消费劵{{coupon.couponValue}}{{coupon.receivedPrice}} +
    + + + +
    +
    +
    暂无数据
    +
    +
    + +
    + +
    + +
    + + +
    + + +
    + + +
    + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/base/couponAuditBack.js b/src/main/webapp/WEB-INF/views/src/views/base/couponAuditBack.js new file mode 100644 index 0000000..f264dbf --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/base/couponAuditBack.js @@ -0,0 +1,184 @@ +/** + * Created by Jeng on 2016/1/8. + */ +define(function () { + return ["$scope", "CouponAPI", "$modal", "$ugDialog","CouponCategoryAPI","CompanyAPI","UserAPI", function($scope, CouponAPI, $modal, $ugDialog,CouponCategoryAPI,CompanyAPI,UserAPI){ + + $scope.ugSelect2Config = {}; + $scope.getCategoryList = function(){ + $scope.pageInfoSetting = { + pageSize:1000, + pageNum:1 + }; + $scope.queryParam = {}; + $scope.categoryList = []; + CouponCategoryAPI.query({ + limit:$scope.pageInfoSetting.pageSize, + offset:$scope.pageInfoSetting.pageNum + }, function(data){ + $scope.categoryList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getCategoryList; + }); + } + $scope.getCategoryList(); + + $scope.companyList = []; + $scope.getCompanyList = function(){ + CompanyAPI.query({ + limit:$scope.pageInfoSetting.pageSize, + offset:$scope.pageInfoSetting.pageNum + }, function(data){ + $scope.companyList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getCompanyList; + }); + }; + $scope.getCompanyList(); + + $scope.companyCustomerManagers = []; + $scope.getCustomerManagersList = function(){ + UserAPI.getCustomerManagerList({ + userType:"customer_manager" + },function(data){ + $scope.companyCustomerManagers = data; + }); + } + $scope.getCustomerManagersList(); + $scope.changeCompany = function(id){ +// $scope.queryParam.customerMangerId = ""; +// for(var i in $scope.companyList){ +// var company = $scope.companyList[i] +// if(company.id == parseInt(id)){ +// $scope.companyCustomerManagers = company.companyCustomerManagers; +// } +// } + } + + $scope.couponList = []; + $scope.pageInfoNoAuditSetting = { + pageSize:50, + pageNum:1 + }; + $scope.queryParam = {}; + $scope.chooseCoupon = []; + $scope.checkedAllCoupon = function() { + if($scope.isCheckCoupon == 0){ + $scope.chooseCoupon.splice(0, $scope.chooseCoupon.length); + for (var i = 0; i < $scope.couponList.length; i++) { + var obj = $scope.couponList[i]; + $scope.chooseCoupon.push(obj); + } + }else{ + $scope.chooseCoupon.splice(0, $scope.chooseCoupon.length); + } + }; + + $scope.changeCouponList = function(){ + if($scope.chooseCoupon.length == $scope.couponList.length){ + $scope.isCheckCombine = 0; + }else{ + $scope.isCheckCombine = 1; + } + }; + + $scope.getCouponList = function(){ + CouponAPI.query({ + limit:$scope.pageInfoNoAuditSetting.pageSize, + offset:$scope.pageInfoNoAuditSetting.pageNum, + keyword:$scope.queryParam.keyword, + isUseful:4, + isSend:1, + cdCompanyId:$scope.queryParam.cdCompanyId, + customerMangerId:$scope.queryParam.customerMangerId, + couponCategoryId:$scope.queryParam.couponCategoryId, + batch:$scope.queryParam.batch + }, function(data){ + $scope.couponList = data.data; + $scope.pageInfoNoAuditSetting = data.pageInfo; + $scope.pageInfoNoAuditSetting.loadData = $scope.getCouponList; + }); + }; + $scope.getCouponList(); + $scope.audit = function(index){ + CouponAPI.audit({ + id: $scope.couponList[index].id, + locked: $scope.couponList[index].isUseful == 1 ? true : false + },function(data){ + $scope.getCouponList(); + $scope.getCouponAuditList(); + }); + }; + //已审核列表 + $scope.queryParamAudit = {} + $scope.pageInfoAuditSetting = []; + $scope.pageInfoAuditSetting = { + pageSize:50, + pageNum:1 + }; + $scope.getCouponAuditList = function(){ + CouponAPI.query({ + limit:$scope.pageInfoAuditSetting.pageSize, + offset:$scope.pageInfoAuditSetting.pageNum, + keyword:$scope.queryParamAudit.keyword, + isUseful:1, + isSend:1, + isOver:0, + cdCompanyId:$scope.queryParamAudit.cdCompanyId, + customerMangerId:$scope.queryParamAudit.customerMangerId, + couponCategoryId:$scope.queryParamAudit.couponCategoryId, + batch:$scope.queryParamAudit.batch + }, function(data){ + $scope.couponAuditList = data.data; + $scope.pageInfoAuditSetting = data.pageInfo; + $scope.pageInfoAuditSetting.loadData = $scope.getCouponAuditList; + }); + }; + $scope.getCouponAuditList(); + + $scope.noAudit = function(index){ + CouponAPI.audit({ + id: $scope.couponAuditList[index].id, + locked: $scope.couponAuditList[index].isUseful == 1 ? true : false + },function(data){ + $scope.getCouponList(); + $scope.getCouponAuditList(); + }); + }; + //退卡 + $scope.returnCoupon = function(coupon){ + $ugDialog.confirm("是否退卡/券?").then(function(){ + CouponAPI.returnCoupon({ + id: coupon.id + }, function(){ + $ugDialog.alert("退卡成功"); + $scope.getCouponList(); + }); + }) + }; + + $scope.overCoupon = function(coupon){ + $ugDialog.confirm("确定卡完结,完结之后不能做任何修改?").then(function(){ + CouponAPI.overCoupon({ + id: coupon.id, + isOver: 1 + },function(data){ + $scope.getCouponAuditList(); + }); + }) + }; + + $scope.receivedPrice = function(coupon){ + CouponAPI.receivedPrice({ + couponId : coupon.id, + couponNumber : coupon.couponNumber, + receivedPrice : coupon.receivedPrice, + isAutoAudit :1 + },function(){ + + }, function(data){ + $scope.errors = data.data; + }) + } + }]; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/base/couponCategory.js b/src/main/webapp/WEB-INF/views/src/views/base/couponCategory.js new file mode 100644 index 0000000..ba3c904 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/base/couponCategory.js @@ -0,0 +1,174 @@ +/** + * Created by Jeng on 2016/1/8. + */ +define(function () { + return ["$scope", "CouponCategoryAPI", "$modal", "$ugDialog", function($scope, CouponCategoryAPI, $modal, $ugDialog){ + $scope.couponCategoryList = []; + $scope.couponCategory = {}; + $scope.pageInfoSetting = { + pageSize:10, + pageNum:1 + }; + $scope.queryParam = {}; + $scope.getCouponCategoryList = function(){ + CouponCategoryAPI.query({ + limit:$scope.pageInfoSetting.pageSize, + offset:$scope.pageInfoSetting.pageNum, + keyword:$scope.queryParam.keyword, + categoryType:$scope.queryParam.categoryType + }, function(data){ + $scope.couponCategoryList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getCouponCategoryList; + }); + }; + $scope.removeCouponCategory = function(couponCategory){ + $ugDialog.confirm("是否删除该产品?").then(function(){ + CouponCategoryAPI.delete({ + id: couponCategory.id + }, function(){ + $scope.getCouponCategoryList(); + }); + }) + }; + $scope.open = function (couponCategory) { + var modalInstance = $modal.open({ + templateUrl: 'addCouponCategory.html', + controller: ["$scope", "CouponCategoryAPI", "ItemAPI","$modalInstance","currentCouponCategory", function ($scope, CouponCategoryAPI,ItemAPI,$modalInstance,currentCouponCategory) { + $scope.couponCategory = {categoryType : 1}; + if(currentCouponCategory){ + $scope.couponCategory = currentCouponCategory; + if($scope.couponCategory.categoryType == 2){ + CouponCategoryAPI.getChoseItemList({ + parentId:$scope.couponCategory.id + },function(data){ + $scope.choseItemList = data; + }) + } + } + $scope.errors = null; + $scope.addCouponCategoryForm = {}; + $scope.saveOrUpdateCouponCategory = function(){ + $scope.errors = null; + if($scope.addCouponCategoryForm.validator.form()){ + if($scope.couponCategory.id){ + $scope.couponCategory.categoryRefs = []; + for (var i = 0; i < $scope.choseItemList.length; i++) { + var obj = $scope.choseItemList[i]; + $scope.couponCategory.categoryRefs.push({ + cdItemId:obj.id, + count :obj.count + }); + } + CouponCategoryAPI.update($scope.couponCategory, function(){ + $modalInstance.close(); + }, function(data){ + $scope.errors = data.data; + }) + }else{ + $scope.couponCategory.categoryRefs = []; + for (var i = 0; i < $scope.choseItemList.length; i++) { + var obj = $scope.choseItemList[i]; + $scope.couponCategory.categoryRefs.push({ + cdItemId:obj.id, + count :obj.count + }); + } + CouponCategoryAPI.save($scope.couponCategory, function(){ + $modalInstance.close(); + }, function(data){ + $scope.errors = data.data; + }) + } + + } + }; + $scope.cancel = function () { + $modalInstance.dismiss('cancel'); + }; + $scope.choseItemList = []; + $scope.pageInfoSetting = { + pageSize:1000, + pageNum:1 + }; + $scope.queryParam = {}; + + $scope.getItemList = function(){ + var choseItemId = null; + if($scope.choseItemList && $scope.choseItemList.length > 0){ + choseItemId = [] + for (var i = 0; i < $scope.choseItemList.length; i++) { + var obj = $scope.choseItemList[i]; + choseItemId.push(obj.id); + } + } + ItemAPI.query({ + limit:$scope.pageInfoSetting.pageSize, + offset:$scope.pageInfoSetting.pageNum, + keyword:$scope.queryParam.keyword, + exclude_ids:choseItemId, + sellStatus : 1 + }, function(data){ + $scope.itemList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getItemList; + }); + }; + + $scope.openItemNumber = function (index) { + var modalInstance = $modal.open({ + templateUrl: 'addItemNumber.html', + resolve: { + CurrentOrderItem: function(){ + return $scope.itemList[index]; + } + }, + controller: ["$scope", "CurrentOrderItem", "$modalInstance", function ($scope, CurrentOrderItem, $modalInstance) { + $scope.orderItem = {}; + if(CurrentOrderItem){ + $scope.orderItem = CurrentOrderItem; + } + $scope.addItemNumberForm = {}; + $scope.saveItemNumber = function(){ + if($scope.addItemNumberForm.validator.form()){ + $modalInstance.close($scope.orderItem); + } + }; + $scope.cancel = function () { + $modalInstance.dismiss('cancel'); + }; + }] + }); + modalInstance.result.then(function (data) { + $scope.choseItem(index, parseFloat(data.number)); + }); + }; + + $scope.choseItem = function(index,count){ + var item = $scope.itemList[index]; + item.cdItemId = item.id; + item.count = count; + $scope.choseItemList.push(item); + $scope.getItemList(); + }; + + $scope.removeItem = function(index){ + $scope.choseItemList.splice(index,1); + $scope.getItemList(); + }; + }], + resolve: { + currentCouponCategory: function () { + return couponCategory; + } + }, + size : 'lg' + }); + modalInstance.result.then(function () { + $scope.getCouponCategoryList(); + }); + }; + + $scope.getCouponCategoryList(); + }]; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/base/express_list.html b/src/main/webapp/WEB-INF/views/src/views/base/express_list.html new file mode 100644 index 0000000..b4e5e83 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/base/express_list.html @@ -0,0 +1,165 @@ + + + +
    + + +
    + + +
    + + +
    + +
    + +

    快递商列表

    +
    + +
    + +
    + +
    + + +
    +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + +
    + + 编号名称操作
    + + +
    + + + + | + + + +
    +
    +
    暂无消息数据
    +
    +
    + +
    + +
    + +
    + + +
    + + +
    + + + +
    + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/base/express_list.js b/src/main/webapp/WEB-INF/views/src/views/base/express_list.js new file mode 100644 index 0000000..68191b6 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/base/express_list.js @@ -0,0 +1,78 @@ +/** + * Created by Jeng on 2016/1/8. + */ +define(function () { + return ["$scope", "ExpressAPI", "$modal", "$ugDialog", function($scope, ExpressAPI, $modal, $ugDialog){ + $scope.expressList = []; + $scope.pageInfoSetting = { + pageSize:10, + pageNum:1 + }; + $scope.queryParam = {}; + $scope.getExpressList = function(){ + ExpressAPI.query({ + limit:$scope.pageInfoSetting.pageSize, + offset:$scope.pageInfoSetting.pageNum, + keyword:$scope.queryParam.keyword + }, function(data){ + $scope.expressList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getExpressList; + }); + }; + $scope.removeExpress = function(index){ + $ugDialog.confirm("是否删除该快递公司?").then(function(){ + ExpressAPI.delete({ + id: $scope.expressList[index].id + }, function(){ + $scope.getExpressList(); + }); + }) + }; + $scope.open = function (index) { + var modalInstance = $modal.open({ + templateUrl: 'addExpress.html', + controller: ["$scope", "ExpressAPI", "$modalInstance","currentExpress", "$rootScope", function ($scope, ExpressAPI, $modalInstance,currentExpress,$rootScope) { + $scope.express = {}; + if(currentExpress){ + $scope.express = currentExpress; + } + $scope.errors = null; + $scope.addExpressForm = {}; + $scope.saveOrUpdateExpress = function(){ + $scope.errors = null; + if($scope.addExpressForm.validator.form()){ + if($scope.express.id){ + ExpressAPI.update($scope.express, function(){ + $modalInstance.close(); + }, function(data){ + $scope.errors = data.data; + }) + }else{ + ExpressAPI.save($scope.express, function(){ + $modalInstance.close(); + }, function(data){ + $scope.errors = data.data; + }) + } + + } + }; + $scope.cancel = function () { + $modalInstance.dismiss('cancel'); + }; + }], + resolve: { + currentExpress: function () { + return $scope.expressList[index]; + } + } + }); + modalInstance.result.then(function () { + $scope.getExpressList(); + }); + }; + + $scope.getExpressList(); + }]; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/base/express_member_list.js b/src/main/webapp/WEB-INF/views/src/views/base/express_member_list.js new file mode 100644 index 0000000..29670e4 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/base/express_member_list.js @@ -0,0 +1,99 @@ +/** + * Created by Jeng on 2016/1/8. + */ +define(function () { + return ["$scope", "ExpressMemberAPI", "$modal", "$ugDialog", function($scope, ExpressMemberAPI, $modal, $ugDialog){ + $scope.expressList = []; + $scope.pageInfoSetting = { + pageSize:10, + pageNum:1 + }; + $scope.queryParam = {}; + $scope.getExpressMemberList = function(){ + ExpressMemberAPI.query({ + limit:$scope.pageInfoSetting.pageSize, + offset:$scope.pageInfoSetting.pageNum, + keyword:$scope.queryParam.keyword + }, function(data){ + $scope.expressMemberList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getExpressMemberList; + }); + }; + $scope.removeExpress = function(index){ + $ugDialog.confirm("是否删除该快递员?").then(function(){ + ExpressMemberAPI.delete({ + id: $scope.expressList[index].id + }, function(){ + $scope.getExpressList(); + }); + }) + }; + $scope.open = function (index) { + var modalInstance = $modal.open({ + templateUrl: 'addExpressMember.html', + controller: ["$scope", "ExpressAPI","ExpressMemberAPI", "$modalInstance","currentExpressMember", "$rootScope", function ($scope,ExpressAPI, ExpressMemberAPI, $modalInstance,currentExpressMember,$rootScope) { + $scope.expressMember = {}; + if(currentExpressMember){ + $scope.expressMember = currentExpressMember; + } + + $scope.expressList = []; + $scope.pageInfoSetting = { + pageSize:1000, + pageNum:1 + }; + $scope.queryParam = {}; + $scope.ugSelect2Config = {}; + $scope.getExpressList = function(){ + ExpressAPI.query({ + limit:$scope.pageInfoSetting.pageSize, + offset:$scope.pageInfoSetting.pageNum, + keyword:$scope.queryParam.keyword + }, function(data){ + $scope.expressList = data.data; + $scope.ugSelect2Config.initSelectData($scope.expressMember.cdExpressId); + }); + }; + $scope.getExpressList(); + + + $scope.errors = null; + $scope.addExpressMemberForm = {}; + $scope.saveOrUpdateExpressMember = function(){ + $scope.errors = null; + if($scope.addExpressMemberForm.validator.form()){ + if($scope.expressMember.id){ + ExpressMemberAPI.update($scope.expressMember, function(){ + $modalInstance.close(); + }, function(data){ + $scope.errors = data.data; + }) + }else{ + ExpressMemberAPI.save($scope.expressMember, function(){ + $modalInstance.close(); + }, function(data){ + $scope.errors = data.data; + }) + } + + } + }; + $scope.cancel = function () { + $modalInstance.dismiss('cancel'); + }; + }], + resolve: { + currentExpressMember: function () { + return $scope.expressMemberList[index]; + } + } + }); + modalInstance.result.then(function () { + $scope.getExpressMemberList(); + }); + }; + + $scope.getExpressMemberList(); + }]; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/base/item.detail.html b/src/main/webapp/WEB-INF/views/src/views/base/item.detail.html new file mode 100644 index 0000000..0eaa33e --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/base/item.detail.html @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/base/item.html b/src/main/webapp/WEB-INF/views/src/views/base/item.html new file mode 100644 index 0000000..247f844 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/base/item.html @@ -0,0 +1,558 @@ + + + +
    + + +
    +
    +
    + +
    + +

    产品分类

    +
    + +
    + +
    + +
    + + +
    + + + + + + + +
    +
      +
    • +
    +
    +
    + +
    + +
    +
    + +
    + +
    + +
    + +

    产品列表

    +
    + +
    + +
    + +
    + + +
    +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + 产品类别产品编号产品名称产品类型产品规格销售状态销售价格进货价格会员价格操作
    + + 常规产品组合产品下架上架 +
    + + + + | + + + + | + + + +
    +
    +
    暂无消息数据
    +
    +
    + +
    + +
    + +
    + + +
    + + +
    + + + +
    + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/base/itemCategory.html b/src/main/webapp/WEB-INF/views/src/views/base/itemCategory.html new file mode 100644 index 0000000..13da19f --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/base/itemCategory.html @@ -0,0 +1,148 @@ + + + +
    + + +
    + + +
    + + +
    + +
    + +

    产品分类管理

    + +
    + + +
    + + +
    + + +
    + + + +
    + +
    + + +
    + +
    + + + +
    + +
    + +
    + +
    +
      +
    • +
    +
    + +
    + + +
    + + +
    + + +
    + + +
    + + + +
    + + + + + diff --git a/src/main/webapp/WEB-INF/views/src/views/base/member_list.html b/src/main/webapp/WEB-INF/views/src/views/base/member_list.html new file mode 100644 index 0000000..8eff2ee --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/base/member_list.html @@ -0,0 +1,147 @@ + + + +
    + + +
    + + +
    + + +
    + +
    + +

    客户列表

    +
    + +
    + +
    + +
    + + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + 绑定卡号姓名手机号地址所属单位客户经理可用金额操作
    + + + {{couponNumber.couponNumber}}
    +
    + {{couponNumber.userPrice}}
    +
    +
    + + + + | + + + +
    +
    +
    暂无消息数据
    +
    +
    + +
    + +
    + +
    + + +
    + + +
    + + + +
    + + diff --git a/src/main/webapp/WEB-INF/views/src/views/base/member_list.js b/src/main/webapp/WEB-INF/views/src/views/base/member_list.js new file mode 100644 index 0000000..dd2a46f --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/base/member_list.js @@ -0,0 +1,43 @@ +/** + * Created by Jeng on 2016/1/8. + */ +define(function () { + return ["$scope", "MemberAPI", "$modal", "$ugDialog", "$modalMemberAdd", function($scope, MemberAPI, $modal, $ugDialog, $modalMemberAdd){ + $scope.memberList = []; + $scope.pageInfoSetting = { + pageSize:10, + pageNum:1 + }; + $scope.queryParam = {}; + $scope.getMemberList = function(){ + MemberAPI.query({ + limit:$scope.pageInfoSetting.pageSize, + offset:$scope.pageInfoSetting.pageNum, + keyword:$scope.queryParam.keyword, + couponNumber:$scope.queryParam.couponNumber + }, function(data){ + $scope.memberList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getMemberList; + }); + }; + $scope.open = function (index) { + $modalMemberAdd.open({ + currentMember: $scope.memberList[index] + }).result.then(function () { + $scope.getMemberList(); + }); + }; + $scope.removeMember = function(index){ + $ugDialog.confirm("是否删除客户?").then(function(){ + MemberAPI.delete({ + id: $scope.memberList[index].id + },function(){ + $scope.getMemberList(); + }); + }) + }; + + $scope.getMemberList(); + }]; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/base/onlineRecharge.js b/src/main/webapp/WEB-INF/views/src/views/base/onlineRecharge.js new file mode 100644 index 0000000..d8bf52b --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/base/onlineRecharge.js @@ -0,0 +1,55 @@ +/** + * Created by Jeng on 2016/1/8. + */ +define(function () { + return ["$scope", "CouponAPI","$modal", "$ugDialog","$stateParams", function($scope, CouponAPI,$modal, $ugDialog,$stateParams){ + + $scope.readCard = function(){ + if($scope.searchCouponNo){ + //查找卡信息 + CouponAPI.readCard({ + couponNo:$scope.searchCouponNo, + password:"" + }, function (data) { + if(data.userName == null || data.userName == undefined){ + $ugDialog.warn("卡不能识别!"); + $scope.pick.couponNo = ""; + $scope.pick.password = ""; + return; + }; + $scope.pick.userName = data.userName; + $scope.pick.phoneNumber = data.phoneNumber; + $scope.pick.couponNo = data.couponNo; + $scope.pick.couponPrice = data.couponPrice; + }, function (data) { + $ugDialog.warn(data.data.error); + }) + }else{ + $ugDialog.alert("请输入卡号/密码") + } + } + + + $scope.pickForm = {}; + $scope.cardRecharge = function(){ + if($scope.pick.couponNo == "" || $scope.pick.couponNo == null || $scope.pick.couponNo == undefined ){ + $ugDialog.alert("请输入卡号"); + return; + } + CouponAPI.cardRecharge({ + couponNo : $scope.pick.couponNo, + rechargePrice : $scope.pick.rechargePrice + },function(){ + $ugDialog.alert("充值成功"); + $scope.pick = {} + }, function(data){ + $ugDialog.warn(data.data.error); + }) + } + + var initialize = function(){ + $scope.pick = {}; + } + initialize(); + }]; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/base/tradeRecordList.js b/src/main/webapp/WEB-INF/views/src/views/base/tradeRecordList.js new file mode 100644 index 0000000..e85943b --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/base/tradeRecordList.js @@ -0,0 +1,26 @@ +/** + * Created by Jeng on 2016/1/8. + */ +define(function () { + return ["$scope", "TradeRecordAPI", "$modal", "$ugDialog",function($scope, TradeRecordAPI, $modal, $ugDialog){ + + $scope.tradeRecordList = []; + $scope.pageInfoSetting = { + pageSize:50, + pageNum:1 + }; + $scope.queryParam = {}; + $scope.getTradeRecordList = function(){ + TradeRecordAPI.query({ + limit:$scope.pageInfoSetting.pageSize, + offset:$scope.pageInfoSetting.pageNum, + keyword:$scope.queryParam.keyword + }, function(data){ + $scope.tradeRecordList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getTradeRecordList; + }); + }; + $scope.getTradeRecordList(); + }]; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/blank.js b/src/main/webapp/WEB-INF/views/src/views/blank.js new file mode 100644 index 0000000..c3abea6 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/blank.js @@ -0,0 +1,6 @@ +/** + * Created by Jeng on 2016/1/5. + */ +define(function () { + return {}; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/checklist-model/checklist-model.js b/src/main/webapp/WEB-INF/views/src/views/checklist-model/checklist-model.js new file mode 100644 index 0000000..8f4c2dc --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/checklist-model/checklist-model.js @@ -0,0 +1,169 @@ +/** + * Checklist-model + * AngularJS directive for list of checkboxes + * https://github.com/vitalets/checklist-model + * License: MIT http://opensource.org/licenses/MIT + */ + +/* commonjs package manager support (eg componentjs) */ +if (typeof module !== "undefined" && typeof exports !== "undefined" && module.exports === exports){ + module.exports = 'checklist-model'; +} + +angular.module('checklist-model', []) + .directive('checklistModel', ['$parse', '$compile', function($parse, $compile) { + // contains + function contains(arr, item, comparator) { + if (angular.isArray(arr)) { + for (var i = arr.length; i--;) { + if (comparator(arr[i], item)) { + return true; + } + } + } + return false; + } + + // add + function add(arr, item, comparator) { + arr = angular.isArray(arr) ? arr : []; + if(!contains(arr, item, comparator)) { + arr.push(item); + } + return arr; + } + + // remove + function remove(arr, item, comparator) { + if (angular.isArray(arr)) { + for (var i = arr.length; i--;) { + if (comparator(arr[i], item)) { + arr.splice(i, 1); + break; + } + } + } + return arr; + } + + // http://stackoverflow.com/a/19228302/1458162 + function postLinkFn(scope, elem, attrs) { + // exclude recursion, but still keep the model + var checklistModel = attrs.checklistModel; + attrs.$set("checklistModel", null); + // compile with `ng-model` pointing to `checked` + $compile(elem)(scope); + attrs.$set("checklistModel", checklistModel); + + // getter for original model + var checklistModelGetter = $parse(checklistModel); + var checklistChange = $parse(attrs.checklistChange); + var checklistBeforeChange = $parse(attrs.checklistBeforeChange); + var ngModelGetter = $parse(attrs.ngModel); + + + + var comparator = angular.equals; + + if (attrs.hasOwnProperty('checklistComparator')){ + if (attrs.checklistComparator[0] == '.') { + var comparatorExpression = attrs.checklistComparator.substring(1); + comparator = function (a, b) { + return a[comparatorExpression] === b[comparatorExpression]; + }; + + } else { + comparator = $parse(attrs.checklistComparator)(scope.$parent); + } + } + + // watch UI checked change + var unbindModel = scope.$watch(attrs.ngModel, function(newValue, oldValue) { + if (newValue === oldValue) { + return; + } + + if (checklistBeforeChange && (checklistBeforeChange(scope) === false)) { + ngModelGetter.assign(scope, contains(checklistModelGetter(scope.$parent), getChecklistValue(), comparator)); + return; + } + + setValueInChecklistModel(getChecklistValue(), newValue); + + if (checklistChange) { + checklistChange(scope); + } + }); + + // watches for value change of checklistValue + var unbindCheckListValue = scope.$watch(getChecklistValue, function(newValue, oldValue) { + if( newValue != oldValue && angular.isDefined(oldValue) && scope[attrs.ngModel] === true ) { + var current = checklistModelGetter(scope.$parent); + checklistModelGetter.assign(scope.$parent, remove(current, oldValue, comparator)); + checklistModelGetter.assign(scope.$parent, add(current, newValue, comparator)); + } + }, true); + + var unbindDestroy = scope.$on('$destroy', destroy); + + function destroy() { + unbindModel(); + unbindCheckListValue(); + unbindDestroy(); + } + + function getChecklistValue() { + return attrs.checklistValue ? $parse(attrs.checklistValue)(scope.$parent) : attrs.value; + } + + function setValueInChecklistModel(value, checked) { + var current = checklistModelGetter(scope.$parent); + if (angular.isFunction(checklistModelGetter.assign)) { + if (checked === true) { + checklistModelGetter.assign(scope.$parent, add(current, value, comparator)); + } else { + checklistModelGetter.assign(scope.$parent, remove(current, value, comparator)); + } + } + + } + + // declare one function to be used for both $watch functions + function setChecked(newArr, oldArr) { + if (checklistBeforeChange && (checklistBeforeChange(scope) === false)) { + setValueInChecklistModel(getChecklistValue(), ngModelGetter(scope)); + return; + } + ngModelGetter.assign(scope, contains(newArr, getChecklistValue(), comparator)); + } + + // watch original model change + // use the faster $watchCollection method if it's available + if (angular.isFunction(scope.$parent.$watchCollection)) { + scope.$parent.$watchCollection(checklistModel, setChecked); + } else { + scope.$parent.$watch(checklistModel, setChecked, true); + } + } + + return { + restrict: 'A', + priority: 1000, + terminal: true, + scope: true, + compile: function(tElement, tAttrs) { + + if (!tAttrs.checklistValue && !tAttrs.value) { + throw 'You should provide `value` or `checklist-value`.'; + } + + // by default ngModel is 'checked', so we set it if not specified + if (!tAttrs.ngModel) { + // local scope var storing individual checkbox model + tAttrs.$set("ngModel", "checked"); + } + + return postLinkFn; + } + }; + }]); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/despatch/despatchJob.js b/src/main/webapp/WEB-INF/views/src/views/despatch/despatchJob.js new file mode 100644 index 0000000..f53c3b0 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/despatch/despatchJob.js @@ -0,0 +1,151 @@ +/** + * Created by Jeng on 2016/1/8. + */ +define(function () { + return ["$scope", "OrderAPI", "$modal", "$ugDialog","ExpressAPI","$filter", function($scope, OrderAPI, $modal, $ugDialog,ExpressAPI,$filter){ + $scope.orderList = []; + $scope.pageInfoSetting = { + pageSize:10, + pageNum:1 + }; + + $scope.datepickerSetting = { + datepickerPopupConfig:{ + "current-text":"今天", + "clear-text":"清除", + "close-text":"关闭" + }, + appointmentTimeStart:{ + opened:false + }, + appointmentTimeEnd:{ + opened:false + } + }; + $scope.openDate = function($event, index) { + $event.preventDefault(); + $event.stopPropagation(); + if(index == 0){ + $scope.datepickerSetting.appointmentTimeStart.opened = true; + }else if(index == 1){ + $scope.datepickerSetting.appointmentTimeEnd.opened = true; + } + }; + + $scope.queryParam = { + appointmentTimeStart :$filter('date')(new Date(new Date().getTime()), 'yyyy-MM-dd'), + appointmentTimeEnd :$filter('date')(new Date(new Date().getTime()+86400000), 'yyyy-MM-dd') + }; + + $scope.getOrderList = function(){ + //查询待配送的订单 + OrderAPI.query({ + limit:$scope.pageInfoSetting.pageSize, + offset:$scope.pageInfoSetting.pageNum, + keyword:$scope.queryParam.keyword, + appointmentTimeStart:$scope.queryParam.appointmentTimeStart, + appointmentTimeEnd:$scope.queryParam.appointmentTimeEnd, + hasNoShowCancel:true, + hasShowDespatch:false //不显示已分配的 + }, function(data){ + $scope.orderList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getOrderList; + }); + }; + + $scope.pageSetting = { + pageSize:10, + pageNum:1 + }; + //查询快递商 + $scope.expressList = []; + $scope.getExpressList = function(){ + ExpressAPI.query({ + limit:$scope.pageSetting.pageSize, + offset:$scope.pageSetting.pageNum, + keyword:$scope.queryParam.keyword + },function(data){ + $scope.expressList = data.data; + }); + } + //选择快递商 + $scope.choseExpressUser = function(index){ + $scope.currentCustomer = $scope.expressList[index]; + }; + $scope.getOrderList(); + $scope.getExpressList(); + + $scope.bindExpress = function(index){ + if(!$scope.currentCustomer){ + $ugDialog.warn("请选择运输的快递商"); + return; + } + var orderNos = []; + orderNos.push($scope.orderList[index].orderNo); + ExpressAPI.bindExpress({ + expressId:$scope.currentCustomer.id, + orderNos:orderNos + }, function(){ + $scope.getOrderList(); + $scope.getExpressList(); + }) + }; + $scope.unbindExpress = function(index){ + var orderNos = []; + orderNos.push($scope.orderList[index].orderNo); + ExpressAPI.unbindExpress({ + orderNos:orderNos + }, function(){ + $scope.getOrderList(); + $scope.getExpressList(); + }) + } + + //批量分配 + $scope.chooseOrder = []; + $scope.chooseAllCheck = {}; + $scope.checkedAllOrder = function() { + if($scope.chooseAllCheck.isCheckOrder == 0){ + $scope.chooseOrder.splice(0, $scope.chooseOrder.length); + for (var i = 0; i < $scope.orderList.length; i++) { + var obj = $scope.orderList[i]; + if(obj.expressName == null){ + $scope.chooseOrder.push(obj); + } + } + }else{ + $scope.chooseOrder.splice(0, $scope.chooseOrder.length); + } + }; + + $scope.changeOrderList = function(){ + if($scope.chooseOrder.length == $scope.orderList.length){ + $scope.isCheckCombine = 0; + }else{ + $scope.isCheckCombine = 1; + } + }; + $scope.saveBtnLoading = false; + $scope.batchBindExpress = function(){ + if(!$scope.currentCustomer){ + $ugDialog.warn("请选择运输的快递商"); + return; + } + $scope.saveBtnLoading = true; + var orderNos = []; + for(var i in $scope.chooseOrder){ + orderNos.push($scope.chooseOrder[i].orderNo); + } + ExpressAPI.bindExpress({ + expressId:$scope.currentCustomer.id, + orderNos:orderNos + }, function(){ + $scope.getOrderList(); + $scope.getExpressList(); + }).$promise.finally(function(){ + $scope.saveBtnLoading = false; + }); + }; + }]; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/despatch/despatchSuccessList.html b/src/main/webapp/WEB-INF/views/src/views/despatch/despatchSuccessList.html new file mode 100644 index 0000000..06dd502 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/despatch/despatchSuccessList.html @@ -0,0 +1,157 @@ + + + +
    + + +
    + + + +
    + + +
    +
    + +

    已分配列表

    +
    + +
    + +
    + +
    + + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    + +
    +
    +
    + +
    +
    + +
    + +
    +
    +
    +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + 序号订单编号订单状态快递商分配状态客户姓名手机号地址配送日期操作
    + + +
    已分配
    +
    待分配
    +
    +
    + + + +
    +
    +
    暂无数据
    +
    +
    + +
    + +
    + +
    + + +
    +
    + + + +
    + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/despatch/despatchSuccessList.js b/src/main/webapp/WEB-INF/views/src/views/despatch/despatchSuccessList.js new file mode 100644 index 0000000..5e5e7d5 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/despatch/despatchSuccessList.js @@ -0,0 +1,147 @@ +/** + * Created by Jeng on 2016/1/8. + */ +define(function () { + return ["$scope", "OrderAPI", "$modal", "$ugDialog","ExpressAPI","$filter", function($scope, OrderAPI, $modal, $ugDialog,ExpressAPI,$filter){ + $scope.orderList = []; + $scope.pageInfoSetting = { + pageSize:10, + pageNum:1 + }; + $scope.datepickerSetting = { + datepickerPopupConfig:{ + "current-text":"今天", + "clear-text":"清除", + "close-text":"关闭" + }, + appointmentTimeStart:{ + opened:false + }, + appointmentTimeEnd:{ + opened:false + } + }; + $scope.openDate = function($event, index) { + $event.preventDefault(); + $event.stopPropagation(); + if(index == 0){ + $scope.datepickerSetting.appointmentTimeStart.opened = true; + }else if(index == 1){ + $scope.datepickerSetting.appointmentTimeEnd.opened = true; + } + }; + + $scope.queryParam = { + appointmentTimeStart :$filter('date')(new Date(new Date().getTime()), 'yyyy-MM-dd'), + appointmentTimeEnd :$filter('date')(new Date(new Date().getTime()+86400000), 'yyyy-MM-dd') + }; + + $scope.getOrderList = function(){ + //显示已分配的 + OrderAPI.query({ + limit:$scope.pageInfoSetting.pageSize, + offset:$scope.pageInfoSetting.pageNum, + keyword:$scope.queryParam.keyword, + appointmentTimeStart:$scope.queryParam.appointmentTimeStart, + appointmentTimeEnd:$scope.queryParam.appointmentTimeEnd, + hasNoShowCancel:true, + hasShowDespatch:true //显示已分配的 + }, function(data){ + $scope.orderList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getOrderList; + }); + }; + + $scope.pageSetting = { + pageSize:10, + pageNum:1 + }; + //查询快递商 + $scope.expressList = []; + $scope.getExpressList = function(){ + ExpressAPI.query({ + limit:$scope.pageSetting.pageSize, + offset:$scope.pageSetting.pageNum, + keyword:$scope.queryParam.keyword + },function(data){ + $scope.expressList = data.data; + }); + } + //选择快递商 + $scope.choseExpressUser = function(index){ + $scope.currentCustomer = $scope.expressList[index]; + }; + $scope.getOrderList(); + $scope.getExpressList(); + + $scope.bindExpress = function(index){ + if(!$scope.currentCustomer){ + $ugDialog.warn("请选择运输的快递商"); + return; + } + var orderNos = []; + orderNos.push($scope.orderList[index].orderNo); + ExpressAPI.bindExpress({ + expressId:$scope.currentCustomer.id, + orderNos:orderNos + }, function(){ + $scope.getOrderList(); + $scope.getExpressList(); + }) + }; + $scope.unbindExpress = function(index){ + var orderNos = []; + orderNos.push($scope.orderList[index].orderNo); + ExpressAPI.unbindExpress({ + orderNos:orderNos + }, function(){ + $scope.getOrderList(); + $scope.getExpressList(); + }) + } + + //批量分配 + $scope.chooseOrder = []; + $scope.chooseAllCheck = {}; + $scope.checkedAllOrder = function() { + if($scope.chooseAllCheck.isCheckOrder == 0){ + $scope.chooseOrder.splice(0, $scope.chooseOrder.length); + for (var i = 0; i < $scope.orderList.length; i++) { + var obj = $scope.orderList[i]; + if(obj.expressName == null){ + $scope.chooseOrder.push(obj); + } + } + }else{ + $scope.chooseOrder.splice(0, $scope.chooseOrder.length); + } + }; + + $scope.changeOrderList = function(){ + if($scope.chooseOrder.length == $scope.orderList.length){ + $scope.isCheckCombine = 0; + }else{ + $scope.isCheckCombine = 1; + } + }; + + $scope.batchBindExpress = function(){ + if(!$scope.currentCustomer){ + $ugDialog.warn("请选择运输的快递商"); + return; + } + var orderNos = []; + for(var i in $scope.chooseOrder){ + orderNos.push($scope.chooseOrder[i].orderNo); + } + ExpressAPI.bindExpress({ + expressId:$scope.currentCustomer.id, + orderNos:orderNos + }, function(){ + $scope.getOrderList(); + $scope.getExpressList(); + }) + }; + }]; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/despatch/despatch_module.js b/src/main/webapp/WEB-INF/views/src/views/despatch/despatch_module.js new file mode 100644 index 0000000..e8c093d --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/despatch/despatch_module.js @@ -0,0 +1,50 @@ +/** + * Created by Administrator on 2016/1/15. + */ +define([ + "views/despatch/despatchJob", + "views/despatch/despatchSuccessList", + "views/despatch/takeDelivery" +],function (despatchJob,despatchSuccessList,takeDelivery) { + angular.module('DMS.despatch', [ + "permission" + ]).config(["$stateProvider", function($stateProvider){ + $stateProvider + .state('despatch_job', { + url: '/despatch', + templateUrl: 'views/despatch/despatchJob.html', + data:{ + permissions:{ + only:["DESPATCH_JOB"], + redirectTo:"unauthorized" + } + }, + controller: despatchJob + }) + + .state('despatchSuccessList', { + url: '/despatchSuccessList', + templateUrl: 'views/despatch/despatchSuccessList.html', + data:{ + permissions:{ + only:["DESPATCH_JOB"], + redirectTo:"unauthorized" + } + }, + controller: despatchSuccessList + }) + + .state('despatch_operation', { + url: '/takeDelivery', + templateUrl: 'views/despatch/takeDelivery.html', + data:{ + permissions:{ + only:["DESPATCH_OPERATION"], + redirectTo:"unauthorized" + } + }, + controller: takeDelivery + }) + + }]); +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/despatch/takeDelivery.html b/src/main/webapp/WEB-INF/views/src/views/despatch/takeDelivery.html new file mode 100644 index 0000000..d18c112 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/despatch/takeDelivery.html @@ -0,0 +1,310 @@ + + + +
    + + +
    +
    + +
    +
    + +

    分配列表

    +
    + +
    + +
    + +
    + + +
    +
    + 工作区 +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    +
    + +

    未提货列表

    +
    + +
    + +
    + +
    + + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    序号订单编号订单状态快递商分配状态客户姓名手机号地址配送时间总箱数/已扫描箱数
    已分配{{order.totalBoxNum}}/{{order.expressScanBoxNum}}
    +
    暂无数据
    +
    +
    + +
    + +
    + +
    + + +
    + + + +
    + +
    +
    + +

    已提货列表

    +
    + +
    + +
    + +
    + + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + 序号订单编号订单状态快递商分配状态客户姓名手机号地址配送时间操作
    + + +
    已分配
    +
    待分配
    +
    +
    + + + +
    +
    +
    暂无数据
    +
    +
    + +
    + +
    + +
    + + +
    +
    + + + +
    + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/despatch/takeDelivery.js b/src/main/webapp/WEB-INF/views/src/views/despatch/takeDelivery.js new file mode 100644 index 0000000..f74ed0e --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/despatch/takeDelivery.js @@ -0,0 +1,150 @@ +/** + * Created by Jeng on 2016/1/8. + */ +define(function () { + return ["$scope", "$modal", "$ugDialog","ExpressAPI", "OrderAPI","$filter",function($scope,$modal, $ugDialog,ExpressAPI,OrderAPI,$filter){ + //已分配未提货订单 + $scope.orderTakeDeliveryList = []; + $scope.pageInfoTakeDeliverySetting = { + pageSize:10, + pageNum:1 + }; + + + $scope.datepickerSetting = { + datepickerPopupConfig:{ + "current-text":"今天", + "clear-text":"清除", + "close-text":"关闭" + }, + startTime:{ + opened:false + }, + endTime:{ + opened:false + }, + takeDeliveryStartTime:{ + opened:false + }, + takeDeliveryEndTime:{ + opened:false + } + }; + $scope.openDatepicker = function($event, index) { + $event.preventDefault(); + $event.stopPropagation(); + if(index == 1){ + $scope.datepickerSetting.startTime.opened = true; + }else if(index == 2){ + $scope.datepickerSetting.endTime.opened = true; + }else if(index ==3){ + $scope.datepickerSetting.takeDeliveryStartTime.opened = true; + }else if(index == 4){ + $scope.datepickerSetting.takeDeliveryEndTime.opened = true; + } + }; + + + $scope.queryTakeDeliveryParam = { + takeDeliveryStartTime :$filter('date')(new Date(new Date().getTime()), 'yyyy-MM-dd'), + takeDeliveryEndTime :$filter('date')(new Date(new Date().getTime()), 'yyyy-MM-dd') + }; + + + $scope.getOrderTakeDeliveryList = function(){ + //查询已分配未提货的订单 + ExpressAPI.noScanOrder({ + limit:$scope.pageInfoTakeDeliverySetting.pageSize, + offset:$scope.pageInfoTakeDeliverySetting.pageNum, + keyword:$scope.queryTakeDeliveryParam.keyword, + startTime:$scope.queryTakeDeliveryParam.takeDeliveryStartTime, + endTime:$scope.queryTakeDeliveryParam.takeDeliveryEndTime + }, function(data){ + $scope.orderTakeDeliveryList = data.data; + $scope.pageInfoTakeDeliverySetting = data.pageInfo; + $scope.pageInfoTakeDeliverySetting.loadData = $scope.getOrderTakeDeliveryList; + }); + }; + $scope.getOrderTakeDeliveryList(); + + $scope.orderList = []; + $scope.pageInfoSetting = { + pageSize:10, + pageNum:1 + }; + + $scope.queryParam = { + startTime :$filter('date')(new Date(new Date().getTime()), 'yyyy-MM-dd'), + endTime :$filter('date')(new Date(new Date().getTime()), 'yyyy-MM-dd') + }; + + $scope.getOrderList = function(){ + //查询提货的订单 + ExpressAPI.queryOrder({ + limit:$scope.pageInfoSetting.pageSize, + offset:$scope.pageInfoSetting.pageNum, + keyword:$scope.queryParam.keyword, + hasNoShowCancel:true + }, function(data){ + $scope.orderList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getOrderList; + }); + }; + + $scope.getOrderList(); + + //扫描订单编号 + $scope.saoOrderNoEvent = function(e){ + var keycode = window.event?e.keyCode:e.which; + if(keycode==13){ + $scope.takeDelivery(); + } + } + + // + $scope.takeDelivery = function(){ + if(!$scope.boxNo){ + $ugDialog.warn("请扫描条形码"); + return; + } + + ExpressAPI.takeDelivery({ + boxNo:$scope.boxNo + }, function(){ + $ugDialog.alert("提货成功"); + $scope.getOrderList(); + $("#boxNo").focus(); + $("#boxNo").select(); + $("#boxNo").val(""); + $scope.getOrderTakeDeliveryList(); + },function(data){ + $ugDialog.warn(data.data.message); + $("#boxNo").focus(); + $("#boxNo").select(); + $("#boxNo").val(""); + }) + } + + $scope.unTakeDelivery = function(orderNo){ + ExpressAPI.unTakeDelivery({ + orderNo:orderNo + }, function(){ + $ugDialog.alert("取消提货成功"); + $scope.getOrderList(); + $("#boxNo").focus(); + $("#boxNo").select(); + $("#boxNo").val(""); + },function(data){ + $ugDialog.warn(data.data.message) + $("#boxNo").focus(); + $("#boxNo").select(); + $("#boxNo").val(""); + }) + } + + $scope.exportExcel = function(type){ + window.location.href = "/export/exportTakeDeliveryExcel?startTime="+$("#startTimeId").val()+"&endTime="+$("#endTimeId").val()+"&type="+type; + } + }]; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/includes/left-panel.html b/src/main/webapp/WEB-INF/views/src/views/includes/left-panel.html new file mode 100644 index 0000000..3887475 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/includes/left-panel.html @@ -0,0 +1,240 @@ + + + + + + + + +
    + +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    + +
    +
    + +
    +
    +
    +
    + +
    + +
    +
    + +
    +
    +
    +
    + +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    + +
    + +
    + +
    +
    + +
    +
    + +
    +
    +
    + +
    + +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    + + + +
    +
    + +
    + +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    + +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    + diff --git a/src/main/webapp/WEB-INF/views/src/views/order/order.js b/src/main/webapp/WEB-INF/views/src/views/order/order.js new file mode 100644 index 0000000..edcb7d4 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/order/order.js @@ -0,0 +1,128 @@ +/** + * Created by Jeng on 2016/1/8. + */ +define(function () { + return ["$scope", "OrderAPI", "$modal", "$ugDialog","UserAPI","$filter", function($scope, OrderAPI, $modal, $ugDialog,UserAPI,$filter){ + + $scope.managers = []; + $scope.getCustomerManagersList = function(){ + UserAPI.getCustomerManagerList({ + userType:"customer_manager" + },function(data){ + $scope.managers = data; + }); + } + $scope.getCustomerManagersList(); + + $scope.orderList = []; + $scope.pageInfoSetting = { + pageSize:10, + pageNum:1 + }; + $scope.datepickerSetting = { + datepickerPopupConfig:{ + "current-text":"今天", + "clear-text":"清除", + "close-text":"关闭" + }, + orderCreateTimeStart:{ + opened:false + }, + orderCreateTimeEnd:{ + opened:false + } + }; + $scope.openDate = function($event, index) { + $event.preventDefault(); + $event.stopPropagation(); + if(index == 0){ + $scope.datepickerSetting.orderCreateTimeStart.opened = true; + }else if(index == 1){ + $scope.datepickerSetting.orderCreateTimeEnd.opened = true; + } + }; + + $scope.queryParam = { + orderCreateTimeStart :$filter('date')(new Date(new Date().getTime()), 'yyyy-MM-dd'), + orderCreateTimeEnd:$filter('date')(new Date(new Date().getTime()), 'yyyy-MM-dd') + }; + + $scope.getOrderList = function(){ + OrderAPI.query({ + limit:$scope.pageInfoSetting.pageSize, + offset:$scope.pageInfoSetting.pageNum, + keyword:$scope.queryParam.keyword, + orderCreateTimeStart:$scope.queryParam.orderCreateTimeStart, + orderCreateTimeEnd: $scope.queryParam.orderCreateTimeEnd, + couponNumber:$scope.queryParam.couponNumber, + hasNoShowCancel:false + }, function(data){ + $scope.orderList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getOrderList; + }); + }; + $scope.cancelOrder = function(index){ + $ugDialog.confirm("是否取消此订单?").then(function(){ + OrderAPI.cancel({ + id: $scope.orderList[index].id + }, function(){ + $scope.getOrderList(); + }); + }) + }; + $scope.updateOrder = function(index){ + $scope.open(angular.copy($scope.orderList[index])); + }; + $scope.viewOrder = function (index) { + var modalInstance = $modal.open({ + templateUrl: 'viewOrderDetail.html', + resolve: { + CurrentOrder: function(){ + return angular.copy($scope.orderList[index]); + } + }, + controller: ["$scope", "OrderAPI", "CurrentOrder", "$modalInstance", function ($scope, OrderAPI, CurrentOrder, $modalInstance) { + $scope.order = {}; + if(CurrentOrder){ + $scope.order = CurrentOrder; + } + $scope.setting = { + pageInfo : { + pageSize:30, + pageNum:1 + } + }; + OrderAPI.getItemList({ + limit: $scope.setting.pageInfo.pageSize, + offset: $scope.setting.pageInfo.pageNum, + id:$scope.order.id, + orderNo:$scope.order.orderNo + }, function(data){ + $scope.order.itemList = data.data; + $scope.calTotalItem(); + }); + $scope.calTotalItem = function(){ + $scope.totalItem = {}; + var totalNumber = 0; + var totalPrice = 0; + for (var i = 0; i < $scope.order.itemList.length; i++) { + var obj = $scope.order.itemList[i]; + totalNumber += obj.itemQty; + totalPrice += (obj.itemQty * obj.itemPrice); + } + $scope.totalItem.totalNumber = totalNumber; + $scope.totalItem.totalPrice = totalPrice; + }; + $scope.cancel = function () { + $modalInstance.dismiss('cancel'); + }; + }] + }); + modalInstance.result.then(function () { + $scope.getOrderList(); + }); + }; + $scope.getOrderList(); + }]; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/order/order_create.html b/src/main/webapp/WEB-INF/views/src/views/order/order_create.html new file mode 100644 index 0000000..b31a057 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/order/order_create.html @@ -0,0 +1,749 @@ + + + +
    + + +
    + + +
    + + +
    + +
    + +

    创建订单

    +
    + +
    + +
    + +
    + + +
    +
    + +
    + 订单类型 + +
    + +
    + + + +
    +
    + +
    + + +
    + 客户信息 +
    + +
    +
    + + + + + + + + + + + +
    +
    + +
    + +
    +
    +
    + +
    +
    + + + + +
    +
    + +
    + + +
    +
    +
    + +
    +
    + + + + + + + +
    + +
    + +
    + +
    +
    +
    + +
    + +
    + +
    + +
    +
    +
    + +
    + + +
    + +
    + + +
    +
    + +
    + + +
    + +
    + +
    + +
    +
    + + +
    +
    + +
    +
    + +
    +
    + +
    + +
    + +
    + +
    +
    +
    + + +
    +
    +
    + +
    +
    + + + + +
    +
    + +
    + +
    + +
    + +
    +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    + +
    + 订购产品 +
    +
    +
    +
    +
    +
    + +

    产品分类

    +
    +
    +
    +
    +
    +
    +
      +
    • +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    可选购产品
    序号名称规格单价折扣价库存操作
    {{item.itemName}}{{item.spec}}{{item.sellPrice | number:2}}{{item.discountPrice | number:2}}{{item.stockNum}} +
    + + + +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    已选购产品*
    序号名称规格单价折扣价份数总价操作
    {{choseItem.itemName}}{{choseItem.spec}}{{choseItem.sellPrice | number:2}}{{choseItem.discountPrice | number:2}}{{choseItem.itemQty | number:2}}{{totalItemPrice(choseItem) | number:2}} +
    + + + +
    +
    合计{{totalItem.totalNumber | number:2}}{{totalItem.totalPrice | number:2}} +
    + + + +
    +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + 订单金额 +
    + +
    + + + +
    + +
    + + + +
    +
    +
    + +
    + +
    + +
    + +
    + +
    +
    + +
    +
    +
    + +
    + + +
    + 付款方式 +
    + + +
    + + + + + + + + +
    +
    +
    + + +
    + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + 订单快照 +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + + + + + + + + +
    +
    +
    + +
    + + + + + + + + + (附加付款金额:{{order.otherPaAmount}}) +
    +
    +
    + +
    + + +
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    已选购产品
    序号名称单价折扣价份数总价
    {{choseItem.itemName}}{{choseItem.sellPrice | number:2}}{{choseItem.discountPrice | number:2}}{{choseItem.itemQty | number:2}}{{totalItemPrice(choseItem) | number:2}}
    合计{{totalItem.totalNumber | number:2}}{{totalItem.totalPrice | number:2}}
    +
    +
    +
    +
    +
    + 错误信息 +
    +
    +
    {{errors.message}}
    +
    +
    +
    +
    +
    +
    + + + +
    +
    +
    + +
    +
    + +
    + +
    + + +
    + + +
    + + + +
    + + + + + + + + diff --git a/src/main/webapp/WEB-INF/views/src/views/order/order_packing.html b/src/main/webapp/WEB-INF/views/src/views/order/order_packing.html new file mode 100644 index 0000000..97b046f --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/order/order_packing.html @@ -0,0 +1,674 @@ + + + +
    + + +
    + + +
    + + +
    + +
    + +

    待装箱订单列表

    +
    + +
    + +
    + +
    + + +
    +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    + + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + 订单编号客户经理收货人批次号订单状态任务负责人任务分配时间任务开始时间任务完成时间装箱任务状态操作
    + + +
    + + + + + + +
    +
    +
    暂无数据
    +
    +
    + +
    + +
    + +
    + + +
    + + + + +
    + + +
    + +
    + +

    订单商品装箱汇总

    +
    + +
    + +
    + +
    + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + +
    序号商品代码商品名称已装数量/总数量商品装箱状态
    +
    暂无数据
    +
    +
    + +
    + +
    + +
    + + +
    + +
    +
    + 订单备注:{{newCurrentPackingTask.remark}} +
    +
    + +
    + + +
    + +
    + +

    当前装箱订单列表

    +
    + +
    + +
    + +
    + + +
    +
    +
    +
    + +
    + + + +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    箱位号装箱编号订单编号收货人创建时间装箱数订单状态任务状态操作
    +
    + + + + | + + + + | + + + + + +
    +
    +
    暂无数据
    +
    +
    +
    + +
    + +
    + + +
    + + + + + + +
    + + +
    + +
    + +

    放入箱位号

    +
    + +
    + +
    + +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + +
    + + +
    + + + + +
    + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/order/order_update.html b/src/main/webapp/WEB-INF/views/src/views/order/order_update.html new file mode 100644 index 0000000..373a2a3 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/order/order_update.html @@ -0,0 +1,634 @@ + + + +
    + + +
    + + +
    + + +
    + +
    + +

    编辑订单

    +
    + +
    + +
    + +
    + + +
    +
    + +
    + 订单类型 +
    + +
    + +
    +
    +
    + +
    + + + + +
    +
    + +
    + + +
    + 客户信息 +
    + +
    + + + + + +
    + +
    + +
    +
    +
    + +
    + +
    + +
    + + +
    +
    + +
    + +
    + + +
    +
    + +
    + +
    + + +
    + +
    + +
    +
    +
    + +
    + +
    + +
    + +
    +
    +
    + +
    + + +
    + +
    + + +
    +
    + + +
    +
    + +
    +
    + +
    +
    + +
    + +
    + +
    + +
    +
    +
    + + +
    +
    +
    + +
    +
    + + + + +
    +
    + +
    + +
    + +
    + +
    +
    +
    +
    + +
    + +
    + + + + +
    +
    +
    + +
    + +
    +
    +
    + +
    + 订购产品 +
    +
    +
    +
    +
    +
    + +

    产品分类

    +
    +
    +
    +
    +
    +
    +
      +
    • +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    可选购产品
    序号名称规格单价折扣价库存数操作
    {{item.itemName}}{{item.spec}}{{item.sellPrice | number:2}}{{item.discountPrice | number:2}}{{item.stockNum}} +
    + + + +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    已选购产品*
    序号名称规格单价折扣价份数总价操作
    {{choseItem.itemName}}{{choseItem.spec}}{{choseItem.sellPrice | number:2}}{{choseItem.discountPrice | number:2}}{{choseItem.itemQty | number:2}}{{totalItemPrice(choseItem) | number:2}} +
    + + + +
    +
    合计{{totalItem.totalNumber | number:2}}{{totalItem.totalPrice | number:2}} +
    + + + +
    +
    +
    +
    + + + + + + + + +
    +
    + +
    + 订单金额 +
    + +
    + + + +
    + +
    + + + +
    +
    +
    + +
    + +
    + +
    + +
    + +
    +
    + +
    +
    +
    + +
    + + +
    + 付款方式 +
    + + +
    + + + + + + + + +
    +
    +
    + +
    + 订单快照 +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + + + + + + + + +
    +
    +
    + +
    + +
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    已选购产品
    序号名称单价份数总价
    {{choseItem.itemName}}{{choseItem.sellPrice | number:2}}{{choseItem.itemQty | number:2}}{{totalItemPrice(choseItem) | number:2}}
    合计{{totalItem.totalNumber | number:2}}{{totalItem.totalPrice | number:2}}
    +
    +
    +
    +
    +
    + 错误信息 +
    +
    +
    {{errors.message}}
    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    + +
    +
    + +
    + +
    + + +
    + + +
    + + + +
    + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/order/packing.js b/src/main/webapp/WEB-INF/views/src/views/order/packing.js new file mode 100644 index 0000000..6686af4 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/order/packing.js @@ -0,0 +1,153 @@ +/** + * Created by Jeng on 2016/1/8. + */ +define(function () { + return ["$scope", "PackingAPI", "$modal", "$ugDialog","UserAPI", function($scope, PackingAPI, $modal, $ugDialog,UserAPI){ + $scope.managers = []; + $scope.getCustomerManagersList = function(){ + UserAPI.getCustomerManagerList({ + userType:"customer_manager" + },function(data){ + $scope.managers = data; + }); + }; + $scope.getCustomerManagersList(); + + $scope.datepickerSetting = { + datepickerPopupConfig:{ + "current-text":"今天", + "clear-text":"清除", + "close-text":"关闭" + }, + packingTaskCreateTimeStart:{ + opened:false + }, + packingTaskCreateTimeEnd:{ + opened:false + } + }; + $scope.open = function($event, index) { + $event.preventDefault(); + $event.stopPropagation(); + if(index == 0){ + $scope.datepickerSetting.packingTaskCreateTimeStart.opened = true; + }else if(index == 1){ + $scope.datepickerSetting.packingTaskCreateTimeEnd.opened = true; + } + }; + + $scope.currentDate = function(date){ + var myDate = date; + var fullYear = myDate.getFullYear(); //获取完整的年份(4位,1970-????) + var month = myDate.getMonth() + 1; //获取当前月份(0-11,0代表1月) + if(month < 10){ + month = '0'+month; + } + var date = myDate.getDate(); //获取当前日(1-31) + if(date < 10){ + date = '0'+date; + } + return fullYear+"-"+month+"-"+date; + }; + + $scope.packingList = []; + $scope.pageInfoSetting = { + pageSize:10, + pageNum:1 + }; + $scope.queryParam = { + packingTaskCreateTimeStart :$scope.currentDate(new Date()), + packingTaskCreateTimeEnd:$scope.currentDate(new Date()) + }; + + $scope.getPackingList = function(){ + PackingAPI.getPackingOrderList({ + limit:$scope.pageInfoSetting.pageSize, + offset:$scope.pageInfoSetting.pageNum, + isHasPackingTaskUserId:true, + packingTaskCreateTimeStart:$scope.queryParam.packingTaskCreateTimeStart, + packingTaskCreateTimeEnd:$scope.queryParam.packingTaskCreateTimeEnd, + keyword:$scope.queryParam.keyword, + consigneeName:$scope.queryParam.consigneeName, + managerId:$scope.queryParam.managerId + }, function(data){ + $scope.packingList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getPackingList; + }); + }; + $scope.getPackingList(); + $scope.showPackingDetail = function(index){ + var modalInstance = $modal.open({ + size:'lg', + templateUrl: 'viewPackingDetail.html', + resolve: { + choseOrder: function(){ + return $scope.packingList[index]; + } + }, + controller: ["$scope", "choseOrder", "$modalInstance", function ($scope, choseOrder, $modalInstance) { + $scope.choseOrder = choseOrder || {}; + $scope.orderItemPageInfoSetting = { + pageSize:10, + pageNum:1 + }; + $scope.packingRecordPageInfoSetting = { + pageSize:10, + pageNum:1 + }; + $scope.viewOrderPacking = function(index){ + $scope.choseOrder = $scope.currentPackingBoxList[index]; + $scope.getPackingOrderItemList(); + $scope.packingRecordList = []; + $scope.errors = null; + }; + $scope.queryParam = {}; + $scope.getPackingOrderItemList = function(){ + if($scope.choseOrder && + $scope.choseOrder.id){ + PackingAPI.getPackingOrderItemList({ + limit:$scope.orderItemPageInfoSetting.pageSize, + offset:$scope.orderItemPageInfoSetting.pageNum, + id:1, + keyword:$scope.queryParam.packingOrderKeyword, + orderId:$scope.choseOrder.id + }, function(data){ + $scope.packingOrderItemList = data.data; + $scope.orderItemPageInfoSetting = data.pageInfo; + $scope.orderItemPageInfoSetting.loadData = $scope.getPackingOrderItemList; + }); + } + }; + $scope.choseOrderItem = function(index){ + $scope.choseOrder.choseOrderItem = $scope.packingOrderItemList[index]; + $scope.getPackingRecordList(); + }; + $scope.getPackingRecordList = function(){ + if($scope.choseOrder && + $scope.choseOrder.choseOrderItem && + $scope.choseOrder.choseOrderItem.orderItemId){ + PackingAPI.getPackingRecordList({ + limit:$scope.packingRecordPageInfoSetting.pageSize, + offset:$scope.packingRecordPageInfoSetting.pageNum, + id:$scope.choseOrder.id, + keyword:$scope.queryParam.packingRecordKeyword, + orderItemId:$scope.choseOrder.choseOrderItem.orderItemId + }, function(data){ + $scope.packingRecordList = data.data; + $scope.packingRecordPageInfoSetting = data.pageInfo; + $scope.packingRecordPageInfoSetting.loadData = $scope.getPackingRecordList; + }); + } + }; + $scope.cancel = function () { + $modalInstance.dismiss('cancel'); + }; + }] + }); + modalInstance.result.then(function (data) { + // $scope.choseItem(index, parseFloat(data.number)); + }); + } + }]; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/order/packingTaskSuccessList.js b/src/main/webapp/WEB-INF/views/src/views/order/packingTaskSuccessList.js new file mode 100644 index 0000000..e58b516 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/order/packingTaskSuccessList.js @@ -0,0 +1,71 @@ +/** + * Created by Jeng on 2016/1/8. + */ +define(function () { + return ["$scope", "OrderAPI", "$modal", "$ugDialog", "UserAPI", "PackingAPI", function($scope, OrderAPI, $modal, $ugDialog, UserAPI, PackingAPI){ + $scope.managers = []; + $scope.getCustomerManagersList = function(){ + UserAPI.getCustomerManagerList({ + userType:"customer_manager" + },function(data){ + $scope.managers = data; + }); + } + $scope.getCustomerManagersList(); + + $scope.orderList = []; + $scope.pageInfoSetting = { + pageSize:10, + pageNum:1 + }; + + $scope.queryParam = {}; + $scope.getOrderList = function(){ + PackingAPI.getPackingOrderList({ + limit:$scope.pageInfoSetting.pageSize, + offset:$scope.pageInfoSetting.pageNum, + keyword:$scope.queryParam.keyword, + consigneeName:$scope.queryParam.consigneeName, + managerId:$scope.queryParam.managerId, + isShowPackingAssigns:true + }, function(data){ + $scope.orderList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getOrderList; + }); + }; + + $scope.unbindPackingTask = function(index){ + var orderNos = []; + orderNos.push($scope.orderList[index].orderNo); + PackingAPI.unbindPackingTask({ + orderNos:orderNos + }, function(){ + $scope.getOrderList(); + $scope.getCustomerManagersList(); + }) + } + + $scope.removePacking = function(index){ + $ugDialog.confirm("是否删除此装箱记录?").then(function(){ + PackingAPI.delete({ + id: $scope.packingList[index].id + }, function(){ + $scope.getPackingList(); + }); + }) + }; + $scope.updatePacking = function(index){ + $scope.open(angular.copy($scope.packingList[index])); + }; + $scope.getOrderList(); + + $scope.changeOrderList = function(){ + if($scope.chooseOrder.length == $scope.orderList.length){ + $scope.isCheckCombine = 0; + }else{ + $scope.isCheckCombine = 1; + } + }; + }]; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/order/purchase.js b/src/main/webapp/WEB-INF/views/src/views/order/purchase.js new file mode 100644 index 0000000..7d93466 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/order/purchase.js @@ -0,0 +1,160 @@ +/** + * Created by Jeng on 2016/1/8. + */ +define(function () { + return ["$scope", "PurchaseAPI", "$modal", "$ugDialog","$filter", function($scope, PurchaseAPI, $modal, $ugDialog,$filter){ + $scope.datepickerSetting = { + datepickerPopupConfig:{ + "current-text":"今天", + "clear-text":"清除", + "close-text":"关闭", + "format":"yyyy-MM-dd" + }, + startTime:{ + opened:false + }, + endTime:{ + opened:false + }, + appointmentTimeStart:{ + opened:false + }, + appointmentTimeEnd:{ + opened:false + } + }; + $scope.openDatepicker = function($event, index) { + $event.preventDefault(); + $event.stopPropagation(); + if(index == 1){ + $scope.datepickerSetting.startTime.opened = true; + }else if(index == 2){ + $scope.datepickerSetting.endTime.opened = true; + }else if(index == 3){ + $scope.datepickerSetting.appointmentTimeStart.opened = true; + }else if(index == 4){ + $scope.datepickerSetting.appointmentTimeEnd.opened = true; + } + }; + $scope.purchasePlan = {}; + $scope.purchaseList = []; + $scope.pageInfoSetting = { + pageSize:10, + pageNum:1 + }; + $scope.queryParam = { + purchaseStatus : "0", + startTime:$filter('date')(new Date(new Date().getTime()), 'yyyy-MM-dd'), + endTime :$filter('date')(new Date(new Date().getTime()), 'yyyy-MM-dd') + }; + $scope.getPurchaseList = function(){ + PurchaseAPI.query({ + startTime: $scope.queryParam.startTime, + endTime:$scope.queryParam.endTime, + purchaseStatus:$scope.queryParam.purchaseStatus, + limit:$scope.pageInfoSetting.pageSize, + offset:$scope.pageInfoSetting.pageNum, + keyword:$scope.queryParam.keyword, + sellUnit:$scope.queryParam.sellUnit + }, function(data){ + $scope.purchaseList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getPurchaseList; + }); + }; + + $scope.finish = function(index){ + $ugDialog.confirm("是否已完成此产品的采购?").then(function(){ + PurchaseAPI.update({ + id: $scope.purchaseList[index].purchaseId, + purchaseStatus:1 + }, function(){ + $scope.getPurchaseList(); + }); + }) + }; + $scope.removePurchase = function(index){ + $ugDialog.confirm("是否删除此订单?").then(function(){ + PurchaseAPI.delete({ + id: $scope.purchaseList[index].purchaseId + }, function(){ + $scope.getPurchaseList(); + }); + }) + }; + $scope.createPlan = function(){ + PurchaseAPI.save({ + orderDate:new Date() + }, function(data){ + $scope.getPurchaseList(); + }, function(data){ + $ugDialog.warn(data.data.message); + }); + } + + $scope.createPlanAppointmenTime = function(){ + if($scope.purchasePlan.appointmentTimeEnd == undefined || $scope.purchasePlan.appointmentTimeStart == undefined){ + $ugDialog.warn("请输入起始结束日期"); + return false; + } + PurchaseAPI.save({ + appointmentTimeStart:$scope.purchasePlan.appointmentTimeStart, + appointmentTimeEnd:$scope.purchasePlan.appointmentTimeEnd + }, function(data){ + $scope.getPurchaseList(); + }, function(data){ + $ugDialog.warn(data.data.message); + }); + } + + $scope.updatePurchase = function(index){ + $scope.open(angular.copy($scope.purchaseList[index])); + }; + $scope.open = function (purchase) { + var modalInstance = $modal.open({ + templateUrl: 'addPurchase.html', + resolve: { + CurrentPurchase: function(){ + return purchase; + } + }, + controller: ["$scope", "PurchaseAPI", "CurrentPurchase", "$modalInstance", function ($scope, PurchaseAPI, CurrentPurchase, $modalInstance) { + $scope.purchase = {}; + if(CurrentPurchase){ + $scope.purchase = CurrentPurchase; + } + $scope.errors = null; + $scope.addPurchaseForm = {}; + $scope.savePurchase = function(){ + $scope.errors = null; + if($scope.addPurchaseForm.validator.form()){ + if($scope.purchase.id){ + PurchaseAPI.update($scope.purchase, function(){ + $modalInstance.close(); + }, function(data){ + $scope.errors = data.data; + }) + }else{ + PurchaseAPI.save($scope.purchase, function(){ + $modalInstance.close(); + }, function(data){ + $scope.errors = data.data; + }) + } + } + }; + $scope.cancel = function () { + $modalInstance.dismiss('cancel'); + }; + }] + }); + modalInstance.result.then(function () { + $scope.getPurchaseList(); + }); + }; + $scope.exportExcel = function(){ + window.location.href = "/export/exportPurchaseExcel"; + } + $scope.getPurchaseList(); + }]; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/package/packageTaskDown.html b/src/main/webapp/WEB-INF/views/src/views/package/packageTaskDown.html new file mode 100644 index 0000000..e28f84c --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/package/packageTaskDown.html @@ -0,0 +1,226 @@ + + + +
    + + +
    + + + +
    + + +
    +
    + +

    包装工列表

    +
    + +
    + +
    + +
    + + +
    +
    + + + + + + + + + + + + + + + + + + +
    序号包装工操作
    +
    + + + +
    +
    +
    暂无数据
    +
    +
    + +
    + +
    + +
    + + +
    +
    + + +
    +
    + +

    分配列表

    +
    + +
    + +
    + +
    + + +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    采购单号产品名称规格数量已分配数操作
    {{purchase.spec}}{{purchase.itemUnit}} + +
    +
    暂无数据
    +
    +
    + +
    + +
    + +
    + + +
    +
    + + + +
    + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/package/packageTaskDown.js b/src/main/webapp/WEB-INF/views/src/views/package/packageTaskDown.js new file mode 100644 index 0000000..0398b75 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/package/packageTaskDown.js @@ -0,0 +1,92 @@ +/** + * Created by Jeng on 2016/1/8. + */ +define(function () { + return ["$scope", "PurchaseAPI", "$modal", "$ugDialog","UserAPI", function($scope, PurchaseAPI, $modal, $ugDialog,UserAPI){ + $scope.purchaseList = []; + $scope.pageInfoSetting = { + pageSize:100, + pageNum:1 + }; + $scope.queryParam = {}; + $scope.getPurchaseList = function(){ + PurchaseAPI.query({ + limit:$scope.pageInfoSetting.pageSize, + offset:$scope.pageInfoSetting.pageNum, + keyword:$scope.queryParam.keyword, + isDistribute:1, + sellUnit:0 + }, function(data){ + $scope.purchaseList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getPurchaseList; + }); + }; + //查询包装工 + $scope.packageUserList = []; + UserAPI.getCustomerManagerList({ + userType:"baozhuangzu" + },function(data){ + $scope.packageUserList = data; + }); + //选择包装工 + $scope.chosePackageUser = function(index){ + $scope.currentCustomer = $scope.packageUserList[index]; + }; + + $scope.openDistributeModal = function (currentPurchase) { + if($scope.currentCustomer == null){ + $ugDialog.alert("请选择包装工人"); + return false; + } + var modalInstance = $modal.open({ + templateUrl: 'addPackageTask.html', + controller: ["$scope", "PackageTaskAPI", "$modalInstance","currentPurchase","UserAPI", "$rootScope", function ($scope, PackageTaskAPI, $modalInstance,currentPurchase,UserAPI,$rootScope) { + $scope.packageUserList = []; + $scope.ugSelect2Config = {}; + UserAPI.getCustomerManagerList({ + userType:"baozhuangzu" + },function(data){ + $scope.packageUserList = data; + }); + $scope.company = {}; + if(currentPurchase){ + $scope.packageTask = currentPurchase; + $scope.packageTask.noDistributeValue = $scope.packageTask.totalItemQty - $scope.packageTask.distributeValue ; + } + $scope.errors = {}; + $scope.addPackageTaskForm = {}; + $scope.savePackageTask = function(){ + $scope.errors = {}; + if($scope.packageTask.countValue > $scope.packageTask.noDistributeValue){ + $scope.errors.message = "不能大于未分配数"; + return; + } + if($scope.addPackageTaskForm.validator.form()){ + PackageTaskAPI.save($scope.packageTask, function(){ + $modalInstance.close(); + }, function(data){ + $scope.errors = data.data; + }) + } + }; + $scope.cancel = function () { + $modalInstance.dismiss('cancel'); + }; + }], + resolve: { + currentPurchase: function () { + currentPurchase.jobUser = $scope.currentCustomer.customerMangerId; + currentPurchase.jobUserName = $scope.currentCustomer.customerManger; + return currentPurchase; + } + } + }); + modalInstance.result.then(function () { + $scope.getPurchaseList(); + }); + }; + + $scope.getPurchaseList(); + }]; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/package/packageTaskList.html b/src/main/webapp/WEB-INF/views/src/views/package/packageTaskList.html new file mode 100644 index 0000000..692d7cd --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/package/packageTaskList.html @@ -0,0 +1,241 @@ + + + +
    + + +
    + + +
    + + +
    + +
    + +

    包装任务列表

    +
    + +
    + +
    + +
    + + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    + + + + + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    采购单号产品名称包装份数已包装份数未包装份数任务创建时间任务开始时间任务完成时间任务执行人任务状态操作
    {{packageTask.jobCreateTime | date: 'yyyy-MM-dd HH:mm:ss'}}{{packageTask.jobBeginTime | date: 'yyyy-MM-dd HH:mm:ss'}}{{packageTask.finishTime | date: 'yyyy-MM-dd HH:mm:ss'}}未开始包装中包装完成 +
    + + + + +
    +
    + + + +
    +
    +
    暂无数据
    +
    +
    + +
    + +
    + +
    + + +
    + + +
    + + + +
    + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/package/packageTaskView.html b/src/main/webapp/WEB-INF/views/src/views/package/packageTaskView.html new file mode 100644 index 0000000..32bdbec --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/package/packageTaskView.html @@ -0,0 +1,153 @@ + + + +
    + + +
    + + +
    + + +
    + +
    + +

    包装任务看板

    +
    + +
    + +
    + +
    + + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    + + + + + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    采购单号产品名称包装份数已包装份数未包装份数任务创建时间任务开始时间任务完成时间任务执行人任务状态
    {{packageTask.jobCreateTime | date: 'yyyy-MM-dd HH:mm:ss'}}{{packageTask.jobBeginTime | date: 'yyyy-MM-dd HH:mm:ss'}}{{packageTask.finishTime | date: 'yyyy-MM-dd HH:mm:ss'}}未开始包装中包装完成
    +
    暂无包装任务
    +
    +
    + +
    + +
    + +
    + + +
    + + +
    + + + +
    + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/package/packageTaskView.js b/src/main/webapp/WEB-INF/views/src/views/package/packageTaskView.js new file mode 100644 index 0000000..b3560e2 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/package/packageTaskView.js @@ -0,0 +1,55 @@ +/** + * Created by Jeng on 2016/1/8. + */ +define(function () { + return ["$scope", "PackageTaskAPI", "$modal", "$ugDialog","$stateParams","$filter", function($scope, PackageTaskAPI, $modal, $ugDialog,$stateParams,$filter){ + + $scope.datepickerSetting = { + datepickerPopupConfig:{ + "current-text":"今天", + "clear-text":"清除", + "close-text":"关闭" + }, + packageTaskCreateTimeStart:{ + opened:false + }, + packageTaskCreateTimeEnd:{ + opened:false + } + }; + $scope.open = function($event, index) { + $event.preventDefault(); + $event.stopPropagation(); + if(index == 0){ + $scope.datepickerSetting.packageTaskCreateTimeStart.opened = true; + }else if(index == 1){ + $scope.datepickerSetting.packageTaskCreateTimeEnd.opened = true; + } + }; + + $scope.packageTaskList = []; + $scope.pageInfoSetting = { + pageSize:100, + pageNum:1 + }; + $scope.queryParam = { + packageTaskCreateTimeStart :$filter('date')(new Date(new Date().getTime()), 'yyyy-MM-dd'), + packageTaskCreateTimeEnd:$filter('date')(new Date(new Date().getTime()), 'yyyy-MM-dd') + }; + + $scope.getPackageTaskList = function(){ + PackageTaskAPI.query({ + limit:$scope.pageInfoSetting.pageSize, + offset:$scope.pageInfoSetting.pageNum, + keyword:$scope.queryParam.keyword, + packageTaskCreateTimeStart:$scope.queryParam.packageTaskCreateTimeStart, + packageTaskCreateTimeEnd:$scope.queryParam.packageTaskCreateTimeEnd + }, function(data){ + $scope.packageTaskList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getPackageTaskList; + }); + }; + $scope.getPackageTaskList(); + }]; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/package/packageWorking.html b/src/main/webapp/WEB-INF/views/src/views/package/packageWorking.html new file mode 100644 index 0000000..08627c2 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/package/packageWorking.html @@ -0,0 +1,156 @@ +
    + + +
    + + +
    + + +
    + +
    + +

    包装页面

    +
    + +
    + +
    + +
    + + +
    + +
    +
    + 任务信息 +
    + +
    + {{packageTask.itemName}} +
    + +
    + {{packageTask.itemCode}} +
    + +
    + {{packageTask.spec}} +
    +
    +
    + +
    + {{packageTask.countValue}} +
    + +
    + {{packageTask.finishValue}} +
    + +
    + {{packageTask.noFinishValue}} +
    +
    +
    +
    + 工作区 +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    条码号产品编码操作
    + + + + + + +
    +
    暂无数据
    +
    +
    + +
    + +
    + +
    + + +
    + + +
    + + + +
    + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/package/packageWorking.js b/src/main/webapp/WEB-INF/views/src/views/package/packageWorking.js new file mode 100644 index 0000000..8bcfbcc --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/package/packageWorking.js @@ -0,0 +1,247 @@ +/** + * Created by Jeng on 2016/1/8. + */ +define(function () { + return ["$scope", "PackageTaskAPI", "$modal", "$ugDialog", "$stateParams", "JobOperationLogAPI", function ($scope, PackageTaskAPI, $modal, $ugDialog, $stateParams, JobOperationLogAPI) { + $scope.packageTaskList = []; + $scope.pageInfoSetting = { + pageSize: 1, + pageNum: 1 + }; + $scope.queryParam = {}; + $scope.getPackageTaskList = function (id) { + PackageTaskAPI.query({ + limit: $scope.pageInfoSetting.pageSize, + offset: $scope.pageInfoSetting.pageNum, + packageTaskId: id + }, function (data) { + $scope.packageTaskList = data.data; + $scope.packageTask = $scope.packageTaskList[0]; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getPackageTaskList; + }); + }; + + $scope.jobOperationLogList = []; + $scope.operationLogPageInfoSetting = { + pageSize: 50, + pageNum: 1 + }; + $scope.getJobOperationLogList = function (id) { + JobOperationLogAPI.query({ + limit: $scope.operationLogPageInfoSetting.pageSize, + offset: $scope.operationLogPageInfoSetting.pageNum, + jobId: id + }, function (data) { + $scope.jobOperationLogList = data.data; + $scope.operationLogPageInfoSetting = data.pageInfo; + $scope.operationLogPageInfoSetting.loadData = $scope.getPackageTaskList; + }); + }; + + /** + * 下一个按钮功能 + * @param id + */ + $scope.nextPackageTask = function (id) { + PackageTaskAPI.query({ + limit: $scope.pageInfoSetting.pageSize, + offset: $scope.pageInfoSetting.pageNum, + nextPackageTaskId: id + }, function (data) { + if (data.data.length == 0) { + $ugDialog.alert("无下一个任务了!") + return; + } + $scope.packageTaskList = data.data; + $scope.packageTask = $scope.packageTaskList[0]; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getPackageTaskList; + $scope.getJobOperationLogList($scope.packageTask.id); + }); + } + //作废 + $scope.cancelJobOperationLog = function (index) { + var jobOperationLog = $scope.jobOperationLogList[index]; + JobOperationLogAPI.delete({ + id: jobOperationLog.id + }, function (data) { + $ugDialog.alert("作废成功"); + $scope.packageTask.finishValue -= 1; + $scope.packageTask.noFinishValue += 1; + $scope.getJobOperationLogList($stateParams.id) + }) + } + //回车生成条码 + $scope.printBarCodeEvent = function (e) { + var keycode = window.event ? e.keyCode : e.which; + if (keycode == 13) { + $scope.printBarCode(); + } + } + + $scope.printBarCode = function () { + if ($scope.packageTask.noFinishValue == 0) { + $ugDialog.warn("全部包装完成!请换下一个任务"); + $("#weight").focus(); + $("#weight").select(); + $("#weight").value(""); + return; + } + if ($scope.packageTask.weight == undefined) { + $ugDialog.warn("请称重!"); + $("#weight").focus(); + $("#weight").select(); + $("#weight").val(""); + return; + } + var max = parseFloat($scope.packageTask.spec) + parseFloat(($scope.packageTask.spec * 0.1)); + var min = parseFloat($scope.packageTask.spec); + if ($scope.packageTask.weight < min) { + $("#weight").focus(); + $("#weight").select(); + $("#weight").val(""); + return; + } + if ($scope.packageTask.weight.length > 4) { + $("#weight").focus(); + $("#weight").select(); + $("#weight").val(""); + return; + } + var barCode = $scope.packageTask.itemCode + "" + $scope.packageTask.weight + Math.floor(Math.random() * 10000); + var LODOP = getLodop(); +// if($scope.packageTask.weight > max){ +// //元素设置为readonly +// $("#weight").attr("readonly","readonly"); +// $ugDialog.confirm("超过最大重量,是否打印?").then(function(){ +// $scope.print(barCode); +// //去除input元素的readonly属性 +// $("#weight").removeAttr("readonly"); +// PackageTaskAPI.packageWorking({ +// id:$scope.packageTask.id, +// barCode:barCode +// },function(data){ +// $scope.packageTask.finishValue +=1; +// $scope.packageTask.noFinishValue -=1; +// $scope.getJobOperationLogList($stateParams.id) +// }) +// $("#weight").focus(); +// $("#weight").select(); +// $("#weight").val(""); +// },function(){ +// //去除input元素的readonly属性 +// $("#weight").removeAttr("readonly"); +// $("#weight").focus(); +// $("#weight").select(); +// $("#weight").val(""); +// }) +// }else{ + $scope.print(barCode); + PackageTaskAPI.packageWorking({ + id: $scope.packageTask.id, + barCode: barCode + }, function (data) { + $scope.packageTask.finishValue += 1; + $scope.packageTask.noFinishValue -= 1; + $scope.getJobOperationLogList($scope.packageTask.id) + //如果完成自动跳转到下一个任务 + if ($scope.packageTask.noFinishValue == 0) { + $scope.nextPackageTask($scope.packageTask.id); + } + }) + $("#weight").focus(); + $("#weight").select(); + $("#weight").val(""); +// } + } + + + //回车批量生成条码 + $scope.printBatchBarCodeEvent = function (e) { + var keycode = window.event ? e.keyCode : e.which; + if (keycode == 13) { + $scope.printBatchBarCode(); + } + } + + $scope.printBatchBarCode = function () { + if ($scope.packageTask.batch == undefined) { + $ugDialog.warn("请输入批量打印数量!"); + $("#batch").focus(); + $("#batch").select(); + $("#batch").val(""); + return; + } + if ($scope.packageTask.noFinishValue < $scope.packageTask.batch) { + $ugDialog.warn("输入的数量超过未包装数!"); + $("#batch").focus(); + $("#batch").select(); + $("#batch").val(""); + return; + } + + var LODOP = getLodop(); + var barCodes = ""; + for (var i = 0; i < $scope.packageTask.batch; i++) { + //重量默认商品规格 + var barCode = $scope.packageTask.itemCode + "" + $scope.packageTask.spec + Math.floor(Math.random() * (9999 - 1000 + 1) + 1000); + $scope.print(barCode); + $scope.packageTask.finishValue += 1; + $scope.packageTask.noFinishValue -= 1; + barCodes = barCodes + barCode + ","; + } + PackageTaskAPI.packageWorking({ + id: $scope.packageTask.id, + barCode: barCodes + }, function (data) { + $scope.getJobOperationLogList($scope.packageTask.id) + //如果完成自动跳转到下一个任务 + if ($scope.packageTask.noFinishValue == 0) { + $scope.nextPackageTask($scope.packageTask.id); + } + }); + $("#batch").focus(); + $("#batch").select(); + $("#batch").val(""); + } + + + $scope.print = function (barCode) { + var LODOP = getLodop(); + LODOP.PRINT_INITA(-6, 0, "56.3mm", "60.01mm", "商品条码打印"); + LODOP.ADD_PRINT_IMAGE(12, 128, 53, 45, ""); + LODOP.SET_PRINT_STYLEA(0, "Stretch", 2); + LODOP.ADD_PRINT_BARCODE(68, 9, "50.96mm", "10.21mm", "128B", barCode); + LODOP.ADD_PRINT_TEXT(138, 107, 91, 19, "采摘人:" + $scope.packageTask.caizaiUser); + LODOP.SET_PRINT_STYLEA(0, "FontName", "黑体"); + LODOP.SET_PRINT_STYLEA(0, "FontSize", 8); + LODOP.ADD_PRINT_TEXT(135, 19, 78, 19, "检验人:" + $scope.packageTask.jianceUser); + LODOP.SET_PRINT_STYLEA(0, "FontName", "黑体"); + LODOP.SET_PRINT_STYLEA(0, "FontSize", 8); + LODOP.ADD_PRINT_TEXT(109, 20, 158, 19, "产品名称:" + $scope.packageTask.itemName); + LODOP.SET_PRINT_STYLEA(0, "FontName", "黑体"); + LODOP.SET_PRINT_STYLEA(0, "FontSize", 8); + LODOP.ADD_PRINT_TEXT(151, 19, 100, 20, "采摘点:" + ($scope.packageTask.yieldly == null ? "无" : $scope.packageTask.yieldly)); + LODOP.SET_PRINT_STYLEA(0, "FontName", "黑体"); + LODOP.SET_PRINT_STYLEA(0, "FontSize", 8); + LODOP.ADD_PRINT_TEXT(167, 19, 137, 20, "采摘时间:6:00-9:00"); + LODOP.SET_PRINT_STYLEA(0, "FontName", "黑体"); + LODOP.SET_PRINT_STYLEA(0, "FontSize", 8); + LODOP.ADD_PRINT_TEXT(123, 20, 119, 19, "检测结果:μb=" + $scope.packageTask.nongCanLv); + LODOP.SET_PRINT_STYLEA(0, "FontName", "黑体"); + LODOP.SET_PRINT_STYLEA(0, "FontSize", 8); + + // LODOP.PRINT_DESIGN(); + LODOP.PRINT(); + } + var initialize = function () { + $("#weight").focus(); + $("#weight").select(); + $("#weight").val(""); + $scope.getPackageTaskList($stateParams.id); + $scope.getJobOperationLogList($stateParams.id); + } + initialize(); + }]; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/pick/pick.js b/src/main/webapp/WEB-INF/views/src/views/pick/pick.js new file mode 100644 index 0000000..a9dfe56 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/pick/pick.js @@ -0,0 +1,140 @@ +/** + * Created by Jeng on 2016/1/8. + */ +define(function () { + return ["$scope", "PickAPI", "CouponAPI","$modal", "$ugDialog","$stateParams", function($scope, PickAPI, CouponAPI,$modal, $ugDialog,$stateParams){ + + $scope.readCard = function(){ + var strls = ""; + var errorno = ""; + var BLOCK0_EN = 0x01;//读第一块的(16个字节) + var BLOCK1_EN = 0x02;//读第二块的(16个字节) + var BLOCK2_EN = 0x04;//读第四块的(16个字节) + + var EXTERNKEY = 0x10;//用明码认证密码,产品开发完成后,建议把密码放到设备的只写区,然后用该区的密码后台认证,这样谁都不知道密码是多少,需要这方面支持请联系 + //指定控制字 + var myctrlword=BLOCK0_EN + BLOCK1_EN + BLOCK2_EN + EXTERNKEY; + //指定区号 + var myareano = 8; //指定为第8区 + //批定密码模式 + var authmode = 1; //大于0表示用A密码认证,推荐用A密码认证 + + //指定序列号,未知卡序列号时可指定为8个0 + var mypiccserial="00000000"; + + //指定密码,以下密码为厂家出厂密码 + var mypicckey = "ffffffffffff"; + strls=IcCardReader.piccreadex(myctrlword, mypiccserial,myareano,authmode,mypicckey); + errorno = strls.substr(0,4); + switch(errorno) + { + case "ER08": + alert("寻不到卡"); + break; + case "ER09": + alert("寻不到卡"); + break; + case "ER10": + alert("寻不到卡"); + break; + + case "ER11": + $ugDialog.alert("密码认证错误"); + break; + case "ER12": + $ugDialog.alert("密码认证错误"); + break; + case "ER13": + $ugDialog.alert("读卡错误"); + break; + + case "ER14": + $ugDialog.alert("写卡错误"); + break; + + case "ER21": + $ugDialog.alert("没找到动态库"); + break; + case "ER22": + $ugDialog.alert("动态库或驱动程序异常"); + break; + + case "ER23": + $ugDialog.alert("读卡器未插上或动态库或驱动程序异常"); + break; + case "ER24": + $ugDialog.alert("操作超时,一般是动态库没有反应"); + break; + case "ER25": + $ugDialog.alert("发送字数不够"); + break; + case "ER26": + $ugDialog.alert("发送的CRC错"); + break; + case "ER27": + $ugDialog.alert("接收的字数不够"); + break; + case "ER28": + $ugDialog.alert("接收的CRC错"); + break; + case "ER29": + $ugDialog.alert("函数输入参数格式错误,请仔细查看" ); + break; + default : + //读卡成功,其中ER00表示完全成功,ER01表示完全没读到卡数据,ER02表示仅读该卡的第一块成功,,ER02表示仅读该卡的第一二块成功,这是刷卡太快原因 + var e=new RegExp("F","g"); + $scope.pick.couponNo = strls.substr(14,32).replace(e,""); + $scope.pick.password = strls.substr(46,32).replace(e,""); + break; + } + if($scope.pick.couponNo){ + //查找卡信息 + CouponAPI.readCard({ + couponNo:$scope.pick.couponNo, + password:$scope.pick.password + }, function (data) { + if(data.userName == null || data.userName == undefined){ + $ugDialog.warn("卡不能识别!"); + $scope.pick.couponNo = ""; + $scope.pick.password = ""; + return; + }; + $scope.pick.userName = data.userName; + $scope.pick.phoneNumber = data.phoneNumber; + $scope.pick.couponNo = data.couponNo; + $scope.pick.couponPrice = data.couponPrice; + IcCardReader.pcdbeep(200);//100表示响100毫秒 + $("#pickWeight").focus(); + $("#pickWeight").select(); + }, function (data) { + $ugDialog.warn(data.data.error); + }) + } + } + + + $scope.pickForm = {}; + $scope.pickSave = function(){ + if($scope.pick.couponNo == "" || $scope.pick.couponNo == null || $scope.pick.couponNo == undefined ){ + $ugDialog.alert("请刷卡"); + return; + } + PickAPI.settleAccounts($scope.pick,function(){ + $ugDialog.alert("结算成功"); + $scope.pick = { + pickPayType:1 + } + }, function(data){ + IcCardReader.pcdbeep(200);//100表示响100毫秒 + $ugDialog.warn(data.data.error); + }) + } + + var initialize = function(){ + $scope.pick={ + pickPayType:1 + } + } + initialize(); + }]; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/pick/pickCard.html b/src/main/webapp/WEB-INF/views/src/views/pick/pickCard.html new file mode 100644 index 0000000..70ded11 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/pick/pickCard.html @@ -0,0 +1,169 @@ +
    + + +
    + + +
    + + +
    + +
    + +

    办新卡

    +
    + +
    + +
    + +
    + + +
    +
    +
    +
    +
    + 工作区 +
    +
    + +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    +
    + 客户信息 +
    + +
    + +
    +
    +
    + +
    + +
    + +
    + +
    +
    +
    + +
    + + {{member.name}} +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    + +
    + +
    +
    +
    + +
    + +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    + +
    + +
    +
    +
    + +
    + +
    +
    + +
    +
    +
    + +
    + +
    + +
    + +
    + +
    + diff --git a/src/main/webapp/WEB-INF/views/src/views/pick/pickCard.js b/src/main/webapp/WEB-INF/views/src/views/pick/pickCard.js new file mode 100644 index 0000000..5115c66 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/pick/pickCard.js @@ -0,0 +1,126 @@ +/** + * Created by Jeng on 2016/1/8. + */ +define(function () { + return ["$scope", "CouponAPI","CompanyAPI","PickAPI","$modal", "$ugDialog","$stateParams", function($scope, CouponAPI,CompanyAPI,PickAPI,$modal, $ugDialog,$stateParams){ + $scope.readCard = function(){ + var strls = ""; + var errorno = ""; + var BLOCK0_EN = 0x01;//读第一块的(16个字节) + var BLOCK1_EN = 0x02;//读第二块的(16个字节) + var BLOCK2_EN = 0x04;//读第四块的(16个字节) + var EXTERNKEY = 0x10;//用明码认证密码,产品开发完成后,建议把密码放到设备的只写区,然后用该区的密码后台认证,这样谁都不知道密码是多少,需要这方面支持请联系 + //指定控制字 + var myctrlword=BLOCK0_EN + BLOCK1_EN + BLOCK2_EN + EXTERNKEY; + //指定区号 + var myareano = 8; //指定为第8区 + //批定密码模式 + var authmode = 1; //大于0表示用A密码认证,推荐用A密码认证 + //指定序列号,未知卡序列号时可指定为8个0 + var mypiccserial="00000000"; + //指定密码,以下密码为厂家出厂密码 + var mypicckey = "ffffffffffff"; + strls=IcCardReader.piccreadex(myctrlword, mypiccserial,myareano,authmode,mypicckey); + errorno = strls.substr(0,4); + switch(errorno) + { + case "ER08": + alert("寻不到卡"); + break; + case "ER09": + alert("寻不到卡"); + break; + case "ER10": + alert("寻不到卡"); + break; + case "ER11": + $ugDialog.alert("密码认证错误"); + break; + case "ER12": + $ugDialog.alert("密码认证错误"); + break; + case "ER13": + $ugDialog.alert("读卡错误"); + break; + case "ER14": + $ugDialog.alert("写卡错误"); + break; + case "ER21": + $ugDialog.alert("没找到动态库"); + break; + case "ER22": + $ugDialog.alert("动态库或驱动程序异常"); + break; + case "ER23": + $ugDialog.alert("读卡器未插上或动态库或驱动程序异常"); + break; + case "ER24": + $ugDialog.alert("操作超时,一般是动态库没有反应"); + break; + case "ER25": + $ugDialog.alert("发送字数不够"); + break; + case "ER26": + $ugDialog.alert("发送的CRC错"); + break; + case "ER27": + $ugDialog.alert("接收的字数不够"); + break; + case "ER28": + $ugDialog.alert("接收的CRC错"); + break; + case "ER29": + $ugDialog.alert("函数输入参数格式错误,请仔细查看" ); + break; + default : + //读卡成功,其中ER00表示完全成功,ER01表示完全没读到卡数据,ER02表示仅读该卡的第一块成功,,ER02表示仅读该卡的第一二块成功,这是刷卡太快原因 + var e=new RegExp("F","g"); + $scope.member.newCouponNo = strls.substr(14,32).replace(e,""); + $scope.member.newPassword = strls.substr(46,32).replace(e,""); + IcCardReader.pcdbeep(200);//100表示响100毫秒 + break; + } + } + $scope.companyList = []; + $scope.ugSelect2Config = {}; + $scope.pageSetting = { + pageSize:1000, + pageNum:1 + }; + $scope.getCompanyList = function(){ + CompanyAPI.query({ + limit:$scope.pageSetting.pageSize, + offset:$scope.pageSetting.pageNum + }, function(data){ + $scope.companyList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getCompanyList; + }); + }; + $scope.getCompanyList(); + $scope.changeCompany = function(id){ + for(var i in $scope.companyList){ + var company = $scope.companyList[i]; + if(company.id == parseInt(id)){ + $scope.companyCustomerManagers = company.companyCustomerManagers; + } + } + }; + //提交办卡 + $scope.pickCard = function(){ + alert($scope.member.newCouponNo); + if($scope.pickCardForm.validator.form()){ + PickAPI.pickCard($scope.member, function(){ + alert("办卡成功"); + }, function(data){ + alert(data.data.error); + }) + } + } + var initialize = function(){ + $scope.member = {}; + $scope.pickCardForm = {}; + } + initialize(); + }]; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/pick/pick_module.js b/src/main/webapp/WEB-INF/views/src/views/pick/pick_module.js new file mode 100644 index 0000000..2d6b4f7 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/pick/pick_module.js @@ -0,0 +1,59 @@ +/** + * Created by Administrator on 2016/1/15. + */ +define([ + "views/pick/pick", + "views/pick/cardRecharge", + "views/pick/exchangeCard", + "views/pick/pickCard" +],function (pick,cardRecharge,exchangeCard,pickCard) { + angular.module('DMS.pick', [ + "permission" + ]).config(["$stateProvider", function($stateProvider){ + $stateProvider + .state('pick', { + url: '/pick', + templateUrl: 'views/pick/pick.html', + data:{ + permissions:{ + only:["PICK"], + redirectTo:"unauthorized" + } + }, + controller: pick + }) + .state('cardRecharge', { + url: '/cardRecharge', + templateUrl: 'views/pick/cardRecharge.html', + data:{ + permissions:{ + only:["CARD_RECHARGE"], + redirectTo:"unauthorized" + } + }, + controller: cardRecharge + }) + .state('exchangeCard', { + url: '/exchangeCard', + templateUrl: 'views/pick/exchangeCard.html', + data:{ + permissions:{ + only:["EXCHANGE_CARD"], + redirectTo:"unauthorized" + } + }, + controller: exchangeCard + }) + .state('pickCard', { + url: '/pickCard', + templateUrl: 'views/pick/pickCard.html', + data:{ + permissions:{ + only:["PICK_CARD"], + redirectTo:"unauthorized" + } + }, + controller: pickCard + }) + }]); +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/plan/basePlan.html b/src/main/webapp/WEB-INF/views/src/views/plan/basePlan.html new file mode 100644 index 0000000..63cf72d --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/plan/basePlan.html @@ -0,0 +1,392 @@ + + + +
    + + +
    + + +
    + + +
    + +
    + +

    计划设定

    +
    + +
    + +
    + +
    + + +
    +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    计划名称配送频率(周)配送次数金额是否随机操作
    + 1周 + 2周 + 3周 + 4周 + + + + +
    + + + + | + + + +
    +
    +
    暂无消息数据
    +
    +
    + +
    + +
    + +
    + + +
    + + +
    + + + +
    + + + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/plan/plan_module.js b/src/main/webapp/WEB-INF/views/src/views/plan/plan_module.js new file mode 100644 index 0000000..d1c9580 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/plan/plan_module.js @@ -0,0 +1,34 @@ +/** + * Created by Administrator on 2016/1/15. + */ +define([ + "views/plan/basePlan", + "views/plan/tablePlan" +],function (basePlan,tablePlan) { + angular.module('DMS.plan', ["permission"]).config(["$stateProvider", "$urlRouterProvider", "$httpProvider", function ($stateProvider, $urlRouterProvider, $httpProvider) { + + $stateProvider + .state('basePlan', { + url: '/basePlan', + templateUrl: 'views/plan/basePlan.html', + data:{ + permissions:{ + only:["BASE_PLAN"], + redirectTo:"unauthorized" + } + }, + controller: basePlan + }) + .state('tablePlan', { + url: '/tablePlan', + templateUrl: 'views/plan/tablePlan.html', + data:{ + permissions:{ + only:["TABLE_PLAN"], + redirectTo:"unauthorized" + } + }, + controller: tablePlan + }) + }]); +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/plan/tablePlan.js b/src/main/webapp/WEB-INF/views/src/views/plan/tablePlan.js new file mode 100644 index 0000000..5b623d0 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/plan/tablePlan.js @@ -0,0 +1,214 @@ +/** + * Created by Jeng on 2016/1/8. + */ +define(function () { + return ["$scope", "TablePlanAPI", "$modal", "$ugDialog", function($scope, TablePlanAPI, $modal, $ugDialog){ + $scope.isCouponNumberExist = false; + $scope.tablePlanList = []; + $scope.pageInfoSetting = { + pageSize:10, + pageNum:1 + }; + $scope.queryParam = {}; + $scope.getTablePlanList = function(){ + TablePlanAPI.query({ + limit:$scope.pageInfoSetting.pageSize, + offset:$scope.pageInfoSetting.pageNum, + keyword:$scope.queryParam.keyword + }, function(data){ + $scope.tablePlanList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getTablePlanList; + }); + }; + $scope.stop = function(index){ + TablePlanAPI.stop({ + id: $scope.tablePlanList[index].id, + locked: $scope.tablePlanList[index].isStop == 1 ? true : false + }); + }; + + $scope.createPlanOrder = function(){ + TablePlanAPI.createPlanOrder({ + + }, function(data){ + $ugDialog.alert("执行成功"); + $scope.getTablePlanList(); + }); + }; + + $scope.open = function (index) { + var modalInstance = $modal.open({ + templateUrl: 'addTablePlan.html', + controller: ["$scope", "TablePlanAPI", "$modalInstance","currentTablePlan","BasePlanAPI","CouponAPI" ,"$rootScope", "$modalMemberAdd","MemberAPI", function ($scope, TablePlanAPI, $modalInstance,currentTablePlan,BasePlanAPI,CouponAPI,$rootScope,$modalMemberAdd,MemberAPI) { + $scope.chooseTablePlans = []; + $scope.ugSelect2Config = {}; + $scope.tablePlan = { + }; + + $scope.datepickerSetting = { + datepickerPopupConfig:{ + "current-text":"今天", + "clear-text":"清除", + "close-text":"关闭" + }, + beginTime:{ + opened:false + } + }; + $scope.open = function($event, index) { + $event.preventDefault(); + $event.stopPropagation(); + if(index == 0){ + $scope.datepickerSetting.beginTime.opened = true; + } + }; + + if(currentTablePlan){ + $scope.tablePlan = currentTablePlan; + } + + $scope.getBasePlanList = function(){ + $scope.pageInfoSetting = { + pageSize:1000, + pageNum:1 + }; + $scope.queryParam = {}; + $scope.basePlanList = []; + BasePlanAPI.query({ + limit:$scope.pageInfoSetting.pageSize, + offset:$scope.pageInfoSetting.pageNum + }, function(data){ + $scope.basePlanList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getCategoryList; + if(currentTablePlan){ + $scope.ugSelect2Config.initSelectData(currentTablePlan.cdPlanId); + } + }); + } + $scope.getBasePlanList(); + $scope.errors = null; + $scope.addTablePlanForm = {}; + $scope.saveOrUpdateTablePlan = function(){ + $scope.errors = null; + if($scope.addTablePlanForm.validator.form()){ + if($scope.tablePlan.id){ + TablePlanAPI.update($scope.tablePlan, function(){ + $modalInstance.close(); + }, function(data){ + $scope.errors = data.data; + }) + }else{ + if($scope.isCouponNumberExist){ + $scope.tablePlan.tablePlans = $scope.chooseTablePlans; + TablePlanAPI.save($scope.tablePlan, function(){ + $modalInstance.close(); + }, function(data){ + $scope.errors = data.data; + }); + }else{ + $ugDialog.alert("请先查询卡号信息"); + } + } + $scope.isCouponNumberExist = false; + } + }; + var bindMember = function(){ + $modalMemberAdd.open({ + currentMember:{ + couponNumber:$scope.tablePlan.couponNumber + } + }).result.then(function (data) { + $scope.queryMemberByCouponNumber(); + }); + }; + $scope.queryMemberByCouponNumber = function(){ + if($scope.tablePlan.couponNumber){ + CouponAPI.query({ + limit:1, + offset:1, + couponNumber:$scope.tablePlan.couponNumber, + couponType:1 + }, function(data){ + if(data.data && data.data.length > 0){ + $scope.isCouponNumberExist = true; + var coupon = data.data[0]; + if(coupon.memberId){ + MemberAPI.get({ + id:coupon.memberId + },function(data){ + var member = data; + $scope.tablePlan.cdMemberId = member.id; + $scope.tablePlan.memberCode = member.memberCode; + $scope.tablePlan.consigneeAddress = member.address; + $scope.tablePlan.consigneeName = member.name; + $scope.tablePlan.consigneePhone = member.phoneNumber; + }) + } + else{ + $ugDialog.confirm("未找到客户信息,是否新增客户?").then(function(){ + bindMember(); + }); + } + }else{ + $ugDialog.alert("卡号不存在!"); + } + }) + }else{ + $ugDialog.alert("请输入卡号"); + } + }; + + //添加计划生效时间 + $scope.changeSelect =function(){ + if($scope.tablePlan.id == null){ + $scope.chooseTablePlans=[]; + var cdPlanIdList = $scope.tablePlan.cdPlanIds; + for(var i = 0;i and you can use wells or panels instead + --> + + +
    + + +
    + + +
    + + +
    + +
    + +

    订单列表

    +
    + +
    + +
    + +
    + + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + 订单编号订单类型卡/劵号订购日期配送日期订单状态收货码
    + +
    +
    暂无数据
    +
    +
    + +
    + +
    + +
    + + +
    + + +
    + + + +
    + + diff --git a/src/main/webapp/WEB-INF/views/src/views/receipt/receivingCodeRequest.js b/src/main/webapp/WEB-INF/views/src/views/receipt/receivingCodeRequest.js new file mode 100644 index 0000000..0848aa8 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/receipt/receivingCodeRequest.js @@ -0,0 +1,55 @@ +/** + */ +define(function () { + return ["$scope", "ReceivingCodeRequestAPI", "$modal", "$ugDialog","UserAPI","$filter", function($scope, ReceivingCodeRequestAPI, $modal, $ugDialog,UserAPI,$filter){ + + $scope.receivingCodeRequestList = []; + $scope.pageInfoSetting = { + pageSize:10, + pageNum:1 + }; + $scope.datepickerSetting = { + datepickerPopupConfig:{ + "current-text":"今天", + "clear-text":"清除", + "close-text":"关闭" + }, + requestTimeStart:{ + opened:false + }, + requestTimeEnd:{ + opened:false + } + }; + $scope.openDate = function($event, index) { + $event.preventDefault(); + $event.stopPropagation(); + if(index == 0){ + $scope.datepickerSetting.requestTimeStart.opened = true; + }else if(index == 1){ + $scope.datepickerSetting.requestTimeEnd.opened = true; + } + }; + + $scope.queryParam = { + requestTimeStart :$filter('date')(new Date(new Date().getTime()), 'yyyy-MM-dd'), + requestTimeEnd:$filter('date')(new Date(new Date().getTime()), 'yyyy-MM-dd') + }; + + $scope.getReceivingCodeRequestList = function(){ + ReceivingCodeRequestAPI.query({ + limit:$scope.pageInfoSetting.pageSize, + offset:$scope.pageInfoSetting.pageNum, + keyword:$scope.queryParam.keyword, + requestTimeStart:$scope.queryParam.requestTimeStart, + requestTimeEnd: $scope.queryParam.requestTimeEnd, + orderNo:$scope.queryParam.orderNo + }, function(data){ + $scope.receivingCodeRequestList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getReceivingCodeRequestList; + }); + }; + $scope.getReceivingCodeRequestList(); + }]; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/receipt/returnOrder.html b/src/main/webapp/WEB-INF/views/src/views/receipt/returnOrder.html new file mode 100644 index 0000000..d37885b --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/receipt/returnOrder.html @@ -0,0 +1,299 @@ + + + +
    + + +
    + + +
    + + +
    + +
    + +

    退货订单列表

    +
    + +
    + +
    + +
    + + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    订单编号订单类型卡/劵号配送日期退货日期退货状态客户信息客户经理审核状态审核人审核时间取货快递员手机号取货时间操作
    同意拒绝 + + + + + + + + + +
    +
    暂无数据
    +
    +
    + +
    + +
    + +
    + + +
    + + +
    + + + +
    + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/receipt/returnOrderShouHuo.js b/src/main/webapp/WEB-INF/views/src/views/receipt/returnOrderShouHuo.js new file mode 100644 index 0000000..6d8b9f7 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/receipt/returnOrderShouHuo.js @@ -0,0 +1,59 @@ +/** + * Created by Jeng on 2016/1/8. + */ +define(function () { + return ["$scope", "$modal", "$ugDialog", "ReturnOrderAPI", "$filter", function ($scope, $modal, $ugDialog, ReturnOrderAPI, $filter) { + //扫描订单编号 + $scope.saoOrderNoEvent = function (e) { + var keycode = window.event ? e.keyCode : e.which; + if (keycode == 13) { + $scope.returnOrderShouhuo(); + } + } + + //收货扫描 + $scope.returnOrderShouhuo = function () { + if (!$scope.boxNo) { + $ugDialog.warn("请扫描条形码"); + return; + } + ReturnOrderAPI.returnOrderShouhuo({ + boxNo: $scope.boxNo + }, function (data) { + $ugDialog.alert("扫描成功"); + $scope.returnOrderItemList = data.itemList; + $scope.orderNo = data.orderNo; + $("#boxNo").focus(); + $("#boxNo").select(); + $("#boxNo").val(""); + }, function (data) { + $ugDialog.warn(data.data.message); + $("#boxNo").focus(); + $("#boxNo").select(); + $("#boxNo").val(""); + $scope.returnOrderItemList = []; + $scope.orderNo = null; + }) + } + + //收货扫描 + $scope.shouhuo = function () { + if (!$scope.orderNo) { + $ugDialog.warn("请扫描条形码"); + return; + } + ReturnOrderAPI.shouhuo({ + orderNo: $scope.orderNo + }, function (data) { + $ugDialog.alert("收货成功"); + $scope.returnOrderItemList = []; + $scope.orderNo = null; + $("#boxNo").focus(); + $("#boxNo").select(); + $("#boxNo").val(""); + }, function (data) { + $ugDialog.warn(data.data.message); + }) + } + }]; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/receipt/reviewDespatch.html b/src/main/webapp/WEB-INF/views/src/views/receipt/reviewDespatch.html new file mode 100644 index 0000000..4cb1639 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/receipt/reviewDespatch.html @@ -0,0 +1,138 @@ + + + +
    + + +
    + + +
    + +
    +
    + +

    二次配送审核列表

    +
    + +
    + +
    + +
    + + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + 序号订单编号订单状态快递商分配状态客户姓名手机号地址操作
    + + +
    已分配
    +
    待分配
    +
    +
    + + + +
    +
    +
    暂无数据
    +
    +
    + +
    + +
    + +
    + + +
    +
    + + + +
    + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/receipt/reviewDespatch.js b/src/main/webapp/WEB-INF/views/src/views/receipt/reviewDespatch.js new file mode 100644 index 0000000..b198765 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/receipt/reviewDespatch.js @@ -0,0 +1,60 @@ +/** + * Created by Jeng on 2016/1/8. + */ +define(function () { + return ["$scope", "$modal", "$ugDialog", "ExpressAPI", "OrderAPI", function ($scope, $modal, $ugDialog, ExpressAPI, OrderAPI) { + + $scope.pageInfoExpressSetting = { + pageSize: 100, + pageNum: 1 + }; + $scope.getExpressList = function () { + ExpressAPI.query({ + limit: $scope.pageInfoExpressSetting.pageSize, + offset: $scope.pageInfoExpressSetting.pageNum + }, function (data) { + $scope.expressList = data.data; + $scope.pageInfoExpressSetting = data.pageInfo; + $scope.pageInfoExpressSetting.loadData = $scope.getExpressList; + }); + }; + $scope.getExpressList(); + + $scope.orderList = []; + $scope.pageInfoSetting = { + pageSize: 10, + pageNum: 1 + }; + $scope.queryParam = {}; + $scope.getOrderList = function () { + //查询收货的订单 + OrderAPI.query({ + limit: $scope.pageInfoSetting.pageSize, + offset: $scope.pageInfoSetting.pageNum, + keyword: $scope.queryParam.keyword, + hasNoShowCancel: true, + orderStatus: 8, + despatchExpressId: $scope.queryParam.despatchExpressId, + consigneeName: $scope.queryParam.consigneeName + }, function (data) { + $scope.orderList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getOrderList; + }); + }; + + $scope.getOrderList(); + + $scope.auditTwoSend = function (id) { + OrderAPI.auditTwoSend({ + id: id, + auditStatusCd: 1 + }, function () { + $ugDialog.alert("审核成功"); + $scope.getOrderList(); + }, function (data) { + $ugDialog.warn(data.data.message) + }) + } + }]; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/receipt/twoSendOrder.html b/src/main/webapp/WEB-INF/views/src/views/receipt/twoSendOrder.html new file mode 100644 index 0000000..08b559f --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/receipt/twoSendOrder.html @@ -0,0 +1,313 @@ + + + +
    + + +
    + + +
    + + +
    + +
    + +

    二次配送订单列表

    +
    + +
    + +
    + +
    + + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + 订单编号订单类型卡/劵号订购日期配送日期订单状态付款方式附加付款方式总金额优惠金额付款金额附加付款金额客户信息客户经理下单人备注是否有下架商品操作
    + + + + + +
    +
    暂无数据
    +
    +
    + +
    + +
    + +
    + + +
    + + +
    + + + +
    + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/receipt/twoSendOrder.js b/src/main/webapp/WEB-INF/views/src/views/receipt/twoSendOrder.js new file mode 100644 index 0000000..72ae8cd --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/receipt/twoSendOrder.js @@ -0,0 +1,119 @@ +/** + * Created by Jeng on 2016/1/8. + */ +define(function () { + return ["$scope", "OrderAPI", "$modal", "$ugDialog","UserAPI","$filter", function($scope, OrderAPI, $modal, $ugDialog,UserAPI,$filter){ + + $scope.managers = []; + $scope.getCustomerManagersList = function(){ + UserAPI.getCustomerManagerList({ + userType:"customer_manager" + },function(data){ + $scope.managers = data; + }); + } + $scope.getCustomerManagersList(); + + $scope.orderList = []; + $scope.pageInfoSetting = { + pageSize:10, + pageNum:1 + }; + +// $scope.datepickerSetting = { +// datepickerPopupConfig:{ +// "current-text":"今天", +// "clear-text":"清除", +// "close-text":"关闭" +// }, +// orderCreateTimeStart:{ +// opened:false +// }, +// orderCreateTimeEnd:{ +// opened:false +// } +// }; +// $scope.openDate = function($event, index) { +// $event.preventDefault(); +// $event.stopPropagation(); +// if(index == 0){ +// $scope.datepickerSetting.orderCreateTimeStart.opened = true; +// }else if(index == 1){ +// $scope.datepickerSetting.orderCreateTimeEnd.opened = true; +// } +// }; + + $scope.queryParam = { +// orderCreateTimeStart :$filter('date')(new Date(new Date().getTime()), 'yyyy-MM-dd'), +// orderCreateTimeEnd:$filter('date')(new Date(new Date().getTime()), 'yyyy-MM-dd') + }; + + $scope.getOrderList = function(){ + OrderAPI.query({ + limit:$scope.pageInfoSetting.pageSize, + offset:$scope.pageInfoSetting.pageNum, + keyword:$scope.queryParam.keyword, + isTwoSend:1, +// orderCreateTimeStart:$scope.queryParam.orderCreateTimeStart, +// orderCreateTimeEnd: $scope.queryParam.orderCreateTimeEnd, + couponNumber:$scope.queryParam.couponNumber, + hasNoShowCancel:false + }, function(data){ + $scope.orderList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getOrderList; + }); + }; + + $scope.viewOrder = function (index) { + var modalInstance = $modal.open({ + templateUrl: 'viewOrderDetail.html', + resolve: { + CurrentOrder: function(){ + return angular.copy($scope.orderList[index]); + } + }, + controller: ["$scope", "OrderAPI", "CurrentOrder", "$modalInstance", function ($scope, OrderAPI, CurrentOrder, $modalInstance) { + $scope.order = {}; + if(CurrentOrder){ + $scope.order = CurrentOrder; + } + $scope.setting = { + pageInfo : { + pageSize:30, + pageNum:1 + } + }; + OrderAPI.getItemList({ + limit: $scope.setting.pageInfo.pageSize, + offset: $scope.setting.pageInfo.pageNum, + id:$scope.order.id, + orderNo:$scope.order.orderNo + }, function(data){ + $scope.order.itemList = data.data; + $scope.calTotalItem(); + }); + $scope.calTotalItem = function(){ + $scope.totalItem = {}; + var totalNumber = 0; + var totalPrice = 0; + for (var i = 0; i < $scope.order.itemList.length; i++) { + var obj = $scope.order.itemList[i]; + totalNumber += obj.itemQty; + totalPrice += (obj.itemQty * obj.itemPrice); + } + $scope.totalItem.totalNumber = totalNumber; + $scope.totalItem.totalPrice = totalPrice; + }; + $scope.cancel = function () { + $modalInstance.dismiss('cancel'); + }; + }] + }); + modalInstance.result.then(function () { + $scope.getOrderList(); + }); + }; + $scope.getOrderList(); + }]; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/report/reportFinance.html b/src/main/webapp/WEB-INF/views/src/views/report/reportFinance.html new file mode 100644 index 0000000..18d4c9c --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/report/reportFinance.html @@ -0,0 +1,97 @@ +
    + + +
    + + +
    + +
    +
    + +

    财务报表

    +
    + +
    + +
    + +
    + + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    + +
    + + +
    + +
    + +
    + diff --git a/src/main/webapp/WEB-INF/views/src/views/report/reportFinance.js b/src/main/webapp/WEB-INF/views/src/views/report/reportFinance.js new file mode 100644 index 0000000..1d27730 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/report/reportFinance.js @@ -0,0 +1,80 @@ +/** + * Created by Jeng on 2016/1/8. + */ +define(function () { + return ["$scope", "ReportOrderAPI", "$modal", "$ugDialog", "$filter", "CouponCategoryAPI", "CompanyAPI", "UserAPI", function ($scope, ReportOrderAPI, $modal, $ugDialog, $filter, CouponCategoryAPI, CompanyAPI, UserAPI) { + $scope.queryParam = {}; + + $scope.pageInfoSetting = { + pageSize: 1000, + pageNum: 1 + }; + + $scope.companyList = []; + $scope.getCompanyList = function () { + CompanyAPI.query({ + limit: $scope.pageInfoSetting.pageSize, + offset: $scope.pageInfoSetting.pageNum + }, function (data) { + $scope.companyList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getCompanyList; + }); + }; + $scope.getCompanyList(); + + $scope.companyCustomerManagers = []; + $scope.getCustomerManagersList = function () { + UserAPI.getCustomerManagerList({ + userType: "customer_manager" + }, function (data) { + $scope.companyCustomerManagers = data; + }); + } + $scope.getCustomerManagersList(); + + $scope.datepickerSetting = { + datepickerPopupConfig: { + "current-text": "今天", + "clear-text": "清除", + "close-text": "关闭" + }, + startTime: { + opened: false + }, + endTime: { + opened: false + } + }; + + $scope.openDatepicker = function ($event, index) { + $event.preventDefault(); + $event.stopPropagation(); + if (index == 1) { + $scope.datepickerSetting.startTime.opened = true; + } else if (index == 2) { + $scope.datepickerSetting.endTime.opened = true; + } + }; + + + $scope.exportFinanceExcel = function () { + if (!$("#startTimeId").val()) { + $ugDialog.warn("请输入开始时间"); + return; + } + if (!$("#endTimeId").val()) { + $ugDialog.warn("请输入结束时间"); + return; + } + var url = "/report/finance?beginTime=" + $("#startTimeId").val() + "&endTime=" + $("#endTimeId").val(); + if ($scope.queryParam.cdCompanyId != undefined) { + url += "&companyId=" + $scope.queryParam.cdCompanyId; + } + if ($scope.queryParam.customerMangerId != undefined) { + url += "&managerId=" + $scope.queryParam.customerMangerId; + } + window.location.href = url; + } + }]; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/schedule/list.html b/src/main/webapp/WEB-INF/views/src/views/schedule/list.html new file mode 100644 index 0000000..0a39105 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/schedule/list.html @@ -0,0 +1,323 @@ + + + +
    + + +
    + + +
    + + +
    + +
    + +

    任务调度

    +
    + +
    + +
    + +
    + + +
    +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + 任务属组任务名称状态触发器ID描述操作
    + + + +
    + + + +
    +
    +
    暂无消息数据
    +
    +
    + +
    + +
    + +
    + +
    + +
    + +
    + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/schedule/list.js b/src/main/webapp/WEB-INF/views/src/views/schedule/list.js new file mode 100644 index 0000000..4a306fe --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/schedule/list.js @@ -0,0 +1,151 @@ +/** + * Created by Jeng on 2016/1/8. + */ +define(function () { + return ["$scope", "ScheduleAPI", "$modal", "$ugDialog", function($scope, ScheduleAPI, $modal, $ugDialog){ + $scope.scheduleList = []; + $scope.pageInfoSetting = { + pageSize:50, + pageNum:1 + }; + $scope.queryParam = {}; + $scope.getScheduleList = function(){ + ScheduleAPI.query({ + limit:$scope.pageInfoSetting.pageSize, + offset:$scope.pageInfoSetting.pageNum, + keyword:$scope.queryParam.keyword + }, function(data){ + if(data.data && data.data.length > 0){ + $scope.scheduleList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getScheduleList; + } + }); + }; + $scope.restart = function(index){ + ScheduleAPI.update({ + id: $scope.scheduleList[index].id, + action:"restart" + }, function(data){ + $ugDialog.alert("任务已重启"); + $scope.getScheduleList(); + }) + }; + $scope.remove = function(index){ + var schedule = $scope.scheduleList[index]; + $ugDialog.confirm("是否删除定时任务:" + schedule.jobName + "?").then(function(data){ + ScheduleAPI.remove({ + id:schedule.id + }, function(){ + $scope.getScheduleList(); + $ugDialog.alert("删除成功!") + }, function(data){ + $ugDialog.warn({ + title:"删除失败", + content:"错误信息:" + data.data.message + }) + }); + }); + }; + $scope.pause = function(index){ + ScheduleAPI.update({ + id: $scope.scheduleList[index].id, + action:"pause" + }, function(data){ + $ugDialog.alert("任务已暂停"); + $scope.getScheduleList(); + }) + }; + $scope.open = function (index) { + $modal.open({ + templateUrl: 'addScheduleJob.html', + controller: ["$scope", "$modalInstance", "ScheduleAPI", function ($scope, $modalInstance, ScheduleAPI) { + $scope.addScheduleForm = {}; + $scope.schedule = {}; + $scope.errors = null; + $scope.addSchedule = function(){ + if($scope.addScheduleForm.validator.form()){ + $scope.errors = null; + ScheduleAPI.save($scope.schedule, function(){ + $modalInstance.close(); + }, function(data){ + if(data.data){ + $scope.errors = data.data.message; + } + }); + } + }; + $scope.scheduleTemplates = []; + $scope.getScheduleTemplate = function(){ + ScheduleAPI.getTemplates(function(data){ + $scope.scheduleTemplates = data; + }); + }; + $scope.getScheduleTemplate(); + $scope.cancel = function () { + $modalInstance.dismiss('cancel'); + }; + }], + size: "lg" + }).result.then(function(){ + $scope.getScheduleList(); + }); + }; + $scope.openView = function(index){ + openUpdate(index, "view"); + }; + $scope.openUpdate = function(index){ + openUpdate(index, "update"); + }; + var openUpdate = function (index, action) { + $modal.open({ + templateUrl: 'updateScheduleJob.html', + controller: ["$scope", "$modalInstance", "schedule", "action", "ScheduleAPI", function ($scope, $modalInstance, schedule, action, ScheduleAPI) { + $scope.schedule = schedule; + $scope.setting = { + disabled: true + }; + $scope.updateScheduleForm = {}; + $scope.updateSchedule = function(){ + if($scope.updateScheduleForm.validator.form()){ + ScheduleAPI.update({ + id:$scope.schedule.id, + jobName:$scope.schedule.jobName, + jobGroup:$scope.schedule.jobGroup, + description:$scope.schedule.jobDescription, + cronExpression:$scope.schedule.cronExpression, + jobTriggerId:$scope.schedule.triggerId + }, function(){ + $modalInstance.close(); + }, function(data){ + $scope.errors = data.data.message; + }); + } + }; + $scope.getScheduleTemplate = function(){ + ScheduleAPI.getTemplates(function(data){ + $scope.scheduleTemplates = data; + }); + }; + $scope.cancel = function () { + $modalInstance.dismiss('cancel'); + }; + $scope.getScheduleTemplate(); + if(action == "update"){ + $scope.setting.disabled = false; + } + }], + size: "lg", + resolve: { + action: function(){ + return action; + }, + schedule: function () { + return $scope.scheduleList[index]; + } + } + }); + }; + $scope.getScheduleList(); + }]; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/schedule/schedule_module.js b/src/main/webapp/WEB-INF/views/src/views/schedule/schedule_module.js new file mode 100644 index 0000000..f5a9f2b --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/schedule/schedule_module.js @@ -0,0 +1,24 @@ +/** + * Created by Administrator on 2016/1/15. + */ +define([ + "views/schedule/list" +],function (scheduleList) { + angular.module('DMS.schedule', ["permission"]).config(["$stateProvider", "$urlRouterProvider", "$httpProvider", function ($stateProvider, $urlRouterProvider, $httpProvider) { + + $stateProvider + + .state('schedule', { + url: '/schedule', + templateUrl: 'views/schedule/list.html', + data:{ + permissions:{ + only:["SCHEDULE_VIEW"], + redirectTo:"unauthorized" + } + }, + controller: scheduleList + }) + + }]); +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/service/rest_module.js b/src/main/webapp/WEB-INF/views/src/views/service/rest_module.js new file mode 100644 index 0000000..c699fa3 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/service/rest_module.js @@ -0,0 +1,564 @@ +/** + * Created by Jeng on 2016/1/28. + */ +define(function () { + var ngREST = angular.module("DMS.REST", ["ngResource"]); + ngREST.factory("UserAPI", ["$resource", function ($resource) { + return $resource("/user/:id", {id: "@id"}, { + query: {isArray: false}, + update: {method: "PUT", params: {id: "@id"}}, + lock: { + method: "PUT", + url: "/user/:id/locked", + params: { + id: "@id", + locked: "@locked" + } + }, + resetDefaultPassword: { + method: "PUT", + url: "/user/:id/resetPassword", + params: { + id: "@id" + } + }, + getPermissions: { + url: "/user/permissions" + }, + resetPassword: { + url: "/account/resetPassword", + method: "POST", + params: { + current_password: "@current_password", + password: "@password" + } + }, + getCustomerManagerList: { + method: "GET", url: "/customerManagerList", + params: {userType: "@userType", keyword: "@keyword"}, + isArray: true + } + }); + }]); + ngREST.factory("MessageAPI", ["$resource", function ($resource) { + return $resource("/message/:id", {id: '@id'}, { + query: {isArray: false}, + update: {method: "PUT", params: {id: "@id"}}, + log: { + isArray: true, + method: "GET", + url: "/message/:id/log", + params: {id: "@id"} + }, + retry: { + url: "/message/retry", + method: "POST", + params: {messageId: "@messageId"} + } + }); + }]); + ngREST.factory("StockAPI", ["$resource", function ($resource) { + return $resource("/stock/:id", {id: '@id'}, { + query: {isArray: false}, + update: {method: "PUT", params: {id: "@id"}}, + change: {method: "PUT", url: "/stock/:id/change", params: {id: "@id"}}, + beforehandPackageChangeStock: { + method: "GET", + url: "/stock/beforehandPackageChangeStock", + params: {itemId: "@itemId", changeStockNum: "@changeStockNum"} + } + }); + }]); + + ngREST.factory("StockDailyAPI", ["$resource", function ($resource) { + return $resource("/stockDaily/:id", {id: '@id'}, { + query: {isArray: false}, + update: {method: "PUT", params: {id: "@id"}}, + createStockDaily: {method: "GET", url: "/stockDaily/createStockDaily"} + }); + }]); + + ngREST.factory("StockRecordAPI", ["$resource", function ($resource) { + return $resource("/stockRecord/:id", {id: '@id'}, { + query: {isArray: false}, + update: {method: "PUT", params: {id: "@id"}} + }); + }]); + + ngREST.factory("ResourceAPI", ["$resource", function ($resource) { + return $resource("/resource/:id", {id: '@id'}, { + query: {isArray: false}, + update: {method: "PUT", params: {id: "@id"}} + }); + }]); + + ngREST.factory("UserGroupAPI", ["$resource", function ($resource) { + return $resource("/group/:id", {id: '@id'}, { + query: {isArray: false} + }); + }]); + ngREST.factory("UserGroupRelationAPI", ["$resource", function ($resource) { + return $resource("/group/:id/user", {id: '@id', userId: '@userId'}, { + query: {isArray: false}, + save: { + method: "PUT", + params: { + chose: "@chose", + userId: "@userId" + } + } + }); + }]); + ngREST.factory("GroupPermissionRelationAPI", ["$resource", function ($resource) { + return $resource("/group/:id/permissions", {id: '@id'}, { + query: {isArray: false}, + save: { + method: "PUT", + params: { + chose: "@chose", + permissionId: "@permissionId" + } + } + }); + }]); + ngREST.factory("PermissionAPI", ["$resource", function ($resource) { + return $resource("/permission/:id", {id: '@id'}, { + query: {isArray: false}, + update: {method: "PUT", params: {id: "@id"}} + }); + }]); + ngREST.factory("ScheduleAPI", ["$resource", function ($resource) { + return $resource("/schedule/:id", {id: '@id'}, { + query: {isArray: false}, + update: {method: "PUT", params: {id: "@id"}}, + getTemplates: { + url: "/schedule/template", + method: "GET", + isArray: true + } + }); + }]); + ngREST.factory("OrganizationAPI", ["$resource", function ($resource) { + return $resource("/organization/:id", {id: '@id'}, { + // query:{ isArray:false}, + update: {method: "PUT", params: {id: "@id"}}, + bindUser: { + url: "/organization/:id/user", + method: "POST", params: {id: "@id", userIds: "@userIds"} + }, + unBindUser: { + url: "/organization/:id/user", + method: "DELETE", params: {id: "@id", userIds: "@userIds"} + } + }); + }]); + + ngREST.factory("MemberAPI", ["$resource", function ($resource) { + return $resource("/member/:id", {id: "@id"}, { + query: {isArray: false}, + update: {method: "PUT", params: {id: "@id"}} + }); + }]); + + ngREST.factory("MemberAddressAPI", ["$resource", function ($resource) { + return $resource("/memberAddress/:id", {id: "@id"}, { + query: {isArray: false}, + update: {method: "PUT", params: {id: "@id"}} + }); + }]); + + ngREST.factory("CompanyAPI", ["$resource", function ($resource) { + return $resource("/company/:id", {id: "@id"}, { + query: {isArray: false}, + update: {method: "PUT", params: {id: "@id"}}, + getCompanyList: {method: "GET", url: "/companyList", isArray: true} + }); + }]); + + ngREST.factory("ItemCategoryAPI", ["$resource", function ($resource) { + return $resource("/itemCategory/:id", {id: "@id"}, { + // query:{ isArray:false}, + update: {method: "PUT", params: {id: "@id"}} + }); + }]); + + ngREST.factory("ItemAPI", ["$resource", function ($resource) { + return $resource("/item/:id", {id: "@id"}, { + query: {isArray: false}, + update: {method: "PUT", params: {id: "@id"}}, + getChildItemList: {method: "GET", url: "/getChildItem", isArray: true}, + defaultImage: {method: "GET", url: "/item/defaultImage"} + }); + }]); + + ngREST.factory("ItemDetailAPI", ["$resource", function ($resource) { + return $resource("/itemDetail/:id", {id: "@id"}, { + query: {isArray: false}, + update: {method: "PUT", params: {id: "@id"}} + }); + }]); + + ngREST.factory("CouponCategoryAPI", ["$resource", function ($resource) { + return $resource("/couponCategory/:id", {id: "@id"}, { + query: {isArray: false}, + update: {method: "PUT", params: {id: "@id"}}, + getChoseItemList: {method: "GET", url: "/getChoseItemList", isArray: true} + }); + }]); + + ngREST.factory("CouponAPI", ["$resource", function ($resource) { + return $resource("/coupon/:id", {id: "@id"}, { + query: {isArray: false}, + update: {method: "PUT", params: {id: "@id"}}, + sendOneCoupon: {method: "GET", url: "/coupon/sendOneCoupon", params: {id: "@id", companyId: "@companyId", couponNumber: "@couponNumber", batch: "@batch", isGift: "@isGift"}}, + sendMoreCoupon: {method: "GET", url: "/coupon/sendMoreCoupon", params: {companyId: "@companyId", couponNumberList: "@couponNumberList", batch: "@batch", isGift: "@isGift"}}, + updateBatchCoupon: {method: "GET", url: "/coupon/updateBatchCoupon", params: {companyId: "@companyId", customerMangerId: "@customerMangerId", batch: "@batch"}}, + updateBatchCouponType: {method: "GET", url: "/coupon/updateBatchCouponType", params: {couponCategoryId: "@couponCategoryId", couponNumberList: "@couponNumberList"}}, + activityAddress: {method: "POST", url: "/coupon/activityAddress"}, + updateUserPrice: { + method: "GET", + url: "/coupon/updateBalance", + params: { + couponNo: "@couponNo", + updatePrice: "@updatePrice", + couponNo: "@remark" + } + }, + audit: { + method: "PUT", + url: "/coupon/:id/audit", + params: { + id: "@id", + locked: "@locked" + } + }, + batchAudit: { + method: "PUT", + url: "/coupon/batchAudit", + params: { + ids: "@ids", + locked: "@locked" + } + }, + overCoupon: { + method: "PUT", + url: "/coupon/:id/overCoupon", + params: { + id: "@id", + isOver: "@isOver" + } + }, + returnCoupon: { + method: "PUT", + url: "/coupon/:id/returnCoupon", + params: { + id: "@id" + } + }, + receivedPrice: { + method: "GET", + url: "/coupon/receivedPrice", + params: { + couponId: "@couponId", + couponNumber: "@couponNumber", + receivedPrice: "@receivedPrice", + isAutoAudit: "@isAutoAudit" + } + }, + readCard: { + method: "GET", + url: "/coupon/readCard", + params: { + couponNo: "@couponNo", + password: "@password" + } + }, + cardRecharge: { + method: "GET", + url: "/coupon/cardRecharge", + params: { + couponNo: "@couponNo", + rechargePrice: "@rechargePrice" + } + }, + exchangeCard: { + method: "GET", + url: "/coupon/exchangeCard", + params: { + oldCouponNo: "@oldCouponNo", + oldPassword: "@oldPassword", + newCouponNo: "@newCouponNo", + newPassword: "@newPassword" + } + } + }); + }]); + + ngREST.factory("CouponActivityAPI", ["$resource", function ($resource) { + return $resource("/couponActivity/:id", {id: "@id"}, { + query: {isArray: false}, + getCouponAddressList: { + method: "GET", + url: "/couponActivity/couponActivityAddress" + }, + getCouponActivityAddress: { + method: "GET", + url: "/couponActivity/getCouponActivityAddress" + } + }); + }]); + ngREST.factory("ActivityAPI", ["$resource", function ($resource) { + return $resource("/activity/:id", {id: "@id"}, { + query: {isArray: false}, + update: {method: "PUT", params: {id: "@id"}}, + getChoseItemList: {method: "GET", url: "/activity/getChoseItemList", isArray: true} + }); + }]); + + ngREST.factory("ContractAPI", ["$resource", function ($resource) { + return $resource("/contract/:id", {id: "@id"}, { + query: {isArray: false}, + update: {method: "PUT", params: {id: "@id"}} + }); + }]); + + ngREST.factory("ContractItemAPI", ["$resource", function ($resource) { + return $resource("/contractItem/:id", {id: "@id"}, { + query: {isArray: false}, + update: {method: "PUT", params: {id: "@id"}} + }); + }]); + + ngREST.factory("DictionaryGroupAPI", ["$resource", function ($resource) { + return $resource("/dictionary/:id", {id: "@id"}, { + query: {isArray: false}, + update: {method: "PUT", params: {id: "@id"}} + }); + }]); + + ngREST.factory("DictionaryAPI", ["$resource", function ($resource) { + return $resource("/dictionary/:group_id/child/:id", {id: "@id", group_id: "@sysDictionaryId"}, { + query: {isArray: false}, + update: {method: "PUT", params: {id: "@id"}} + }); + }]); + + ngREST.factory("OrderAPI", ["$resource", function ($resource) { + return $resource("/order/:id", {id: "@id"}, { + query: {isArray: false}, + batch: { + method: "POST", + url: "/order/batch" + }, + update: {method: "PUT", params: {id: "@id"}}, + cancel: {method: "DELETE", url: "/order/:id"}, + getItemList: { + method: "GET", + url: "/order/:id/item", + params: {id: "@id"} + }, + updateTotalBox: { + method: "POST", + url: "/order/updateTotalBox", + params: {orderNo: "@orderNo", totalBox: "@totalBox"} + }, + auditTwoSend: {method: "POST", url: "/order/:id/twoSend", params: {id: "@id", auditStatusCd: "@auditStatusCd"}} + }); + }]); + + ngREST.factory("ReportOrderAPI", ["$resource", function ($resource) { + return $resource("/report/:id", {id: "@id"}, { + report: { + method: "GET", + url: "/report/order", + responseType: "blob" + } + }); + }]); + + ngREST.factory("ReturnOrderAPI", ["$resource", function ($resource) { + return $resource("/returnOrder/:id", {id: "@id"}, { + query: {isArray: false}, + getItemList: { + method: "GET", + url: "/returnOrder/:id/item", + params: {id: "@id"} + }, + auditReturnOrder: { + method: "POST", url: "/returnOrder/:id/audit", + params: { + id: "@id", + statusCd: "@statusCd" + } + }, + returnOrderShouhuo: { + method: "PUT", url: "/returnOrder/returnOrderShouhuo", params: { + boxNo: "@boxNo" + } + }, + shouhuo: { + method: "PUT", url: "/returnOrder/shouhuo", params: { + orderNo: "@orderNo" + } + } + }); + }]); + + ngREST.factory("PackingAPI", ["$resource", function ($resource) { + return $resource("/packing/:id", {id: "@id"}, { + query: {isArray: false}, + update: {method: "PUT", params: {id: "@id"}}, + getPackingOrderItemList: {method: "GET", url: "/packing/:id/order", isArray: false}, + getPackingOrderItemCount: {method: "GET", url: "/packing/order/item", isArray: false}, + getPackingRecordList: {method: "GET", url: "/packing/:id/record", isArray: false}, + getPackingOrderList: {method: "GET", url: "/packing/order", isArray: false}, + removePackingRecord: {method: "DELETE", url: "/packing/:id/record/:recordId"}, + getPackingTaskList: {method: "GET", url: "/packing/task", isArray: false}, + bindPackingTask: {method: "PUT", url: "/packing/task/bind"}, + unbindPackingTask: { + method: "PUT", url: "/packing/task/unbind", params: { + orderNos: "@orderNos" + } + }, + scanItem: {method: "POST", url: "/packing/:id/record"}, + autoScan: { + method: "POST", url: "/packing/auto", + isArray: true, + params: {orderNo: "@orderNo", packingId: "@packingId"} + }, + printOrder: { + method: "GET", url: "/packing/printOrder", params: { + orderId: "@orderId" + } + } + }); + }]); + + ngREST.factory("PurchaseAPI", ["$resource", function ($resource) { + return $resource("/purchase/:id", {id: "@id"}, { + query: {isArray: false}, + update: {method: "PUT", params: {id: "@id", purchaseStatus: "@purchaseStatus"}} + }); + }]); + + ngREST.factory("BasePlanAPI", ["$resource", function ($resource) { + return $resource("/basePlan/:id", {id: "@id"}, { + query: {isArray: false}, + update: {method: "PUT", params: {id: "@id"}}, + getChoseItemList: {method: "GET", url: "/basePlan/getChosePlanItemList", isArray: true} + }); + }]); + + ngREST.factory("PackageTaskAPI", ["$resource", function ($resource) { + return $resource("/packageTask/:id", {id: "@id"}, { + query: {isArray: false}, + update: {method: "PUT", params: {id: "@id"}}, + packageWorking: { + method: "PUT", + url: "/packageTask/:id/packageWorking", + params: { + id: "@id", + barCode: "@barCode" + } + } + }); + }]); + + ngREST.factory("JobOperationLogAPI", ["$resource", function ($resource) { + return $resource("/jobOperationLog/:id", {id: "@id"}, { + query: {isArray: false}, + update: {method: "PUT", params: {id: "@id"}} + }); + }]); + + ngREST.factory("TablePlanAPI", ["$resource", function ($resource) { + return $resource("/tablePlan/:id", {id: "@id"}, { + query: {isArray: false}, + update: {method: "PUT", params: {id: "@id"}}, + stop: { + method: "PUT", + url: "/tablePlan/:id/stop", + params: { + id: "@id", + locked: "@locked" + } + }, + createPlanOrder: { + method: "PUT", + url: "/tablePlan/createPlanOrder" + } + }); + }]); + + ngREST.factory("PickAPI", ["$resource", function ($resource) { + return $resource("/pick/:id", {id: "@id"}, { + query: {isArray: false}, + update: {method: "PUT", params: {id: "@id"}}, + settleAccounts: {method: "PUT", url: "/pick/settleAccounts"}, + pickCard: {method: "PUT", url: "/pick/pickCard"} + }); + }]); + + ngREST.factory("ExpressAPI", ["$resource", function ($resource) { + return $resource("/express/:id", {id: "@id"}, { + query: {isArray: false}, + update: {method: "PUT", params: {id: "@id"}}, + bindExpress: {method: "PUT", url: "/express/order/bind"}, + unbindExpress: { + method: "PUT", url: "/express/order/unbind", params: { + orderNos: "@orderNos" + } + }, + noScanOrder: { + method: "GET", url: "/express/noScanOrder", params: {} + }, + queryOrder: { + method: "GET", url: "/express/order", params: {} + }, + takeDelivery: { + method: "PUT", url: "/express/order/takeDelivery", params: { + boxNo: "@boxNo" + } + }, + unTakeDelivery: { + method: "PUT", url: "/express/order/untakeDelivery", params: { + orderNo: "@orderNo" + } + } + }); + }]); + + ngREST.factory("ExpressMemberAPI", ["$resource", function ($resource) { + return $resource("/expressMember/:id", {id: "@id"}, { + query: {isArray: false}, + update: {method: "PUT", params: {id: "@id"}} + }); + }]); + + ngREST.factory("TradeRecordAPI", ["$resource", function ($resource) { + return $resource("/tradeRecord/:id", {id: "@id"}, { + query: {isArray: false}, + update: {method: "PUT", params: {id: "@id"}} + }); + }]); + + ngREST.factory("ReceivingCodeRequestAPI", ["$resource", function ($resource) { + return $resource("/receivingCodeRequest/:id", {id: "@id"}, { + query: {isArray: false} + }); + }]); + + ngREST.factory("AdviceAPI", ["$resource", function ($resource) { + return $resource("/advice/:id", {id: "@id"}, { + query: {isArray: false}, + update: {method: "PUT", params: {id: "@id"}} + }); + }]); + + ngREST.factory("BeforehandPackageRecordAPI", ["$resource", function ($resource) { + return $resource("/beforehandPackageRecord/:id", {id: "@id"}, { + query: {isArray: false}, + update: {method: "PUT", params: {id: "@id"}} + }); + }]); +}); diff --git a/src/main/webapp/WEB-INF/views/src/views/stock/beforehandPackage.html b/src/main/webapp/WEB-INF/views/src/views/stock/beforehandPackage.html new file mode 100644 index 0000000..3b413f3 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/stock/beforehandPackage.html @@ -0,0 +1,225 @@ +
    + + +
    + + +
    + + +
    +
    + +

    预包装页面

    +
    + +
    + +
    + +
    + + +
    + +
    +
    + 选择产品 +
    +
    +
    +
    +
    + +

    产品分类

    +
    +
    +
    +
    +
    +
    +
      +
    • +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    产品列表
    序号名称编号规格库存操作
    {{item.itemName}}{{item.itemCode}}{{item.spec}}{{item.stockNum}} +
    + + + +
    +
    + +
    +
    + +
    +
    + 工作区 + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + 商品信息 +
    + +
    + {{currentItem.itemName}} +
    + +
    + {{currentItem.itemCode}} +
    + +
    + {{currentItem.spec}} +
    +
    +
    + +
    + {{currentItem.stockNum}} +
    +
    +
    +
    +
    +
    + +
    +
    +
    + 包装记录 +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    包装记录
    序号名称编号包装数量包装时间包装人
    {{beforehandPackageRecord.itemName}}{{beforehandPackageRecord.itemCode}}{{beforehandPackageRecord.packageNum}}{{beforehandPackageRecord.insertDate | date: 'yyyy-MM-dd HH:mm:ss'}}{{beforehandPackageRecord.packageUserName}}
    + +
    +
    +
    + + +
    + +
    + + +
    + + +
    + + + +
    + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/stock/stock.html b/src/main/webapp/WEB-INF/views/src/views/stock/stock.html new file mode 100644 index 0000000..ed5fd91 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/stock/stock.html @@ -0,0 +1,248 @@ + + +
    + + +
    + + +
    + + +
    + +
    + +

    库存列表

    +
    + +
    + +
    + +
    + + +
    +
    +
    +
    +
    + + +
    +
    +
    + + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    序号商品名称商品编号库存数预警数量操作
    {{stock.stockNum}}(库存不足) + + 编辑 + + +
    +
    暂无数据
    +
    +
    + +
    + +
    + +
    + + +
    + + +
    + + + +
    + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/stock/stock_module.js b/src/main/webapp/WEB-INF/views/src/views/stock/stock_module.js new file mode 100644 index 0000000..26496bc --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/stock/stock_module.js @@ -0,0 +1,47 @@ +/** + * Created by Administrator on 2016/1/15. + */ +define([ + "views/stock/stock", + "views/stock/beforehandPackage", + "views/stock/stockDaily" +], function (stock, beforehandPackage, stockDaily) { + angular.module('DMS.stock', [ + "permission" + ]).config(["$stateProvider", function ($stateProvider) { + $stateProvider + .state('stock', { + url: '/stock', + templateUrl: 'views/stock/stock.html', + data: { + permissions: { + only: ["STOCK_LIST"], + redirectTo: "unauthorized" + } + }, + controller: stock + }) + .state('beforehandPackage', { + url: '/beforehandPackage', + templateUrl: 'views/stock/beforehandPackage.html', + data: { + permissions: { + only: ["BEFOREHAND_PACKAGE"], + redirectTo: "unauthorized" + } + }, + controller: beforehandPackage + }) + .state('stockDaily', { + url: '/stockDaily', + templateUrl: 'views/stock/stockDaily.html', + data: { + permissions: { + only: ["STOCK_LIST"], + redirectTo: "unauthorized" + } + }, + controller: stockDaily + }) + }]); +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/task/task_list.js b/src/main/webapp/WEB-INF/views/src/views/task/task_list.js new file mode 100644 index 0000000..30e9aa9 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/task/task_list.js @@ -0,0 +1,73 @@ +/** + * Created by Jeng on 2016/1/8. + */ +define(function () { + return ["$scope", "PackageTaskAPI", "$modal", "$ugDialog", function($scope, PackageTaskAPI, $modal, $ugDialog){ + $scope.packageTaskList = []; + $scope.pageInfoSetting = { + pageSize:100, + pageNum:1 + }; + $scope.queryParam = {}; + $scope.getPackageTaskList = function(){ + PackageTaskAPI.query({ + limit:$scope.pageInfoSetting.pageSize, + offset:$scope.pageInfoSetting.pageNum, + keyword:$scope.queryParam.keyword + }, function(data){ + $scope.packageTaskList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getPackageTaskList; + }); + }; + + $scope.openDistributeModal = function (currentPackageTask) { + var modalInstance = $modal.open({ + templateUrl: 'addPackageTask.html', + controller: ["$scope", "PackageTaskAPI", "$modalInstance","currentPackageTask","UserAPI", "$rootScope", function ($scope, PackageTaskAPI, $modalInstance,currentPackageTask,UserAPI,$rootScope) { + $scope.packageUserList = []; + $scope.ugSelect2Config = {}; + UserAPI.getCustomerManagerList({ + userType:"baozhuangzu" + },function(data){ + $scope.packageUserList = data; + }); + $scope.company = {}; + if(currentPackageTask){ + $scope.packageTask = currentPackageTask; + $scope.packageTask.noDistributeValue = $scope.packageTask.totalItemQty - $scope.packageTask.distributeValue ; + } + $scope.errors = {}; + $scope.addPackageTaskForm = {}; + $scope.savePackageTask = function(){ + $scope.errors = {}; + if($scope.packageTask.countValue > $scope.packageTask.noDistributeValue){ + $scope.errors.message = "不能大于未分配数"; + return; + } + if($scope.addPackageTaskForm.validator.form()){ + PackageTaskAPI.save($scope.packageTask, function(){ + $modalInstance.close(); + }, function(data){ + $scope.errors = data.data; + }) + } + }; + $scope.cancel = function () { + $modalInstance.dismiss('cancel'); + }; + }], + resolve: { + currentPackageTask: function () { + return currentPackageTask; + } + } + }); + modalInstance.result.then(function () { + $scope.getPackageTaskList(); + }); + }; + + $scope.getPackageTaskList(); + }]; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/user/group_list.html b/src/main/webapp/WEB-INF/views/src/views/user/group_list.html new file mode 100644 index 0000000..37de944 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/user/group_list.html @@ -0,0 +1,241 @@ + + + +
    + + +
    + + +
    + + +
    + +
    + +

    用户组列表

    +
    + +
    + +
    + +
    + + +
    +
    +
    +
    + +
    +
    +
    + + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + 用户组描述操作
    + + + + +
    + + + + 权限 + +
    +
    +
    暂无数据
    +
    +
    + +
    + +
    + +
    + + +
    + + +
    + + + +
    + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/user/group_list.js b/src/main/webapp/WEB-INF/views/src/views/user/group_list.js new file mode 100644 index 0000000..4796c6e --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/user/group_list.js @@ -0,0 +1,228 @@ +/** + * Created by Jeng on 2016/1/8. + */ +define(function () { + return ["$scope", "UserGroupAPI", "$modal", "$ugDialog", function($scope, UserGroupAPI, $modal, $ugDialog){ + $scope.groupList = []; + $scope.pageInfoSetting = { + pageSize:10, + pageNum:1 + }; + $scope.queryParam = {}; + $scope.getGroupList = function(){ + UserGroupAPI.query({ + limit:$scope.pageInfoSetting.pageSize, + offset:$scope.pageInfoSetting.pageNum, + keyword:$scope.queryParam.keyword + }, function(data){ + $scope.groupList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getGroupList; + }); + }; + $scope.removeGroup = function(index){ + $ugDialog.confirm("是否删除用户组?").then(function(){ + UserGroupAPI.delete({ + id: $scope.groupList[index].id + }, function(){ + $scope.getGroupList(); + }); + }) + }; + $scope.locked = function(index){ + UserGroupAPI.save({ + id: $scope.groupList[index].id, + available: $scope.groupList[index].available == 1 ? true : false + }); + }; + // 新增用户组 + $scope.open = function (index, size) { + var modalInstance = $modal.open({ + templateUrl: 'addGroup.html', + controller: ["$scope", "$modalInstance", function ($scope, $modalInstance) { + $scope.userGroup = {}; + $scope.addGroupForm = {}; + $scope.saveGroup = function(){ + if($scope.addGroupForm.validator.form()){ + UserGroupAPI.save($scope.userGroup, function(){ + $modalInstance.close(); + }) + } + }; + $scope.cancel = function () { + $modalInstance.dismiss('cancel'); + }; + }], + size: size + }); + modalInstance.result.then(function () { + $scope.getGroupList(); + }); + }; + // 新增用户到用户组 + $scope.openAddUserToGroup = function (index) { + var modalInstance = $modal.open({ + templateUrl: 'addUserToGroup.html', + controller: ["$scope", "$modalInstance", "UserGroupRelationAPI", "UserGroupModel", function ($scope, $modalInstance, UserGroupRelationAPI, UserGroupModel) { + $scope.userGroup = UserGroupModel; + $scope.choseUsers = []; + $scope.queryParam = {}; + $scope.choseUsersPageInfo = { + pageSize:50, + pageNum:1 + }; + $scope.addGroupForm = {}; + $scope.getChoseUser = function(){ + UserGroupRelationAPI.query({ + id:$scope.userGroup.id, + chose:true, + limit:$scope.choseUsersPageInfo.pageSize, + offset:$scope.choseUsersPageInfo.pageNum + },function(data){ + $scope.choseUsers = data.data; + $scope.choseUsersPageInfo = data.pageInfo; + $scope.choseUsersPageInfo.loadData = $scope.getChoseUser; + }) + }; + $scope.unChoseUsersPageInfo = { + pageSize:50, + pageNum:1 + }; + $scope.unChoseUsers = []; + $scope.getUnChoseUser = function(){ + UserGroupRelationAPI.query({ + id:$scope.userGroup.id, + chose:false, + keyword:$scope.queryParam.keyword, + limit:$scope.unChoseUsersPageInfo.pageSize, + offset:$scope.unChoseUsersPageInfo.pageNum + },function(data){ + $scope.unChoseUsers = data.data; + $scope.unChoseUsersPageInfo = data.pageInfo; + $scope.unChoseUsersPageInfo.loadData = $scope.getUnChoseUser; + }) + }; + $scope.getChoseUser(); + $scope.getUnChoseUser(); + $scope.removeUser = function(index){ + UserGroupRelationAPI.save({ + id:$scope.userGroup.id, + userId:$scope.choseUsers[index].userId, + chose:false + }, function(){ + $scope.unChoseUsers.push($scope.choseUsers[index]); + $scope.choseUsers.splice(index, 1); + }) + }; + $scope.addUser = function(index){ + UserGroupRelationAPI.save({ + id:$scope.userGroup.id, + userId:$scope.unChoseUsers[index].userId, + chose:true + }, function(){ + $scope.choseUsers.push($scope.unChoseUsers[index]); + $scope.unChoseUsers.splice(index, 1); + }) + }; + $scope.cancel = function () { + $modalInstance.dismiss('cancel'); + }; + }], + resolve:{ + UserGroupModel:function(){ + return $scope.groupList[index] + } + }, + size: "lg" + }); + modalInstance.result.then(function () { + $scope.getGroupList(); + }); + }; + // 修改用户组权限 + $scope.openUpdateGroupPermission = function (index) { + var modalInstance = $modal.open({ + templateUrl: 'updateGroupPermission.html', + controller: ["$scope", "$modalInstance","User", "GroupPermissionRelationAPI", "UserGroupModel", function ($scope, $modalInstance,User, GroupPermissionRelationAPI, UserGroupModel) { + $scope.userGroup = UserGroupModel; + $scope.chosePermissions = []; + $scope.queryParam = {}; + $scope.chosePermissionsPageInfo = { + pageSize:50, + pageNum:1 + }; + $scope.addGroupForm = {}; + $scope.getChosePermissions = function(){ + GroupPermissionRelationAPI.query({ + id:$scope.userGroup.id, + chose:true, + limit:$scope.chosePermissionsPageInfo.pageSize, + offset:$scope.chosePermissionsPageInfo.pageNum + },function(data){ + $scope.chosePermissions = data.data; + $scope.chosePermissionsPageInfo = data.pageInfo; + $scope.chosePermissionsPageInfo.loadData = $scope.getChosePermissions; + }) + }; + $scope.unChosePermissionPageInfo = { + pageSize:50, + pageNum:1 + }; + $scope.unChosePermissions = []; + $scope.getUnChosePermissions = function(){ + GroupPermissionRelationAPI.query({ + id:$scope.userGroup.id, + chose:false, + keyword:$scope.queryParam.keyword, + limit:$scope.unChosePermissionPageInfo.pageSize, + offset:$scope.unChosePermissionPageInfo.pageNum + },function(data){ + $scope.unChosePermissions = data.data; + $scope.unChosePermissionPageInfo = data.pageInfo; + $scope.unChosePermissionPageInfo.loadData = $scope.getUnChosePermissions; + }) + }; + $scope.getChosePermissions(); + $scope.getUnChosePermissions(); + $scope.unCorrelationPermission = function(index){ + GroupPermissionRelationAPI.save({ + id:$scope.userGroup.id, + permissionId:$scope.chosePermissions[index].permissionId, + chose:false + }, function(){ + $scope.unChosePermissions.push($scope.chosePermissions[index]); + $scope.chosePermissions.splice(index, 1); + User.fetchPermission(); + }) + }; + $scope.correlationUser = function(index){ + GroupPermissionRelationAPI.save({ + id:$scope.userGroup.id, + permissionId:$scope.unChosePermissions[index].permissionId, + chose:true + }, function(){ + $scope.chosePermissions.push($scope.unChosePermissions[index]); + $scope.unChosePermissions.splice(index, 1); + User.fetchPermission(); + }) + }; + $scope.cancel = function () { +// window.location.reload(); + $modalInstance.dismiss('cancel'); + }; + }], + resolve:{ + UserGroupModel:function(){ + return $scope.groupList[index] + } + }, + size: "lg" + }); + modalInstance.result.then(function () { + $scope.getGroupList(); + }); + }; + + $scope.getGroupList(); + }]; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/user/organization.html b/src/main/webapp/WEB-INF/views/src/views/user/organization.html new file mode 100644 index 0000000..cf6e51d --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/user/organization.html @@ -0,0 +1,187 @@ + + + +
    + + +
    + + +
    + + +
    + +
    + +

    组织机构管理

    + +
    + + +
    + + +
    + + +
    + + + +
    + +
    + + +
    + +
    + + + + +
    + +
    + +
    + +
    +
      +
    • +
    +
    + +
    + + +
    + + +
    + + +
    + + +
    + + + +
    + + + + + diff --git a/src/main/webapp/WEB-INF/views/src/views/user/organization.js b/src/main/webapp/WEB-INF/views/src/views/user/organization.js new file mode 100644 index 0000000..82f4277 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/user/organization.js @@ -0,0 +1,139 @@ +/** + * Created by Jeng on 2016/1/8. + */ +define(function () { + return ["$scope", "OrganizationAPI", "$modal", "$ugDialog", "$rootScope", function($scope, OrganizationAPI, $modal, $ugDialog, $rootScope){ + $scope.organizationList = []; + $scope.queryParam = {}; + $scope.getOrganizationTree = function(){ + OrganizationAPI.query({ + id:$scope.queryParam.id + }, function(data){ + $scope.organizationList = data; + $rootScope.$broadcast("loadingTree"); + }); + }; + $scope.removeNode = function(item){ + var msg = "是否删除此组织?"; + if(item.nodes && item.nodes.length > 0){ + msg = "此组织存在下级组织,确认将同步删除此组织所有下级组织,是否删除?" + } + $ugDialog.confirm(msg).then(function(){ + OrganizationAPI.delete({ + id: item.id + }, function(){ + $scope.getOrganizationTree(); + }); + }) + }; + $scope.addChildOrganization = function(item){ + $scope.openAddModel({ + parentId:item.id, + parentName:item.name + }, 'ADD_CHILD_NODE'); + }; + $scope.updateChildOrganization = function(item){ + $scope.openAddModel(angular.copy(item)); + }; + $scope.openAddModel = function (organization, action) { + var modalInstance = $modal.open({ + templateUrl: 'addOrganization.html', + resolve:{ + CurrentOrganization : function(){ + return organization; + }, + Action: function(){ + return action; + } + }, + controller: ["$scope", "OrganizationAPI", "$modalInstance", "CurrentOrganization", "Action", function ($scope, OrganizationAPI, $modalInstance, CurrentOrganization, Action) { + $scope.organization = {}; + if(CurrentOrganization){ + if(Action == 'ADD_CHILD_NODE'){ + $scope.organization.parentId = CurrentOrganization.parentId; + $scope.organization.parentName = CurrentOrganization.parentName; + }else{ + $scope.organization = { + id:CurrentOrganization.id, + name:CurrentOrganization.name, + description:CurrentOrganization.description, + parentId:CurrentOrganization.parentId, + parentName:CurrentOrganization.parentName + }; + } + } + $scope.errors = null; + $scope.addOrganizationForm = {}; + $scope.saveOrganization = function(){ + $scope.errors = null; + if($scope.addOrganizationForm.validator.form()){ + if($scope.organization.id){ + OrganizationAPI.update($scope.organization, function(){ + $modalInstance.close(); + }, function(data){ + $scope.errors = data.data; + }) + }else{ + OrganizationAPI.save($scope.organization, function(){ + $modalInstance.close(); + }, function(data){ + $scope.errors = data.data; + }) + } + } + }; + $scope.cancel = function () { + $modalInstance.dismiss('cancel'); + }; + }] + }); + modalInstance.result.then(function () { + $scope.getOrganizationTree(); + }); + }; + + $scope.openUserModel = function (organization) { + var modalInstance = $modal.open({ + templateUrl: 'organizationUser.html', + resolve:{ + CurrentOrganization : function(){ + return organization; + } + }, + controller: ["$scope", "OrganizationAPI", "UserAPI", "$modalInstance", "CurrentOrganization", function ($scope, OrganizationAPI, UserAPI, $modalInstance, CurrentOrganization) { + $scope.organization = {}; + if(CurrentOrganization){ + $scope.organization = { + id:CurrentOrganization.id, + name:CurrentOrganization.name, + description:CurrentOrganization.description, + parentId:CurrentOrganization.parentId, + parentName:CurrentOrganization.parentName + }; + } + UserAPI.query({ + limit:10, + offset:1 + }, function(data){ + $scope.userList = data.data; + }); + $scope.choseUser = {}; + $scope.saveOrganizationUser = function(){ + OrganizationAPI.bindUser({ + id:$scope.organization.id, + userIds:$scope.choseUser.items + }) + }; + $scope.cancel = function () { + $modalInstance.dismiss('cancel'); + }; + }] + }); + modalInstance.result.then(function () { + $scope.getOrganizationTree(); + }); + }; + + $scope.getOrganizationTree(); + }]; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/user/permission_list.js b/src/main/webapp/WEB-INF/views/src/views/user/permission_list.js new file mode 100644 index 0000000..583e9ec --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/user/permission_list.js @@ -0,0 +1,63 @@ +/** + * Created by Jeng on 2016/1/8. + */ +define(function () { + return ["$scope", "PermissionAPI", "$modal", "$ugDialog", function($scope, PermissionAPI, $modal, $ugDialog){ + $scope.userList = []; + $scope.pageInfoSetting = { + pageSize:30, + pageNum:1 + }; + $scope.queryParam = {}; + $scope.getPermissionList = function(){ + PermissionAPI.query({ + limit:$scope.pageInfoSetting.pageSize, + offset:$scope.pageInfoSetting.pageNum, + keyword:$scope.queryParam.keyword + }, function(data){ + $scope.permissionList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getPermissionList; + }); + }; + $scope.removePermission = function(index){ + $ugDialog.confirm("是否删除权限?").then(function(){ + PermissionAPI.delete({ + id: $scope.permissionList[index].id + }, function(){ + $scope.getPermissionList(); + }); + }) + }; + $scope.open = function (index, size) { + var modalInstance = $modal.open({ + templateUrl: 'addPermission.html', + controller: ["$scope", "PermissionAPI", "$modalInstance", function ($scope, PermissionAPI, $modalInstance) { + $scope.permission = {}; + $scope.errors = null; + $scope.addPermissionForm = {}; + $scope.savePermission = function(){ + $scope.errors = null; + if($scope.addPermissionForm.validator.form()){ + $scope.permission.available = true; + PermissionAPI.save($scope.permission, function(){ + $modalInstance.close(); + }, function(data){ + $scope.errors = data.data; + }) + } + }; + $scope.cancel = function () { + $modalInstance.dismiss('cancel'); + }; + }], + size: size + }); + modalInstance.result.then(function () { + $scope.getPermissionList(); + }); + }; + + $scope.getPermissionList(); + }]; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/user/user_module.js b/src/main/webapp/WEB-INF/views/src/views/user/user_module.js new file mode 100644 index 0000000..3de15d4 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/user/user_module.js @@ -0,0 +1,62 @@ +/** + * Created by Administrator on 2016/1/15. + */ +define([ + "views/user/user_list", + "views/user/group_list", + "views/user/permission_list", + "views/user/organization" +],function (accountList,group_list,permission_list,organization) { + angular.module('DMS.user', [ + "permission" + ]).config(["$stateProvider", function($stateProvider){ + $stateProvider + .state('user_list', { + url: '/user/list', + templateUrl: 'views/user/user_list.html', + data:{ + permissions:{ + only:["USER_VIEW"], + redirectTo:"unauthorized" + } + }, + controller: accountList + }) + // 用户组 + .state('group_list', { + url: '/user/groups', + templateUrl: 'views/user/group_list.html', + data:{ + permissions:{ + only:["USER_GROUP_VIEW"], + redirectTo:"unauthorized" + } + }, + controller: group_list + }) + // 权限管理 + .state('permission_list', { + url: '/permission', + templateUrl: 'views/user/permission_list.html', + data:{ + permissions:{ + only:["PERMISSION_VIEW"], + redirectTo:"unauthorized" + } + }, + controller: permission_list + }) + // 组织管理 + .state('organization', { + url: '/organization', + templateUrl: 'views/user/organization.html', + data:{ + permissions:{ + only:["ORGANIZATION_VIEW"], + redirectTo:"unauthorized" + } + }, + controller: organization + }) + }]); +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/wx/advice.html b/src/main/webapp/WEB-INF/views/src/views/wx/advice.html new file mode 100644 index 0000000..87aa585 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/wx/advice.html @@ -0,0 +1,153 @@ + + + +
    + + +
    + + +
    + + +
    + +
    + +

    咨询快报列表

    +
    + +
    + +
    + +
    + + +
    +
    + + + + + + + +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + +
    标题发布时间发布人操作
    +
    + + + + | + + + +
    +
    +
    暂无消息数据
    +
    +
    + +
    + +
    + +
    + + +
    + + +
    + + + +
    + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/wx/advice.js b/src/main/webapp/WEB-INF/views/src/views/wx/advice.js new file mode 100644 index 0000000..aa3f641 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/wx/advice.js @@ -0,0 +1,81 @@ +/** + * Created by Jeng on 2016/1/8. + */ +define(function () { + return ["$scope", "AdviceAPI", "$modal", "$ugDialog", function ($scope, AdviceAPI, $modal, $ugDialog) { + $scope.adviceList = []; + $scope.pageInfoSetting = { + pageSize: 10, + pageNum: 1 + }; + $scope.queryParam = {}; + $scope.getAdviceList = function () { + AdviceAPI.query({ + limit: $scope.pageInfoSetting.pageSize, + offset: $scope.pageInfoSetting.pageNum, + keyword: $scope.queryParam.keyword + }, function (data) { + $scope.adviceList = data.data; + $scope.pageInfoSetting = data.pageInfo; + $scope.pageInfoSetting.loadData = $scope.getAdviceList; + }); + }; + $scope.removeAdvice = function (index) { + $ugDialog.confirm("是否删除该快报?").then(function () { + AdviceAPI.delete({ + id: $scope.adviceList[index].id + }, function () { + $scope.getAdviceList(); + }); + }) + }; + + $scope.open = function (index) { + var modalInstance = $modal.open({ + templateUrl: 'addAdvice.html', + controller: ["$scope", "AdviceAPI", "$modalInstance", "currentAdvice", function ($scope, AdviceAPI, $modalInstance, currentAdvice) { + + $scope.advice = {}; + if (currentAdvice) { + $scope.advice = currentAdvice; + } + $scope.errors = null; + $scope.addAdviceForm = {}; + $scope.saveOrUpdateAdvice = function () { + $scope.errors = null; + if ($scope.addAdviceForm.validator.form()) { + if ($scope.advice.id) { + AdviceAPI.update($scope.advice, function () { + $modalInstance.close(); + }, function (data) { + $scope.errors = data.data; + }) + } else { + AdviceAPI.save($scope.advice, function () { + $modalInstance.close(); + }, function (data) { + $scope.errors = data.data; + }) + } + + } + }; + $scope.cancel = function () { + $modalInstance.dismiss('cancel'); + }; + }], + resolve: { + currentAdvice: function () { + return $scope.adviceList[index]; + } + }, + size: 'lg' + }); + modalInstance.result.then(function () { + $scope.getAdviceList(); + }); + }; + + $scope.getAdviceList(); + }]; +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/src/views/wx/wx_module.js b/src/main/webapp/WEB-INF/views/src/views/wx/wx_module.js new file mode 100644 index 0000000..26627ad --- /dev/null +++ b/src/main/webapp/WEB-INF/views/src/views/wx/wx_module.js @@ -0,0 +1,21 @@ +/** + * Created by Administrator on 2016/1/15. + */ +define([ + "views/wx/advice" +], function (advice) { + angular.module('DMS.wx', ["permission"]).config(["$stateProvider", "$urlRouterProvider", "$httpProvider", function ($stateProvider, $urlRouterProvider, $httpProvider) { + $stateProvider + .state('advice', { + url: '/advice', + templateUrl: 'views/wx/advice.html', + data: { + permissions: { + only: ["ADVICE_VIEW"], + redirectTo: "unauthorized" + } + }, + controller: advice + }) + }]); +}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/welcome.jsp b/src/main/webapp/WEB-INF/views/welcome.jsp new file mode 100644 index 0000000..834cec0 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/welcome.jsp @@ -0,0 +1,15 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" %> + + + + 欢迎游客访问,点击登录
    +
    + + 欢迎[]登录
    +
    + + 您有角色admin + + + diff --git a/src/main/webapp/WEB-INF/views/wx/bind.jsp b/src/main/webapp/WEB-INF/views/wx/bind.jsp new file mode 100644 index 0000000..f59aa63 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/wx/bind.jsp @@ -0,0 +1,101 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@include file="mytags.jsp"%> + + + + + 微信页面 + + + + + + + + + + + + + + +
    + + +
    +
    +
    +
    +
    +
    + 绑定手机号 +
    +
    +
    + ${message} +
    +
    + + + + +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    + + + + + + + + + + + + diff --git a/src/main/webapp/WEB-INF/views/wx/bindFail.jsp b/src/main/webapp/WEB-INF/views/wx/bindFail.jsp new file mode 100644 index 0000000..603ab1b --- /dev/null +++ b/src/main/webapp/WEB-INF/views/wx/bindFail.jsp @@ -0,0 +1,50 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@include file="mytags.jsp"%> + + + + + 微信页面 + + + + + + + + + + + + + + +
    + +
    +
    +
    +
    + 未找到对应的手机号信息,请确认手机号填写是否填写正确! + +
    +
    +
    +
    +
    + + + + + + + + diff --git a/src/main/webapp/WEB-INF/views/wx/bindSuccess.jsp b/src/main/webapp/WEB-INF/views/wx/bindSuccess.jsp new file mode 100644 index 0000000..7f2b309 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/wx/bindSuccess.jsp @@ -0,0 +1,49 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@include file="mytags.jsp"%> + + + + + 微信页面 + + + + + + + + + + + + + + +
    + +
    +
    +
    +
    + 恭喜绑定手机号:<<${phone}>>成功,以后您将可以直接通过微信扫一扫进行扫码收货,同时可以通过微信公众号接收订单信息! +
    +
    +
    +
    +
    + + + + + + + + diff --git a/src/main/webapp/WEB-INF/views/wx/mytags.jsp b/src/main/webapp/WEB-INF/views/wx/mytags.jsp new file mode 100644 index 0000000..e2fc5bc --- /dev/null +++ b/src/main/webapp/WEB-INF/views/wx/mytags.jsp @@ -0,0 +1,8 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt_rt"%> +<% +String path = request.getContextPath(); +String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path; +%> + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/wx/receipt.jsp b/src/main/webapp/WEB-INF/views/wx/receipt.jsp new file mode 100644 index 0000000..91c47c3 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/wx/receipt.jsp @@ -0,0 +1,228 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java"%> +<%@include file="mytags.jsp"%> + + + + +微信页面 + + + + + + + + + + + + + + +
    + +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    + 订单编号:${orderInfo.orderNo}
    + 订购人姓名:${orderInfo.consigneeName}
    + 电话:${orderInfo.consigneePhone}
    + 地址:${orderInfo.consigneeAddress}
    + 订单要求:${orderInfo.remark}
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    + + + + + + + + + + + + + + + +
    产品名称份数
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + +
    +
    +
    + + + + + + +
    ${message}
    +
    +
    + + + + + + +
    +
    +
    +
    +
    +
    + + + + + + + + diff --git a/src/main/webapp/WEB-INF/views/wx/receiptNoAuth.jsp b/src/main/webapp/WEB-INF/views/wx/receiptNoAuth.jsp new file mode 100644 index 0000000..9efa57e --- /dev/null +++ b/src/main/webapp/WEB-INF/views/wx/receiptNoAuth.jsp @@ -0,0 +1,49 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@include file="mytags.jsp"%> + + + + + 微信页面 + + + + + + + + + + + + + + +
    + +
    +
    +
    +
    + 扫描出错了,错误原因:${message} +
    +
    +
    +
    +
    + + + + + + + + diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..77a9b51 --- /dev/null +++ b/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,103 @@ + + + + + contextConfigLocation + + classpath:config/spring-core.xml + + + + org.springframework.web.context.ContextLoaderListener + + + + spring + org.springframework.web.servlet.DispatcherServlet + + contextConfigLocation + classpath:config/spring-servlet.xml + + 1 + + + spring + / + + + + 字符集过滤器 + encodingFilter + org.springframework.web.filter.CharacterEncodingFilter + + 字符集编码 + encoding + UTF-8 + + + + encodingFilter + /* + + + + + + shiroFilter + org.springframework.web.filter.DelegatingFilterProxy + true + + targetFilterLifecycle + true + + + + + + + + shiroFilter + /* + + + + DruidStatView + com.alibaba.druid.support.http.StatViewServlet + + + DruidStatView + /druid/* + + + + cors + com.xmomen.framework.web.interceptor.CrossInterceptor + + + cors + /* + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/webapp/doc/swagger-ui/dist/css/typography.css b/src/main/webapp/doc/swagger-ui/dist/css/typography.css new file mode 100644 index 0000000..e69de29 diff --git a/src/main/webapp/doc/swagger-ui/dist/fonts/DroidSans.ttf b/src/main/webapp/doc/swagger-ui/dist/fonts/DroidSans.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e517a0c5b9dfcdde4c4dee7569fa191b40f208bb GIT binary patch literal 41028 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 V%-PYbojQLtAN=*7zd~Ud`%m*7fg1n- literal 0 HcmV?d00001 diff --git a/src/main/webapp/doc/swagger-ui/dist/images/collapse.gif b/src/main/webapp/doc/swagger-ui/dist/images/collapse.gif new file mode 100644 index 0000000000000000000000000000000000000000..8843e8ce5a46781defd33d5304a0cb4191e72546 GIT binary patch literal 69 zcmZ?wbhEHbwd`J-OQ1PRqNMh0sDWgikt literal 0 HcmV?d00001 diff --git a/src/main/webapp/doc/swagger-ui/dist/images/explorer_icons.png b/src/main/webapp/doc/swagger-ui/dist/images/explorer_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..be43b27394052f1808eccb2758c6d0911a777f6b GIT binary patch literal 5115 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 I!JdTtAI=+^)&Kwi literal 0 HcmV?d00001 diff --git a/src/main/webapp/doc/swagger-ui/dist/images/favicon-16x16.png b/src/main/webapp/doc/swagger-ui/dist/images/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..0f7e13b0d9903d27a9129950b1dad362361504e4 GIT binary patch literal 445 zcmV;u0Yd(XP)rNm2=6wQ7&2F}_`h_PI>(9Fx!5<0%l6W{u0OQ#*rglqx3__&vD?|#%fhn*Mn&YY1i+JQHqPvZ34FR@_E%P@x zzTL;Bw#nJXWY}D7^bC>-bx{t|^|R6Oci&MKvov8Op~S=}R=h^p-=vZ0uqG@LE6tP7 n92{cY$^db6>&z__iT?Z#Z8BG|DVcT0DjiaEd>Z!7_`J}8! zKk_$1lGm$vJOY&DjT-(&VGn0;R`iN9=1aOuG`H}BlY>&R3KbGER zB2$7euhH;y1C_LTQex%L6khZpkjFn!ajOUK)f3JLz+I;CE@(N)T)CM4AWjfl-(04= zrsMQ)#NG6nr^Y7!6LA;iHXh?UOFE%hhy>7dl=;I$J>g0BH_r|_4ctEsXx z2sDIQnwa*rcK=*3XUC$D{I@}DTNs@GCb7dB2%%nV%jR){xktt;Ah09op7x@l5D6B2 z0uBdt0YmcN!o?lMpu9Io(1&B1s{TUu*a>2&>Iycx__fbDRM8PYtLt+#G*xSt(cn}K zt!~W2{`9r)xkh^xodLS&FbYw`x$t&Vhl?)#f&k-lZIs<`$gTj{^#^HewuJz(WnUZZ z{Ty_aE;^93bhc-^^k6ZM!^e~$q5!Zz`XPta{a@651gPzaFx$&%IHL6hx$mSeAa#n6 zLkyc-M zs$qhBZhCNE^aIEV)H_~^IeqSRnvo!21Qc`Z;S9!IqXl4K(RUImejotzuG65LVuGS# zcqp@OA8~ln^4c^VihUew)IOX^E9KMtvSvnZ| zC@rl{f(B*PA26aFR`|X!!I(7x_|kq{rlqwhCia+CfNbOg_yYt0bDCc4g#h#`3jpCd zNAhr%4#Ye{i>ni$fzY%r0IS%l3HHZ4tTjOi=JW-t_iG~)oC!2C!52Cc|TAPaH zJ}l%m9yPmA-4#lJea@uf$a`(1;={rL2f*8;7%icbF}e^_`X#ndU=SI0nIn8hXPXHS zSN4rbF}jl0HWx(_`q`-SRa9jP8Ab!}sThNkQ634k=qXBVM4`o{M>qrLJD ze*%D)S;wpxG$d%FcDf-6%zMqWA+gw!C1~T5+|ys$G3Ksm&x59Lyd?0l+LWSk6hc4~ z+yC>|4f;X3#cq3!)>#Mvb-^co7LMrzqWeKB$21I>tJgaGFwu6eB%&j?@d*8GAx~In zI1p-lXVKtcvY7;$TX~wjYw|QhB%q!npQES%F~%Aqz~pJB%rNu!xAj;>xZt75!VHju zfFy%B-`3;Qf<{h94~I62zcHv}D5pS-QCN`M8K1>jN9mpbrFk=5no8j!00000NkvXX Hu0mjfOavUK literal 0 HcmV?d00001 diff --git a/src/main/webapp/doc/swagger-ui/dist/images/favicon.ico b/src/main/webapp/doc/swagger-ui/dist/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..8b60bcf06a7685b9ea53983c125e7058906fbcbd GIT binary patch literal 5430 zcmcgwYiv|S6douFYJ&9 zoHH|LSE(UtsLIS#7_-&1VM>ivN@Zu;-zA{00&N^|8r`@w~u}3a1X>=27;pf_a{DPJMTR$JSvjrVZRL?J~Ga>i0GO0Y%B;(7M$}2m+kcrz@>Hae2Pk^@b^f8%H zL>`N;qJuC@Oe+t~7I z<(F|AfU$#EfN{kFKA+53u@A<+4YnEIf**{2=CuCE#{h4Wo9v-X#BN#D=ro%g~u zG`=OQBiQEDZgc6n2RYf*+oRWbKVZW9eJJuGNa8A-F{8(f+y@)q2tylad}QmVTBh{m zkpvl@O*Y<9#KzvA;3if`|g4qjlr75YyFqbGlV2Q--{B?*ERj@$;+A#v6A5% zKJZ-k(ti_bGM?eOj#f{ZHOKc6lK8&sk-j?4Kdjr4z{}bU>r#UnlQAQ!`bOZB;Ct>?+|WpbgrOY2zPu-B!V?-m447=gVK(*?-RQObKSO{281uhZ-RJZ_ax0d9HE}&gAII8uJO7-x&ULT3$-hG# zr#*GDR$v46R``GL&)??M=Z|+Z8{*GeE`I+!{6E}3tWV7S1MCU*9ccYQdsa7AC-|$l z32U8*#-^_c?O%nK{oI ze@n2sr7p*=%uQX9Dk-qo-r2V)7}P0ZWaab6B%)NcuSZfL*ZERjG4kd;J~ udLgV-)@7w`Z&hkIdqAlS_J#Nx!E}|RnRSkVm|Sa24|P&EF^Huxf&C8$As%)B literal 0 HcmV?d00001 diff --git a/src/main/webapp/doc/swagger-ui/dist/images/pet_store_api.png b/src/main/webapp/doc/swagger-ui/dist/images/pet_store_api.png new file mode 100644 index 0000000000000000000000000000000000000000..1192ad8cd6a715fb011b90239abb2ab39c18e508 GIT binary patch literal 631 zcmV--0*L*IP)2CnRl`6%{3=WvHubFjQv9iUwvfTZ)ZKT%oAx z*uQ^2%*y@)2f$2bOEjgYYf4ICc1lXhz{@4^y4BS;!0go5H-gzL;I+fQ#zVE7+5%@q zG+Zs!2;kS@L3c>tdvpfxvid@gqozslUD;=@z<=jBghKGl@enzK;og}6@43zJnI?FA z43>g^5EPV^>M#gx6oCi9dSD&=kB(E1!T;?1 z|825|>b-j&zU#-~y?zwd#WSGGH1c$U=k$T|^rjz==l=;TC$`{iNdw z{Ir^#`i4)>HGep(SFeHDS+k~uKAgzs5`EAM(qt8FZS62C?d|))%((cZMbfO2wr$(CZQHhO+t&P1dAla4b)A>yLEdDSsn@w;YSb%e|)s-E@t@Pd(%;0lq)A`T9 zlIRI;Wh8#1O%b{POB%ij2^wtzO{+~59szThVDbKUyQ7bjQ<9(wt<0W69Vgrd7B&`3 z^%!^E;MUL7tz0cLZOI0s#t&E(0^b?v^z&ACvUs6)iN$`FL0IISh|9J6cRRihpe zWgvY4Oc^LT4WJ*9=Z*6?I%e0k57hLEDE;V2c&PM6VCv^^L>)#`2OZa^(v;{Na_mI! zT!LQVqSBM5SNhOuF}>+dU=F?LnwX(tO80Ry!?V@yKJ3D+a!Ol@9rscfnkA+?{RGSj zFBvSQ{NEc%Q<#~zhuy9;tNX6&CDK`7K6WZSq;w|y-Wt%k8td^;2dR9hqx2hCfPEGg z;4f~}@IT&CN*QV=9R!v{*F&wP4Bi*Cmb1cRU}3Go-ygvM=4L%N;G^|B;w|JSe)GM# zTngU9r|&J~!QYw{&ik#oTpa(m0<**O9e7s4?BI7dWG~^JnUUD$dlOjz&XF~iMPz?~ zMIbBX>f}J4k0f@!H!QptnB_c4?)g@)aBpCivGLve2Sz_7uG`HszyJUM07*qoM6N<$ Ef*R;Uh5!Hn literal 0 HcmV?d00001 diff --git a/src/main/webapp/doc/swagger-ui/dist/lang/es.js b/src/main/webapp/doc/swagger-ui/dist/lang/es.js new file mode 100644 index 0000000..13fa015 --- /dev/null +++ b/src/main/webapp/doc/swagger-ui/dist/lang/es.js @@ -0,0 +1,53 @@ +'use strict'; + +/* jshint quotmark: double */ +window.SwaggerTranslator.learn({ + "Warning: Deprecated":"Advertencia: Obsoleto", + "Implementation Notes":"Notas de implementación", + "Response Class":"Clase de la Respuesta", + "Status":"Status", + "Parameters":"Parámetros", + "Parameter":"Parámetro", + "Value":"Valor", + "Description":"Descripción", + "Parameter Type":"Tipo del Parámetro", + "Data Type":"Tipo del Dato", + "Response Messages":"Mensajes de la Respuesta", + "HTTP Status Code":"Código de Status HTTP", + "Reason":"Razón", + "Response Model":"Modelo de la Respuesta", + "Request URL":"URL de la Solicitud", + "Response Body":"Cuerpo de la Respuesta", + "Response Code":"Código de la Respuesta", + "Response Headers":"Encabezados de la Respuesta", + "Hide Response":"Ocultar Respuesta", + "Try it out!":"Pruébalo!", + "Show/Hide":"Mostrar/Ocultar", + "List Operations":"Listar Operaciones", + "Expand Operations":"Expandir Operaciones", + "Raw":"Crudo", + "can't parse JSON. Raw result":"no puede parsear el JSON. Resultado crudo", + "Example Value":"Valor de Ejemplo", + "Model Schema":"Esquema del Modelo", + "Model":"Modelo", + "apply":"aplicar", + "Username":"Nombre de usuario", + "Password":"Contraseña", + "Terms of service":"Términos de Servicio", + "Created by":"Creado por", + "See more at":"Ver más en", + "Contact the developer":"Contactar al desarrollador", + "api version":"versión de la api", + "Response Content Type":"Tipo de Contenido (Content Type) de la Respuesta", + "fetching resource":"buscando recurso", + "fetching resource list":"buscando lista del recurso", + "Explore":"Explorar", + "Show Swagger Petstore Example Apis":"Mostrar Api Ejemplo de Swagger Petstore", + "Can't read from server. It may not have the appropriate access-control-origin settings.":"No se puede leer del servidor. Tal vez no tiene la configuración de control de acceso de origen (access-control-origin) apropiado.", + "Please specify the protocol for":"Por favor, especificar el protocola para", + "Can't read swagger JSON from":"No se puede leer el JSON de swagger desde", + "Finished Loading Resource Information. Rendering Swagger UI":"Finalizada la carga del recurso de Información. Mostrando Swagger UI", + "Unable to read api":"No se puede leer la api", + "from path":"desde ruta", + "server returned":"el servidor retornó" +}); diff --git a/src/main/webapp/doc/swagger-ui/dist/lang/fr.js b/src/main/webapp/doc/swagger-ui/dist/lang/fr.js new file mode 100644 index 0000000..388dff1 --- /dev/null +++ b/src/main/webapp/doc/swagger-ui/dist/lang/fr.js @@ -0,0 +1,54 @@ +'use strict'; + +/* jshint quotmark: double */ +window.SwaggerTranslator.learn({ + "Warning: Deprecated":"Avertissement : Obsolète", + "Implementation Notes":"Notes d'implémentation", + "Response Class":"Classe de la réponse", + "Status":"Statut", + "Parameters":"Paramètres", + "Parameter":"Paramètre", + "Value":"Valeur", + "Description":"Description", + "Parameter Type":"Type du paramètre", + "Data Type":"Type de données", + "Response Messages":"Messages de la réponse", + "HTTP Status Code":"Code de statut HTTP", + "Reason":"Raison", + "Response Model":"Modèle de réponse", + "Request URL":"URL appelée", + "Response Body":"Corps de la réponse", + "Response Code":"Code de la réponse", + "Response Headers":"En-têtes de la réponse", + "Hide Response":"Cacher la réponse", + "Headers":"En-têtes", + "Try it out!":"Testez !", + "Show/Hide":"Afficher/Masquer", + "List Operations":"Liste des opérations", + "Expand Operations":"Développer les opérations", + "Raw":"Brut", + "can't parse JSON. Raw result":"impossible de décoder le JSON. Résultat brut", + "Example Value":"Exemple la valeur", + "Model Schema":"Définition du modèle", + "Model":"Modèle", + "apply":"appliquer", + "Username":"Nom d'utilisateur", + "Password":"Mot de passe", + "Terms of service":"Conditions de service", + "Created by":"Créé par", + "See more at":"Voir plus sur", + "Contact the developer":"Contacter le développeur", + "api version":"version de l'api", + "Response Content Type":"Content Type de la réponse", + "fetching resource":"récupération de la ressource", + "fetching resource list":"récupération de la liste de ressources", + "Explore":"Explorer", + "Show Swagger Petstore Example Apis":"Montrer les Apis de l'exemple Petstore de Swagger", + "Can't read from server. It may not have the appropriate access-control-origin settings.":"Impossible de lire à partir du serveur. Il se peut que les réglages access-control-origin ne soient pas appropriés.", + "Please specify the protocol for":"Veuillez spécifier un protocole pour", + "Can't read swagger JSON from":"Impossible de lire le JSON swagger à partir de", + "Finished Loading Resource Information. Rendering Swagger UI":"Chargement des informations terminé. Affichage de Swagger UI", + "Unable to read api":"Impossible de lire l'api", + "from path":"à partir du chemin", + "server returned":"réponse du serveur" +}); diff --git a/src/main/webapp/doc/swagger-ui/dist/lang/it.js b/src/main/webapp/doc/swagger-ui/dist/lang/it.js new file mode 100644 index 0000000..8529c2a --- /dev/null +++ b/src/main/webapp/doc/swagger-ui/dist/lang/it.js @@ -0,0 +1,52 @@ +'use strict'; + +/* jshint quotmark: double */ +window.SwaggerTranslator.learn({ + "Warning: Deprecated":"Attenzione: Deprecato", + "Implementation Notes":"Note di implementazione", + "Response Class":"Classe della risposta", + "Status":"Stato", + "Parameters":"Parametri", + "Parameter":"Parametro", + "Value":"Valore", + "Description":"Descrizione", + "Parameter Type":"Tipo di parametro", + "Data Type":"Tipo di dato", + "Response Messages":"Messaggi della risposta", + "HTTP Status Code":"Codice stato HTTP", + "Reason":"Motivo", + "Response Model":"Modello di risposta", + "Request URL":"URL della richiesta", + "Response Body":"Corpo della risposta", + "Response Code":"Oggetto della risposta", + "Response Headers":"Intestazioni della risposta", + "Hide Response":"Nascondi risposta", + "Try it out!":"Provalo!", + "Show/Hide":"Mostra/Nascondi", + "List Operations":"Mostra operazioni", + "Expand Operations":"Espandi operazioni", + "Raw":"Grezzo (raw)", + "can't parse JSON. Raw result":"non è possibile parsare il JSON. Risultato grezzo (raw).", + "Model Schema":"Schema del modello", + "Model":"Modello", + "apply":"applica", + "Username":"Nome utente", + "Password":"Password", + "Terms of service":"Condizioni del servizio", + "Created by":"Creato da", + "See more at":"Informazioni aggiuntive:", + "Contact the developer":"Contatta lo sviluppatore", + "api version":"versione api", + "Response Content Type":"Tipo di contenuto (content type) della risposta", + "fetching resource":"recuperando la risorsa", + "fetching resource list":"recuperando lista risorse", + "Explore":"Esplora", + "Show Swagger Petstore Example Apis":"Mostra le api di esempio di Swagger Petstore", + "Can't read from server. It may not have the appropriate access-control-origin settings.":"Non è possibile leggere dal server. Potrebbe non avere le impostazioni di controllo accesso origine (access-control-origin) appropriate.", + "Please specify the protocol for":"Si prega di specificare il protocollo per", + "Can't read swagger JSON from":"Impossibile leggere JSON swagger da:", + "Finished Loading Resource Information. Rendering Swagger UI":"Lettura informazioni risorse termianta. Swagger UI viene mostrata", + "Unable to read api":"Impossibile leggere la api", + "from path":"da cartella", + "server returned":"il server ha restituito" +}); diff --git a/src/main/webapp/doc/swagger-ui/dist/lang/pl.js b/src/main/webapp/doc/swagger-ui/dist/lang/pl.js new file mode 100644 index 0000000..ce41e91 --- /dev/null +++ b/src/main/webapp/doc/swagger-ui/dist/lang/pl.js @@ -0,0 +1,53 @@ +'use strict'; + +/* jshint quotmark: double */ +window.SwaggerTranslator.learn({ + "Warning: Deprecated":"Uwaga: Wycofane", + "Implementation Notes":"Uwagi Implementacji", + "Response Class":"Klasa Odpowiedzi", + "Status":"Status", + "Parameters":"Parametry", + "Parameter":"Parametr", + "Value":"Wartość", + "Description":"Opis", + "Parameter Type":"Typ Parametru", + "Data Type":"Typ Danych", + "Response Messages":"Wiadomości Odpowiedzi", + "HTTP Status Code":"Kod Statusu HTTP", + "Reason":"Przyczyna", + "Response Model":"Model Odpowiedzi", + "Request URL":"URL Wywołania", + "Response Body":"Treść Odpowiedzi", + "Response Code":"Kod Odpowiedzi", + "Response Headers":"Nagłówki Odpowiedzi", + "Hide Response":"Ukryj Odpowiedź", + "Headers":"Nagłówki", + "Try it out!":"Wypróbuj!", + "Show/Hide":"Pokaż/Ukryj", + "List Operations":"Lista Operacji", + "Expand Operations":"Rozwiń Operacje", + "Raw":"Nieprzetworzone", + "can't parse JSON. Raw result":"nie można przetworzyć pliku JSON. Nieprzetworzone dane", + "Model Schema":"Schemat Modelu", + "Model":"Model", + "apply":"użyj", + "Username":"Nazwa użytkownika", + "Password":"Hasło", + "Terms of service":"Warunki używania", + "Created by":"Utworzone przez", + "See more at":"Zobacz więcej na", + "Contact the developer":"Kontakt z deweloperem", + "api version":"wersja api", + "Response Content Type":"Typ Zasobu Odpowiedzi", + "fetching resource":"ładowanie zasobu", + "fetching resource list":"ładowanie listy zasobów", + "Explore":"Eksploruj", + "Show Swagger Petstore Example Apis":"Pokaż Przykładowe Api Swagger Petstore", + "Can't read from server. It may not have the appropriate access-control-origin settings.":"Brak połączenia z serwerem. Może on nie mieć odpowiednich ustawień access-control-origin.", + "Please specify the protocol for":"Proszę podać protokół dla", + "Can't read swagger JSON from":"Nie można odczytać swagger JSON z", + "Finished Loading Resource Information. Rendering Swagger UI":"Ukończono Ładowanie Informacji o Zasobie. Renderowanie Swagger UI", + "Unable to read api":"Nie można odczytać api", + "from path":"ze ścieżki", + "server returned":"serwer zwrócił" +}); diff --git a/src/main/webapp/doc/swagger-ui/dist/lang/ru.js b/src/main/webapp/doc/swagger-ui/dist/lang/ru.js new file mode 100644 index 0000000..592744e --- /dev/null +++ b/src/main/webapp/doc/swagger-ui/dist/lang/ru.js @@ -0,0 +1,56 @@ +'use strict'; + +/* jshint quotmark: double */ +window.SwaggerTranslator.learn({ + "Warning: Deprecated":"Предупреждение: Устарело", + "Implementation Notes":"Заметки", + "Response Class":"Пример ответа", + "Status":"Статус", + "Parameters":"Параметры", + "Parameter":"Параметр", + "Value":"Значение", + "Description":"Описание", + "Parameter Type":"Тип параметра", + "Data Type":"Тип данных", + "HTTP Status Code":"HTTP код", + "Reason":"Причина", + "Response Model":"Структура ответа", + "Request URL":"URL запроса", + "Response Body":"Тело ответа", + "Response Code":"HTTP код ответа", + "Response Headers":"Заголовки ответа", + "Hide Response":"Спрятать ответ", + "Headers":"Заголовки", + "Response Messages":"Что может прийти в ответ", + "Try it out!":"Попробовать!", + "Show/Hide":"Показать/Скрыть", + "List Operations":"Операции кратко", + "Expand Operations":"Операции подробно", + "Raw":"В сыром виде", + "can't parse JSON. Raw result":"Не удается распарсить ответ:", + "Example Value":"Пример", + "Model Schema":"Структура", + "Model":"Описание", + "Click to set as parameter value":"Нажмите, чтобы испльзовать в качестве значения параметра", + "apply":"применить", + "Username":"Имя пользователя", + "Password":"Пароль", + "Terms of service":"Условия использования", + "Created by":"Разработано", + "See more at":"Еще тут", + "Contact the developer":"Связаться с разработчиком", + "api version":"Версия API", + "Response Content Type":"Content Type ответа", + "Parameter content type:":"Content Type параметра:", + "fetching resource":"Получение ресурса", + "fetching resource list":"Получение ресурсов", + "Explore":"Показать", + "Show Swagger Petstore Example Apis":"Показать примеры АПИ", + "Can't read from server. It may not have the appropriate access-control-origin settings.":"Не удается получить ответ от сервера. Возможно, проблема с настройками доступа", + "Please specify the protocol for":"Пожалуйста, укажите протокол для", + "Can't read swagger JSON from":"Не получается прочитать swagger json из", + "Finished Loading Resource Information. Rendering Swagger UI":"Загрузка информации о ресурсах завершена. Рендерим", + "Unable to read api":"Не удалось прочитать api", + "from path":"по адресу", + "server returned":"сервер сказал" +}); diff --git a/src/main/webapp/doc/swagger-ui/dist/lang/tr.js b/src/main/webapp/doc/swagger-ui/dist/lang/tr.js new file mode 100644 index 0000000..16426a9 --- /dev/null +++ b/src/main/webapp/doc/swagger-ui/dist/lang/tr.js @@ -0,0 +1,53 @@ +'use strict'; + +/* jshint quotmark: double */ +window.SwaggerTranslator.learn({ + "Warning: Deprecated":"Uyarı: Deprecated", + "Implementation Notes":"Gerçekleştirim Notları", + "Response Class":"Dönen Sınıf", + "Status":"Statü", + "Parameters":"Parametreler", + "Parameter":"Parametre", + "Value":"Değer", + "Description":"Açıklama", + "Parameter Type":"Parametre Tipi", + "Data Type":"Veri Tipi", + "Response Messages":"Dönüş Mesajı", + "HTTP Status Code":"HTTP Statü Kodu", + "Reason":"Gerekçe", + "Response Model":"Dönüş Modeli", + "Request URL":"İstek URL", + "Response Body":"Dönüş İçeriği", + "Response Code":"Dönüş Kodu", + "Response Headers":"Dönüş Üst Bilgileri", + "Hide Response":"Dönüşü Gizle", + "Headers":"Üst Bilgiler", + "Try it out!":"Dene!", + "Show/Hide":"Göster/Gizle", + "List Operations":"Operasyonları Listele", + "Expand Operations":"Operasyonları Aç", + "Raw":"Ham", + "can't parse JSON. Raw result":"JSON çözümlenemiyor. Ham sonuç", + "Model Schema":"Model Şema", + "Model":"Model", + "apply":"uygula", + "Username":"Kullanıcı Adı", + "Password":"Parola", + "Terms of service":"Servis şartları", + "Created by":"Oluşturan", + "See more at":"Daha fazlası için", + "Contact the developer":"Geliştirici ile İletişime Geçin", + "api version":"api versiyon", + "Response Content Type":"Dönüş İçerik Tipi", + "fetching resource":"kaynak getiriliyor", + "fetching resource list":"kaynak listesi getiriliyor", + "Explore":"Keşfet", + "Show Swagger Petstore Example Apis":"Swagger Petstore Örnek Api'yi Gör", + "Can't read from server. It may not have the appropriate access-control-origin settings.":"Sunucudan okuma yapılamıyor. Sunucu access-control-origin ayarlarınızı kontrol edin.", + "Please specify the protocol for":"Lütfen istenen adres için protokol belirtiniz", + "Can't read swagger JSON from":"Swagger JSON bu kaynaktan okunamıyor", + "Finished Loading Resource Information. Rendering Swagger UI":"Kaynak baglantısı tamamlandı. Swagger UI gösterime hazırlanıyor", + "Unable to read api":"api okunamadı", + "from path":"yoldan", + "server returned":"sunucuya dönüldü" +}); diff --git a/src/main/webapp/doc/swagger-ui/dist/lang/translator.js b/src/main/webapp/doc/swagger-ui/dist/lang/translator.js new file mode 100644 index 0000000..ffb879f --- /dev/null +++ b/src/main/webapp/doc/swagger-ui/dist/lang/translator.js @@ -0,0 +1,39 @@ +'use strict'; + +/** + * Translator for documentation pages. + * + * To enable translation you should include one of language-files in your index.html + * after . + * For example - + * + * If you wish to translate some new texts you should do two things: + * 1. Add a new phrase pair ("New Phrase": "New Translation") into your language file (for example lang/ru.js). It will be great if you add it in other language files too. + * 2. Mark that text it templates this way New Phrase or . + * The main thing here is attribute data-sw-translate. Only inner html, title-attribute and value-attribute are going to translate. + * + */ +window.SwaggerTranslator = { + + _words:[], + + translate: function(sel) { + var $this = this; + sel = sel || '[data-sw-translate]'; + + $(sel).each(function() { + $(this).html($this._tryTranslate($(this).html())); + + $(this).val($this._tryTranslate($(this).val())); + $(this).attr('title', $this._tryTranslate($(this).attr('title'))); + }); + }, + + _tryTranslate: function(word) { + return this._words[$.trim(word)] !== undefined ? this._words[$.trim(word)] : word; + }, + + learn: function(wordsMap) { + this._words = wordsMap; + } +}; diff --git a/src/main/webapp/doc/swagger-ui/dist/lib/backbone-min.js b/src/main/webapp/doc/swagger-ui/dist/lib/backbone-min.js new file mode 100644 index 0000000..8eff02e --- /dev/null +++ b/src/main/webapp/doc/swagger-ui/dist/lib/backbone-min.js @@ -0,0 +1 @@ +!function(t,e){if("function"==typeof define&&define.amd)define(["underscore","jquery","exports"],function(i,n,s){t.Backbone=e(t,s,i,n)});else if("undefined"!=typeof exports){var i=require("underscore");e(t,exports,i)}else t.Backbone=e(t,{},t._,t.jQuery||t.Zepto||t.ender||t.$)}(this,function(t,e,i,n){var s=t.Backbone,r=[],a=(r.push,r.slice);r.splice;e.VERSION="1.1.2",e.$=n,e.noConflict=function(){return t.Backbone=s,this},e.emulateHTTP=!1,e.emulateJSON=!1;var o=e.Events={on:function(t,e,i){if(!c(this,"on",t,[e,i])||!e)return this;this._events||(this._events={});var n=this._events[t]||(this._events[t]=[]);return n.push({callback:e,context:i,ctx:i||this}),this},once:function(t,e,n){if(!c(this,"once",t,[e,n])||!e)return this;var s=this,r=i.once(function(){s.off(t,r),e.apply(this,arguments)});return r._callback=e,this.on(t,r,n)},off:function(t,e,n){var s,r,a,o,h,u,l,d;if(!this._events||!c(this,"off",t,[e,n]))return this;if(!t&&!e&&!n)return this._events=void 0,this;for(o=t?[t]:i.keys(this._events),h=0,u=o.length;h").attr(t);this.setElement(n,!1)}}}),e.sync=function(t,n,s){var r=E[t];i.defaults(s||(s={}),{emulateHTTP:e.emulateHTTP,emulateJSON:e.emulateJSON});var a={type:r,dataType:"json"};if(s.url||(a.url=i.result(n,"url")||j()),null!=s.data||!n||"create"!==t&&"update"!==t&&"patch"!==t||(a.contentType="application/json",a.data=JSON.stringify(s.attrs||n.toJSON(s))),s.emulateJSON&&(a.contentType="application/x-www-form-urlencoded",a.data=a.data?{model:a.data}:{}),s.emulateHTTP&&("PUT"===r||"DELETE"===r||"PATCH"===r)){a.type="POST",s.emulateJSON&&(a.data._method=r);var o=s.beforeSend;s.beforeSend=function(t){if(t.setRequestHeader("X-HTTP-Method-Override",r),o)return o.apply(this,arguments)}}"GET"===a.type||s.emulateJSON||(a.processData=!1),"PATCH"===a.type&&x&&(a.xhr=function(){return new ActiveXObject("Microsoft.XMLHTTP")});var h=s.xhr=e.ajax(i.extend(a,s));return n.trigger("request",n,h,s),h};var x=!("undefined"==typeof window||!window.ActiveXObject||window.XMLHttpRequest&&(new XMLHttpRequest).dispatchEvent),E={create:"POST",update:"PUT",patch:"PATCH","delete":"DELETE",read:"GET"};e.ajax=function(){return e.$.ajax.apply(e.$,arguments)};var k=e.Router=function(t){t||(t={}),t.routes&&(this.routes=t.routes),this._bindRoutes(),this.initialize.apply(this,arguments)},T=/\((.*?)\)/g,$=/(\(\?)?:\w+/g,S=/\*\w+/g,H=/[\-{}\[\]+?.,\\\^$|#\s]/g;i.extend(k.prototype,o,{initialize:function(){},route:function(t,n,s){i.isRegExp(t)||(t=this._routeToRegExp(t)),i.isFunction(n)&&(s=n,n=""),s||(s=this[n]);var r=this;return e.history.route(t,function(i){var a=r._extractParameters(t,i);r.execute(s,a),r.trigger.apply(r,["route:"+n].concat(a)),r.trigger("route",n,a),e.history.trigger("route",r,n,a)}),this},execute:function(t,e){t&&t.apply(this,e)},navigate:function(t,i){return e.history.navigate(t,i),this},_bindRoutes:function(){if(this.routes){this.routes=i.result(this,"routes");for(var t,e=i.keys(this.routes);null!=(t=e.pop());)this.route(t,this.routes[t])}},_routeToRegExp:function(t){return t=t.replace(H,"\\$&").replace(T,"(?:$1)?").replace($,function(t,e){return e?t:"([^/?]+)"}).replace(S,"([^?]*?)"),new RegExp("^"+t+"(?:\\?([\\s\\S]*))?$")},_extractParameters:function(t,e){var n=t.exec(e).slice(1);return i.map(n,function(t,e){return e===n.length-1?t||null:t?decodeURIComponent(t):null})}});var A=e.History=function(){this.handlers=[],i.bindAll(this,"checkUrl"),"undefined"!=typeof window&&(this.location=window.location,this.history=window.history)},I=/^[#\/]|\s+$/g,N=/^\/+|\/+$/g,R=/msie [\w.]+/,O=/\/$/,P=/#.*$/;A.started=!1,i.extend(A.prototype,o,{interval:50,atRoot:function(){return this.location.pathname.replace(/[^\/]$/,"$&/")===this.root},getHash:function(t){var e=(t||this).location.href.match(/#(.*)$/);return e?e[1]:""},getFragment:function(t,e){if(null==t)if(this._hasPushState||!this._wantsHashChange||e){t=decodeURI(this.location.pathname+this.location.search);var i=this.root.replace(O,"");t.indexOf(i)||(t=t.slice(i.length))}else t=this.getHash();return t.replace(I,"")},start:function(t){if(A.started)throw new Error("Backbone.history has already been started");A.started=!0,this.options=i.extend({root:"/"},this.options,t),this.root=this.options.root,this._wantsHashChange=this.options.hashChange!==!1,this._wantsPushState=!!this.options.pushState,this._hasPushState=!!(this.options.pushState&&this.history&&this.history.pushState);var n=this.getFragment(),s=document.documentMode,r=R.exec(navigator.userAgent.toLowerCase())&&(!s||s<=7);if(this.root=("/"+this.root+"/").replace(N,"/"),r&&this._wantsHashChange){var a=e.$('

    Ve7Wy&e-hu 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

    f2WyU|&&yToezKs6f;aPkNedu-b`i+Xo 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�Sz3FoDZ|ID77937 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 KbcC}jg7{U}-wZ9= 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