Merge branch 'api' of https://gitee.com/jyyforjava/zq-erp into api
 
	
	
	
	
	
	
		
		1 files deleted
	
		
		21 files modified
	
	
 
	
	
	
	
	
	
	
	
 |  |  | 
 |  |  |                     <exclude>config/test/*</exclude> | 
 |  |  |                     <exclude>config/xcx/*</exclude> | 
 |  |  |  | 
 |  |  |                     <!-- --> | 
 |  |  |                     <!-- | 
 |  |  |  | 
 |  |  |                        <exclude>config/config.json</exclude> | 
 |  |  |                          <exclude>config/application.properties</exclude> | 
 |  |  |                          <exclude>config/system.properties</exclude> | 
 |  |  |  | 
 |  |  |                     <exclude>config/config.json</exclude> | 
 |  |  |                     <exclude>config/application.properties</exclude> | 
 |  |  |                     <exclude>config/system.properties</exclude> | 
 |  |  |                     --> | 
 |  |  |  | 
 |  |  |  | 
 |  |  |                     <exclude>**/*.woff</exclude> | 
 
 |  |  | 
 |  |  | import com.matrix.component.rabbitmq.MqTask; | 
 |  |  | import com.matrix.component.rabbitmq.RabiitMqTemplate; | 
 |  |  | import com.matrix.component.rabbitmq.RabiitMqTemplateFactory; | 
 |  |  | import com.matrix.core.tools.LogUtil; | 
 |  |  | import com.matrix.system.shopXcx.mqTask.*; | 
 |  |  | import com.matrix.system.wechart.templateMsg.Task.UniformMsgSentTask; | 
 |  |  | import org.springframework.beans.factory.annotation.Value; | 
 |  |  | 
 |  |  |  | 
 |  |  |     @Bean | 
 |  |  |     public RabiitMqTemplate rabiitMqTemplate() throws IOException { | 
 |  |  |  | 
 |  |  |         LogUtil.info("rabbitmq: {}, {}, {}, {}", host, port, username, password); | 
 |  |  |         RabiitMqTemplate rabiitMqTemplate = RabiitMqTemplateFactory.buildTemplate(host, port, username, password); | 
 |  |  |  | 
 |  |  |         //声明一个交换机 | 
 
 |  |  | 
 |  |  | package com.matrix.core.tools.rr; | 
 |  |  |  | 
 |  |  | import com.alibaba.druid.pool.DruidDataSource; | 
 |  |  | import com.alibaba.fastjson.JSONArray; | 
 |  |  | import com.matrix.core.pojo.AjaxResult; | 
 |  |  | import com.matrix.core.tools.LogUtil; | 
 |  |  | import com.matrix.core.tools.StringUtils; | 
 |  |  | import org.apache.commons.io.FileUtils; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.jdbc.core.JdbcOperations; | 
 |  |  | import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; | 
 |  |  |  | 
 |  |  | import java.io.File; | 
 |  |  | import java.io.IOException; | 
 |  |  | import java.util.List; | 
 |  |  | import java.util.Map; | 
 |  |  |  | 
 |  |  | public class GroovyDome implements GroovyRunable { | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     @Autowired | 
 |  |  |     DruidDataSource datasource; | 
 |  |  |     public AjaxResult run() { | 
 |  |  |         return new AjaxResult(); | 
 |  |  |         String tables="back_no, back_test, chy_clean_vip_price, code_relation_ks, crm_order_operator_config, customer_test, dept_batch_no, detail, ds_order_record, erp_adjust_price, erp_adjust_price_detail, erp_approva_apply, erp_approval_record, erp_approver_configuration, erp_business_with_product, erp_business_with_store, erp_conservation_detail, erp_conservation_record, erp_cus_update_record, erp_custom_bf0624, erp_customer, erp_customer_copy1, erp_customer0618, erp_data_dictionary, erp_distribution_detail, erp_distribution_info, erp_ent_business_scope, erp_ent_certificate_info, erp_ent_contact_user, erp_ent_first_practice, erp_ent_first_practice_reocrd, erp_ent_prohibit, erp_enterprise_bank, erp_enterprise_info, erp_export_record, erp_field_update_record, erp_file_upload, erp_function_browse, erp_function_collection, erp_inventory_detail, erp_inventory_enter_detail, erp_inventory_enter_info, erp_inventory_plan_info, erp_message_receive, erp_message_send, erp_order_no_record, erp_order_record, erp_outbound_review, erp_overflow_loss_detail, erp_overflow_loss_info, erp_param_configure, erp_picking_detail, erp_picking_info, erp_print_record, erp_pro_certificate, erp_pro_first_practice, erp_pro_first_practice_reocrd, erp_product_img_detail, erp_product_info, erp_product_other_info, erp_product_prohibit, erp_product_quality_attr, erp_product_revise_price, erp_product_sale_attr, erp_product_stock, erp_purchase_back_detail, erp_purchase_backgoods, erp_purchase_backgoods_copy, erp_purchase_order_detail, erp_purchase_order_info, erp_purchase_plan_detail, erp_purchase_plan_info, erp_purchase_receivegoods, erp_purchase_receivegoods_detail, erp_purchase_rejection, erp_purchase_rejection_detail, erp_quality_review_detail, erp_quality_review_record, erp_recharge_record, erp_region, erp_resource_auth_role, erp_resources_auth, erp_resources_auth_value, erp_resources_group, erp_revise_price_detail, erp_revise_price_info, erp_settings, erp_stock_flow_detail, erp_store_info, erp_table_test_price, erp_value_card_flow, erp_vip_integral_flow, erp_vip_integral_record, erp_vip_integral_rule, erp_vip_type, erp_wait_conservation_record, erp_warehouse_area, erp_warehouses, erp_wave_detail, erp_wave_info, his_item_pay_detail, inventory_allocation, inventory_change_record, item, jiagetiaozheng, lingshoujia, menzhen_0927, pandian, pandianxiugai, pos_aaa, pos_activity, pos_activity_gift_info, pos_activity_gifts, pos_activity_integral, pos_activity_package, pos_activity_product, pos_activity_recharge, pos_activity_with_store, pos_approva_apply, pos_approval_record, pos_bill_template_detail, pos_bill_template_store_default, pos_bucket_record, pos_bucket_record_detail, pos_bucket_stock, pos_business_data, pos_business_data_detail, pos_cashier_handover, pos_conservation_detail, pos_conservation_record, pos_destory_loss_mode, pos_enter_invalid_detail, pos_integral_convert_money, pos_inventory_detail, pos_inventory_enter_detail, pos_inventory_enter_info, pos_inventory_plan_info, pos_item_pay_detail, pos_loss_destory, pos_no_qd_damaged_detail, pos_no_qd_damaged_info, pos_no_qd_move_record, pos_order_stock_detail, pos_overflow_loss_detail, pos_overflow_loss_info, pos_package_product, pos_prescription_record, pos_product_destroy, pos_product_info, pos_product_info_copy1, pos_product_sale_detail, pos_product_stock, pos_product_stock_temp, pos_product_update_record, pos_purchase_back_detail, pos_purchase_back_goods, pos_purchase_plan_detail, pos_purchase_plan_info, pos_purchase_rejection, pos_purchase_rejection_detail, pos_quality_review_detail, pos_quality_review_record, pos_receive_detail, pos_receive_goods, pos_refund_order, pos_refund_order_detail, pos_refund_stock_detail, pos_retail_order, pos_retail_order_detail, pos_retail_package_pro, pos_scatter_stock, pos_scattered_record, pos_scattered_stock, pos_special_product_detail, pos_special_product_info, pos_special_tube_record, pos_stock_flow_detail, pos_temperature_humidity, pos_transfer_slip, pos_transfer_slip_detail, pos_transfer_slip_out_stock, pos_wait_conservation, pos_wholesale_goods, pos_wholesale_plan_detail, pos_wholesale_plan_info, product_info, productCode, qrtz_calendars, qrtz_job_details, qrtz_locks, qrtz_paused_trigger_grps, qrtz_scheduler_state, receive_temp, retail_team, Sheet1, stock_init, stock_price, stock_test, sys_api_access_record, sys_app, sys_button, sys_company, sys_department, sys_fn_btn_rel, sys_function, sys_log, sys_role, sys_role_pwoer_fn, sys_role_pwoer_fn_audit, sys_user_login_record, sys_users, tementiaojia, test_jinheyuan, xlyb, xxl_job_group, xxl_job_info, xxl_job_lock, xxl_job_log, xxl_job_logglue, xxl_job_registry, xxl_job_user"; | 
 |  |  |         String tableArry[] = StringUtils.stringToArray(tables,","); | 
 |  |  |         for(String table : tableArry) { | 
 |  |  |  | 
 |  |  |             System.out.println("开始处理====》" + table); | 
 |  |  |         } | 
 |  |  |         AjaxResult r=  AjaxResult.buildSuccessInstance("成功"); | 
 |  |  |         return r; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public static void main(String[] args) { | 
 |  |  |         String tables="back_no, back_test, chy_clean_vip_price, code_relation_ks, crm_order_operator_config, customer_test, dept_batch_no, detail, ds_order_record, erp_adjust_price, erp_adjust_price_detail, erp_approva_apply, erp_approval_record, erp_approver_configuration, erp_business_with_product, erp_business_with_store, erp_conservation_detail, erp_conservation_record, erp_cus_update_record, erp_custom_bf0624, erp_customer, erp_customer_copy1, erp_customer0618, erp_data_dictionary, erp_distribution_detail, erp_distribution_info, erp_ent_business_scope, erp_ent_certificate_info, erp_ent_contact_user, erp_ent_first_practice, erp_ent_first_practice_reocrd, erp_ent_prohibit, erp_enterprise_bank, erp_enterprise_info, erp_export_record, erp_field_update_record, erp_file_upload, erp_function_browse, erp_function_collection, erp_inventory_detail, erp_inventory_enter_detail, erp_inventory_enter_info, erp_inventory_plan_info, erp_message_receive, erp_message_send, erp_order_no_record, erp_order_record, erp_outbound_review, erp_overflow_loss_detail, erp_overflow_loss_info, erp_param_configure, erp_picking_detail, erp_picking_info, erp_print_record, erp_pro_certificate, erp_pro_first_practice, erp_pro_first_practice_reocrd, erp_product_img_detail, erp_product_info, erp_product_other_info, erp_product_prohibit, erp_product_quality_attr, erp_product_revise_price, erp_product_sale_attr, erp_product_stock, erp_purchase_back_detail, erp_purchase_backgoods, erp_purchase_backgoods_copy, erp_purchase_order_detail, erp_purchase_order_info, erp_purchase_plan_detail, erp_purchase_plan_info, erp_purchase_receivegoods, erp_purchase_receivegoods_detail, erp_purchase_rejection, erp_purchase_rejection_detail, erp_quality_review_detail, erp_quality_review_record, erp_recharge_record, erp_region, erp_resource_auth_role, erp_resources_auth, erp_resources_auth_value, erp_resources_group, erp_revise_price_detail, erp_revise_price_info, erp_settings, erp_stock_flow_detail, erp_store_info, erp_table_test_price, erp_value_card_flow, erp_vip_integral_flow, erp_vip_integral_record, erp_vip_integral_rule, erp_vip_type, erp_wait_conservation_record, erp_warehouse_area, erp_warehouses, erp_wave_detail, erp_wave_info, his_item_pay_detail, inventory_allocation, inventory_change_record, item, jiagetiaozheng, lingshoujia, menzhen_0927, pandian, pandianxiugai, pos_aaa, pos_activity, pos_activity_gift_info, pos_activity_gifts, pos_activity_integral, pos_activity_package, pos_activity_product, pos_activity_recharge, pos_activity_with_store, pos_approva_apply, pos_approval_record, pos_bill_template_detail, pos_bill_template_store_default, pos_bucket_record, pos_bucket_record_detail, pos_bucket_stock, pos_business_data, pos_business_data_detail, pos_cashier_handover, pos_conservation_detail, pos_conservation_record, pos_destory_loss_mode, pos_enter_invalid_detail, pos_integral_convert_money, pos_inventory_detail, pos_inventory_enter_detail, pos_inventory_enter_info, pos_inventory_plan_info, pos_item_pay_detail, pos_loss_destory, pos_no_qd_damaged_detail, pos_no_qd_damaged_info, pos_no_qd_move_record, pos_order_stock_detail, pos_overflow_loss_detail, pos_overflow_loss_info, pos_package_product, pos_prescription_record, pos_product_destroy, pos_product_info, pos_product_info_copy1, pos_product_sale_detail, pos_product_stock, pos_product_stock_temp, pos_product_update_record, pos_purchase_back_detail, pos_purchase_back_goods, pos_purchase_plan_detail, pos_purchase_plan_info, pos_purchase_rejection, pos_purchase_rejection_detail, pos_quality_review_detail, pos_quality_review_record, pos_receive_detail, pos_receive_goods, pos_refund_order, pos_refund_order_detail, pos_refund_stock_detail, pos_retail_order, pos_retail_order_detail, pos_retail_package_pro, pos_scatter_stock, pos_scattered_record, pos_scattered_stock, pos_special_product_detail, pos_special_product_info, pos_special_tube_record, pos_stock_flow_detail, pos_temperature_humidity, pos_transfer_slip, pos_transfer_slip_detail, pos_transfer_slip_out_stock, pos_wait_conservation, pos_wholesale_goods, pos_wholesale_plan_detail, pos_wholesale_plan_info, product_info, productCode, qrtz_calendars, qrtz_job_details, qrtz_locks, qrtz_paused_trigger_grps, qrtz_scheduler_state, receive_temp, retail_team, Sheet1, stock_init, stock_price, stock_test, sys_api_access_record, sys_app, sys_button, sys_company, sys_department, sys_fn_btn_rel, sys_function, sys_log, sys_role, sys_role_pwoer_fn, sys_role_pwoer_fn_audit, sys_user_login_record, sys_users, tementiaojia, test_jinheyuan, xlyb, xxl_job_group, xxl_job_info, xxl_job_lock, xxl_job_log, xxl_job_logglue, xxl_job_registry, xxl_job_user"; | 
 |  |  |         String tableArry[] = StringUtils.stringToArray(tables,","); | 
 |  |  |         for(String table : tableArry) { | 
 |  |  |  | 
 |  |  |             System.out.println("开始处理====》" + table); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |     } | 
 |  |  | } | 
 
 |  |  | 
 |  |  | import com.matrix.core.tools.WebUtil; | 
 |  |  | import com.matrix.system.app.dto.*; | 
 |  |  | import com.matrix.system.common.bean.SysUsers; | 
 |  |  | import com.matrix.system.common.tools.DataAuthUtil; | 
 |  |  | import com.matrix.system.hive.action.util.QueryUtil; | 
 |  |  | import com.matrix.system.hive.bean.*; | 
 |  |  | import com.matrix.system.hive.dao.*; | 
 |  |  | import com.matrix.system.hive.plugin.util.CollectionUtils; | 
 |  |  | 
 |  |  |     @PostMapping(value = "/findFollowup") | 
 |  |  |     public AjaxResult findFollowup(@RequestBody @Validated FollowupListDto followupListDto) { | 
 |  |  |         SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); | 
 |  |  |         followupListDto.setShopId(user.getShopId()); | 
 |  |  |         if(!DataAuthUtil.hasAllShopAuth()){ | 
 |  |  |             followupListDto.setShopId(user.getShopId()); | 
 |  |  |         } | 
 |  |  |         followupListDto.setCompanyId(user.getCompanyId()); | 
 |  |  |         followupListDto.setSelfStaff(user.getSuId()); | 
 |  |  |         //TODO 需要设置跨店数据权限 | 
 
 |  |  | 
 |  |  |     @RequestMapping(value = "/modifyDataDictionary") | 
 |  |  |     public @ResponseBody | 
 |  |  |     AjaxResult modifyDataDictionary(CustomerDataDictionary newDataDictionary) { | 
 |  |  |         // 自己不能是自己的父节点 | 
 |  |  |         if (newDataDictionary.getParentId() != null && newDataDictionary.getParentId().equals(newDataDictionary.getId())) { | 
 |  |  |             throw new GlobleException("父级不能是自己"); | 
 |  |  |         } | 
 |  |  |         dataDictionaryDao.updateByModel(newDataDictionary); | 
 |  |  |         return new AjaxResult(AjaxResult.STATUS_SUCCESS, SystemMessageCode.UPDATE_SUCCES, "数据字典"); | 
 |  |  |  | 
 
 |  |  | 
 |  |  | import javax.annotation.Resource; | 
 |  |  |  | 
 |  |  | import com.matrix.core.constance.MatrixConstance; | 
 |  |  | import com.matrix.core.exception.GlobleException; | 
 |  |  | import com.matrix.core.pojo.AjaxResult; | 
 |  |  | import com.matrix.core.pojo.PaginationVO; | 
 |  |  | import com.matrix.core.tools.StringUtils; | 
 |  |  | 
 |  |  |  | 
 |  |  |         articleType.setParentIds(CollectionUtils.isNotEmpty(ids) ? StringUtils.collToStr(ids, ",") : null); | 
 |  |  |         if (articleType.getId() != null) { | 
 |  |  |  | 
 |  |  |             // 自己不能是自己的父节点 | 
 |  |  |             if (articleType.getParentId() != null && articleType.getParentId().equals(articleType.getId())) { | 
 |  |  |                 throw new GlobleException("父级不能是自己"); | 
 |  |  |             } | 
 |  |  |             return modify(currentService, articleType, "文章类型"); | 
 |  |  |         } else { | 
 |  |  |  | 
 
 |  |  | 
 |  |  | package com.matrix.system.hive.action; | 
 |  |  |  | 
 |  |  | import com.matrix.core.exception.GlobleException; | 
 |  |  | import com.matrix.core.pojo.AjaxResult; | 
 |  |  | import com.matrix.core.pojo.PaginationVO; | 
 |  |  | import com.matrix.core.tools.WebUtil; | 
 |  |  | 
 |  |  |     public @ResponseBody AjaxResult addOrModify(SysDepartInfo departInfo) { | 
 |  |  |  | 
 |  |  |         if (departInfo.getId() != null) { | 
 |  |  |  | 
 |  |  |             if (departInfo.getParentId() != null && departInfo.getParentId().equals(departInfo.getId())) { | 
 |  |  |                 throw new GlobleException("父级不能是自己"); | 
 |  |  |             } | 
 |  |  |             return modify(currentService, departInfo, "部门"); | 
 |  |  |         } else { | 
 |  |  |             QueryUtil.setQueryLimit(departInfo); | 
 
 |  |  | 
 |  |  | package com.matrix.system.hive.action; | 
 |  |  |  | 
 |  |  | import com.matrix.core.constance.MatrixConstance; | 
 |  |  | import com.matrix.core.exception.GlobleException; | 
 |  |  | import com.matrix.core.pojo.AjaxResult; | 
 |  |  | import com.matrix.core.tools.WebUtil; | 
 |  |  | import com.matrix.system.common.bean.SysUsers; | 
 |  |  | 
 |  |  |     AjaxResult addOrModify(SysGoodsType sysGoodsType) { | 
 |  |  |            SysUsers users = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); | 
 |  |  |         if (sysGoodsType.getId() != null) { | 
 |  |  |  | 
 |  |  |             if (sysGoodsType.getParentId() != null && sysGoodsType.getParentId().equals(sysGoodsType.getId())) { | 
 |  |  |                 throw new GlobleException("父级不能是自己"); | 
 |  |  |             } | 
 |  |  |             return modify(currentService, sysGoodsType, "产品分类"); | 
 |  |  |         } else { | 
 |  |  |  | 
 
 |  |  | 
 |  |  | package com.matrix.system.hive.action; | 
 |  |  |  | 
 |  |  | import com.matrix.core.exception.GlobleException; | 
 |  |  | import com.matrix.core.pojo.AjaxResult; | 
 |  |  | import com.matrix.system.common.bean.SysUsers; | 
 |  |  | import com.matrix.system.hive.action.util.QueryUtil; | 
 |  |  | 
 |  |  |     AjaxResult addOrModify(ShoppingGoodsCategory shoppingGoodsCategory) { | 
 |  |  |         if (shoppingGoodsCategory.getId() != null) { | 
 |  |  |  | 
 |  |  |             // 自己不能是自己的父节点 | 
 |  |  |             if (shoppingGoodsCategory.getParentId() != null && shoppingGoodsCategory.getParentId().equals(shoppingGoodsCategory.getId())) { | 
 |  |  |                 throw new GlobleException("父级不能是自己"); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             return modify(goodsCategoryService, shoppingGoodsCategory, "商品类型"); | 
 |  |  |         } else { | 
 |  |  |             QueryUtil.setQueryLimit(shoppingGoodsCategory); | 
 
 |  |  | 
 |  |  |     public @ResponseBody | 
 |  |  |     AjaxResult showList(ShoppingGoods shoppingGoods, PaginationVO pageVo) { | 
 |  |  |         QueryUtil.setQueryLimit(shoppingGoods); | 
 |  |  |         pageVo.setOrder("desc"); | 
 |  |  |         pageVo.setSort("createTime"); | 
 |  |  |        if(StringUtils.isBlank(pageVo.getSort())){ | 
 |  |  |            pageVo.setOrder("desc"); | 
 |  |  |            pageVo.setSort("createTime"); | 
 |  |  |        } | 
 |  |  |  | 
 |  |  |         //2表示查询总部产品 | 
 |  |  |         if (shoppingGoods.getHeadquarters()!=null && 2==shoppingGoods.getHeadquarters()) { | 
 |  |  |             //仅查询本店产品 | 
 
 |  |  | 
 |  |  |      */ | 
 |  |  |     public boolean executeExt2() { | 
 |  |  |  | 
 |  |  |         Date today = DateUtil.stringToDate("2020-11-01",DateUtil.DATE_FORMAT_DD); | 
 |  |  |         Date today = DateUtil.stringToDate("2020-11-27",DateUtil.DATE_FORMAT_DD); | 
 |  |  |         Date now=new Date(); | 
 |  |  |         while (DateUtil.isBeforeDate(now,today)){ | 
 |  |  |             LogUtil.info("日期:"+DateUtil.dateFormatStr(today,DateUtil.DATE_FORMAT_DD)); | 
 
 |  |  | 
 |  |  | package com.matrix.system.hiveErp.action; | 
 |  |  |  | 
 |  |  | import com.matrix.component.redis.RedisClient; | 
 |  |  | import com.matrix.core.constance.MatrixConstance; | 
 |  |  | import com.matrix.core.pojo.AjaxResult; | 
 |  |  | import com.matrix.core.tools.WebUtil; | 
 |  |  | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     DataAnalysisCustomerServiceImpl dataAnalysisCustomerService; | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 会员人头数统计 | 
 
 |  |  | 
 |  |  | import com.matrix.core.pojo.AjaxResult; | 
 |  |  | import com.matrix.core.pojo.PaginationVO; | 
 |  |  | import com.matrix.core.tools.DateUtil; | 
 |  |  | import com.matrix.core.tools.StringUtils; | 
 |  |  | import com.matrix.core.tools.WebUtil; | 
 |  |  | import com.matrix.core.tools.excl.ExcelSheetPO; | 
 |  |  | import com.matrix.core.tools.excl.ExcelVersion; | 
 |  |  | 
 |  |  |     @RequestMapping(value = "/showList") | 
 |  |  |     public @ResponseBody | 
 |  |  |     AjaxResult showList(ShoppingGoods shoppingGoods, PaginationVO pageVo) { | 
 |  |  |         pageVo.setOrder("desc"); | 
 |  |  |         pageVo.setSort("createTime"); | 
 |  |  |         if(StringUtils.isBlank(pageVo.getSort())){ | 
 |  |  |             pageVo.setOrder("desc"); | 
 |  |  |             pageVo.setSort("createTime"); | 
 |  |  |         } | 
 |  |  |         QueryUtil.setQueryLimitCom(shoppingGoods); | 
 |  |  |         shoppingGoods.setIsDel(ShoppingGoods.NORMAL); | 
 |  |  |         List<ShoppingGoods> dataList = shoppingGoodsService.findInPage(shoppingGoods, pageVo); | 
 
 |  |  | 
 |  |  |  | 
 |  |  |             if(msgResult.containsKey("error")){ | 
 |  |  |                 //错误消息处理 | 
 |  |  |                 LogUtil.error("模板消息发送失败:"+msgResult.get("error")); | 
 |  |  |  | 
 |  |  |  | 
 |  |  |                 LogUtil.error("模板消息发送内容:"+msgResult.get("error")); | 
 |  |  |                 return; | 
 |  |  |             }else{ | 
 |  |  |                 //正常返回消息 | 
 |  |  | 
 |  |  |                 String url = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send?access_token=ACCESS_TOKEN".replaceAll("ACCESS_TOKEN", ACCESS_TOKEN); | 
 |  |  |                 for (Object msg : msgList) { | 
 |  |  |                     UniformMsgPojo uniformMsgPojo = (UniformMsgPojo) msg; | 
 |  |  |                     LogUtil.debug("微信小程序模板消息推送:" + JSONObject.toJSON(uniformMsgPojo).toString()); | 
 |  |  |                     //推送消息到微信 | 
 |  |  |                     JSONObject result = HttpClientUtil.sendPostWithJson(url, JSONObject.toJSON(uniformMsgPojo).toString()); | 
 |  |  |                     //微信返回值 | 
 
 |  |  | 
 |  |  |  | 
 |  |  | #线上测试环境 | 
 |  |  |  | 
 |  |  | spring.datasource.username=ct_test | 
 |  |  | spring.datasource.password=123456 | 
 |  |  | spring.datasource.url=jdbc:mysql://120.27.238.55:3306/hive_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8 | 
 |  |  | #spring.datasource.username=ct_test | 
 |  |  | #spring.datasource.password=123456 | 
 |  |  | #spring.datasource.url=jdbc:mysql://120.27.238.55:3306/hive_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8 | 
 |  |  |  | 
 |  |  | #spring.datasource.username=chuhuan | 
 |  |  | #spring.datasource.password=chuhuan | 
 |  |  | #spring.datasource.url=jdbc:mysql://175.6.132.141:3306/hive_v2_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8 | 
 |  |  | spring.datasource.username=chuhuan | 
 |  |  | spring.datasource.password=chuhuan | 
 |  |  | spring.datasource.url=jdbc:mysql://175.6.132.141:3306/hive_v2_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8 | 
 |  |  |  | 
 |  |  |  | 
 |  |  | spring.datasource.type=com.alibaba.druid.pool.DruidDataSource | 
 
 |  |  | 
 |  |  | rabbitmq.port=5672 | 
 |  |  | rabbitmq.username=ct_rabbit | 
 |  |  | rabbitmq.password=123456 | 
 |  |  | useRabbit=false | 
 |  |  |  | 
 |  |  | server.session.timeout=120 | 
 |  |  |  | 
 
 |  |  | 
 |  |  | evn=prd | 
 |  |  | server.port=8080 | 
 |  |  |  | 
 |  |  | spring.datasource.username=hive_data | 
 |  |  | spring.datasource.password=hive_4321#&@ | 
 |  |  | spring.datasource.url=jdbc:mysql://119.3.52.84:3306/hive_prd?useUnicode=true&characterEncoding=utf8mb4&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8 | 
 |  |  |  | 
 |  |  | #spring.datasource.username=hive_data | 
 |  |  | #spring.datasource.password=hive_4321#&@ | 
 |  |  | #spring.datasource.url=jdbc:mysql://119.3.52.84:3306/hive_prd?useUnicode=true&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8 | 
 |  |  | spring.datasource.username=chuhuan | 
 |  |  | spring.datasource.password=chuhuan | 
 |  |  | spring.datasource.url=jdbc:mysql://175.6.132.141:3306/hive_v2_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8 | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 
 |  |  | 
 |  |  |             <tr> | 
 |  |  |                 <th data-checkbox="true"></th> | 
 |  |  |                 <th data-formatter="MGrid.indexfn" data-align="center" data-width="30px">序号</th> | 
 |  |  |                 <th data-field="code">商品编号</th> | 
 |  |  |                 <th data-field="name">商品名称</th> | 
 |  |  |                 <th data-field="sealPice">售价/(本金)</th> | 
 |  |  |                 <th data-field="code"  data-sortable="true">商品编号</th> | 
 |  |  |                 <th data-field="name"  data-sortable="true">商品名称</th> | 
 |  |  |                 <th data-field="sealPice" data-sortable="true">售价/(本金)</th> | 
 |  |  |                 <th data-field="referencePice">参考价/(赠送金额)</th> | 
 |  |  |                 <th data-field="realSealCount">真实销量</th> | 
 |  |  |                 <th data-field="staus">状态</th> | 
 |  |  |                 <th data-field="isPresent">是否赠送</th> | 
 |  |  |                 <th data-field="goodType">类型</th> | 
 |  |  |                 <th data-field="realSealCount" data-sortable="true">真实销量</th> | 
 |  |  |                 <th data-field="staus" data-sortable="true">状态</th> | 
 |  |  |                 <th data-field="isPresent" data-sortable="true">是否赠送</th> | 
 |  |  |                 <th data-field="goodType" data-sortable="true" >类型</th> | 
 |  |  |                 <th data-field="cateName">分类</th> | 
 |  |  |                 <th data-field="isCourse" data-formatter="getCourse">套餐卡</th> | 
 |  |  |                 <th  data-field="shopName">所属门店</th> | 
 |  |  |                 <th data-field="createTime" data-formatter="MGrid.getTime">创建时间</th> | 
 |  |  |                 <th  data-field="shopName" >所属门店</th> | 
 |  |  |                 <th data-field="createTime" data-sortable="true" data-formatter="MGrid.getTime">创建时间</th> | 
 |  |  |             </tr> | 
 |  |  |             </thead> | 
 |  |  |         </table> | 
 
 |  |  | 
 |  |  |             <tr> | 
 |  |  |                 <th data-checkbox="true"></th> | 
 |  |  |                 <th data-formatter="MGrid.indexfn" data-align="center" data-width="30px">序号</th> | 
 |  |  |                 <th data-field="code">商品编号</th> | 
 |  |  |                 <th data-field="name">商品名称</th> | 
 |  |  |                 <th data-field="sealPice">售价/(本金)</th> | 
 |  |  |                 <th data-field="code"  data-sortable="true">商品编号</th> | 
 |  |  |                 <th data-field="name" data-sortable="true">商品名称</th> | 
 |  |  |                 <th data-field="sealPice" data-sortable="true">售价/(本金)</th> | 
 |  |  |                 <th data-field="giftMoney">赠送金额</th> | 
 |  |  |                 <th data-field="realSealCount">真实销量</th> | 
 |  |  |                 <th data-field="staus">状态</th> | 
 |  |  |                 <th data-field="realSealCount" data-sortable="true">真实销量</th> | 
 |  |  |                 <th data-field="staus" data-sortable="true">状态</th> | 
 |  |  |                 <th data-field="isPresent">是否赠送</th> | 
 |  |  |                 <th data-field="goodType">类型</th> | 
 |  |  |                 <th data-field="goodType" data-sortable="true">类型</th> | 
 |  |  |                 <th data-field="cateName">分类</th> | 
 |  |  |                 <th data-field="createTime" data-formatter="MGrid.getTime">创建时间</th> | 
 |  |  |                 <th data-field="createTime"  data-sortable="true" data-formatter="MGrid.getTime">创建时间</th> | 
 |  |  |             </tr> | 
 |  |  |             </thead> | 
 |  |  |         </table> | 
 
 |  |  | 
 |  |  |             <tr> | 
 |  |  |                 <th data-checkbox="true"></th> | 
 |  |  |                 <th data-formatter="MGrid.indexfn" data-align="center" data-width="30px">序号</th> | 
 |  |  |                 <th data-field="code">商品编号</th> | 
 |  |  |                 <th data-field="name">商品名称</th> | 
 |  |  |                 <th data-field="sealPice">售价/(本金)</th> | 
 |  |  |                 <th data-field="code"  data-sortable="true">商品编号</th> | 
 |  |  |                 <th data-field="name" data-sortable="true">商品名称</th> | 
 |  |  |                 <th data-field="sealPice" data-sortable="true">售价/(本金)</th> | 
 |  |  |                 <th data-field="giftMoney">赠送金额</th> | 
 |  |  |                 <th data-field="realSealCount">真实销量</th> | 
 |  |  |                 <th data-field="staus">状态</th> | 
 |  |  |                 <th data-field="realSealCount" data-sortable="true">真实销量</th> | 
 |  |  |                 <th data-field="staus" data-sortable="true">状态</th> | 
 |  |  |                 <th data-field="isPresent">是否赠送</th> | 
 |  |  |                 <th data-field="goodType">类型</th> | 
 |  |  |                 <th data-field="cateName">分类</th> | 
 |  |  |                 <th data-field="createTime" data-formatter="MGrid.getTime">创建时间</th> | 
 |  |  |                 <th data-field="goodType" data-sortable="true">类型</th> | 
 |  |  |                 <th data-field="cateName" >分类</th> | 
 |  |  |                 <th data-field="createTime"  data-sortable="true" data-formatter="MGrid.getTime">创建时间</th> | 
 |  |  |             </tr> | 
 |  |  |             </thead> | 
 |  |  |         </table> | 
 
 |  |  | 
 |  |  |       "disablePlugins": [], | 
 |  |  |       "outputPath": "" | 
 |  |  |     }, | 
 |  |  |     "enableEngineNative": false, | 
 |  |  |     "bundle": false, | 
 |  |  |     "useIsolateContext": true, | 
 |  |  |     "useCompilerModule": true, | 
 |  |  |     "userConfirmedUseCompilerModuleSwitch": false, | 
 |  |  |     "userConfirmedBundleSwitch": false, | 
 |  |  |     "packNpmManually": false, | 
 |  |  |     "packNpmRelationList": [], | 
 |  |  |     "minifyWXSS": true, | 
 |  |  |     "useApiHostProcess": false | 
 |  |  |     "enableEngineNative": false, | 
 |  |  |     "minifyWXSS": true | 
 |  |  |   }, | 
 |  |  |   "compileType": "miniprogram", | 
 |  |  |   "libVersion": "1.9.98", |